caojunjie 2 jaren geleden
bovenliggende
commit
e01af788f3

+ 9 - 0
api/views/productLaunch/index.js

@@ -0,0 +1,9 @@
+import http from '@/http/api.js'
+// 修改上下架
+export function submit(data) {
+	return http.request({
+		url: '/blade-client/goodsDescParts/updateById',
+		method: 'post',
+		data
+	})
+}

+ 8 - 0
api/views/sale/salesOrderDetails.js

@@ -39,6 +39,14 @@ export function submitApp(data) {
 		data
 	})
 }
+// 保存附件
+export function saveAtta(data) {
+	return http.request({
+		url: '/blade-purchase-sales/orderfiles/add',
+		method: 'POST',
+		data
+	})
+}
 // 确认收款
 export function collectPayment(data) {
 	return http.request({

+ 1 - 1
common/setting.js

@@ -9,7 +9,7 @@ module.exports = {
 	// 版本号
 	version: '1.0.0',
 	// 开发环境接口Url
-	devUrl: 'http://192.168.1.120:1080',
+	devUrl: 'http://192.168.1.111:1080',
 	// devUrl: 'http://121.37.83.47:10004',
 	// 线上环境接口Url
 	prodUrl: 'http://121.37.83.47:10004',

+ 13 - 5
manifest.json

@@ -2,8 +2,8 @@
     "name" : "易车配批发精灵",
     "appid" : "__UNI__E1B82BE",
     "description" : "",
-    "versionName" : "1.0.26",
-    "versionCode" : 26,
+    "versionName" : "1.0.33",
+    "versionCode" : 33,
     "transformPx" : false,
     /* 5+App特有相关 */
     "app-plus" : {
@@ -16,8 +16,8 @@
         "nvueCompiler" : "uni-app",
         "compilerVersion" : 3,
         "splashscreen" : {
-            "alwaysShowBeforeRender" : true,
-            "waiting" : true,
+            "alwaysShowBeforeRender" : false,
+            "waiting" : false,
             "autoclose" : true,
             "delay" : 0
         },
@@ -37,6 +37,7 @@
                     "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
                     "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
                     "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.BROADCAST_SMS\"/>",
                     "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
                     "<uses-permission android:name=\"android.permission.CAMERA\"/>",
                     "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
@@ -57,7 +58,14 @@
             /* ios打包配置 */
             "ios" : {
                 "idfa" : false,
-                "dSYMs" : false
+                "dSYMs" : false,
+                "privacyDescription" : {
+                    "NSPhotoLibraryUsageDescription" : "需要您的同意,才能添加照片",
+                    "NSCameraUsageDescription" : "需要您的同意,才能拍摄照片",
+                    "NSLocationAlwaysAndWhenInUseUsageDescription" : "需要您的同意,才能访问位置",
+                    "NSLocationWhenInUseUsageDescription" : "需要您的同意,才能在运行期间访问位置",
+                    "NSPhotoLibraryAddUsageDescription" : "需要您的同意,才能添加照片"
+                }
             },
             /* SDK配置 */
             "sdkConfigs" : {

+ 49 - 39
pages.json

@@ -58,16 +58,16 @@
 		"pages": [{
 			"path": "visit/visit",
 			"style": {
-				"navigationBarTitleText": "拜访",
-				"titleNView": {
-					"buttons": [{
-						"text": "\ue638",
-						"fontSrc": "/static/typeface/iconfont.ttf",
-						"fontSize": "16px",
-						"float": "right",
-						"color": "#fff"
-					}],
-					"backgroundImage": "linear-gradient(to bottom, #FD4B09, #FF6F3B)"
+				"navigationBarTitleText": "拜访",
+				"titleNView": {
+					"buttons": [{
+						"text": "\ue638",
+						"fontSrc": "/static/typeface/iconfont.ttf",
+						"fontSize": "16px",
+						"float": "right",
+						"color": "#fff"
+					}],
+					"backgroundImage": "linear-gradient(to bottom, #FD4B09, #FF6F3B)"
 				}
 			}
 		}, {
@@ -76,7 +76,7 @@
 				"navigationBarTitleText": "拜访历史"
 			}
 		}]
-	},{
+	}, {
 		"root": "pages",
 		"pages": [{
 			"path": "user/setUp",
@@ -90,6 +90,17 @@
 	}, {
 		"root": "pages/views",
 		"pages": [{
+			"path": "productLaunch/index",
+			"style": {
+				"navigationBarTitleText": "产品上架",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		}]
+	}, {
+		"root": "pages/views",
+		"pages": [{
 				"path": "salesSlip/index",
 				"style": {
 					"navigationBarTitleText": "销售",
@@ -161,32 +172,31 @@
 			}, {
 				"path": "salesSlip/selectCustomer",
 				"style": {
-					"navigationBarTitleText": "选择客户",
-					"titleNView": {
-						"buttons": [{
-							"text": "\ue62d",
-							"fontSrc": "/static/typeface/iconfont.ttf",
-							"fontSize": "16px",
-							"float": "right",
-							"color": "#fff"
-						}],
-						"backgroundImage": "linear-gradient(to bottom, #FD4B09, #FF6F3B)"
-					}
-					
+					"navigationBarTitleText": "选择客户",
+					"titleNView": {
+						"buttons": [{
+							"text": "\ue62d",
+							"fontSrc": "/static/typeface/iconfont.ttf",
+							"fontSize": "16px",
+							"float": "right",
+							"color": "#fff"
+						}],
+						"backgroundImage": "linear-gradient(to bottom, #FD4B09, #FF6F3B)"
+					}
 				}
 			}, {
 				"path": "purchase/selectCustomer",
 				"style": {
-					"navigationBarTitleText": "选择供应商",
-					"titleNView": {
-						"buttons": [{
-							"text": "\ue62d",
-							"fontSrc": "/static/typeface/iconfont.ttf",
-							"fontSize": "16px",
-							"float": "right",
-							"color": "#fff"
-						}],
-						"backgroundImage": "linear-gradient(to bottom, #FD4B09, #FF6F3B)"
+					"navigationBarTitleText": "选择供应商",
+					"titleNView": {
+						"buttons": [{
+							"text": "\ue62d",
+							"fontSrc": "/static/typeface/iconfont.ttf",
+							"fontSize": "16px",
+							"float": "right",
+							"color": "#fff"
+						}],
+						"backgroundImage": "linear-gradient(to bottom, #FD4B09, #FF6F3B)"
 					}
 				}
 			}, {
@@ -218,7 +228,7 @@
 			}, {
 				"path": "salesSlip/selectProduct",
 				"style": {
-					"navigationBarTitleText": "选择产品",
+					"navigationBarTitleText": "选择产品",
 					"navigationBarBackgroundColor": "#FD4B09",
 					"app-plus": {
 						"titleNView": {
@@ -235,7 +245,7 @@
 			}, {
 				"path": "purchase/selectProduct",
 				"style": {
-					"navigationBarTitleText": "选择产品",
+					"navigationBarTitleText": "选择产品",
 					"navigationBarBackgroundColor": "#FD4B09",
 					"app-plus": {
 						"titleNView": {
@@ -277,7 +287,7 @@
 								"fontSize": "16px",
 								"float": "right",
 								"color": "#fff"
-							}],
+							}],
 							"backgroundImage": "linear-gradient(to bottom, #FD4B09, #FF6F3B)"
 						}
 					}
@@ -294,7 +304,7 @@
 								"fontSize": "16px",
 								"float": "right",
 								"color": "#fff"
-							}],
+							}],
 							"backgroundImage": "linear-gradient(to bottom, #FD4B09, #FF6F3B)"
 						}
 					}
@@ -311,7 +321,7 @@
 								"fontSize": "16px",
 								"float": "right",
 								"color": "#fff"
-							}],
+							}],
 							"backgroundImage": "linear-gradient(to bottom, #FD4B09, #FF6F3B)"
 						}
 					}
@@ -328,7 +338,7 @@
 								"fontSize": "16px",
 								"float": "right",
 								"color": "#fff"
-							}],
+							}],
 							"backgroundImage": "linear-gradient(to bottom, #FD4B09, #FF6F3B)"
 						}
 					}

+ 70 - 55
pages/tabBar/home.vue

@@ -57,16 +57,18 @@
 					<text class="grid_text">{{item.text}}</text>
 				</u-grid-item>
 			</u-grid>
-		</view>
-		
+		</view>
+
 		<u-toast ref="uToast" />
 		<!-- 更新组件 force 是否强制更新    tabbar:页面是否有原生tabbar组件-->
 		<app-update ref="app_update" :force="false" :tabbar="true"></app-update>
 	</view>
 </template>
 <script>
-	import appUpdate from "@/components/yzhua006-update/app-update.vue"
-	import {revenueExpenditure} from "@/api/home/index.js"
+	import appUpdate from "@/components/yzhua006-update/app-update.vue"
+	import {
+		revenueExpenditure
+	} from "@/api/home/index.js"
 	export default {
 		components: {
 			appUpdate
@@ -75,62 +77,71 @@
 			return {
 				list: [{
 					image: "../../static/images/view/home/swiper.png"
-				}],
-				form:{},
-				dataList: [{
-					url: "../../static/images/view/home/desktop/customer.png",
-					text: "客户信息",
-					value: "customer"
-				}, {
-					url: "../../static/images/view/home/desktop/visit.png",
-					text: "拜访记录",
-					value:"visit"
-				}, {
-					url: "../../static/images/view/home/desktop/product.png",
-					text: "产品信息",
-					value: "product"
-				}, {
-					url: "../../static/images/view/home/desktop/achievements.png",
-					text: "绩效考核"
-				}, {
-					url: "../../static/images/view/home/desktop/order.png",
-					text: "销售订单",
-					value: "toBeCollectedlist"
-				}, {
-					url: "../../static/images/view/home/desktop/delivery.png",
-					text: "送货管理"
-				}, {
-					url: "../../static/images/view/home/desktop/collection.png",
-					text: "收款管理",
-					value: "collectionManagement"
-				}, {
-					url: "../../static/images/view/home/desktop/returnGoods.png",
-					text: "退货管理"
-				}, {
-					url: "../../static/images/view/home/desktop/shoppingMall.png",
-					text: "商城信息"
-				}, {
-					url: "../../static/images/view/home/desktop/goOnline.png",
-					text: "产品上架"
-				}, {
-					url: "../../static/images/view/home/desktop/purchase.png",
-					text: "采购管理",
-					value: "purchase"
-				}, {
-					url: "../../static/images/view/home/desktop/cost.png",
-					text: "费用管理"
 				}],
+				form: {},
+				dataList: [{
+						url: "../../static/images/view/home/desktop/customer.png",
+						text: "客户信息",
+						value: "customer"
+					}, {
+						url: "../../static/images/view/home/desktop/visit.png",
+						text: "拜访记录",
+						value: "visit"
+					}, {
+						url: "../../static/images/view/home/desktop/product.png",
+						text: "产品信息",
+						value: "product"
+					}
+					// ,{
+					// 	url: "../../static/images/view/home/desktop/achievements.png",
+					// 	text: "绩效考核"
+					// }
+					, {
+						url: "../../static/images/view/home/desktop/order.png",
+						text: "销售订单",
+						value: "toBeCollectedlist"
+					}
+					// , {
+					// 	url: "../../static/images/view/home/desktop/delivery.png",
+					// 	text: "送货管理"
+					// }
+					, {
+						url: "../../static/images/view/home/desktop/collection.png",
+						text: "收款管理",
+						value: "collectionManagement"
+					}
+					// , {
+					// 	url: "../../static/images/view/home/desktop/returnGoods.png",
+					// 	text: "退货管理"
+					// }, {
+					// 	url: "../../static/images/view/home/desktop/shoppingMall.png",
+					// 	text: "商城信息"
+					// }
+					, {
+						url: "../../static/images/view/home/desktop/goOnline.png",
+						text: "产品上架",
+						value: "productLaunch",
+					}, {
+						url: "../../static/images/view/home/desktop/purchase.png",
+						text: "采购管理",
+						value: "purchase"
+					}
+					// , {
+					// 	url: "../../static/images/view/home/desktop/cost.png",
+					// 	text: "费用管理"
+					// }
+				],
 			}
 		},
 		mounted() {
 			this.$refs.app_update.update();
-		},
-		onShow() {
-			revenueExpenditure({
-				tenantId:uni.getStorageSync('userInfo').tenant_id
-			}).then(res=>{
-				this.form = res.data
-			})
+		},
+		onShow() {
+			revenueExpenditure({
+				tenantId: uni.getStorageSync('userInfo').tenant_id
+			}).then(res => {
+				this.form = res.data
+			})
 		},
 		methods: {
 			pageJump(value) {
@@ -162,6 +173,9 @@
 					case 'visit':
 						this.$u.route('/pages/views/visit/visit');
 						break
+					case 'productLaunch':
+						this.$u.route('/pages/views/productLaunch/index');
+						break
 					default:
 						this.$refs.uToast.success("该功能暂未开发~")
 				}
@@ -198,6 +212,7 @@
 	.quick {
 		margin-top: 60rpx;
 		box-shadow: 0px 14rpx 38rpx 4rpx rgba(52, 52, 52, 0.03);
+
 		.census {
 			width: 96%;
 			margin: 0 auto;

+ 4 - 4
pages/tabBar/record.vue

@@ -58,24 +58,24 @@
 				<view style="font-size: 24rpx;">查看销售流水 掌握每天经营</view>
 			</view>
 		</view>
-		<view class="flowMeterTwo" @click="pageJump()">
+		<!-- <view class="flowMeterTwo" @click="pageJump()">
 			<view style="padding: 40rpx;">
 				<view>送货提醒表</view>
 				<view style="font-size: 24rpx;">未送货信息查询</view>
 			</view>
-		</view>
+		</view> -->
 		<view class="flowMeterThree" @click="pageJump('operatingReceipts')">
 			<view style="padding: 40rpx;">
 				<view>销售欠款汇总</view>
 				<view style="font-size: 24rpx;">客户欠款金额汇总查询</view>
 			</view>
 		</view>
-		<view class="flowMeterFour" @click="pageJump()">
+		<!-- <view class="flowMeterFour" @click="pageJump()">
 			<view style="padding: 40rpx;">
 				<view>送货明细表</view>
 				<view style="font-size: 24rpx;">送货明细查询</view>
 			</view>
-		</view>
+		</view> -->
 		<u-toast ref="uToast" />
 		<uni-calendar ref="calendar" :insert="false" :range="true" @confirm="confirmCalendar" />
 	</view>

+ 24 - 1
pages/views/customer/customerDetails.vue

@@ -66,6 +66,12 @@
 							</template>
 						</u-input>
 					</u-form-item>
+					<u-form-item label="商城价格" :borderBottom="category==false?false:true"
+						@click="filterAll(['shoppingMall','shoppingMall'])">
+						<u-input v-model="form.shoppingMall" inputAlign="right" border="none" placeholder="请选择"
+							disabled disabledColor="#ffffff">
+						</u-input>
+					</u-form-item>
 					<view v-if="category">
 						<u-form-item label="客户标签1" prop="mailbox" borderBottom labelWidth="180rpx">
 							<u-input v-model="form.labels[0]" inputAlign="right" border="none" placeholder="请输入" />
@@ -312,7 +318,8 @@
 				let data = {
 					...this.form,
 					code: this.form.cname,
-					corpsFiles: this.fileList1
+					corpsFiles: this.fileList1,
+					billType:'1'
 				}
 				data.corpsFiles.forEach(item => delete item.status)
 				let this_ = this
@@ -422,6 +429,19 @@
 							uni.hideLoading();
 						})
 						break;
+					case "shoppingMall":
+						uni.showLoading({
+							title: '加载中',
+							mask: true
+						});
+						this.$u.api.getWorkDicts('mall_price').then(res => {
+							this.columns = [res.data]
+							this.dropDown = true
+							this.keyName = "dictValue"
+							this.mask = true
+							uni.hideLoading();
+						})
+						break;
 				}
 			},
 			changeHandler(e) {
@@ -516,6 +536,9 @@
 				} else if (this.screen[1] == "corpsTypeId") {
 					this.form[this.screen[0]] = e.value[e.values.length-1].title
 					this.form[this.screen[1]] = e.value[e.values.length-1].id
+				} else if (this.screen[1] == "shoppingMall") {
+					this.form[this.screen[0]] = e.value[e.values.length-1].dictKey
+					this.form[this.screen[1]] = e.value[e.values.length-1].dictValue
 				} else if(this.screen[1] == "adminProfiles") {
 					this.form[this.screen[0]] = e.value[0].name
 					this.form[this.screen[1]] = e.value[0].id

+ 13 - 9
pages/views/product/productDetails.vue

@@ -34,26 +34,27 @@
 						</u-input>
 					</u-form-item>
 					<u-form-item label="零售价" prop="standardPrice" borderBottom>
-						<u-input v-model="form.standardPrice" border="none" placeholder="请输入" />
+						<u-input type="number" v-model="form.standardPrice" border="none" placeholder="请输入" />
 					</u-form-item>
 					<u-form-item label="售价1" prop="wholesalePrice" borderBottom>
-						<u-input v-model="form.wholesalePrice" border="none" placeholder="请输入" />
+						<u-input type="number" v-model="form.wholesalePrice" border="none" placeholder="请输入" />
 					</u-form-item>
 					<u-form-item label="售价2" prop="repairDepotPrice" borderBottom>
-						<u-input v-model="form.repairDepotPrice" border="none" placeholder="请输入" />
+						<u-input type="number" v-model="form.repairDepotPrice" border="none" placeholder="请输入" />
 					</u-form-item>
 					<u-form-item label="售价3" prop="storePrice" borderBottom>
-						<u-input v-model="form.storePrice" border="none" placeholder="请输入" />
+						<u-input type="number" v-model="form.storePrice" border="none" placeholder="请输入" />
 					</u-form-item>
 					<u-form-item label="售价4" prop="price" borderBottom>
-						<u-input v-model="form.price" border="none" placeholder="请输入" />
+						<u-input type="number" v-model="form.price" border="none" placeholder="请输入" />
 					</u-form-item>
 					<u-form-item label="进货价" prop="purchasePrice" borderBottom>
-						<u-input v-model="form.purchasePrice" border="none" placeholder="请输入" />
+						<u-input type="number" v-model="form.purchasePrice" border="none" placeholder="请输入" />
+					</u-form-item>
+					<u-form-item label="特价" prop="specialOffer" borderBottom>
+						<u-input type="number" v-model="form.specialOffer" border="none" placeholder="请输入" />
 					</u-form-item>
 					<u-form-item label="标签" prop="label" borderBottom>
-						<!-- <u-input v-model="form.label" border="none" placeholder="请选择" suffixIcon="arrow-right" disabled
-							disabledColor="#ffffff" /> -->
 						<u-checkbox-group v-model="form.label" iconPlacement="left" placement="row">
 							<u-checkbox activeColor="#fd4b09" :customStyle="{marginBottom: '8px'}"
 								v-for="(item, index) in checkboxList" :key="index" :label="item.dictValue"
@@ -123,7 +124,10 @@
 		queryDetail,
 		customerType
 	} from "@/api/views/product/index.js"
-	import http from '@/http/api.js'
+	import http from '@/http/api.js'
+	// import {
+	// 	Base64
+	// } from '@/utils/base64.js';
 	import {
 		clientId,
 		clientSecret

+ 409 - 0
pages/views/productLaunch/index.vue

@@ -0,0 +1,409 @@
+<template>
+	<view class="bg-set" :class="mask ? 'tl-show': ''">
+		<u-navbar :autoBack="true" :placeholder="true" leftIconColor="#fff" bgColor="#FD4B09">
+			<view slot="center" style="width: 88%;margin-left: 80rpx;">
+				<u-search v-model="form.goods" :animation="true" :actionStyle="{color:'#fff'}" @custom="custom"
+					@search="custom"></u-search>
+			</view>
+		</u-navbar>
+		<view class="topBackground" :style="{top: revenueTop+44+'px'}" style="overflow:hidden">
+			<u-tabs :list="list" @click="click" :activeStyle="{ color: '#fff' }" :inactiveStyle="{ color: '#ffffff80' }"
+				lineColor="#fff">
+				<view slot="right" style="font-size: 15px;color: #fff;">
+					<text style="margin-left: 10rpx;">|<text style="margin:0rpx 15rpx"
+							@click="show = true,mask = true">筛选</text></text>
+				</view>
+			</u-tabs>
+		</view>
+		<view style="margin: 0rpx auto;" class="content">
+			<view class="contentBox" v-for="(item,index) in dataList" :key="index">
+				<view style="width: 100%;margin: 0 auto;">
+					<view class="textBox">
+						<view style="font-size: 30rpx;font-weight: bold;">{{item.goods}}</view>
+						<view>
+							库存:{{item.balance?item.balance.slice(0,item.balance.length-3):item.balance}}
+						</view>
+					</view>
+					<view class="textBox">
+						<view style="font-size: 30rpx;">库存单价:{{item.stockPrice}}</view>
+						<view v-if="item.label.includes('特价')">
+							<u--input
+								style="padding:0"
+								type="number"
+								inputAlign="right"
+							    placeholder="请输入商城价格"
+							    border="none"
+							    v-model="item.salesPrice"
+							    @blur="(val)=>{blur(val,item)}"
+							  ></u--input>
+						</view>
+						<view v-else>商城价格:{{item.salesPrice}}</view>
+					</view>
+					<view class="textBox" style="padding-top: 10rpx;">
+						<view>
+							<u-checkbox-group v-model="item.label" iconPlacement="left" placement="row" @change="(n)=>{checkboxChange(n,item)}">
+								<u-checkbox activeColor="#fd4b09" :customStyle="{marginBottom: '8px'}"
+									v-for="(li, ind) in checkboxListTwo" :key="ind" :label="li.dictValue"
+									:name="li.dictValue">
+								</u-checkbox>
+							</u-checkbox-group>
+							<!-- <u-radio-group v-model="item.label" placement="row" shape="square">
+								<u-radio :customStyle="{marginBottom: '8px'}" v-for="(li, ind) in checkboxListTwo"
+									:key="ind" :label="li.dictValue" :name="li.dictValue">
+								</u-radio>
+							</u-radio-group> -->
+						</view>
+						<view>
+							<u-button v-if="item.upperFrame == 0" type="primary" size="small" text="上架" color="#fd4b09" shape="circle"
+								@click="change(item,index,'up')"></u-button>
+							<u-button v-else-if="item.upperFrame == 1" type="warning" size="small" text="下架"
+								shape="circle" @click="change(item,index,'down')"></u-button>
+						</view>
+					</view>
+				</view>
+			</view>
+			<u-empty v-if="total == 0" style="position: absolute;top: 45%;left: 50%;transform:translate(-50%,-50%)"
+				mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png" />
+			<u-loadmore v-if="total !== 0 && dataList.length != 0" :status="status" />
+		</view>
+		<u-popup :show="show" @close="show = false,mask = false" closeable :closeOnClickOverlay="false" zIndex="10070">
+			<view style="mawidth: 100%;margin: auto 30rpx;margin-top: 20rpx;padding-bottom: 20rpx;">
+				<text>筛选条件</text>
+				<u--form labelPosition="left" :model="formTwo" labelWidth="150rpx">
+					<u-form-item label="产品分类" borderBottom @click="filterAll(['goodsTypeName','goodsTypeId'])">
+						<u-input v-model="formTwo.goodsTypeName" border="none" placeholder="请选择"
+							suffixIcon="arrow-right" disabled disabledColor="#ffffff" />
+					</u-form-item>
+				</u--form>
+				<text style="font-size: 30rpx;">库存筛选</text>
+				<view style="display: flex;justify-content: space-between;">
+					<u-button :type="formTwo.inventoryBalance == 0?'primary':''" text="库存数量>0" @click="stock(0)">
+					</u-button>
+					<u-button :type="formTwo.inventoryBalance == 1?'primary':''" text="库存数量≤0" @click="stock(1)">
+					</u-button>
+				</view>
+				<text style="font-size: 30rpx;">标签筛选</text>
+				<view>
+					<u-checkbox-group v-model="formTwo.labels" placement="column">
+						<u-checkbox :customStyle="{marginBottom: '8px'}" v-for="(item, index) in checkboxList"
+							:key="index" :label="item.dictValue" :name="item.dictKey">
+						</u-checkbox>
+					</u-checkbox-group>
+				</view>
+				<view style="display: flex;justify-content: space-between;padding-top: 20rpx;">
+					<view style="width: 45%;">
+						<u-button text="全部清空" type="warning" @click="confirmEmptying"></u-button>
+					</view>
+					<view style="width: 45%;">
+						<u-button text="确认搜索" type="primary" @click="confirmSearch"></u-button>
+					</view>
+				</view>
+			</view>
+		</u-popup>
+		<u-picker :show="dropDown" :columns="columns" :keyName="keyName" @cancel="dropDown = false" @confirm="confirm">
+		</u-picker>
+	</view>
+</template>
+
+<script>
+	import {
+		queryBrand,
+		queryStock,
+		listAll
+	} from '@/api/views/stock/index.js'
+	import {
+		submit
+	} from '@/api/views/productLaunch/index.js'
+	export default {
+		data() {
+			return {
+				list: [{
+					name: '全部',
+					value: ''
+				}],
+				show: false,
+				mask: false,
+				dropDown: false,
+				columns: [],
+				checkboxList: [],
+				checkboxListTwo: [],
+				status: 'loadmore',
+				revenueTop: 0,
+				keyName: '',
+				total: 0,
+				dataList: [],
+				screen: [],
+				form: {
+					size: 20,
+					current: 1
+				},
+				formTwo: {
+					size: 20,
+					current: 1
+				}
+			}
+		},
+		onLoad() {
+			this.$u.api.getWorkDicts('goods_lable').then(res => {
+				this.checkboxList = res.data
+				this.keyName = "dictValue"
+			})
+			this.$u.api.getWorkDicts('lable').then(res => {
+				this.checkboxListTwo = res.data
+			})
+			listAll().then(res => {
+				res.data.forEach(item => this.list.push({
+					name: item.cname,
+					value: item.id
+				}))
+				this.query()
+			})
+			uni.getSystemInfo({
+				success: (e) => {
+					this.revenueTop = e.statusBarHeight
+				}
+			})
+		},
+		onReachBottom() {
+			this.status = 'loading'
+			if (this.dataList.length < this.total) {
+				this.form.current++
+				this.query()
+			} else {
+				this.status = 'nomore'
+			}
+		},
+		methods: {
+			checkboxChange(n,item){
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				});
+				submit({
+					...item,
+					label:n.join(","),
+					ids:item.goodsId
+				}).then(res => {
+					uni.hideLoading();
+					this.dataList = []
+					this.query()
+				})
+			},
+			blur(val,item){
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				});
+				submit({
+					...item,
+					label:item.label.join(","),
+					ids:item.goodsId,
+					specialOffer:val
+				}).then(res => {
+					uni.hideLoading();
+					this.dataList = []
+					this.query()
+				})
+			},
+			change(item,index,type) {
+				if (type == "up") {
+					uni.showLoading({
+						title: '加载中',
+						mask: true
+					});
+					submit({
+						...item,
+						upperFrame: 1,
+						label:item.label.join(","),
+						ids:item.goodsId
+					}).then(res => {
+						uni.hideLoading();
+						this.dataList = []
+						this.query()
+					})
+				} else if (type == "down") {
+					uni.showLoading({
+						title: '加载中',
+						mask: true
+					});
+					submit({
+						...item,
+						upperFrame: 0,
+						label:item.label.join(","),
+						ids:item.goodsId
+					}).then(res => {
+						uni.hideLoading();
+						this.dataList = []
+						this.query()
+					})
+				}
+			},
+			confirmEmptying() {
+				this.formTwo = {
+					size: 20,
+					current: 1
+				}
+				this.form = {
+					size: 20,
+					current: 1
+				}
+				this.dataList = []
+				this.show = false
+				this.mask = false
+				this.query()
+			},
+			confirmSearch() {
+				let form = {
+					...JSON.parse(JSON.stringify(this.formTwo)),
+					labels: this.formTwo.labels ? this.formTwo.labels.join(',') : '',
+					size: 20,
+					current: 1
+				}
+				this.form = form
+				this.dataList = []
+				this.show = false
+				this.mask = false
+				this.query()
+			},
+			stock(val) {
+				this.$set(this.formTwo, "inventoryBalance", val)
+			},
+			//集合筛选条件
+			filterAll(screen) {
+				this.screen = screen
+				switch (screen[1]) {
+					case "goodsTypeId":
+						uni.showLoading({
+							title: '加载中',
+							mask: true
+						});
+						listAll().then(res => {
+							this.columns = [res.data]
+							this.keyName = "cname"
+							this.dropDown = true
+							uni.hideLoading()
+						})
+						break;
+				}
+			},
+			//选择确认
+			confirm(e) {
+				this.formTwo[this.screen[0]] = e.value[0].cname
+				this.formTwo[this.screen[1]] = e.value[0].id
+				this.dropDown = false
+			},
+			query() {
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				});
+				queryStock(this.form).then(res => {
+					this.total = res.data.total || 0
+					if (res.data.records) {
+						this.dataList = this.dataList.concat(res.data.records)
+					}
+					uni.hideLoading();
+					if (this.total < 10) {
+						this.status = 'nomore'
+					}
+				})
+			},
+			custom(e) {
+				this.dataList = []
+				this.form = {
+					goods: e,
+					size: 20,
+					current: 1,
+				}
+				this.query()
+			},
+			click(item) {
+				this.dataList = []
+				this.form = {
+					goodsTypeId: item.value,
+					size: 20,
+					current: 1,
+				}
+				this.query()
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.tl-show {
+		overflow: hidden;
+		position: fixed;
+		height: 100%;
+		width: 100%;
+	}
+
+	.contentBox {
+		width: 96%;
+		margin: 20rpx auto;
+		background-color: #FFFFFF;
+		border-radius: 20rpx;
+		/* box-shadow: 0 5rpx 14rpx 0 rgba(101, 176, 249, 0.42); */
+		padding-top: 15rpx;
+		padding-bottom: 10rpx;
+	}
+
+	.textBox {
+		padding: 0 15px;
+		display: flex;
+		justify-content: space-between;
+		font-size: 24rpx;
+		margin-bottom: 10rpx;
+		align-items: flex-end;
+	}
+
+	.topBackground {
+		position: fixed;
+		top: 0;
+		z-index: 1;
+		width: 100%;
+		background-color: #FF6F3B;
+	}
+
+	/* .statistics_h {
+		position: fixed;
+		top: calc(88px + var(--status-bar-height));
+		z-index: 1;
+		width: 100%;
+		background-color: #fff;
+		padding-top: 10rpx;
+	} */
+
+	.content {
+		margin-top: 100rpx !important;
+	}
+
+	/* .statistics {
+		width: calc(96% - 20rpx);
+		margin: 0 auto;
+		background: url("../../../static/images/bg.png") no-repeat;
+		background-size: 100% 100%;
+		border-radius: 20rpx;
+		color: #fff;
+		padding: 10rpx 0rpx 10rpx 10rpx;
+		font-size: 38rpx;
+	} */
+
+	/* ::v-deep .u-line {
+		border-bottom: 4rpx dashed #B6B6B6 !important;
+	} */
+
+	::v-deep .u-divider {
+		margin: 10rpx;
+	}
+
+	::v-deep .u-album__row__wrapper>uni-image {
+		border-radius: 10rpx;
+		border-top-right-radius: 0;
+		border-bottom-right-radius: 0;
+	}
+
+	::v-deep .u-navbar__content {
+		background-image: linear-gradient(to bottom, #FD4B09, #FF6F3B);
+	}
+</style>

+ 2 - 2
pages/views/purchase/index.vue

@@ -79,7 +79,7 @@
 				</view>
 			</view>
 		</view>
-		<u-popup zIndex="10070" :show="openPopup" @close="openPopup = false,mask = false" mode="center" closeable
+		<u-popup zIndex="10070" :show="openPopup" @close="openPopup = false,mask = false,uni.navigateBack()" mode="center" closeable
 			round="10rpx">
 			<u--form labelPosition="left" :labelStyle="{color: '#fd4b09'}" :model="formTwo" ref="formTwo"
 				labelWidth="150rpx">
@@ -117,7 +117,7 @@
 								disabled disabledColor="#ffffff" />
 						</u-form-item>
 						<view style="display: flex;margin-top: 20rpx;">
-							<u-button text="取消" style="width: 45%;" @click="openPopup = false,mask = false"></u-button>
+							<u-button text="取消" style="width: 45%;" @click="openPopup = false,mask = false,uni.navigateBack()"></u-button>
 							<u-button type="primary" text="付款" color="#FD4B09" style="width: 45%;"
 								@click="collectionConfirm"></u-button>
 						</view>

+ 45 - 3
pages/views/purchase/salesOrderDetails.vue

@@ -174,10 +174,18 @@
 				<u-cell-group :border="false">
 					<u-cell :border="false" center title="图片信息" arrow-direction="down">
 						<view slot="icon" style="width: 10rpx;height: 35rpx;background-color: #fd4b09;"></view>
+						<view slot="value">
+							<view
+								v-if="form.confirmStatus == 1"
+								@click.stop="saveAttachment"
+								style="padding: 2rpx 20rpx;border:1rpx solid #FD4B09;border-radius: 100rpx;color: #FD4B09;">
+								保存
+							</view>
+						</view>
 					</u-cell>
 				</u-cell-group>
 				<view style="padding: 0 10rpx;">
-					<u-upload :disabled="form.confirmStatus == 1" :fileList="fileList1" @afterRead="afterRead"
+					<u-upload :fileList="fileList1" @afterRead="afterRead"
 						@delete="deletePic" name="1" multiple :maxCount="10"></u-upload>
 				</view>
 			</view>
@@ -234,7 +242,8 @@
 		removeItem,
 		removeId,
 		copyOrder,
-		collectPayment
+		collectPayment,
+		saveAtta
 	} from '@/api/views/sale/salesOrderDetails.js'
 	import http from '@/http/api.js'
 	import {
@@ -338,7 +347,14 @@
 			},
 			deleteDoc() {
 				if (this.form.id) {
-					let this_ = this
+					let this_ = this
+					if(this_.form.confirmStatus == 1){
+						return uni.showToast({
+							icon: "none",
+							title: '禁止删除',
+							mask: true
+						});
+					}
 					uni.showModal({
 						title: '提示',
 						content: "是否确认删除",
@@ -534,6 +550,32 @@
 						}
 					}
 				})
+			},
+			//保存附件
+			saveAttachment(){
+				let form = {
+					pid:this.form.id,
+					orderFilesList: this.fileList1
+				}
+				if (form.orderFilesList.length > 0) {
+					form.orderFilesList.forEach(item => delete item.status)
+				}
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				});
+				saveAtta(form).then(res => {
+					uni.showToast({
+						icon: "none",
+						title: '保存成功',
+						mask: true
+					});
+					let _this = this
+					setTimeout(function() {
+						uni.hideLoading();
+						_this.refresh(res.data.id)
+					}, 1000);
+				})
 			},
 			//保存
 			conserve() {

+ 1 - 1
pages/views/salesSlip/index.vue

@@ -82,7 +82,7 @@
 				</view>
 			</view>
 		</view>
-		<u-popup zIndex="10070" :closeOnClickOverlay="false" :show="openPopup" @close="openPopup = false,mask = false"
+		<u-popup zIndex="10070" :closeOnClickOverlay="false" :show="openPopup" @close="openPopup = false,mask = false,uni.navigateBack()"
 			mode="center" closeable round="10rpx">
 			<u--form labelPosition="left" :labelStyle="{color: '#fd4b09'}" :model="formTwo" ref="formTwo"
 				labelWidth="150rpx">

+ 45 - 4
pages/views/salesSlip/salesOrderDetails.vue

@@ -179,11 +179,19 @@
 				style="width: calc(96%);margin: 0 auto;background-color: #fff;border-radius: 20rpx;margin-top: 20rpx;">
 				<u-cell-group :border="false">
 					<u-cell :border="false" center title="图片信息" arrow-direction="down">
-						<view slot="icon" style="width: 10rpx;height: 35rpx;background-color: #fd4b09;"></view>
+						<view slot="icon" style="width: 10rpx;height: 35rpx;background-color: #fd4b09;"></view>
+						<view slot="value">
+							<view
+								v-if="form.confirmStatus == 1"
+								@click.stop="saveAttachment"
+								style="padding: 2rpx 20rpx;border:1rpx solid #FD4B09;border-radius: 100rpx;color: #FD4B09;">
+								保存
+							</view>
+						</view>
 					</u-cell>
 				</u-cell-group>
 				<view style="padding: 0 10rpx;">
-					<u-upload :disabled="form.confirmStatus == 1" :fileList="fileList1" @afterRead="afterRead"
+					<u-upload :fileList="fileList1" @afterRead="afterRead"
 						@delete="deletePic" name="1" multiple :maxCount="10"></u-upload>
 				</view>
 			</view>
@@ -248,7 +256,7 @@
 		removeItem,
 		removeId,
 		copyOrder,
-		collectPayment
+		collectPayment,saveAtta
 	} from '@/api/views/sale/salesOrderDetails.js'
 	import http from '@/http/api.js'
 	import {
@@ -356,7 +364,14 @@
 			},
 			deleteDoc() {
 				if (this.form.id) {
-					let this_ = this
+					let this_ = this
+					if(this_.form.confirmStatus == 1){
+						return uni.showToast({
+							icon: "none",
+							title: '禁止删除',
+							mask: true
+						});
+					}
 					uni.showModal({
 						title: '提示',
 						content: "是否确认删除",
@@ -558,6 +573,32 @@
 						}
 					}
 				})
+			},
+			//保存附件
+			saveAttachment(){
+				let form = {
+					pid:this.form.id,
+					orderFilesList: this.fileList1
+				}
+				if (form.orderFilesList.length > 0) {
+					form.orderFilesList.forEach(item => delete item.status)
+				}
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				});
+				saveAtta(form).then(res => {
+					uni.showToast({
+						icon: "none",
+						title: '保存成功',
+						mask: true
+					});
+					let _this = this
+					setTimeout(function() {
+						uni.hideLoading();
+						_this.refresh(res.data.id)
+					}, 1000);
+				})
 			},
 			//保存
 			conserve() {

+ 3 - 4
pages/views/stock/index.vue

@@ -2,11 +2,11 @@
 	<view class="bg-set" :class="mask ? 'tl-show': ''">
 		<u-navbar :autoBack="true" :placeholder="true" leftIconColor="#fff" bgColor="#FD4B09">
 			<view slot="center" style="width: 88%;margin-left: 80rpx;">
-				<u-search v-model="form.goodsInt" :show-action="true" actionText="搜索" :animation="true"
+				<u-search v-model="form.goods" :animation="true"
 					:actionStyle="{color:'#fff'}" @custom="custom" @search="custom"></u-search>
 			</view>
 		</u-navbar>
-		<view class="topBackground" :style="{top: revenueTop+44+'px'}" style="overflow:hidden">
+		<view class="topBackground" :style="{top: revenueTop+44+'px'}" style="overflow:hidden">
 			<u-tabs :list="list" @click="click" :activeStyle="{ color: '#fff' }" :inactiveStyle="{ color: '#ffffff80' }"
 				lineColor="#fff">
 				<view slot="right" style="font-size: 15px;color: #fff;">
@@ -47,8 +47,7 @@
 				<view style="width: 100%;margin: 0 auto;">
 					<view style="display: flex;height: 140rpx;">
 						<view style="width: 140rpx;height: 140rpx;">
-							<u-album :urls="[item.url?item.url:'../../../static/images/404.png']" singleSize="140rpx">
-							</u-album>
+							<image style="width: 100%;height: 100%;" :src="item.url?item.url:'../../../static/images/404.png'"></image>
 						</view>
 						<view style="font-size: 24rpx;width: calc(100% - 150rpx);margin-left: 10rpx;">
 							<view style="font-size: 26rpx;font-weight: bold;">{{item.goods}}</view>