Ver código fonte

订单添加修改账户逻辑

xiaohaizhao 1 ano atrás
pai
commit
7aa249673f

+ 1 - 1
packageA/orderForm/add/add.js

@@ -108,11 +108,11 @@ Page({
         this.setData({
             loading: true
         })
+        //  sa_accountclassid: 0,
         _Http.basic({
             "id": 20221108111402,
             content: {
                 sa_orderid: 0,
-                sa_accountclassid: 0,
                 rec_contactsid: 0,
                 pay_enterpriseid: 0,
                 sa_contractid: this.data.sa_contractid,

+ 51 - 2
packageA/orderForm/detail.js

@@ -39,7 +39,7 @@ Page({
 				"sa_orderid": this.data.sa_orderid
 			}
 		}, show).then(res => {
-			console.log("订单详情", res)
+			console.log("订单详情", res.data)
 			if (res.msg != '成功') return wx.showToast({
 				title: res.msg,
 				icon: "none"
@@ -48,7 +48,7 @@ Page({
 				symbol: "¥",
 				precision: 2
 			}).format();
-			res.data.sa_accountclassinfos = res.data.sa_accountclassinfos.map(v => {
+			if (res.data.sa_accountclassinfos) res.data.sa_accountclassinfos = res.data.sa_accountclassinfos.map(v => {
 				v.amount = CNY(v.amount)
 				v.text = `\n(余额:${CNY(v.balance)},信用额度:${CNY(v.creditquota)})`
 				return v
@@ -156,6 +156,55 @@ Page({
 			}
 		})
 	},
+	/* 修改支付账户 */
+	changeAccount(e) {
+		if (this.isEdit()) return;
+		wx.navigateTo({
+			url: `/select/account/index?params=${JSON.stringify({ 
+				"id":20221008134803,
+				"version": 1,
+				"content": {
+					"pageNumber": 1, 
+					"pageTotal": 1, 
+					"pageSize": 20,
+					"where": {
+						"condition": "",
+						"isused": 1,
+						"isnotspecialfund": this.data.detail.type == '标准订单' ? 0 : 1, //是否专用
+						}, 
+				}
+			 })}&radio=true`,
+		});
+		getApp().globalData.handleSelect = this.setAccount.bind(this);
+	},
+	setAccount({
+		item
+	}) {
+		let that = this;
+		wx.showModal({
+			title: '提示',
+			content: `是否确认设置"${item.accountname}"为结算人?`,
+			complete: (res) => {
+				if (res.confirm) {
+					that.setData({
+						"detail.sa_accountclassid": item.sa_accountclassid,
+					});
+					that.changeDetail().then(s => {
+						if (s.msg == '成功') {
+							wx.showToast({
+								title: '设置成功',
+								icon: "none"
+							});
+							setTimeout(() => {
+								wx.navigateBack();
+								that.getDetail();
+							}, 500)
+						}
+					})
+				}
+			}
+		})
+	},
 	/* 选择财务信息 */
 	selectFinance() {
 		if (this.isEdit()) return;

+ 69 - 73
packageA/orderForm/detail.wxml

@@ -2,92 +2,88 @@
 <template is="skeleton" wx:if="{{loading}}" />
 
 <view class="intr">
-	<view class="num">
-		{{detail.sonum}}
-	</view>
-	<view class="tags">
-		<text wx:if="{{detail.brandname}}" style="background-color: #0079FE;">{{detail.brandname}}</text>
-		<text wx:if="{{detail.tradefield}}" style="background-color: #4BD863;">{{detail.tradefield}}</text>
-		<!-- <text wx:if="{{detail.status=='新建' && detail.type=='项目订单'}}" style="background-color: #4BD863;" bindtap="setBraned">设置品牌/领域</text> -->
-	</view>
-	<view class="exp" wx:if="{{userrole!='经销商'}}">经销商:{{detail.enterprisename || ' --'}}</view>
-	<view class="exp" wx:if="{{detail.type=='项目订单'}}">关联项目:{{detail.projectname || '暂无'}}</view>
-	<view class="exp">订单类型:{{detail.type}}</view>
-	<view class="exp">订单状态:{{detail.status}}</view>
-	<view class="exp">单据日期:{{detail.billdate || '暂无'}}</view>
-	<view class="exp">创建日期:{{detail.createdate}}</view>
-	<!-- <van-button wx:if="{{userrole=='经销商'}}" custom-class='copy' bindtap="copyItem">一键复制订单</van-button> -->
+    <view class="num">
+        {{detail.sonum}}
+    </view>
+    <view class="tags">
+        <text wx:if="{{detail.brandname}}" style="background-color: #0079FE;">{{detail.brandname}}</text>
+        <text wx:if="{{detail.tradefield}}" style="background-color: #4BD863;">{{detail.tradefield}}</text>
+        <!-- <text wx:if="{{detail.status=='新建' && detail.type=='项目订单'}}" style="background-color: #4BD863;" bindtap="setBraned">设置品牌/领域</text> -->
+    </view>
+    <view class="exp" wx:if="{{userrole!='经销商'}}">经销商:{{detail.enterprisename || ' --'}}</view>
+    <view class="exp" wx:if="{{detail.type=='项目订单'}}">关联项目:{{detail.projectname || '暂无'}}</view>
+    <view class="exp">订单类型:{{detail.type}}</view>
+    <view class="exp">订单状态:{{detail.status}}</view>
+    <view class="exp">单据日期:{{detail.billdate || '暂无'}}</view>
+    <view class="exp">创建日期:{{detail.createdate}}</view>
+    <!-- <van-button wx:if="{{userrole=='经销商'}}" custom-class='copy' bindtap="copyItem">一键复制订单</van-button> -->
 </view>
-
 <navigator url="#" class="box location" bindtap="selectFinance">
-	<view class="content">
-		<view class="name">
-			开票单位
-		</view>
-		<view class="address">
-			{{detail.finance.enterprisename || '暂无'}}
-		</view>
-	</view>
-	<view class="iconfont icon-dibu-bianji" />
+    <view class="content">
+        <view class="name">
+            开票单位
+        </view>
+        <view class="address">
+            {{detail.finance.enterprisename || '暂无'}}
+        </view>
+    </view>
+    <view class="iconfont icon-dibu-bianji" />
 </navigator>
-
 <view class="box pay">
-	<view class="title">
-		支付信息
-	</view>
-	<navigator url="#" class="row" bindtap="selectAgent">
-		<view class="label">结算人</view>
-		<view style="font-size: 28rpx;">
-			{{detail.pay_enterprisename || '暂无'}}
-			<van-icon name="arrow" />
-		</view>
-	</navigator>
-
-	<view class="row" style="align-items: flex-start;">
-		<view class="label" style="padding-top: 20rpx;">支付账户</view>
-		<view>
-			<view wx:for="{{detail.sa_accountclassinfos}}" wx:key="sa_accountclassid" style="font-size: 28rpx; text-align: right;">
-				<text style="font-weight: 600;">{{item.accountname}}:<text style="color: #DA0A23;">{{item.amount}}</text></text>
-				<text style="font-size: 22rpx;">{{item.text}}</text>
-			</view>
-		</view>
-
-	</view>
+    <view class="title">
+        支付信息
+    </view>
+    <navigator url="#" class="row" bindtap="selectAgent">
+        <view class="label">结算人</view>
+        <view style="font-size: 28rpx;">
+            {{detail.pay_enterprisename || '暂无'}}
+            <van-icon name="arrow" />
+        </view>
+    </navigator>
+    <view class="row" style="align-items: flex-start;" bindtap="changeAccount">
+        <view class="label" style="padding-top: 20rpx;">支付账户</view>
+        <view>
+            <view wx:for="{{detail.sa_accountclassinfos}}" wx:key="sa_accountclassid" style="font-size: 28rpx; text-align: right;">
+                <text style="font-weight: 600;">{{item.accountname}}:<text style="color: #DA0A23;">-{{item.amount}}</text></text>
+                <text style="font-size: 22rpx;">{{item.text}}</text>
+            </view>
+        </view>
+    </view>
 </view>
 <view class="box" style="padding: 10rpx 30rpx;">
-	<view class="row">
-		<view class="label">订单备注</view>
-		<textarea disabled="{{detail.status!='新建'}}" bindtap="isEdit" class="remarks" placeholder-class='placeholder' bindblur="changeRemarks" value="{{detail.remarks}}" auto-height placeholder="订单备注" />
-	</view>
+    <view class="row">
+        <view class="label">订单备注</view>
+        <textarea disabled="{{detail.status!='新建'}}" bindtap="isEdit" class="remarks" placeholder-class='placeholder' bindblur="changeRemarks" value="{{detail.remarks}}" auto-height placeholder="订单备注" />
+    </view>
 </view>
 <view style="height: 20rpx;" />
 <Yl_FunTabs list='{{tabsList}}' active='{{tabsActive}}' bind:onChenge="tabsChange">
-	<Product slot='产品明细' id='Product' disabled="{{detail.status!='新建'}}" />
-	<Yl_Attachment slot='附件' id='Yl_Attachment' ownertable="sa_order" ownerid="{{detail.sa_orderid}}" disabled="{{detail.status!='新建'}}" />
-	<Progress slot='订单进度' id='Progress' />
+    <Product slot='产品明细' id='Product' disabled="{{detail.status!='新建'}}" />
+    <Yl_Attachment slot='附件' id='Yl_Attachment' ownertable="sa_order" ownerid="{{detail.sa_orderid}}" disabled="{{detail.status!='新建'}}" />
+    <Progress slot='订单进度' id='Progress' />
 </Yl_FunTabs>
 
 <view style="height: 130rpx;" />
 <view class="footer">
-	<view class="price">
-		<view class="count">
-			{{handleHide.query(amount,hidePrice)}}元
-		</view>
-		<view>
-			{{logistics}}
-		</view>
-	</view>
-	<view class="but-box">
-		<van-button custom-class='but delete' wx:if="{{detail.status=='新建'&& enable.query(options,'delete')}}" bind:click="deleteItem">删除订单</van-button>
-		<block wx:if="{{detail.type=='特殊订单'}}">
-			<van-button custom-class='but' wx:if="{{detail.status=='新建' && enable.query(options,'insubmit')}}" data-isrecheck="1" bind:click="presubmission">预提交</van-button>
-			<van-button custom-class='but' wx:if="{{detail.status=='预提交' && enable.query(options,'revocation')}}" data-isrecheck="0" bind:click="presubmission">撤回</van-button>
-			<van-button custom-class='but' wx:if="{{detail.status=='确认' && enable.query(options,'submit')}}" bind:click="submit">提交订单</van-button>
-		</block>
-		<block wx:else>
-			<van-button custom-class='but' wx:if="{{detail.status=='新建' && enable.query(options,'submit')}}" bind:click="submit">提交订单</van-button>
-		</block>
-	</view>
+    <view class="price">
+        <view class="count">
+            {{handleHide.query(amount,hidePrice)}}元
+        </view>
+        <view>
+            {{logistics}}
+        </view>
+    </view>
+    <view class="but-box">
+        <van-button custom-class='but delete' wx:if="{{detail.status=='新建'&& enable.query(options,'delete')}}" bind:click="deleteItem">删除订单</van-button>
+        <block wx:if="{{detail.type=='特殊订单'}}">
+            <van-button custom-class='but' wx:if="{{detail.status=='新建' && enable.query(options,'insubmit')}}" data-isrecheck="1" bind:click="presubmission">预提交</van-button>
+            <van-button custom-class='but' wx:if="{{detail.status=='预提交' && enable.query(options,'revocation')}}" data-isrecheck="0" bind:click="presubmission">撤回</van-button>
+            <van-button custom-class='but' wx:if="{{detail.status=='确认' && enable.query(options,'submit')}}" bind:click="submit">提交订单</van-button>
+        </block>
+        <block wx:else>
+            <van-button custom-class='but' wx:if="{{detail.status=='新建' && enable.query(options,'submit')}}" bind:click="submit">提交订单</van-button>
+        </block>
+    </view>
 </view>
 
 <wxs src="/utils/hidePrice.wxs" module="handleHide" />

+ 122 - 0
select/account/index.js

@@ -0,0 +1,122 @@
+const _Http = getApp().globalData.http;
+import currency from "../../utils/currency";
+let CNY = value => currency(value, {
+  symbol: "¥",
+  precision: 2
+}).format();
+Page({
+  data: {
+    loading: true,
+    params: {}, //请求体
+    result: [], //返回结果
+    radio: false, //是否为单选
+    idname: "sa_accountclassid", //idkey
+    showName: "accountname"
+  },
+  onLoad(options) {
+    if (options.params) {
+      let params = JSON.parse(options.params);
+      if (!params.content.pageNumber || !params.content.pageTotal) {
+        params.content.pageNumber = 1;
+        params.content.pageTotal = 1;
+      }
+      this.setData({
+        params
+      });
+    }
+    this.setData({
+      radio: options.radio ? true : false,
+      idname: options.idname || this.data.idname,
+      showName: options.showName || this.data.showName,
+    });
+    this.getList()
+  },
+  getList(init = false) {
+    //init 用于初始化分页
+    if (init.detail != undefined) init = init.detail;
+    let params = this.data.params;
+    if (init) params.content.pageNumber = 1
+    if (params.content.pageNumber > params.content.pageTotal) return;
+
+    _Http.basic(params).then(res => {
+      console.log("选择账户列表", res)
+      this.selectComponent('#ListBox').RefreshToComplete();
+      if (res.msg != '成功') return wx.showToast({
+        title: res.msg,
+        icon: "none"
+      })
+      res.data = res.data.map(v => {
+        v.balance = CNY(v.balance)
+        v.creditquota = CNY(v.creditquota)
+        return v
+      })
+      this.setData({
+        'params.content.pageNumber': res.pageNumber + 1,
+        'params.content.pageTotal': res.pageTotal,
+        'params.content.total': res.total,
+        list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
+        loading: false
+      })
+    })
+  },
+  /* 选中 */
+  changeResult(e) {
+    let {
+      id
+    } = e.currentTarget.dataset, result = this.data.result;
+    if (this.data.radio) {
+      result = [id];
+    } else {
+      result.some(v => v == id) ? result = result.filter(v => v != id) : result.push(id)
+    }
+    this.setData({
+      result
+    });
+    if (this.data.radio) this.submit();
+  },
+  /* 提交 */
+  submit() {
+    let result = this.data.result,
+      obj = this.data.radio ? {
+        id: result,
+        item: this.data.list.find(value => value[this.data.idname] == result),
+        value: [this.data.list.find(value => value[this.data.idname] == result)[this.data.showName], result]
+      } : {
+        result,
+        list: result.map(v => this.data.list.find(value => value[this.data.idname] == v)),
+        value: [result.map(v => {
+          let data = this.data.list.find(value => value[this.data.idname] == v);
+          return data ? data[this.data.showName] : ""
+        }), result]
+      }
+    console.log(obj);
+    getApp().globalData.handleSelect && getApp().globalData.handleSelect(obj)
+  },
+  /* 开始搜索 */
+  startSearch({
+    detail
+  }) {
+    let condition = this.data.content ? this.data.content.where.condition : this.data.params.content.where.condition;
+    if (detail == condition) return;
+    this.setData({
+      'content.where.condition': detail,
+      'params.content.where.condition': detail
+    });
+    this.getList(true);
+  },
+  /* 取消搜索 */
+  onClear() {
+    this.setData({
+      'content.where.condition': "",
+      'params.content.where.condition': ""
+    });
+    this.getList(true);
+  },
+  onReady() {
+    this.selectComponent("#ListBox").setHeight(".total", this);
+  },
+  onUnload() {
+    //回收数据
+    getApp().globalData.handleSelect = null;
+  }
+})

+ 3 - 0
select/account/index.json

@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}

+ 79 - 0
select/account/index.scss

@@ -0,0 +1,79 @@
+page {
+	height: 100vh;
+	overflow: hidden;
+}
+
+.total {
+	height: 60rpx;
+	line-height: 60rpx;
+	font-size: 24rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	color: #666666;
+	padding-left: 30rpx;
+}
+
+.item {
+	display: flex;
+	align-items: center;
+	width: 100vw;
+	padding: 20rpx 30rpx;
+	background-color: #FFFFFF;
+	box-sizing: border-box;
+	border-bottom: 1rpx solid #DDDDDD;
+	margin-bottom: 20rpx;
+	overflow: hidden;
+
+	.main {
+		width: 100%;
+		padding-right: 20rpx;
+		box-sizing: border-box;
+
+		.title {
+			height: 40rpx;
+			line-height: 40rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC-Semibold, PingFang SC;
+			font-weight: 600;
+			color: #333333;
+		}
+
+		.subfield {
+			margin-top: 6rpx;
+			height: 34rpx;
+			line-height: 34rpx;
+			font-size: 24rpx;
+			color: #999999;
+		}
+	}
+}
+
+.footer {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	padding: 0 30rpx;
+	position: fixed;
+	width: 100vw;
+	height: 130rpx;
+	background: #FFFFFF;
+	box-shadow: 0px -4rpx 16rpx 2rpx rgba(150, 157, 165, 0.16);
+	bottom: 0;
+	box-sizing: border-box;
+
+	.count {
+		font-size: 28rpx;
+		font-family: PingFang SC-Regular, PingFang SC;
+		color: #333333;
+	}
+
+	.but {
+		width: 156rpx;
+		height: 90rpx;
+		background: #3874F6;
+		border-radius: 8rpx;
+		font-size: 28rpx;
+		font-family: PingFang SC-Bold, PingFang SC;
+		font-weight: bold;
+		color: #FFFFFF;
+	}
+}

+ 37 - 0
select/account/index.wxml

@@ -0,0 +1,37 @@
+<van-search class="search" value="{{ params.content.where.condition }}" shape="round" placeholder="请输入搜索关键词" bind:search='startSearch' bind:clear='onClear' />
+<view class="total">共{{params.content.total}}个</view>
+
+<Yl_ListBox id='ListBox' bind:getlist='getList'>
+	<navigator class="item" url="#" wx:for="{{list}}" wx:key="itemno" data-id="{{item[idname]}}" bindtap="changeResult">
+		<van-checkbox wx:if="{{!radio}}" value="{{ handle.isCheck(item[idname],result) }}" shape="square" icon-size='28rpx' />
+		<view class="main" style="padding-left: {{!radio?'10rpx':''}};">
+			<view class="title line-1">{{item.accountname || ' --'}}</view>
+			<view class="subfield line-1">
+				余额:{{item.balance}}
+			</view>
+			<view class="subfield line-1">
+				信用额度:{{item.creditquota}}
+			</view>
+		</view>
+	</navigator>
+	<view wx:if="{{!radio}}" style="height: 130rpx;" />
+	<Yl_Empty wx:if="{{list.length==0}}" />
+</Yl_ListBox>
+
+<block wx:if="{{!radio}}">
+	<view class="footer">
+		<view class="count">
+			已选:{{result.length}}
+		</view>
+		<van-button custom-class='but' disabled='{{result.length==0}}' bind:click="submit">确定</van-button>
+	</view>
+	<wxs module="handle">
+		module.exports = {
+			isCheck: function (id, list) {
+				return list.some(function (v) {
+					return v == id
+				});
+			},
+		}
+	</wxs>
+</block>