Преглед изворни кода

Merge branch 'pre-release' of jianguan-web/qpls-md-app into master

李磊 пре 1 година
родитељ
комит
1fd1080729
38 измењених фајлова са 1671 додато и 508 уклоњено
  1. 1 1
      api/data.js
  2. 13 1
      api/sales.js
  3. 4 6
      api/shelf.js
  4. 19 1
      api/user.js
  5. 35 0
      api/verify.js
  6. 2 1
      components/customPicker/checkBoxPicker.vue
  7. 2 2
      config/index.js
  8. BIN
      hybrid/html/img/finishImg.png
  9. 17 7
      hybrid/html/index.html
  10. 0 27
      hybrid/html/js/resize.js
  11. 4 3
      manifest.json
  12. 35 1
      pages.json
  13. 74 4
      pages/approveStore/authPass.vue
  14. 41 0
      pages/approveStore/detail.vue
  15. 2 1
      pages/login/login.vue
  16. 125 93
      pages/sales/billHistory.vue
  17. 457 14
      pages/sales/billHistoryDetail.vue
  18. 4 4
      pages/sales/billListComponent.vue
  19. 4 0
      pages/sales/index.vue
  20. 212 0
      pages/sales/productUniversal.vue
  21. 146 0
      pages/sales/searchParts.vue
  22. 1 1
      pages/shelfSetting/addShelfHw.vue
  23. 1 1
      pages/shelfSetting/editShelfHw.vue
  24. 464 321
      pages/shelfSetting/shelfSet.vue
  25. 1 0
      pages/statistics/chooseShelf.vue
  26. 5 5
      pages/stock/index.vue
  27. 2 2
      pages/userCenter/index.vue
  28. 0 12
      pages/userCenter/setData.vue
  29. BIN
      static/default/navIcon/parts.png
  30. 0 0
      static/iconfont/iconfont.css
  31. BIN
      static/iconfont/iconfont.ttf
  32. BIN
      证书/ios/发布证书/iscmApp_pro.mobileprovision
  33. BIN
      证书/ios/发布证书/pro证书.p12
  34. BIN
      证书/ios/开发证书/dev证书.p12
  35. BIN
      证书/ios/开发证书/iscmApp.mobileprovision
  36. BIN
      证书/ios/新证书/iscm.p12
  37. BIN
      证书/ios/新证书/iscmdev.mobileprovision
  38. BIN
      证书/ios/新证书/iscmpro.mobileprovision

+ 1 - 1
api/data.js

@@ -25,7 +25,7 @@ export const getSysVersion = (params) => {
   return axios.request({
     url: `sysVersion/getLatest`,
     method: 'post',
-	data: {applyCode:'jgqp',versionType: params.versionType}
+	data: params
   }, true)
 }
 // 数据字典

+ 13 - 1
api/sales.js

@@ -209,4 +209,16 @@ export const queryFlowByBizSn = (params) => {
 		data: params,
 		method: 'post'
 	  })
-}
+}
+
+//通用产品 列表  有分页
+export const productUniversalQueryPage = (params) => {
+  const url = `productUniversalCode/queryPage/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios.request({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}

+ 4 - 6
api/shelf.js

@@ -151,21 +151,19 @@ export const shelfProductSave = (params) => {
 // 获取价格显示
 export const getShelfPriceShow = (params) => {
   return axios.request({
-    url: `bizparam/getShelfPriceShow`,
-    data: params,
-    method: 'post'
+    url: `shelf/queryShelfPriceShowParam/${params.shelfSn}`,
+    method: 'get'
   })
 }
 // 更新价格显示
 export const updateShelfPriceShow = (params) => {
   return axios.request({
-    url: `bizparam/updateShelfPriceShow`,
-    data: params,
+    url: `shelf/updateShelfPriceShowParam/${params.shelfSn}`,
+    data: params.paramValue,
     method: 'post'
   })
 }
 
-
 // 货架订单-分页列表
 export const orderBillQueryPage = (params) => {
   const url = `orderBill/queryPage/${params.pageNo}/${params.pageSize}`

+ 19 - 1
api/user.js

@@ -177,4 +177,22 @@ export const getUserInfo = params => {
     url: `user/userInfo`,
     method: 'get'
   })
-}
+}
+// 查询结算账户功能状态
+export const queryFunctionState = params => {
+  return axios.request({
+    url: `settleAccount/queryFunctionState`,
+    method: 'get'
+  })
+}
+//结算账户列表
+export const settleAccountList = (params) => {
+  const url = `settleAccount/queryPage/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios.request({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}

+ 35 - 0
api/verify.js

@@ -52,4 +52,39 @@ export const findBySn = (params) => {
     data: params,
     method: 'post'
   })
+}
+
+//刷新历史对账单详情列表
+export const flushBill = (params) => {
+  return axios.request({
+    url: `verify/flushBill`,
+    data: params,
+    method: 'post'
+  })
+}
+
+//批量删除历史对账单详情列表
+export const deleteDetails = (params) => {
+  return axios.request({
+    url: `verify/deleteDetails`,
+    data: params,
+    method: 'post'
+  })
+}
+
+//校验确认收款弹窗
+export const settleVerify = (params) => {
+  return axios.request({
+    url: `verify/settleVerify`,
+    data: params,
+    method: 'post'
+  })
+}
+//确认收款
+export const settle = (params) => {
+  return axios.request({
+    url: `verify/settle`,
+    data: params,
+    method: 'post'
+  })
 }

+ 2 - 1
components/customPicker/checkBoxPicker.vue

@@ -57,7 +57,8 @@ export default {
 			}).then(result => {
 				if (result && result.status == 200) {
 					if(this.filtrate){//筛选业务状态
-						var selfArr=['WAIT_SUBMIT','WAIT_AUDIT','WAIT_OUT_WAREHOUSE','FINISH']
+					// 'WAIT_SUBMIT','WAIT_AUDIT'
+						var selfArr=['WAIT_OUT_WAREHOUSE','FINISH']
 						result.data.list=result.data.list.filter((item,i)=>{
 							if(selfArr.includes(item.code)){
 								return item

+ 2 - 2
config/index.js

@@ -5,8 +5,8 @@ const getConfig = (theme) => {
 		"default":{
 			themePath: 'default',
 			pro_URL: 'https://iscm.360arrow.com/qpls-md/', // 生产地址
-			uat_URL: 'http://p.iscm.360arrow.com/qpls-md/', // 预发布地址
-			dev_URL: 'http://192.168.2.111:8503/qpls-md/', // 本地地址
+			uat_URL: 'https://p.iscm.360arrow.com/qpls-md/', // 预发布地址
+			dev_URL: 'http://192.168.2.103:8503/qpls-md/', // 本地地址
 			appName: 'iSCM智慧供应链', // app 名称
 			company: '陕西山海高科信息技术有限公司',
 			loadText:{

BIN
hybrid/html/img/finishImg.png


+ 17 - 7
hybrid/html/index.html

@@ -198,7 +198,7 @@
           尊敬的“{{info.customer.customerName || '--'}}”,您好!
         </div>
         <div class="tipDesc">
-          以下是您在本店的未结账单,请查阅。
+          以下是您在本店的账单,请查阅。
         </div>
         <div class="orderInfo"
           :style="{bottom:(info.discountAmount && info.discountAmount*1 !=0 ? '-1.9rem':'-1.3rem' )}">
@@ -217,8 +217,9 @@
             <div class="amount_list flex align_center flex-between">
               <span class="amountName">折后金额</span>
               <span class="amount" style="color: #f0ad4e"
-                v-if="info.settleAmount">¥{{toThousands(info.settleAmount,2)}}</span>
-              <span class="amount" style="color: #f0ad4e" v-else>¥0.00</span>
+                v-if="info.billStatus == 'UNSETTLE'">¥{{info.settleAmount?toThousands(info.settleAmount,2):'0.00'}}</span>
+				<span class="amount" style="color: #f0ad4e"
+				  v-else>¥{{foldPrice}}</span>
             </div>
           </div>
           <div class="downLoadCon">
@@ -291,9 +292,19 @@
       },
       created () {
         this.ajaxUrl = window.location.origin + '/qpls-md/'
-        console.log('请求地址:', window.location.origin + '/qpls-md/')
         this.loadData()
       },
+	  computed:{
+		  // 折后金额
+		  foldPrice(){
+		  	let totalAmount = this.info.totalAmount?this.info.totalAmount:0
+		  	let discountPrice=this.info.discountAmount?this.info.discountAmount:0
+		  	let foldAmount = totalAmount - discountPrice 
+		  	foldAmount=Number(foldAmount)>0 ? foldAmount : 0
+		  	const newFoldPrice = foldAmount.toFixed(2)
+		  	return newFoldPrice
+		  }
+	  },
       methods: {
         loadData () {
           const ajaxData = {
@@ -325,9 +336,8 @@
           })
         },
         openInfoList (i) {
-          
           this.saleList[i].isShow = !this.saleList[i].isShow
-          this.flag = this.saleList.every(item=>{return item.isShow})
+          this.flag = this.saleList.every(item => { return item.isShow })
           this.saleList.splice()
         },
         downLoad () {
@@ -336,7 +346,7 @@
         },
         getUrlParam (index) {
           const urlArr = window.location.search.substr(1).split('&')
-          let newArr = urlArr.map(item=>{return item.replace('=','')})
+          const newArr = urlArr.map(item => { return item.replace('=', '') })
           return newArr[index] // 返回参数值
         },
         openAll () {

+ 0 - 27
hybrid/html/js/resize.js

@@ -18,33 +18,6 @@
 	var clientWidth = docEl.clientHeight;
 })(document, window);
 
-
-// 导出
-function downloadExcel(data, fileName) {
-	if (!data) {
-		return
-	}
-	const a = moment().format('YYYYMMDDHHmmss')
-	const fname = fileName + a
-	const blob = new Blob([data], {
-		type: 'application/vnd.ms-excel'
-	})
-	if (window.navigator && window.navigator.msSaveOrOpenBlob) {
-		navigator.msSaveBlob(blob, fname + '.xlsx')
-	} else {
-		const link = document.createElement('a')
-		link.style.display = 'none'
-		var href = URL.createObjectURL(blob)
-		link.href = href
-		link.setAttribute('download', fname + '.xlsx')
-
-		document.body.appendChild(link)
-		link.click()
-		document.body.removeChild(link)
-		window.URL.revokeObjectURL(href) // 释放掉blob对象
-	}
-}
-
 function toThousands(num, decimal) {
 	let numInfo = num ? num : 0
 	return parseFloat(numInfo).toFixed(decimal)

+ 4 - 3
manifest.json

@@ -2,8 +2,8 @@
     "name" : "iSCM智慧供应链",
     "appid" : "__UNI__5B57B68",
     "description" : "iSCM智慧供应链系统",
-    "versionName" : "1.3.1",
-    "versionCode" : 131,
+    "versionName" : "1.3.7",
+    "versionCode" : 137,
     "transformPx" : false,
     /* 5+App特有相关 */
     "app-plus" : {
@@ -57,7 +57,8 @@
             "Bluetooth" : {},
             "Share" : {},
             "Push" : {},
-            "Barcode" : {}
+            "Barcode" : {},
+            "Camera" : {}
         },
         /* 应用发布信息 */
         "distribute" : {

+ 35 - 1
pages.json

@@ -390,7 +390,21 @@
 			"path": "pages/sales/billHistoryDetail", 
 			"style": {
 				"navigationBarTitleText": "对账单详情",
-				"navigationBarTextStyle": "black"
+				"navigationBarTextStyle": "black",
+				"app-plus":{
+					"titleNView": {
+						"titleAlign": "left",
+						"buttons": [ //原生标题栏按钮配置,
+							{
+								"text": "\ue601 编辑" ,//原生标题栏增加分享按钮,点击事件可通过页面的 onNavigationBarButtonTap 函数进行监听u
+								"fontSrc": "/static/iconfont/iconfont.ttf",
+								"fontSize": "14",
+								"color":"#fff",
+								"width":"60px"
+							}
+						]
+					}
+				}
 			}
 		},
 		{
@@ -496,6 +510,26 @@
 				}
 			}
 		},
+		{
+			"path": "pages/sales/productUniversal", // 产品报价
+			"style": {
+				"navigationBarTitleText": "通用产品",
+				"enablePullDownRefresh": false,
+				"app-plus":{
+					"titleNView": {
+						"titleAlign": "left",
+						"buttons": [ //原生标题栏按钮配置,
+							{
+								"text": "\ue694 查询" ,//原生标题栏增加分享按钮,点击事件可通过页面的 onNavigationBarButtonTap 函数进行监听u
+								"fontSrc": "/static/iconfont/iconfont.ttf",
+								"fontSize": "14",
+								"width":"90px"
+							}
+						]
+					}
+				}
+			}
+		},
 		{
 		    "path" : "pages/webviews/openview",
 		    "style" :                                                                                    

+ 74 - 4
pages/approveStore/authPass.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="apply-wrap flex flex_column">
 		<view class="login-form">
-			<u-form :model="form" label-width="180rpx" :error-type="['toast']" ref="uForm">
+			<u-form :model="form" label-width="200rpx" :error-type="['toast']" ref="uForm">
 				<u-form-item label="门头照片" required prop="storeImage">
 					<u-upload 
 					@on-success="uploadStorePhoto" 
@@ -52,6 +52,23 @@
 				<u-form-item label="授信金额" v-if="form.settleType == 'CREDIT'" required prop="creditLimit">
 					<u-input :clearable="false" type="digit" :min="100" :maxlength="8" @blur="numberToFixed('creditLimit',2,999999)" v-model.trim="form.creditLimit" placeholder="请输入大于100的数字,最多两位小数"/>
 				</u-form-item>
+				<view>
+					<view style="padding: 1rem 0">价格权限设置</view>
+					<view class="flex align_center" style="width: 100%;padding: 0.3rem 0">
+						<text style="width: 90px;">货架产品:</text>
+						<u-checkbox-group @change="priceSetChange">
+							<u-checkbox v-for="item in showPrice" :key="item.paramCode" v-model="item.checked"
+								:name="item.paramCode">{{item.text}}</u-checkbox>
+						</u-checkbox-group>
+					</view>
+					<view class="flex align_center" style="width: 100%;padding: 0.3rem 0">
+						<text style="width: 90px;">非货架产品:</text>
+						<u-checkbox-group @change="nonPriceSetChange">
+							<u-checkbox v-for="item in showNoPrice" :key="item.paramCode" v-model="item.checked"
+								:name="item.paramCode">{{item.text}}</u-checkbox>
+						</u-checkbox-group>
+					</view>
+				</view>
 			</u-form>
 		</view>
 		<view class="form-btn-con flex justify_center">
@@ -63,6 +80,7 @@
 <script>
 	import Address from '@/components/address.vue'
 	import { xprhStoreApplyDetail, xprhStoreApplyAudit } from '@/api/approveStore'
+	import {updateShelfPriceShow} from '@/api/shelf'
 	import { clzConfirm, numberToFixed } from '@/libs/tools';
 	const baseUrl = getApp().globalData.baseUrl
 	export default{
@@ -119,12 +137,36 @@
 				storePhotoList: [],
 				yyzzPhotoList: [],
 				settleStyleModal: false,
-				settleStyleList: []
+				settleStyleList: [],
+				showPrice: [],
+				showNoPrice: []
 			}
 		},
 		// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
 		onReady() {
 			this.$refs.uForm.setRules(this.rules);
+			this.showPrice = [{
+								paramCode: 'shelf_price_show',
+								paramValue: 1,
+								text: '车主价',
+								checked: true
+							},{
+								paramCode: 'shelf_cost_show',
+								paramValue: 0,
+								text: '结算价',
+								checked: false
+							}]
+			this.showNoPrice = [{
+								paramCode: 'non_shelf_price_show',
+								paramValue: 1,
+								text: '车主价',
+								checked: true
+							},{
+								paramCode: 'non_shelf_cost_show',
+								paramValue: 0,
+								text: '结算价',
+								checked: false
+							}]
 		},
 		onLoad(options) {
 			const _this = this
@@ -240,8 +282,36 @@
 				xprhStoreApplyAudit(obj).then(res => {
 					console.log(res)
 					if(res.status == 200){
-						 uni.navigateBack()
-						 uni.$emit("updateAuthState")
+						 this.savePriceSet(res.data)
+					}else{
+						uni.showToast({icon: 'none',title: res.message})
+						this.loading = false
+					}
+				})
+			},
+			// 选择价格显示
+			priceSetChange(e) {
+				this.showPrice.map(item => {
+					item.paramValue = e.includes(item.paramCode) ? 1 : 0
+				})
+			},
+			nonPriceSetChange(e){
+				this.showNoPrice.map(item => {
+					item.paramValue = e.includes(item.paramCode) ? 1 : 0
+				})
+			},
+			// 价格显示保存
+			savePriceSet(data) {
+				const params = {
+					shelfSn: data.shelfSn,
+					paramValue: [...this.showPrice, ...this.showNoPrice]
+				}
+				console.log(params)
+				// 更新价格显示
+				updateShelfPriceShow(params).then(res => {
+					if (res.status == 200) {
+						uni.navigateBack()
+						uni.$emit("updateAuthState")
 					}
 					uni.showToast({icon: 'none',title: res.message})
 					this.loading = false

+ 41 - 0
pages/approveStore/detail.vue

@@ -46,6 +46,17 @@
 				<u-form-item label="授信金额" v-if="form.auditStatus == 'PASS'&&form.settleType == 'CREDIT'">
 					{{form.creditLimit||'--'}}
 				</u-form-item>
+				<view class="flex">
+					<view style="padding: 0.5rem 0;width: 90px;">价格权限</view>
+					<view>
+						<view style="padding: 0.5rem 1rem 0.3rem 0;">
+							货架产品:{{showPriceStr.length ? showPriceStr.join("/") : '--'}}
+						</view>
+						<view style="padding: 0.5rem 1rem 0.5rem 0">
+							非货架产品:{{showNonPriceStr.length ? showNonPriceStr.join("/") : '--'}}
+						</view>
+					</view>
+				</view>
 			</u-form>
 		</view>
 	</view>
@@ -53,6 +64,7 @@
 
 <script>
 	import { xprhStoreApplyDetail } from '@/api/approveStore'
+	import { getShelfPriceShow } from '@/api/shelf'
 	export default{
 		data(){
 			return{
@@ -83,6 +95,8 @@
 				rules: {},
 				areaIdArr: [],  //  省市区id数组
 				labelArr: [],
+				showPriceStr: [],
+				showNonPriceStr: []
 			}
 		},
 		onLoad(options) {
@@ -107,9 +121,36 @@
 					this.areaIdArr = []
 					this.form.label = '--'
 				  }
+				  this.getShelfPriceShow(res.data)
 			    }  
 			  })
 			},
+			// 获取价格显示设置
+			getShelfPriceShow(data) {
+				this.showPriceStr = []
+				this.showNonPriceStr = []
+				getShelfPriceShow({
+					shelfSn: data.shelfSn
+				}).then(res => {
+					if (res.status == 200) {
+						const ret = res.data && res.data
+						ret.map(item => {
+							if (item.paramCode == 'shelf_price_show' && item.paramValue == 1) {
+								this.showPriceStr.push("车主价")
+							}
+							if (item.paramCode == 'shelf_cost_show' && item.paramValue == 1) {
+								this.showPriceStr.push("结算价")
+							}
+							if (item.paramCode == 'non_shelf_price_show' && item.paramValue == 1) {
+								this.showNonPriceStr.push("车主价")
+							}
+							if (item.paramCode == 'non_shelf_cost_show' && item.paramValue == 1) {
+								this.showNonPriceStr.push("结算价")
+							}
+						})
+					}
+				})
+			},
 		}
 	}
 </script>

+ 2 - 1
pages/login/login.vue

@@ -119,7 +119,8 @@ export default {
 			uni.showLoading({
 				title: '正在登录...'
 			});
-			getSysVersion({versionType:uni.getSystemInfoSync().platform == "ios"?'IOS':'ANDROID'}).then(ret => {
+			getSysVersion({versionType:uni.getSystemInfoSync().platform == "ios"?'IOS':'ANDROID', applyCode: 'jgqp'}).then(ret => {
+				console.log(ret)
 				if(ret.status == 200){
 					if(ret.data){
 						this.$store.state.vuex_versionInfo = ret.data || null

+ 125 - 93
pages/sales/billHistory.vue

@@ -1,102 +1,133 @@
 <template>
 	<view class="content flex flex_column">
-		<view class="p-header" @click="jumpPage('/pages/sales/chooseShelf?customerSn='+(targetSn?targetSn:''))">
-			<text>{{ curCustomerName || '全部客户' }}</text>
-			<u-icon name="arrow-right"></u-icon>
+		<view>
+			<view class="p-header" @click="jumpPage('/pages/sales/chooseShelf?customerSn=' + (targetSn ? targetSn : ''))">
+				<text>{{ curCustomerName || '全部客户' }}</text>
+				<u-icon name="arrow-right"></u-icon>
+			</view>
+			<u-tabs :list="tabsList" :is-scroll="false" :current="current" @change="change"></u-tabs>
 		</view>
-		<view class="p-content" v-if="billList && billList.length>0">
-			<view class="list" @click="jumpPage('/pages/sales/billHistoryDetail?billId='+item.verifySn)" v-for="(item,i) in billList" :key="i">
-				<view class="list_t u-flex u-row-between">
-					<view class="u-line-1">{{item.customer.customerName}}</view>
-					<view>¥{{toThousands(item.settleAmount||0,2)}}</view>
-				</view>
-				<view class="list_b u-flex u-row-between" >
-					<view>{{item.createDate}}</view>
-					<view class="u-flex" v-if="item.billStatus != 'UNSETTLE'">
-						<view>已付款</view>
-						<u-icon name="yifukuan" custom-prefix="iscm-icon" size="40" :color="wordColor"></u-icon>
+		<view class="p-content">
+			<view  v-if="billList && billList.length > 0">
+				<view class="list" @click="jumpPage('/pages/sales/billHistoryDetail?billId=' + item.verifySn)" v-for="(item, i) in billList" :key="i">
+					<view class="list_t u-flex u-row-between">
+						<view class="u-line-1">{{ item.customer.customerName }}</view>
+						<view v-if="item.billStatus == 'UNSETTLE'">¥{{ toThousands(item.settleAmount || 0, 2) }}</view>
+						<view v-else>¥{{ toThousands(item.settleRealAmount || 0, 2) }}</view>
+					</view>
+					<view class="list_b u-flex u-row-between">
+						<view>{{ item.createDate }}</view>
+						<u-tag size="mini" :text="item.billStatus == 'UNSETTLE'?'未付款':'已结清'" :type="item.billStatus == 'UNSETTLE'?'info':'success'" />
 					</view>
 				</view>
 			</view>
-		</view>
-		<view v-if="billList&&billList.length==0">
-			<u-empty v-if="status!='loading'" :src="`/static/${$config('themePath')}/def_no_data@3x.png`" icon-size="180" :text="noDataText" mode="list" :margin-top="50"></u-empty>
-		</view>
-		<view style="padding: 20upx;" v-else>
-			<u-loadmore :status="status" v-if="status=='loading'"/>
+			<view v-if="billList && billList.length == 0">
+				<u-empty
+					v-if="status != 'loading'"
+					:src="`/static/${$config('themePath')}/def_no_data@3x.png`"
+					icon-size="180"
+					:text="noDataText"
+					mode="list"
+					:margin-top="50"
+				></u-empty>
+			</view>
+			<view style="padding: 20upx;" v-else><u-loadmore :status="status" v-if="status == 'loading'" /></view>
 		</view>
 	</view>
 </template>
 
 <script>
-	import { queryPage } from '@/api/verify.js';
-	import { toThousands } from '@/libs/tools.js'
-	export default {
-		data(){
-			return {
-				toThousands,
-				wordColor:this.$config('infoColor'),
-				curCustomerName:'',
-				pageNo: 1,
-				pageSize: 10,
-				totalNum: 0,
-				status: 'loadmore',
-				noDataText: '暂无数据',
-				billList:[],
-				targetSn:undefined
-			}
-		},
-		onLoad() {
-			uni.$on('chooseShelfOk',(data)=>{
-				this.pageNo=1;
-				this.targetSn = data.customerSn ?data.customerSn :undefined
-				this.curCustomerName=data.customerName
-				this.getList();
-			})
+import { queryPage } from '@/api/verify.js';
+import { toThousands } from '@/libs/tools.js';
+export default {
+	data() {
+		return {
+			toThousands,
+			wordColor: this.$config('infoColor'),
+			curCustomerName: '',
+			pageNo: 1,
+			pageSize: 10,
+			totalNum: 0,
+			status: 'loadmore',
+			noDataText: '暂无数据',
+			billList: [],
+			targetSn: undefined,
+			tabsList: [
+				{
+					id: 1,
+					billStatus:'',
+					name: '全部'
+				},
+				{
+					id: 2,
+					billStatus:'UNSETTLE',
+					name: '未付款'
+				},
+				{
+					id: 3,
+					billStatus:'SETTLED',
+					name: '已结清'
+				}
+			],
+			current: 0
+		};
+	},
+	onLoad() {
+		uni.$on('chooseShelfOk', data => {
+			this.pageNo = 1;
+			this.targetSn = data.customerSn ? data.customerSn : undefined;
+			this.curCustomerName = data.customerName;
+			this.getList();
+		});
+	},
+	onReady() {
+		setTimeout(() => {
+			this.getList();
+		}, 500);
+	},
+	methods: {
+		change(index) {
+			this.current = index;
+			 this.pageNo = 1
+			this.getList()
 		},
-		onReady() {
-			setTimeout(()=>{
-				this.getList();
-			},500)
+		jumpPage(url) {
+			uni.navigateTo({
+				url
+			});
 		},
-		methods:{
-			jumpPage(url){
-				uni.navigateTo({
-					url
-				})
-			},
-			getList(){
-				let params = {targetSn:this.targetSn, pageNo: this.pageNo, pageSize: this.pageSize };
-				this.status = 'loading';
-				queryPage(params).then(res => {
-					if (res.status == 200) {
-						if (this.pageNo > 1) {
-							this.billList = this.billList.concat(res.data.list || []);
-						} else {
-							this.billList = res.data.list || [];
-						}
-						this.totalNum = res.data.count || 0;
+		getList() {
+			let params = { targetSn: this.targetSn,billStatus:this.tabsList[this.current].billStatus, pageNo: this.pageNo, pageSize: this.pageSize };
+			this.status = 'loading';
+			queryPage(params).then(res => {
+				if (res.status == 200) {
+					if (this.pageNo > 1) {
+						this.billList = this.billList.concat(res.data.list || []);
 					} else {
-						this.billList = [];
-						this.totalNum = 0;
-						this.noDataText = res.message;
+						this.billList = res.data.list || [];
 					}
-					this.status = 'loadmore';
-				});
-			}
-		},
-		onReachBottom() {
-			if (this.billList.length < this.totalNum) {
-				this.pageNo += 1;
-				this.getList();
-			}else{
-				this.status = 'nomore'
-			}
-		},
-		onUnload(){
-			uni.$off('chooseShelfOk')
+					this.totalNum = res.data.count || 0;
+				} else {
+					this.billList = [];
+					this.totalNum = 0;
+					this.noDataText = res.message;
+				}
+				this.status = 'loadmore';
+			});
+		}
+	},
+	onReachBottom() {
+		if (this.billList.length < this.totalNum) {
+			this.pageNo += 1;
+			this.getList();
+		} else {
+			this.status = 'nomore';
 		}
+	},
+	onUnload() {
+		uni.$off('chooseShelfOk');
 	}
+};
 </script>
 
 <style lang="scss" scoped>
@@ -108,29 +139,30 @@
 		text-align: center;
 		padding-bottom: 20rpx;
 	}
-	.p-content{
+	.p-content {
 		flex-grow: 1;
-		padding:20rpx;
-		.list{
+		padding:20rpx 20rpx 0;
+		overflow-y: scroll;
+		.list {
 			width: 100%;
 			background: #ffffff;
-			padding:30rpx 20rpx;
+			padding: 30rpx 20rpx;
 			border-radius: 20rpx;
 			box-sizing: border-box;
 			margin-bottom: 20rpx;
-			.list_t{
+			.list_t {
 				margin-bottom: 20rpx;
-				view{
-					&:first-child{
+				view {
+					&:first-child {
 						width: calc(100% - 200rpx);
 					}
-					&:last-child{
-						color:$uni-color-warning;
+					&:last-child {
+						color: $uni-color-warning;
 					}
 				}
 			}
-			.list_b{
-				color:$uni-text-color-grey;
+			.list_b {
+				color: $uni-text-color-grey;
 				font-size: $uni-font-size-sm;
 				font-weight: 500;
 			}

+ 457 - 14
pages/sales/billHistoryDetail.vue

@@ -15,35 +15,107 @@
 			</view> -->
 			<view class="head_list">
 				<text>付款状态</text>
-				<text>{{ billInfo.billStatus == 'UNSETTLE' ? '未付款' : billInfo.settleStyleSnDictValue ? '已付款(' + billInfo.settleStyleSnDictValue + ')' : '已付款' }}</text>
+				<text>{{ billInfo.billStatus == 'UNSETTLE' ? '未付款' : billInfo.settleStyleSnDictValue ? '已结清(' + billInfo.settleStyleSnDictValue + ')' : '已结清' }}</text>
 			</view>
 		</view>
-		<view class="b_detail">
+		<view class="b_detail" v-if="billInfo.billStatus == 'UNSETTLE'">
 			<view class="detail_list u-flex">
 				<view class="detail_box">
 					<text>总单数:</text>
 					<text>{{ billInfo.detailNum }}</text>
 				</view>
 				<view class="detail_box">
-					<text>待收金额合计:</text>
-					<text>¥{{ billInfo.totalAmount ||billInfo.totalAmount == 0 ? toThousands(billInfo.totalAmount,2):'--' }}</text>
+					<text>待收:</text>
+					<text>¥{{dueAmount}}</text>
 				</view>
 			</view>
 			<view class="detail_list u-flex">
 				<view class="detail_box">
-					<text>折让金额:</text>
+					<text>折让:</text>
 					<text>¥{{ billInfo.discountAmount||billInfo.discountAmount==0? toThousands(billInfo.discountAmount,2):'--'}}</text>
 				</view>
 				<view class="detail_box">
-					<text>折待收金额:</text>
+					<text>折后:</text>
 					<text>¥{{ billInfo.settleAmount||billInfo.settleAmount ==0? toThousands(billInfo.settleAmount,2):'--' }}</text>
 				</view>
 			</view>
 		</view>
-		<view class="detail_con"><billList ref="billBox" :list="billArr"></billList></view>
-		<view class="footer" v-if="billInfo.billStatus == 'UNSETTLE'">
-			<u-button type="primary" :loading="btnLoading" @click="submitOrder" :custom-style="customStyle" shape="circle">再次发送对账单</u-button>
+		<view class="b_detail" v-else>
+			<view class="detail_list u-flex">
+				<view class="detail_box">
+					<text>总单数:</text>
+					<text>{{ billInfo.detailNum }}</text>
+				</view>
+				<view class="detail_box">
+					<text>折让:</text>
+					<text>¥{{ billInfo.discountAmount||billInfo.discountAmount==0? toThousands(billInfo.discountAmount,2):'--'}}</text>
+				</view>
+			</view>
+			<view class="detail_list u-flex">
+				<view class="detail_box">
+					<text>折后:</text>
+					<text>¥{{foldAmount}}</text>
+				</view>
+				<view class="detail_box">
+					<text>实收:</text>
+					<text>¥{{ billInfo.settleRealAmount||billInfo.settleRealAmount ==0? toThousands(billInfo.settleRealAmount,2):'--' }}</text>
+				</view>
+			</view>
+		</view>
+		<view class="detail_con"><billList ref="billBox" :showCheck="isShowEdit" :list="billArr"  @allChecked="chooseBillList"></billList></view>
+		<view v-if="!isShowEdit">
+		<view class="footer u-flex u-row-center" v-if="billInfo.billStatus == 'UNSETTLE'&& billArr&&billArr.length!=0">
+			<view class="u-flex u-col-center" >
+				<u-button type="primary" shape="circle" :loading="btnLoading" @click="submitOrder" :custom-style="customStyle">再次发送对账单</u-button>
+				<u-button type="warning" shape="circle" style="margin-left:30rpx;width:290rpx;" @click="openPaymentModal">确认收款</u-button>
+			</view>
+		</view>
+		<view class="footer" v-else-if="billInfo.billStatus != 'UNSETTLE'&& billArr&&billArr.length!=0">
+			<u-button type="primary" shape="circle" :loading="btnLoading" @click="submitOrder" :custom-style="customStyle">再次发送对账单</u-button>
 		</view>
+		</view>
+		<view v-else>
+		<view class="footer flex align_center" v-if="billInfo.billStatus == 'UNSETTLE' && billArr&&billArr.length!=0">
+			<u-checkbox-group style="flex:1;">
+				<u-checkbox v-model="checkedAll" shape="circle" @change="chooseAll">{{checkedAll?'取消全选':'全选'}}</u-checkbox>
+			</u-checkbox-group>
+			<view class="u-flex u-row-right">
+				<u-button type="error" shape="circle" :loading="btnLoading" @click="handleEvents('del')" :custom-style="customDelStyle">删除</u-button>
+				<u-button type="warning" shape="circle" style="margin-left: 30rpx;" @click="handleEvents('update')">一键刷新</u-button>	
+			</view>
+		</view>
+		</view>
+		<!-- 一键刷新 删除 -->
+		<u-modal v-model="modalShow" :show-title="false" :content="modalCon" :show-cancel-button="true" @cancel="closeDelModal" @confirm="handleConfirm"></u-modal>
+		<!-- 确认收款弹窗 -->
+		<u-popup v-model="showPayment" mode="center" @close="closePopup" :border-radius="20" width="82%">
+			<view class="slot-content">
+				<view style="padding:50rpx 30rpx 20rpx;">
+					<u-form :model="form" ref="uForm" :error-type="['message']" :label-width="150" :rules="rules" :label-style="{color:'#999'}">
+						<u-form-item :border-bottom ="false" label="总单数:" prop="num" v-if="billArr">{{billArr.length}}</u-form-item>
+						<u-form-item :border-bottom ="false" label="结算方式:" prop="settleTypeName">
+							<u-input type="select" placeholder="请选择结算方式" :height="60"  v-model="form.settleTypeName" @click="settleShow = true"/>
+						</u-form-item>
+						<u-form-item v-if="enableFundAccount" style="padding-top:0;" :border-bottom ="false" label="结算账户:" prop="settleAccountName">
+							<u-input type="select" placeholder="请选择结算账户" :height="60"  v-model="form.settleAccountName" @click="openSettleAccount"/>
+						</u-form-item>
+						<u-form-item :border-bottom ="false" label="待收金额:" prop="num">¥{{dueAmount}}</u-form-item>
+						<u-form-item :border-bottom ="false" label="折让金额:" prop="discountAmount"><u-input type="number" :custom-style="{color:'#ffa500'}" placeholder="请输入折让金额(最多2位小数)" :border="true" :height="60"  v-model="form.discountAmount"/></u-form-item>
+						<view class="tip" v-if="form.discountAmount*1 > dueAmount*1">折让金额不能大于待收金额,请重新输入</view>
+					</u-form>
+				</view>
+				<view class="costText">实收金额</view>
+				<view class="costText1">¥{{settlement<0?0:settlement}}</view>
+				<view class="paymentFooter flex algin-center">
+					<view @click="closePopup">取消</view>
+					<view @click="handlePay">确定</view>
+				</view>
+			</view>
+		</u-popup>
+		<!-- 提示弹窗 -->
+		<u-modal v-model="showModal" confirm-text="知道了" :content="modalContent" :show-title="false"></u-modal>
+		<u-picker mode="selector" v-model="settleShow" @confirm="confirmSettle" :default-selector="[0]"  :range="settleList" range-key="dispName"></u-picker>
+		<u-picker mode="selector" v-model="settleAccount" @confirm="confirmSettleAccount" :default-selector="[0]"  :range="accountList" range-key="name"></u-picker>
 		<!-- 分享询问弹窗 -->
 		<u-modal v-model="shareShow" :show-cancel-button="true" :content="shareContent" @confirm="handleShare" @cancel="shareShow = false;btnLoading = false;"></u-modal>
 	</view>
@@ -51,25 +123,68 @@
 
 <script>
 import billList from './billListComponent.vue';
-import { findBySn, insert } from '@/api/verify.js';
+import { findBySn, insert,settleVerify,settle,flushBill,deleteDetails } from '@/api/verify.js';
 import getDate from '@/libs/getDate.js';
 import { toThousands } from '@/libs/tools.js'
+import { getLookUpDatas } from '@/api/data';
+import { queryFunctionState,settleAccountList } from '@/api/user';
 export default {
 	components: { billList },
 	data() {
 		return {
 			customStyle: {
 				backgroundColor: this.$config('primaryColor'),
-				color: '#fff',
-				verifySn: ''
+				color: '#fff'
+			},
+			customDelStyle: {
+				width:'200rpx',
+				color: '#fff'
 			},
+			verifySn: '',
 			billInfo: null,
 			billArr: [],
 			timeInfo: '',
 			btnLoading: false,
 			shareShow: false,
+			isShowEdit:false,//编辑
+			settleShow:false,//结算方式
 			shareContent: `是否同意发送对账单给微信好友?`,
-			toThousands
+			toThousands,
+			showPayment:false,
+			form:{
+				receiptAmount:0,
+				discountAmount:undefined,
+				settleType:'',
+				settleTypeName:'',
+				settleAccountSn:'',
+				settleAccountName:''
+			},
+			settleList:[],
+			rules: {
+				settleTypeName: [
+					{ 
+						required: true, 
+						message: '请选择结算方式', 
+						trigger: ['change','blur'],
+					}
+				],
+				settleAccountName:[
+					{ 
+						required: true, 
+						message: '请选择结算账户', 
+						trigger: ['change','blur'],
+					}
+				]
+			},
+			showModal:false,
+			modalContent:'',
+			enableFundAccount:false,
+			accountList:[],//结算账户列表
+			settleAccount:false,
+			orderList:[],
+			modalShow:false,
+			modalCon:'刷新后,将删除对账单中已收款的订单,更新待收款单据。确定刷新吗?',
+			eventsType:'' //打开弹窗类型 del删除  update更新
 		};
 	},
 	onReady() {
@@ -84,10 +199,63 @@ export default {
 			this.loadData({ verifySn: options.billId });
 		}
 	},
+	//编辑事件
+	onNavigationBarButtonTap(e){
+		this.isShowEdit = !this.isShowEdit
+		var pages = getCurrentPages();
+		var page = pages[pages.length - 1];
+		var currentWebview = page.$getAppWebview();
+		var tn = currentWebview.getStyle().titleNView;
+		
+		let _this = this
+		if(_this.isShowEdit){
+			tn.buttons[0].text = '\ue601 取消';
+		}else{
+			tn.buttons[0].text = '\ue601 编辑';
+		}
+		_this.$nextTick(()=>{
+			currentWebview.setStyle({
+			    titleNView: tn
+			});
+		})
+		
+	},
 	computed: {
 		//经销商信息
 		userData() {
 			return this.$store.state.vuex_userData;
+		},
+		settlement() {
+			let totalPrice=this.billInfo.totalAmount?this.billInfo.totalAmount:0;
+			let settleRealAmount = this.billInfo.settleRealAmount?this.billInfo.settleRealAmount:0
+			let discountPrice=this.form.discountAmount?this.form.discountAmount:0
+			let priceNum=totalPrice - discountPrice - settleRealAmount;
+			let endPay=Number(priceNum)>0 ? priceNum : 0
+			const ret = endPay.toFixed(2)
+			this.form.receiptAmount = ret
+			return ret
+		},
+		 // 待收金额
+		dueAmount(){
+			let totalAmount = this.billInfo.totalAmount?this.billInfo.totalAmount:0
+			let settleRealAmount = this.billInfo.settleRealAmount?this.billInfo.settleRealAmount:0
+			let duePrice = totalAmount - settleRealAmount
+			duePrice=Number(duePrice)>0 ? duePrice : 0
+			const resPrice = duePrice.toFixed(2)
+			return resPrice
+		},
+		//经销商信息
+		userData() {
+			return this.$store.state.vuex_userData;
+		},
+		// 折后金额
+		foldAmount(){
+			let totalAmount = this.billInfo.totalAmount?this.billInfo.totalAmount:0
+			let discountPrice=this.billInfo.discountAmount?this.billInfo.discountAmount:0
+			let foldPrice = totalAmount - discountPrice 
+			foldPrice=Number(foldPrice)>0 ? foldPrice : 0
+			const newFoldPrice = foldPrice.toFixed(2)
+			return newFoldPrice
 		}
 	},
 	methods: {
@@ -102,13 +270,172 @@ export default {
 					that.$nextTick(() => {
 						that.$refs.billBox.setData(res.data.detailList);
 					});
+					this.isShowEditBtn()
+				}
+			});
+		},
+		//关闭编辑按钮
+		isShowEditBtn(){
+			// #ifdef APP-PLUS
+			let webview = this.$mp.page.$getAppWebview();
+			if(this.billInfo.billStatus != 'UNSETTLE' || !this.billArr || this.showPayment || this.modalShow){
+				webview.setTitleNViewButtonStyle(0, {
+						  width:'0px'
+						})
+			}else{
+				webview.setTitleNViewButtonStyle(0, {
+						  width:'60px'
+						})
+			}
+			// #endif
+		},
+		// 关闭弹窗
+		closePopup(){
+			this.form={
+				receiptAmount:0,
+				discountAmount:this.billInfo.discountAmount,
+				settleType:'',
+				settleTypeName:'',
+				settleAccountSn:'',
+				settleAccountName:''
+			}
+			this.showPayment = false
+			this.isShowEditBtn()
+		},
+		// 打开确认收款弹窗
+		openPaymentModal(){
+			let _this=this
+			// 校验弹窗是否需要打开
+			settleVerify({ verifySn: _this.verifySn}).then(res => {
+				if (res.status == 200) {
+					if(!res.data.falg){
+						_this.modalContent = res.data.message
+						_this.$nextTick(()=>{
+							_this.showModal = true
+						})
+					}else{
+						// 判断是否显示结算类型
+						queryFunctionState().then(res => {
+						  if (res.status == 200) {
+						    _this.enableFundAccount = res.data.functionEnableFlag == 1
+						  }
+						})
+						_this.getPayType();
+						_this.showPayment = true
+						_this.form.discountAmount=_this.billInfo.discountAmount?toThousands(_this.billInfo.discountAmount):'0.00'
+						_this.$nextTick(()=>{
+							_this.isShowEditBtn();
+							_this.$refs.uForm.setRules(_this.rules);
+						})
+					}
+				}
+			});
+		},
+		//获取结算类型列表
+		getPayType(){
+			getLookUpDatas({
+				lookupCode: 'SETTLE_STYLE',
+				pageNo: 1,
+				pageSize: 1000
+			}).then(result => {
+				if (result && result.status == 200) {
+					this.settleList = result.data.list;
+				}
+			});
+		},
+		//获取结算账户
+		getPayAccount(typeCode){
+			settleAccountList({settleStyleSn: typeCode,pageNo:1,pageSize:500,state:'ENABLE'}).then(result => {
+				if (result && result.status == 200) {
+					 result.data.list.forEach(item=>{
+						 item.name = item.accountName+'-'+item.accountNo
+					 })
+					this.accountList = result.data.list;
 				}
 			});
 		},
+		//结算类型 确定
+		confirmSettle(e){
+			let pos=e[0]
+			this.form.settleType = this.settleList[pos].code
+			this.form.settleTypeName = this.settleList[pos].dispName
+			if(this.enableFundAccount){
+				this.form.settleAccountSn=''
+				this.form.settleAccountName=''
+				this.getPayAccount(this.settleList[pos].code)
+			}
+		},
 		submitOrder() {
 			//发送对账单
 			this.shareShow = true;
 		},
+		//结算账户弹窗
+		openSettleAccount(){
+			if(!this.form.settleTypeName){
+				uni.showToast({
+					title:'请先选择结算类型',
+					icon:'none'
+				})
+				return
+			}
+			if(this.accountList && this.accountList.length==0){
+				uni.showToast({
+					title:'结算账户暂时没有数据,请重新选择结算类型',
+					icon:'none'
+				})
+				return
+			}
+			this.settleAccount = true
+		},
+		//结算账户 确定
+		confirmSettleAccount(e){
+			let pos=e[0]
+			this.form.settleAccountSn=this.accountList[pos].settleAccountSn
+			this.form.settleAccountName=this.accountList[pos].name
+		},
+		//确认收款
+		handlePay(){
+			let _this=this
+			_this.$refs.uForm.validate(valid => {
+				if (valid) {
+					let totalPrice=this.billInfo.totalAmount?this.billInfo.totalAmount:0;
+					let discountPrice=this.form.discountAmount?this.form.discountAmount:0
+					if (discountPrice > totalPrice) {
+						uni.showToast({
+							title: '折让金额不能大于待收金额,请重新输入',
+							icon: 'none'
+						});
+						return;
+					}
+					let reg = /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/;
+					if(discountPrice && discountPrice!=0){
+						if (!reg.test(discountPrice)) {
+							uni.showToast({
+								title: '折让金额格式不正确,请重新输入',
+								icon: 'none'
+							});
+							return;
+						}
+					}
+					let ajaxData=JSON.stringify(_this.form)
+					let newAjaxData = JSON.parse(ajaxData)
+					newAjaxData.verifySn = _this.verifySn
+					newAjaxData.discountAmount = _this.form.discountAmount?_this.form.discountAmount:0
+					delete newAjaxData.settleAccountName
+					settle(newAjaxData).then(result => {
+						if (result && result.status == 200) {
+							uni.showToast({
+								title:result.message
+							});
+							_this.closePopup()
+							_this.loadData({ verifySn: _this.verifySn });
+						}
+					});
+				} else {
+					console.log('验证失败');
+				}
+			});
+		},
 		// 分享图文
 		handleShare() {
 			let jumpUrl = getApp().globalData.baseUrl.replace('qpls-md/','')
@@ -141,6 +468,82 @@ export default {
 					}
 				});
 			}
+		},
+		//一键刷新
+		handleUpdate(){
+			this.checkedAll = false
+			this.$refs.billBox.allSelect(false);
+			flushBill({verifySn:this.verifySn}).then(res => {
+				if (res.status == 200) {
+					this.loadData({ verifySn: this.verifySn })
+				}
+			});
+		},
+		//删除
+		deleteOrder(){
+			let that=this
+			deleteDetails({verifySn:that.verifySn,detailSnList:that.orderList}).then(res => {
+				if (res.status == 200) {
+					uni.showToast({
+						title:res.message,
+						duration: 2000
+					})
+					that.loadData({ verifySn: that.verifySn });
+				}
+			});
+		},
+		closeDelModal(){
+			this.modalShow = false
+			let that=this
+			that.$nextTick(()=>{
+				that.isShowEditBtn()
+			})
+		},
+		handleEvents(type){
+			this.eventsType=type
+			if(type == 'del'){
+				let allList=this.$refs.billBox.getAllData();
+				let newChooseList = []
+				let num = 0
+				allList.forEach(item=>{
+					if(item.checked){
+						newChooseList.push(item.detailSn)
+						num+=item.unsettleAmount
+					}
+				})
+				if(newChooseList.length == 0){
+					uni.showToast({
+						title:'请先选择要删除的销售单',
+						icon:'none'
+					})
+					return
+				}
+				this.orderList=newChooseList
+				let newNum=toThousands(num,2)
+				
+				this.modalCon = '选中'+newChooseList.length+'项,待收金额¥'+newNum+',确认删除吗?'
+			}else{
+				this.modalCon='刷新后,将删除对账单中已收款的订单,更新待收款单据。确定刷新吗?'
+			}
+			let that=this
+			that.$nextTick(()=>{
+				that.modalShow = true
+				that.isShowEditBtn()
+			})
+		},
+		//确定提交删除、刷新
+		handleConfirm(){
+			if(this.eventsType=='del'){
+				this.deleteOrder();
+			}else{
+				this.handleUpdate();
+			}
+		},
+		chooseBillList(flag){
+			this.checkedAll = flag
+		},
+		chooseAll(){
+			this.$refs.billBox.allSelect(!this.checkedAll);
 		}
 	}
 };
@@ -150,11 +553,13 @@ export default {
 .content {
 	height: 100vh;
 	width: 100%;
+	box-sizing: border-box;
 	.b_head {
 		background-color: #fff;
 		.head_list {
 			padding: 14rpx 20rpx;
 			border-bottom: 1rpx solid #f8f8f8;
+			
 			text {
 				&:first-child {
 					color: $uni-text-color-grey;
@@ -197,9 +602,47 @@ export default {
 		background-color: #fff;
 	}
 	.footer {
+		width: 100%;
+		box-sizing: border-box;
 		padding: 10rpx 20rpx;
 		background: #fff;
-		margin-top: 20rpx;
 	}
 }
+// 确认收款弹窗
+.slot-content{
+	.u-form-item{
+			line-height:0 !important;
+		}
+		.paymentFooter{
+			border-top:1rpx solid #eee;
+			view{
+				width: 50%;
+				text-align:center;
+				padding:26rpx 0;
+			}
+		}
+		.paymentFooter view:last-child{
+			color:#007aff;
+			border-left:1rpx solid #eee;
+		}
+		.costText {
+			text-align: center;
+			color: $uni-text-color-grey;
+			font-size: 22rpx;
+		}
+		.costText1 {
+			text-align: center;
+			font-weight: bold;
+			color: $uni-color-error;
+			font-size: 36rpx;
+			line-height: 60rpx;
+			padding-bottom: 30rpx;
+		}
+		.tip {
+			color: #fa3534;
+			font-size: 20rpx;
+			margin-left: 160rpx;
+		}
+}
+
 </style>

+ 4 - 4
pages/sales/billListComponent.vue

@@ -22,8 +22,8 @@
 				</view>
 			</view>
 		</view>
-		<view v-if="listData&&listData.length==0" @click="jumpPage('/pages/test')">
-			<u-empty :src="`/static/${$config('themePath')}/def_no_data@3x.png`" icon-size="180" :text="noDataText" mode="list" :margin-top="50"></u-empty>
+		<view v-if="listData&&listData.length==0" @click="jumpPage('/pages/test')" style="padding-top:100rpx;">
+			<u-empty :src="`/static/${$config('themePath')}/def_no_data@3x.png`" icon-size="180" :text="noDataText" mode="list"></u-empty>
 		</view>
 	</view>
 </template>
@@ -45,14 +45,14 @@ export default {
 	},
 	data() {
 		return {
-			listData:[],
+			listData:this.list,
 			noDataText:'暂无数据',
 			toThousands
 		};
 	},
 	methods: {
 		setData(list){
-			this.listData = list
+			this.listData = list?list:[]
 		},
 		checkChange(e){
 			const row = this.listData.find(item => item.bizSn == e.name)

+ 4 - 0
pages/sales/index.vue

@@ -35,6 +35,10 @@
 					<u-image class="nav-pic" :src="`../../static/${theme}/navIcon/pfind.png`" width="64" height="64"></u-image>
 					<text class="nav-txt">产品查询</text>
 				</view>	
+				<view class="nav-item" @click="toPage('/pages/sales/productUniversal')" v-if="$hasPermissions('M_productUniversalList_mobile')">
+					<u-image class="nav-pic" :src="`../../static/${theme}/navIcon/parts.png`" width="64" height="64"></u-image>
+					<text class="nav-txt">通用产品</text>
+				</view>	
 				<view class="nav-item" @click="toPage('/pages/sales/chooseCustomerBill')" v-if="$hasPermissions('M_ARStatement_mobile')">
 					<u-image class="nav-pic" :src="`../../static/${theme}/navIcon/billImg.png`" width="64" height="64"></u-image>
 					<text class="nav-txt">应收对账单</text>

+ 212 - 0
pages/sales/productUniversal.vue

@@ -0,0 +1,212 @@
+<template>
+	<view class="productPricing-content">
+		<scroll-view class="product-list" scroll-y @scrolltolower="onreachBottom">
+			<view class="st-detailList-main">
+				<view class="st-detailList-main-item" v-for="(item, index) in listData" :key="item.id">
+					<view class="st-detailList-tit">
+						 <!-- @click="item.titFlag=!item.titFlag" -->
+						<text style="font-weight: bold;">{{item.product.name}}</text>
+						<view class="p-tit-box" v-show="item.titFlag">{{item.product.name}}</view>
+						<u-tag size="mini" style="margin:10rpx 0 0 20rpx;" :type="item.product.onlineFalg==1?'success':'info'" :text="item.product.onlineFalgDictValue"></u-tag>
+						<copyText :text="item.product.name" label="产品名称"></copyText>
+					</view>
+					<view class="st-detailList-item-con flex align_center">
+						<view class="flex_1">
+							<view class="padding_3">产品编码:{{item.productCode}} <copyText :text="item.productCode" label="产品编码"></copyText></view>
+							<view class="padding_3">通用产品编码:{{item.productCommonCode}} </view>
+							<!-- @click="item.c_titFlag=!item.c_titFlag" -->
+							<view class="padding_3" >
+								<text>通用产品名称:{{item.productCommon.name || '--'}}</text>
+								<u-tag style="margin:10rpx 0 0 20rpx;" size="mini" :type="item.productCommon.onlineFalg==1?'success':'info'" :text="item.productCommon.onlineFalgDictValue"></u-tag>	
+							</view>
+							<view class="p-t-tit-box" v-show="item.c_titFlag">{{item.productCommon.name || '--'}}</view>
+							<view class="padding_3">通用产品分类:
+							   <text v-if="item.productCommon.productTypeName2 || item.productCommon.productTypeName3">{{ item.productCommon.productTypeName2 }} {{ item.productCommon.productTypeName3 ? '>' : '' }} {{ item.productCommon.productTypeName3 }}</text>
+								<text v-else>--</text>
+							</view>
+							<view class="font_13">
+								创建时间:<text class="gray">{{item.createDate}}</text>
+							</view>
+						</view>
+					</view>
+				</view>
+				<u-empty v-if="listData.length == 0 &&status!='loading'" :text="noDataText" mode="list" ></u-empty>
+				<view style="padding-bottom: 20upx;">
+					<u-loadmore v-if="totalNum>listData.length || status=='loading'" :status="status" />
+				</view>
+			</view>
+		</scroll-view>
+		<!-- 搜索弹窗 -->
+		<searchParts :showModal="showModal" @refresh="refreshList" @close="showModal=false"/>
+	</view>
+</template>
+
+<script>
+	import { productUniversalQueryPage } from '@/api/sales'
+	import copyText from '@/pages/common/copyText.vue'
+	import searchParts from './searchParts.vue'
+	export default{
+		components:{searchParts,copyText},
+		data(){
+			return{
+				listData:[],
+				totalNum:0,
+				pageNo:1,
+				pageSize:15,
+				noDataText: '暂无数据',
+				status: 'loadmore',
+				showModal:false,
+				params:{
+					productCode:'',
+					productName:'',
+					productCommonCode:'',
+					productCommonName:'',
+					onlineFalg:undefined
+				}
+			}
+		},
+		onNavigationBarButtonTap(e){
+			this.showModal=true
+		},
+		onBackPress() {
+			if(this.showModal){
+				this.showModal = false
+				return true
+			}
+		},
+		onLoad(option) {
+			this.getList()
+		},
+		methods:{
+			// 刷新列表
+			refreshList(val){
+				this.params =val ? val : {},
+				this.listData = []
+				this.totalNum = 0
+				this.getList(1)
+			},
+			// 列表
+			getList(pageNo){
+				const _this = this
+				if (pageNo) {
+					this.pageNo = pageNo
+				}
+				let params = Object.assign(this.params, { pageNo: this.pageNo, pageSize: this.pageSize })
+				this.status = "loading"
+				productUniversalQueryPage(params).then(res => {
+					if (res.status == 200) {
+						if(res.data.list.length>0){
+							res.data.list.forEach(con=>{
+								con.titFlag = false
+								con.c_titFlag = false
+							})
+						}
+						if(this.pageNo>1){
+							this.listData = this.listData.concat(res.data.list || [])
+						}else{
+							this.listData = res.data.list || []
+						}
+						this.totalNum = res.data.count || 0
+					} else {
+						this.listData = []
+						this.totalNum = 0
+						this.noDataText = res.message
+					}
+					this.status = "loadmore"
+				})
+			},
+			// scroll-view到底部加载更多
+			onreachBottom() {
+				if(this.listData.length < this.totalNum){
+					this.pageNo += 1
+					this.getList()
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.productPricing-content{
+		width:100%;
+		height: 100vh;
+		.product-list{
+			height: 100vh;
+				.st-detailList-main{
+					padding: 20upx;
+					.st-detailList-main-item{
+						background: #ffffff;
+						padding: 20upx;
+						margin-bottom: 25upx;
+						border-radius: 25upx;
+						box-shadow: 1px 1px 3px #EEEEEE;
+						.st-detailList-tit{
+							padding-bottom: 20upx;
+							position: relative;
+							border-bottom: 1px solid #e4e7ed;
+							.p-tit-box{
+								width: 100%;
+								padding:20rpx 30rpx;
+								box-sizing: border-box;
+								position: absolute;
+								top: 60rpx;
+								left:0;
+								color:#fff;
+								background:rgba(0,0,0,.8);
+							}
+						}
+						.st-detailList-item-con{
+							padding: 20upx;
+							font-size: 26upx;
+							position: relative;
+							.p-t-tit-box{
+								width: 100%;
+								padding:20rpx 30rpx;
+								box-sizing: border-box;
+								position: absolute;
+								bottom: 66rpx;
+								left:0;
+								color:#fff;
+								background:rgba(0,0,0,.8);
+							}
+							.gray{
+								color: gray;
+							}
+							.pimgs{
+								margin-right: 16upx;
+							}
+							.font_13{
+								font-size: 26upx;
+							}
+							.padding_3{
+								padding: 6upx 0;
+								word-break: break-all;
+							}
+						}
+						.price-all{
+							border-top: 1px solid #e4e7ed;
+							padding: 20upx 20upx 0;
+							.price-item1{
+								width: 18%;
+								border-right:  1px solid #e4e7ed;
+								text-align: center;
+								>view{
+									color:#999;
+								}
+							}
+							.price-item2{
+								width: 46%;
+								border-right:  none;
+								text-align: center;
+								>view{
+									color:#999;
+								}
+							}
+						}
+					}
+				}
+				
+				
+		}
+	}
+</style>

+ 146 - 0
pages/sales/searchParts.vue

@@ -0,0 +1,146 @@
+<template>
+	<view class="modal-box">
+		<u-popup v-model="isShow"  @close="isShow=false" mode="right" length="85%" >
+			<u-form :model="form" ref="uForm" label-width="200" class="form-content">
+				<u-form-item label="产品编码"><u-input v-model.trim="form.productCode" placeholder="请输入产品编码" input-align="right" /></u-form-item>
+				<u-form-item label="产品名称"><u-input v-model.trim="form.productName" placeholder="请输入产品名称" input-align="right" /></u-form-item>
+				<u-form-item label="上线状态" class="form-item">
+					<u-input v-model="onlineFalgName" @click="onlineFalgModal=true" disabled placeholder="请选择上线状态" input-align="right" />
+					<u-icon v-show="onlineFalgName.length != 0" name="close-circle-fill" color="#c8c0cc" size="32" class="close-circle" @click="clearOnlineFlag"></u-icon>
+				</u-form-item>
+				<u-form-item label="通用产品编码"><u-input v-model.trim="form.productCommonCode" placeholder="请输入通用产品编码" input-align="right" /></u-form-item>
+				<u-form-item label="通用产品名称"><u-input v-model.trim="form.productCommonName" placeholder="请输入通用产品名称" input-align="right" /></u-form-item>
+			</u-form>
+			<view class="form-footer-btn">
+				<u-button class="handle-btn" shape="circle" size="medium" hover-class="none" @click="handleClean">重置</u-button>
+				<u-button class="handle-btn" shape="circle" size="medium" hover-class="none" :custom-style="customBtnStyle" @click="handleSearch">查询</u-button>
+			</view>
+		</u-popup>
+		<!-- 选择上线 -->
+		<u-picker v-model="onlineFalgModal" @confirm="onlineFalgChange" :range="onlineFlagList" range-key="dispName" mode="selector"></u-picker>
+	</view>
+</template>
+
+<script>
+	import productBrand from '@/pages/common/productBrand.vue'
+	import productType from '@/pages/common/productType.vue'
+	import { dealerProductTypeList } from '@/api/dealerProductType'
+	export default{
+		components: { productBrand, productType },
+		props:{
+			showModal:{
+				type: Boolean,
+				default: false
+			}
+		},
+		data(){
+			return{
+				form: {
+					productCode:'',
+					productName:'',
+					productCommonCode:'',
+					productCommonName:'',
+					onlineFalg:undefined
+				},
+				customBtnStyle: {  //  自定义按钮样式
+					borderColor: this.$config('primaryColor'),
+					backgroundColor: this.$config('primaryColor'),
+					color: '#fff'
+				},
+				nowData: {
+					data: [],
+					indArr: [],
+					nowInd: 0
+				},
+				isShow:this.showModal,
+				onlineFalgModal: false,
+				onlineFalgName: '',
+				onlineFlagList: []
+			}
+		},
+		methods:{
+			// 表单清空
+			handleClean(){
+				this.form.productCode = ''
+				this.form.productName = ''
+				this.form.productCommonCode = ''
+				this.form.productCommonName = ''
+				this.clearOnlineFlag()
+				setTimeout(()=>{
+					this.handleSearch()
+				},300)
+			},
+			handleSearch(){
+				let data = JSON.parse(JSON.stringify(this.form))
+				this.$emit('refresh', data)
+				this.isShow=false
+			},
+			clearOnlineFlag(){
+				this.onlineFalgName = ''
+				this.form.onlineFalg = undefined
+			},
+			// 上线 change
+			onlineFalgChange(ind){
+				this.form.onlineFalg = this.onlineFlagList[ind].code || undefined
+				this.onlineFalgName = this.onlineFlagList[ind].dispName || ''
+			},
+			getStateList(){ //获取上线
+				this.onlineFlagList = this.$store.state.vuex_onlineFlagList
+				if(this.form.onlineFalg){
+					const b = this.onlineFlagList.find(item => item.code == this.form.onlineFalg)
+					this.onlineFalgName = b ? b.dispName : ''
+				}
+			}
+		},
+		watch:{
+			//  父页面传过来的弹框状态
+			showModal (newValue, oldValue) {
+				this.isShow = newValue
+			},
+			//  重定义的弹框状态
+			isShow (newValue, oldValue) {
+				if (!newValue) {
+					this.$emit('close')
+				}else{
+					this.getStateList()
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.modal-box{
+		width: 100%;
+		.search-title {
+			text-align: center;
+			padding: 30upx 22upx;
+			color: #333;
+			border-bottom: 1px solid #eee;
+		}
+		.form-content{
+			display: block;
+			padding: 0 20upx;
+			box-sizing: content-box;
+		}
+		.u-form-item{
+			padding: 20upx 10upx;
+		}
+		.form-footer-btn{
+			margin: 60upx 30upx 30upx;
+			display: flex;
+			justify-content: space-between;
+		}
+		.form-footer-btn {
+			display: flex;
+			padding: 20upx;
+			margin-top: 200upx;
+			.handle-btn {
+				font-size: 28upx;
+				margin: 0 30upx;
+				width: 100%;
+				flex: 1;
+			}
+		}
+	}
+</style>

+ 1 - 1
pages/shelfSetting/addShelfHw.vue

@@ -29,7 +29,7 @@
 						</view>
 					</view>
 				</u-form-item>
-				<u-form-item label="销售价(元)" v-if="productEntity" required prop="price">
+				<u-form-item label="车主价(元)" v-if="productEntity" required prop="price">
 					<u-input clearable type="number" :min="0" @input="numberToFixed('price',2,999999)" v-model="form.price" placeholder="请输入销售价,最多两位小数"/>
 				</u-form-item>
 				<u-form-item label="结算价(元)" v-if="productEntity" required prop="cost">

+ 1 - 1
pages/shelfSetting/editShelfHw.vue

@@ -42,7 +42,7 @@
 							</view>
 						</view>
 					</u-form-item>
-					<u-form-item label="销售价(元)" required prop="price">
+					<u-form-item label="车主价(元)" required prop="price">
 						<u-input clearable type="number" :min="0" @input="numberToFixed('price',2,999999)" v-model="form.price" placeholder="请输入销售价,最多两位小数"/>
 					</u-form-item>
 					<u-form-item label="结算价(元)" required prop="cost">

+ 464 - 321
pages/shelfSetting/shelfSet.vue

@@ -1,134 +1,173 @@
 <template>
 	<view class="content">
-		<u-navbar back-text="货架设置" :border-bottom="false" :background="{backgroundColor: $config('primaryColor')}" back-icon-color="#fff" :back-text-style="{ color: '#fff' }">
+		<u-navbar back-text="货架设置" :border-bottom="false" :background="{backgroundColor: $config('primaryColor')}"
+			back-icon-color="#fff" :back-text-style="{ color: '#fff' }">
 			<view slot='right' style="padding: 0 30upx;color: #ffffff;" @click="toPlRacking" v-if="shelfPlaceList">
 				<u-icon name="piliangshangjia" custom-prefix="iscm-icon"></u-icon>
 				<text style="margin-left: 6rpx;">批量上架</text>
 				<u-badge v-if="showDot" :is-dot="true" size="mini" type="error"></u-badge>
 			</view>
 		</u-navbar>
-	<view class="body-content flex flex_column">
-		<view class="card-box" v-if="detailData">
-			<view class="card-row flex align_center justify_between">
-				<view class="label">货架名称</view>
-				<view class="text flex align_center" @click="editShelf">
-					<text style="width: 80%;flex: 1;">{{detailData.shelfName}}</text>
-					<u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
+		<view class="body-content flex flex_column">
+			<view class="card-box" v-if="detailData">
+				<view class="card-row flex align_center justify_between">
+					<view class="label">货架名称</view>
+					<view class="text flex align_center" @click="editShelf">
+						<text style="width: 80%;flex: 1;">{{detailData.shelfName}}</text>
+						<u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
+					</view>
 				</view>
-			</view>
-			<view class="card-row flex align_center justify_between">
-				<view class="label">关联客户</view>
-				<view class="text flex align_center" @click="customeSet">
-					<text style="width: 80%;flex: 1;">{{ (detailData&&detailData.customerEntity&&detailData.customerEntity.customerName) || '--' }}</text>
-					<u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
+				<view class="card-row flex align_center justify_between">
+					<view class="label">关联客户</view>
+					<view class="text flex align_center" @click="customeSet">
+						<text
+							style="width: 80%;flex: 1;">{{ (detailData&&detailData.customerEntity&&detailData.customerEntity.customerName) || '--' }}</text>
+						<u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
+					</view>
 				</view>
-			</view>
-			<view class="card-row align_center flex justify_between" v-if="showMore">
-				<view class="label" style="width: 50%;" @click="showTip(1)">是否设置完成 <u-icon color="#ffaa00" name="question-circle"></u-icon></view>
-				<view class="text" style="width: 50%;text-align: right;"><u-switch v-model="switchVal" @change="switchChange"></u-switch></view>
-			</view>
-			<!-- <view class="card-row align_center flex justify_between" v-if="showMore">
-				<view class="label" style="width: 40%;" @click="showTip(0)">价格显示 <u-icon color="#ffaa00" name="question-circle"></u-icon></view>
-				<view class="text flex align_center" style="width: 60%;text-align: right;" @click="updateShowPrice = true">
-					<text style="width: 80%;flex: 1;">非铺货产品——{{ showPrice == '1' ? '显示': '不显示' }}价格</text>
-					<u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
+				<view class="card-row align_center flex justify_between">
+					<view class="label" style="width: 40%;" @click="showTip(0)">价格权限设置 <u-icon color="#ffaa00"
+							name="question-circle"></u-icon></view>
+					<view class="text flex align_center justify_end" style="width: 60%;"
+						@click="openSetPriceShow">
+						<view style="flex-grow: 1;">
+							<view>货架产品:<text style="width: 80%;flex: 1;">{{showPriceStr.length ? showPriceStr.join("/") : '--'}}</text></view>
+							<view>非货架产品:<text style="width: 80%;flex: 1;">{{showNonPriceStr.length ? showNonPriceStr.join("/") : '--'}}</text></view>
+						</view>
+						<u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
+					</view>
 				</view>
-			</view> -->
-			<view class="moreSeting" @click="showMore=!showMore">
-				<text>{{!showMore?'更多设置':'收起'}}</text> <u-icon :name="showMore?'arrow-up':'arrow-down'"></u-icon>
-			</view>
-			<u-action-sheet :list="actionList" @click="clickAction" v-model="updateShowPrice"></u-action-sheet>
-		</view>
-		<!-- 货位信息 -->
-		<view class="shelfPlace" :style="{height: scrollH+'px'}" v-if="shelfPlaceList">
-			<view class="flex align_center shelfPlaceHead">
-				<view class="lt"><text>□</text>表示没有绑定产品</view>
-				<view class="search-btn flex align_center" @click="toSearchHw">
-					<view><u-icon name="search"></u-icon><text>按产品搜索</text></view>
-					<u-icon name="scan"></u-icon>
+				<view class="card-row align_center flex justify_between" v-if="showMore">
+					<view class="label" style="width: 50%;" @click="showTip(1)">是否设置完成 <u-icon color="#ffaa00"
+							name="question-circle"></u-icon></view>
+					<view class="text" style="width: 50%;text-align: right;"><u-switch v-model="switchVal"
+							@change="switchChange"></u-switch></view>
+				</view>
+				<view class="moreSeting" @click="showMore=!showMore">
+					<text>{{!showMore?'更多设置':'收起'}}</text> <u-icon :name="showMore?'arrow-up':'arrow-down'"></u-icon>
 				</view>
 			</view>
-			<view class="flex shelfTabs">
-				<view class="leftTabs">
-					<view v-for="item in placeTab" :key="item" :class="curTab==item?'active':''" @click="tabChange(item)">{{item}}层</view>
+			<!-- 货位信息 -->
+			<view class="shelfPlace" :style="{height: scrollH+'px'}" v-if="shelfPlaceList">
+				<view class="flex align_center shelfPlaceHead">
+					<view class="lt"><text>□</text>表示没有绑定产品</view>
+					<view class="search-btn flex align_center" @click="toSearchHw">
+						<view><u-icon name="search"></u-icon><text>按产品搜索</text></view>
+						<u-icon name="scan"></u-icon>
+					</view>
 				</view>
-				<view class="rightCons flex flex_column">
-					<view class="hwList flex_1">
-						<text @click="editHw(item)" v-for="item in shelfPlaceList[curTab]" :key="item.shelfPlaceCode" :class="item.shelfProductApiEntity && item.shelfProductApiEntity.productSn?'':'red'">
-							{{item.shelfPlaceCode}}
-						</text>
-						<text class="add" @click="addHw('add',1)"><u-icon name="plus"></u-icon></text>
+				<view class="flex shelfTabs">
+					<view class="leftTabs">
+						<view v-for="item in placeTab" :key="item" :class="curTab==item?'active':''"
+							@click="tabChange(item)">{{item}}层</view>
 					</view>
-					<view class="hwAction flex justify_between">
-						<u-button shape="circle" @click="tapPopup(1)" size="medium">打印贴签</u-button>
-						<u-button class="newbtn" @click="tapPopup(2)" type='primary' shape="circle" size="medium">快速补货</u-button>
+					<view class="rightCons flex flex_column">
+						<view class="hwList flex_1">
+							<text @click="editHw(item)" v-for="item in shelfPlaceList[curTab]"
+								:key="item.shelfPlaceCode"
+								:class="item.shelfProductApiEntity && item.shelfProductApiEntity.productSn?'':'red'">
+								{{item.shelfPlaceCode}}
+							</text>
+							<text class="add" @click="addHw('add',1)"><u-icon name="plus"></u-icon></text>
+						</view>
+						<view class="hwAction flex justify_between">
+							<u-button shape="circle" @click="tapPopup(1)" size="medium">打印贴签</u-button>
+							<u-button class="newbtn" @click="tapPopup(2)" type='primary' shape="circle"
+								size="medium">快速补货</u-button>
+						</view>
 					</view>
 				</view>
 			</view>
-		</view>
-		<view style="width: 100%;" v-else>
-			<view class="nodata" v-if="!loading">
-				<view>
-					<u-image :src="`../../static/${$config('themePath')}/def_no_data@3x.png`" width="180" height="180" border-radius="10"></u-image>
-				</view>
-				<view class="flex">
-					暂无货位信息,请点击
+			<view style="width: 100%;" v-else>
+				<view class="nodata" v-if="!loading">
 					<view>
-						<text @click="toPlRacking">批量上架</text>
-						<u-badge :offset="[-6,-10]" v-if="showDot" :is-dot="true" size="mini" type="error"></u-badge>
+						<u-image :src="`../../static/${$config('themePath')}/def_no_data@3x.png`" width="180"
+							height="180" border-radius="10"></u-image>
+					</view>
+					<view class="flex">
+						暂无货位信息,请点击
+						<view>
+							<text @click="toPlRacking">批量上架</text>
+							<u-badge :offset="[-6,-10]" v-if="showDot" :is-dot="true" size="mini"
+								type="error"></u-badge>
+						</view>
 					</view>
 				</view>
-			</view>
-			<view class="nodata" v-else>
-				<u-loadmore :load-text="$config('loadText')" status="loading" />
+				<view class="nodata" v-else>
+					<u-loadmore :load-text="$config('loadText')" status="loading" />
+				</view>
 			</view>
 		</view>
-	</view>
-		
+		<!-- 设置价格显示弹框 -->
+		<u-modal v-model="updateShowPrice" :show-cancel-button="true" title="价格权限设置" @confirm="savePriceSet">
+			<view class="slot-content" style="padding: 1rem 1rem 1.5rem;text-align: center;">
+				<view style="color: #999;font-size: 0.8rem;margin: 0.5rem;">提示:不勾选则不显示价格</view>
+				<view style="text-align: left;font-size: 0.9rem;padding-left: 1rem;">货架产品:</view>
+				<u-checkbox-group @change="priceSetChange">
+					<u-checkbox v-for="item in showPrice" :key="item.paramCode" v-model="item.checked"
+						:name="item.paramCode">{{item.text}}</u-checkbox>
+				</u-checkbox-group>
+				<view style="text-align: left;font-size: 0.9rem;padding-left: 1rem;margin-top: 0.5rem;">非货架产品:</view>
+				<u-checkbox-group @change="nonPriceSetChange">
+					<u-checkbox v-for="item in showNonPrice" :key="item.paramCode" v-model="item.checked"
+						:name="item.paramCode">{{item.text}}</u-checkbox>
+				</u-checkbox-group>
+			</view>
+		</u-modal>
 	</view>
 </template>
 
 <script>
-    import { shelfDetail, shelfSave, modifFinishFlag, getProductPlace, getShelfPriceShow, updateShelfPriceShow } from '@/api/shelf'
-	import { shelfCartNotEmpty } from '@/api/shelfCart'
-	import { createShelfReplenishBill } from '@/api/shelfReplenish'
+	import {
+		shelfDetail,
+		shelfSave,
+		modifFinishFlag,
+		getProductPlace,
+		getShelfPriceShow,
+		updateShelfPriceShow
+	} from '@/api/shelf'
+	import {
+		shelfCartNotEmpty
+	} from '@/api/shelfCart'
+	import {
+		createShelfReplenishBill
+	} from '@/api/shelfReplenish'
 	export default {
-		components:{
-		},
+		components: {},
 		data() {
 			return {
 				loading: false,
 				shelfSn: null,
 				detailData: null,
 				switchVal: false,
-				showMenus:false,
+				showMenus: false,
 				scrollH: 400,
-				popData:[{title:'快速补货',val:'0'},{title:'打印贴签',val:'1'}],
-				pleft:0,
-				ptop:0,
+				popData: [{
+					title: '快速补货',
+					val: '0'
+				}, {
+					title: '打印贴签',
+					val: '1'
+				}],
+				pleft: 0,
+				ptop: 0,
 				shelfPlaceList: null,
 				placeTab: [],
 				curTab: '',
 				isLoad: false,
 				webView: null,
 				showDot: false,
-				showPrice: '',
+				showPrice: [],
+				showNonPrice:[],
+				showPriceStr: [],
+				showNonPriceStr:[],
 				updateShowPrice: false,
-				showMore: false,
-				actionList:[
-					{
-						text: '非铺货产品——显示价格',
-						fontSize: 32
-					},
-					{
-						text: '非铺货产品——不显示价格',
-						fontSize: 32
-					}
-				]
+				showPriceBak: [],
+				showMore: false
 			}
 		},
-		watch:{
-			showMore(a,b){
+		watch: {
+			showMore(a, b) {
 				this.getScrollHeight(a)
 			},
 		},
@@ -136,20 +175,19 @@
 			this.shelfSn = option.shelfSn
 			// 获取货架详情
 			this.getShelfDetal()
-			// this.getShelfPriceShow()
 			// 获取货物
 			this.getShelfPlace()
 			this.isLoad = true
 			// this.webView = this.$mp.page.$getAppWebview(); 
-			uni.$on("editCustome",(data)=>{
+			uni.$on("editCustome", (data) => {
 				this.isLoad = true
-				this.saveShelf(data,0)
+				this.saveShelf(data, 0)
 			})
-			uni.$on("editShelfName",(data)=>{
+			uni.$on("editShelfName", (data) => {
 				this.isLoad = true
-				this.saveShelf(data,1)
+				this.saveShelf(data, 1)
 			})
-			
+
 			// const win = uni.getWindowInfo()
 			// this.pleft = Math.floor(win.windowWidth * 0.3)
 			// this.ptop = Math.floor(win.windowHeight - 70)
@@ -161,68 +199,75 @@
 			uni.$off("editShelfName")
 		},
 		onShow() {
-			if(!this.isLoad){
+			if (!this.isLoad) {
 				this.updateHw()
 			}
 		},
 		methods: {
-			getScrollHeight(a){
+			getScrollHeight(a) {
 				const sys = uni.getSystemInfoSync()
-				const h = a? 290 : 250
-				if(sys.platform == 'android'){
+				const h = a ? 290 : 250
+				if (sys.platform == 'android') {
 					this.scrollH = sys.windowHeight - h
-				}else{
-					if(sys.safeArea.top){
+				} else {
+					if (sys.safeArea.top) {
 						this.scrollH = sys.windowHeight - h + sys.statusBarHeight - 34
-					}else{
+					} else {
 						this.scrollH = sys.windowHeight - h - 14
 					}
 				}
 			},
 			// 刷新货位
-			updateHw(){
+			updateHw() {
 				this.placeTab = []
 				this.shelfPlaceList = null
 				this.getShelfPlace(true)
 			},
 			// 批量上架
-			toPlRacking(){
+			toPlRacking() {
 				const url = this.showDot ? '/pages/batchShelves/cartList' : '/pages/batchShelves/index'
 				uni.navigateTo({
-					url: url+"?shelfSn="+this.shelfSn+'&shelfName='+this.detailData.shelfName+'&customerSn='+this.detailData.customerSn
+					url: url + "?shelfSn=" + this.shelfSn + '&shelfName=' + this.detailData.shelfName +
+						'&customerSn=' + this.detailData.customerSn
 				})
 			},
 			// 更多操作
-			tapPopup(e){
+			tapPopup(e) {
 				// 打印贴签
-				if(e == 1){
-					if(this.hasNoBindPro()){
+				if (e == 1) {
+					if (this.hasNoBindPro()) {
 						uni.navigateTo({
-							url: "/pages/latePlay/chooseProduct?shelfSn="+this.shelfSn+'&shelfName='+this.detailData.shelfName
+							url: "/pages/latePlay/chooseProduct?shelfSn=" + this.shelfSn + '&shelfName=' + this
+								.detailData.shelfName
 						})
-					}else{
+					} else {
 						uni.showModal({
-							showCancel:false,
-							confirmText:"好的",
+							showCancel: false,
+							confirmText: "好的",
 							title: "提示",
 							content: "所有货位都没有绑定产品,无法打印贴签!"
 						})
 					}
 				}
 				// 快速补货
-				if(e == 2){
-					createShelfReplenishBill({shelfSn: this.shelfSn, enableFlag: 1}).then(res => {
+				if (e == 2) {
+					createShelfReplenishBill({
+						shelfSn: this.shelfSn,
+						enableFlag: 1
+					}).then(res => {
 						console.log(res.data)
-						if(res.data&&res.data.length){
-							const params = Object.assign(this.detailData,{list:res.data})
+						if (res.data && res.data.length) {
+							const params = Object.assign(this.detailData, {
+								list: res.data
+							})
 							this.$store.state.vuex_tempData = params
 							uni.navigateTo({
 								url: "/pages/shelfSetting/quickReplenish"
 							})
-						}else{
+						} else {
 							uni.showModal({
-								showCancel:false,
-								confirmText:"好的",
+								showCancel: false,
+								confirmText: "好的",
 								title: "提示",
 								content: "没有需要补货的产品"
 							})
@@ -230,183 +275,255 @@
 					})
 				}
 			},
-			showTip(type){
+			showTip(type) {
 				uni.showModal({
-					showCancel:false,
-					confirmText:"好的",
+					showCancel: false,
+					confirmText: "好的",
 					title: "提示",
-					content: type ? "只有当数字货架的“是否设置完成”为“是”,系统才会自动对该货架生成补货单,修理厂才能正常下单。":"1、非铺货产品,是指不是货架上的产品\n2、终端会员价,对于汽修厂来说,即进货价\n3、如果该产品在销售单里有销售记录,则使用最近一次销售价,如果没有销售记录,则使用箭冠总公司的终端会员价"
+					content: type ? "只有当数字货架的“是否设置完成”为“是”,系统才会自动对该货架生成补货单,修理厂才能正常下单。" :
+						"不勾选则不显示价格,结算价:即易码通进货价"
 				})
 			},
 			// 设置完成是否
-			switchChange(v){
+			switchChange(v) {
 				const params = {
-				  shelfSn: this.shelfSn,
-				  finishFlag: v ? '1' : '0'
+					shelfSn: this.shelfSn,
+					finishFlag: v ? '1' : '0'
 				}
 				modifFinishFlag(params).then(res => {
-				  if (res.status == 200) {
-					  uni.showToast({
-					  	icon: 'none',
-					  	title: res.message
-					  })
-				  }
+					if (res.status == 200) {
+						uni.showToast({
+							icon: 'none',
+							title: res.message
+						})
+					}
 				})
 			},
 			// 关联客户
-			customeSet(){
+			customeSet() {
 				uni.navigateTo({
-					url: "/pages/sales/chooseCustomer?backPage=shelfEdit&shelfName="+this.detailData.shelfName
+					url: "/pages/sales/chooseCustomer?backPage=shelfEdit&shelfName=" + this.detailData.shelfName
 				})
 			},
 			// 修改货架名称
-			editShelf(){
+			editShelf() {
 				uni.navigateTo({
-					url: "/pages/shelfSetting/editShelf?shelfName="+this.detailData.shelfName
+					url: "/pages/shelfSetting/editShelf?shelfName=" + this.detailData.shelfName
 				})
 			},
 			// 是否没有绑定任何产品
-			hasNoBindPro(){
+			hasNoBindPro() {
 				let noBindPro = null;
-				for(let i=0;i<this.placeTab.length;i++){
-					noBindPro = this.shelfPlaceList[this.placeTab[i]].find(item => item.shelfProductApiEntity && item.shelfProductApiEntity.productSn);
-					if(!!noBindPro){
+				for (let i = 0; i < this.placeTab.length; i++) {
+					noBindPro = this.shelfPlaceList[this.placeTab[i]].find(item => item.shelfProductApiEntity && item
+						.shelfProductApiEntity.productSn);
+					if (!!noBindPro) {
 						break
 					}
 				}
 				return !!noBindPro
 			},
 			// 按照产品搜索货位
-			toSearchHw(){
-				if(this.hasNoBindPro()){
+			toSearchHw() {
+				if (this.hasNoBindPro()) {
 					uni.navigateTo({
-						url: "/pages/shelfSetting/searchShelfHw?shelfName="+this.detailData.shelfName+"&shelfSn="+this.shelfSn
+						url: "/pages/shelfSetting/searchShelfHw?shelfName=" + this.detailData.shelfName +
+							"&shelfSn=" + this.shelfSn
 					})
-				}else{
+				} else {
 					uni.showModal({
-						showCancel:false,
-						confirmText:"好的",
+						showCancel: false,
+						confirmText: "好的",
 						title: "提示",
 						content: "所有货位都没有绑定产品,无法搜索!"
 					})
 				}
 			},
 			// 编辑货位
-			editHw(item){
+			editHw(item) {
 				const hasProduct = item.shelfProductApiEntity && item.shelfProductApiEntity.productSn
-				const type = hasProduct ? 'edit':'bind'
-				const params = Object.assign(this.detailData,item)
+				const type = hasProduct ? 'edit' : 'bind'
+				const params = Object.assign(this.detailData, item)
 				this.$store.state.vuex_tempData = params
 				uni.navigateTo({
 					url: "/pages/shelfSetting/editShelfHw?type=" + type
 				})
 			},
 			// 新增货位
-			addHw(type,flag){
+			addHw(type, flag) {
 				let shelfPlaceCode = ''
-				if(type=='edit'){
+				if (type == 'edit') {
 					shelfPlaceCode = flag
 				}
-				if(type=='add'&&flag==1){
+				if (type == 'add' && flag == 1) {
 					const row = this.shelfPlaceList[this.curTab]
-					const num = row[row.length-1].shelfPlaceCode.replace(this.curTab,'')
+					const num = row[row.length - 1].shelfPlaceCode.replace(this.curTab, '')
 					const nextNum = Number(num) + 1
-					shelfPlaceCode = this.curTab + (nextNum<10?'0':'') + nextNum
+					shelfPlaceCode = this.curTab + (nextNum < 10 ? '0' : '') + nextNum
 				}
-				const params={
+				const params = {
 					customerSn: this.detailData.customerSn,
 					shelfSn: this.detailData.shelfSn,
 					id: this.detailData.id
 				}
 				uni.navigateTo({
-					url: "/pages/shelfSetting/addShelfHw?detailData="+encodeURIComponent(JSON.stringify(params))+"&type="+type+"&shelfPlaceCode="+shelfPlaceCode
+					url: "/pages/shelfSetting/addShelfHw?detailData=" + encodeURIComponent(JSON.stringify(
+						params)) + "&type=" + type + "&shelfPlaceCode=" + shelfPlaceCode
 				})
 			},
 			// 保存数字货架基本信息
-			saveShelf(data,type){
+			saveShelf(data, type) {
 				const params = {
 					shelfSn: this.shelfSn
 				}
-				if(type == 1){
+				if (type == 1) {
 					params.customerSn = this.detailData.customerSn
 					params.shelfName = data.shelfName
-				}else{
+				} else {
 					params.customerSn = data.customerSn
 				}
 				shelfSave(params).then(res => {
-					 if (res.status == 200) {
-					  this.toashMsg(res.message)
-					  this.getShelfDetal()
-					 }
+					if (res.status == 200) {
+						this.toashMsg(res.message)
+						this.getShelfDetal()
+					}
 				})
 			},
 			// 获取价格显示设置
-			getShelfPriceShow () {
-			  getShelfPriceShow({ shelfSn: this.shelfSn }).then(res => {
-			    if (res.status == 200) {
-			      this.showPrice = res.data.paramValue
-			    }
-			  })
+			getShelfPriceShow() {
+				getShelfPriceShow({
+					shelfSn: this.shelfSn
+				}).then(res => {
+					if (res.status == 200) {
+						const ret = res.data && res.data
+						this.showPriceBak = ret
+						this.formatPriceShow()
+					}
+				})
 			},
-			clickAction(index){
+			// 格式化价格显示
+			formatPriceShow(){
+				this.showPrice = []
+				this.showPriceStr = []
+				this.showNonPrice = []
+				this.showNonPriceStr = []
+				this.showPriceBak.map(item => {
+					if (item.paramCode == 'shelf_price_show' && item.paramValue == 1) {
+						this.showPriceStr.push("车主价")
+					}
+					if (item.paramCode == 'shelf_cost_show' && item.paramValue == 1) {
+						this.showPriceStr.push("结算价")
+					}
+					if (item.paramCode == 'non_shelf_price_show' && item.paramValue == 1) {
+						this.showNonPriceStr.push("车主价")
+					}
+					if (item.paramCode == 'non_shelf_cost_show' && item.paramValue == 1) {
+						this.showNonPriceStr.push("结算价")
+					}
+					if(item.paramCode.indexOf("non_")>=0){
+						this.showNonPrice.push({
+							paramCode: item.paramCode,
+							paramValue: item.paramValue,
+							text: item.paramCode == 'non_shelf_price_show' ? '车主价' : '结算价',
+							checked: item.paramValue == 1
+						})
+					}else{
+						this.showPrice.push({
+							paramCode: item.paramCode,
+							paramValue: item.paramValue,
+							text: item.paramCode == 'shelf_price_show' ? '车主价' : '结算价',
+							checked: item.paramValue == 1
+						})
+					}
+				})
+			},
+			openSetPriceShow(){
+				this.formatPriceShow()
+				this.updateShowPrice = true
+			},
+			// 选择价格显示
+			priceSetChange(e) {
+				console.log(e)
+				this.showPrice.map(item => {
+					item.paramValue = e.includes(item.paramCode) ? 1 : 0
+				})
+			},
+			nonPriceSetChange(e){
+				this.showNonPrice.map(item => {
+					item.paramValue = e.includes(item.paramCode) ? 1 : 0
+				})
+			},
+			// 价格显示保存
+			savePriceSet() {
 				uni.showLoading({
 					mask: true,
-					title: '正在保存价格显示...'
+					title: '正在保存价格设置...'
 				})
+				// 更新价格显示
 				updateShelfPriceShow({
 					shelfSn: this.shelfSn,
-					paramValue: index == 0 ? 1 : 0
+					paramValue: [...this.showPrice,...this.showNonPrice]
 				}).then(res => {
-					if(res.status == 200){
+					if (res.status == 200) {
 						this.getShelfPriceShow()
 						this.toashMsg(res.message)
 					}
 					uni.hideLoading()
 				})
 			},
-			getShelfDetal(){
-				shelfDetail({ sn: this.shelfSn }).then(res => {
-				  if (res.status == 200) {
-				    this.detailData = res.data
-					this.switchVal = res.data.finishFlag == 1
-				  } else {
-				    this.detailData = null
-				  }
+			getShelfDetal() {
+				shelfDetail({
+					sn: this.shelfSn
+				}).then(res => {
+					if (res.status == 200) {
+						this.detailData = res.data
+						this.switchVal = res.data.finishFlag == 1
+						// 价格设置
+						this.getShelfPriceShow()
+					} else {
+						this.detailData = null
+					}
 				})
 			},
-			getShelfPlace(flag){
+			getShelfPlace(flag) {
 				this.loading = true
-				getProductPlace({ shelfSn: this.shelfSn }).then(res => {
-				  if (res.status == 200 && res.data) {
-				    this.shelfPlaceList = res.data
-					// 获取层
-					for(let a in res.data){
-						this.placeTab.push(a)
-					}
-					// 排序
-					this.placeTab.sort(function(a,b){ return (a+'').localeCompare(b+'');});
-					console.log(this.placeTab)
-					if(!flag || !this.curTab){
-						this.curTab = this.placeTab[0]
-					}
-					if(this.placeTab.length == 0){
+				getProductPlace({
+					shelfSn: this.shelfSn
+				}).then(res => {
+					if (res.status == 200 && res.data) {
+						this.shelfPlaceList = res.data
+						// 获取层
+						for (let a in res.data) {
+							this.placeTab.push(a)
+						}
+						// 排序
+						this.placeTab.sort(function(a, b) {
+							return (a + '').localeCompare(b + '');
+						});
+						console.log(this.placeTab)
+						if (!flag || !this.curTab) {
+							this.curTab = this.placeTab[0]
+						}
+						if (this.placeTab.length == 0) {
+							this.shelfPlaceList = null
+						}
+					} else {
 						this.shelfPlaceList = null
+						this.placeTab = []
 					}
-				  } else {
-				    this.shelfPlaceList = null
-					this.placeTab = []
-				  }
-				  // 是否有已录入的产品
-				  this.getHasCartNotEmpty()
-				  this.isLoad = false
-				  this.loading = false
+					// 是否有已录入的产品
+					this.getHasCartNotEmpty()
+					this.isLoad = false
+					this.loading = false
 				})
 			},
-			tabChange(item){
+			tabChange(item) {
 				this.curTab = item
 			},
-			getHasCartNotEmpty(){
-				shelfCartNotEmpty({ shelfSn: this.shelfSn }).then(res => {
+			getHasCartNotEmpty() {
+				shelfCartNotEmpty({
+					shelfSn: this.shelfSn
+				}).then(res => {
 					this.showDot = res.data == 1
 				})
 			}
@@ -415,146 +532,172 @@
 </script>
 
 <style lang="less">
-.content{
-	width:100%;
-	.nodata{
-		padding: 100rpx 50rpx;
-		text-align: center;
-		display: flex;
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		> view{
-			position: relative;
-			padding: 10upx 0;
-			text{
-				color: #00aaff;
-				margin-left: 10rpx;
-			}
-		}
-	}
-	.body-content{
+	.content {
 		width: 100%;
-     }
-	.card-box{
-		background-color: #fff;
-		border-radius: 0.5rem;
-		box-shadow: 0.1rem 0.2rem 0.3rem #eee;
-		padding: 0 1rem;
-		margin: 0.5rem;
-		.card-row{
-			border-bottom: 1rpx solid #eee;
-			padding: 20rpx 0;
-			min-height: 90rpx;
-			&:last-child{
-				border-bottom: 0;
-			}
-			.label{
-				flex: 1;
-				width: 20%;
-			}
-			.text{
-				width: 80%;
-				color: #666;
-			}
-		}
-		.moreSeting{
+
+		.nodata {
+			padding: 100rpx 50rpx;
 			text-align: center;
-			color: #999;
-			padding: 20upx;
-			> text{
-				margin-right: 10rpx;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			align-items: center;
+
+			>view {
+				position: relative;
+				padding: 10upx 0;
+
+				text {
+					color: #00aaff;
+					margin-left: 10rpx;
+				}
 			}
 		}
-	}
-	
-	.shelfPlace{
-		height: calc(100% - 300rpx);
-		.shelfPlaceHead{
-			padding: 0.2rem 0.5rem 0.5rem;
-			justify-content: space-between;
-			.lt{
-				font-size: 0.9rem;
-				color: #999;
-				text{
-					color: #ff5500;
-					font-size: 1rem;
+
+		.body-content {
+			width: 100%;
+		}
+
+		.card-box {
+			background-color: #fff;
+			border-radius: 0.5rem;
+			box-shadow: 0.1rem 0.2rem 0.3rem #eee;
+			padding: 0 1rem;
+			margin: 0.5rem;
+
+			.card-row {
+				border-bottom: 1rpx solid #eee;
+				padding: 20rpx 0;
+				min-height: 90rpx;
+
+				&:last-child {
+					border-bottom: 0;
+				}
+
+				.label {
+					flex: 1;
+					width: 20%;
+				}
+
+				.text {
+					width: 80%;
+					color: #666;
 				}
 			}
-			.search-btn{
-				border:1rpx solid #eee;
-				border-radius: 50rpx;
-				width: 50%;
-				justify-content: space-between;
-				padding:0.3rem 0.5rem;
+
+			.moreSeting {
+				text-align: center;
 				color: #999;
-				background-color: #fff;
-				font-size: 0.9rem;
-				&:active{
-					opacity: 0.6;
+				padding: 20upx;
+
+				>text {
+					margin-right: 10rpx;
 				}
 			}
 		}
-		.shelfTabs{
-			height: calc(100% - 85rpx);
-			.leftTabs{
-				width: 20%;
-				overflow: auto;
-				> view{
-					padding: 0.8rem 0.5rem;
-					border-left: 0.2rem solid #f8f8f8;
-					text-align: center;
+
+		.shelfPlace {
+			height: calc(100% - 300rpx);
+
+			.shelfPlaceHead {
+				padding: 0.2rem 0.5rem 0.5rem;
+				justify-content: space-between;
+
+				.lt {
+					font-size: 0.9rem;
+					color: #999;
+
+					text {
+						color: #ff5500;
+						font-size: 1rem;
+					}
 				}
-				.active{
-					border-color: rgb(47, 126, 209);
+
+				.search-btn {
+					border: 1rpx solid #eee;
+					border-radius: 50rpx;
+					width: 50%;
+					justify-content: space-between;
+					padding: 0.3rem 0.5rem;
+					color: #999;
 					background-color: #fff;
+					font-size: 0.9rem;
+
+					&:active {
+						opacity: 0.6;
+					}
 				}
 			}
-			.rightCons{
-				width: 80%;
-				background-color: #fff;
-				position: relative;
-				.hwList{
+
+			.shelfTabs {
+				height: calc(100% - 85rpx);
+
+				.leftTabs {
+					width: 20%;
 					overflow: auto;
-					padding: 0.5rem;
-					padding-bottom: 105rpx;
-					> text{
-						border: 1rpx solid #eee;
-						padding: 0.2rem 0.8rem;
-						border-radius: 0.3rem;
-						margin: 0.5rem 2%;
-						float: left;
-						width: 20%;
+
+					>view {
+						padding: 0.8rem 0.5rem;
+						border-left: 0.2rem solid #f8f8f8;
 						text-align: center;
 					}
-					.red{
-						border-color: #ff5500;
-					}
-					.add{
-						border-style: dashed;
-						border-color: #999;
-						color: #999;
+
+					.active {
+						border-color: rgb(47, 126, 209);
+						background-color: #fff;
 					}
 				}
-				.hwAction{
-					padding: 0.5rem;
-					position: fixed;
-					bottom: 0;
-					right: 0;
+
+				.rightCons {
 					width: 80%;
 					background-color: #fff;
-					button{
-						width: 240rpx;
+					position: relative;
+
+					.hwList {
+						overflow: auto;
+						padding: 0.5rem;
+						padding-bottom: 105rpx;
+
+						>text {
+							border: 1rpx solid #eee;
+							padding: 0.2rem 0.8rem;
+							border-radius: 0.3rem;
+							margin: 0.5rem 2%;
+							float: left;
+							width: 20%;
+							text-align: center;
+						}
+
+						.red {
+							border-color: #ff5500;
+						}
+
+						.add {
+							border-style: dashed;
+							border-color: #999;
+							color: #999;
+						}
 					}
-					.newbtn{
-						background-color: rgb(51, 95, 182);
-						color: #fff;
+
+					.hwAction {
+						padding: 0.5rem;
+						position: fixed;
+						bottom: 0;
+						right: 0;
+						width: 80%;
+						background-color: #fff;
+
+						button {
+							width: 240rpx;
+						}
+
+						.newbtn {
+							background-color: rgb(51, 95, 182);
+							color: #fff;
+						}
 					}
 				}
 			}
 		}
 	}
-}
-
-
-</style>
+</style>

+ 1 - 0
pages/statistics/chooseShelf.vue

@@ -83,6 +83,7 @@
 				    pageNo: this.pageNo,
 				    pageSize: this.pageSize,
 					customerName: this.customerName,
+					dealerFlag: 0,
 					enabledFlag : 1 //1启用客户 0 禁用用户
 				}
 				_this.status = 'loading'

+ 5 - 5
pages/stock/index.vue

@@ -29,7 +29,7 @@
 					<u-input type="number" :min="0" :max="999999" v-model.trim="form.maxUnsalableDays" placeholder="截止天数" input-align="right" />
 				</u-form-item>
 				<u-form-item label="只查看有库存"><u-switch slot="right" v-model="form.zeroQtyFlag"></u-switch></u-form-item>
-				<u-form-item label="包括禁用产品"><u-switch slot="right" v-model="form.productEnabledFlag"></u-switch></u-form-item>
+				<u-form-item label="包括禁用产品"><u-switch slot="right" v-model="form.enableFlag"></u-switch></u-form-item>
 			</u-form>
 			<view class="form-footer-btn">
 				<u-button size="medium" shape="circle" hover-class="none" @click="handleClean">清空</u-button>
@@ -61,7 +61,7 @@
 					productTypeSn2: undefined, //  产品分类2
 					productTypeSn3: undefined, //  产品分类3
 					zeroQtyFlag: false ,//  库存情况
-					productEnabledFlag: true, // 显示禁用产品
+					enableFlag: true, // 显示禁用产品
 					minUnsalableDays: undefined, // 滞销天数最小值
 					maxUnsalableDays: undefined // 滞销天数最大值
 				},
@@ -90,7 +90,7 @@
 			}
 		},
 		watch: {
-		  'form.productEnabledFlag' (newValue, oldValue) {
+		  'form.enableFlag' (newValue, oldValue) {
 		    uni.setStorageSync('productEnabledFlag-' + this.$store.state.vuex_userData.orgId, newValue)
 		  },
 		},
@@ -98,7 +98,7 @@
 			// 是否默认包括禁用产品
 			const a = uni.getStorageSync('productEnabledFlag-' + this.$store.state.vuex_userData.orgId)
 			console.log(typeof a == 'boolean')
-			this.form.productEnabledFlag = typeof a == 'boolean' ? a : true
+			this.form.enableFlag = typeof a == 'boolean' ? a : true
 			this.getTotal()
 		},
 		methods: {
@@ -165,7 +165,7 @@
 				if (this.checkValueRange()) {
 					let params = JSON.parse(JSON.stringify(this.form))
 					params.zeroQtyFlag = params.zeroQtyFlag ? '0' : ''
-					params.productEnabledFlag = params.productEnabledFlag ? '' : '1'
+					params.enableFlag = params.enableFlag ? '' : '1'
 					uni.navigateTo({ url: "/pages/stock/stockSearch?data="+JSON.stringify(params) })
 				}
 			},

+ 2 - 2
pages/userCenter/index.vue

@@ -229,8 +229,8 @@
 			getVersion() {
 				let version = getApp().globalData.version
 				console.log(version)
-				getSysVersion({versionType:version.platform=='android'?'ANDROID':'IOS'}).then(ret => {
-					console.log(JSON.stringify(ret))
+				getSysVersion({versionType:version.platform=='android'?'ANDROID':'IOS', applyCode: 'jgqp'}).then(ret => {
+					console.log(ret)
 					if(ret.status == 200){
 						console.log(ret.data)
 						this.$store.state.vuex_versionInfo = ret.data

+ 0 - 12
pages/userCenter/setData.vue

@@ -27,18 +27,6 @@
 						"
 					></u-switch>
 				</u-cell-item>
-				<!-- <u-cell-item title="参与对账的销售单业务状态">
-					<u-input slot="right-icon" v-model="billStatus" @click="showCheckBoxModal=true" disabled placeholder="请选择参与对账的销售单业务状态" placeholder-style="text-align:right" :custom-style="inputStyle"/>
-				</u-cell-item>
-				<u-cell-item title="参与对账的销售单来源">
-					<u-input slot="right-icon" v-model="billCycle" @click="showModal=true" disabled placeholder="请选择参与对账的销售单来源" placeholder-style="text-align:right" :custom-style="inputStyle"/>
-				</u-cell-item>
-				<u-cell-item  title="铺货销售单是否参与对账">
-					<u-switch :size="40" :active-color="activeColor" slot="right-icon" v-model="checked"></u-switch>
-				</u-cell-item>
-				<u-cell-item title="对账单选择客户默认页签" :border-bottom="false">
-					<u-input slot="right-icon" v-model="billCycle" @click="showModal=true" disabled placeholder="请选择对账单客户" placeholder-style="text-align:right" :custom-style="inputStyle"/>
-				</u-cell-item> -->
 			</u-cell-group>
 		</view>
 		<!-- 类似于picker单选 -->

BIN
static/default/navIcon/parts.png


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
static/iconfont/iconfont.css


BIN
static/iconfont/iconfont.ttf


BIN
证书/ios/发布证书/iscmApp_pro.mobileprovision


BIN
证书/ios/发布证书/pro证书.p12


BIN
证书/ios/开发证书/dev证书.p12


BIN
证书/ios/开发证书/iscmApp.mobileprovision


BIN
证书/ios/新证书/iscm.p12


BIN
证书/ios/新证书/iscmdev.mobileprovision


BIN
证书/ios/新证书/iscmpro.mobileprovision


Неке датотеке нису приказане због велике количине промена