From 2667b6698161d233c150c588bcee6e0daafe6f44 Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期三, 15 十一月 2023 14:59:49 +0800 Subject: [PATCH] # --- pages/business/goBusiness/reimburseOnline.vue | 23 + pages/business/goBusiness/reimburseOnlineDetl.vue | 117 +--------- pages.json | 9 pages/business/goBusiness/modiReimburseOnlineDetl.vue | 466 ++++++++++++++++++++++++++++++++++++++++++ pages/business/goBusiness/goBusiness.vue | 1 5 files changed, 504 insertions(+), 112 deletions(-) diff --git a/pages.json b/pages.json index 83dfd35..1e16a80 100644 --- a/pages.json +++ b/pages.json @@ -223,6 +223,15 @@ "navigationBarTitleText" : "娴嬭瘯", "enablePullDownRefresh" : false } + }, + { + "path" : "pages/business/goBusiness/modiReimburseOnlineDetl", + "style" : + { + "navigationBarTitleText" : "淇敼鎶ラ攢瀹℃壒", + "enablePullDownRefresh" : false, + "navigationStyle": "custom" + } } ], "globalStyle": { diff --git a/pages/business/goBusiness/goBusiness.vue b/pages/business/goBusiness/goBusiness.vue index fb0f68f..7629127 100644 --- a/pages/business/goBusiness/goBusiness.vue +++ b/pages/business/goBusiness/goBusiness.vue @@ -72,7 +72,6 @@ }, methods: { goDetl(e) { - console.log(e); uni.navigateTo({ url: '/pages/business/goBusiness/goBusinessDetil', success: function(res) { diff --git a/pages/business/goBusiness/modiReimburseOnlineDetl.vue b/pages/business/goBusiness/modiReimburseOnlineDetl.vue new file mode 100644 index 0000000..d26d288 --- /dev/null +++ b/pages/business/goBusiness/modiReimburseOnlineDetl.vue @@ -0,0 +1,466 @@ +<template> + <view> + <view class="status_bar"> + <!-- 杩欓噷鏄姸鎬佹爮 --> + </view> + <uni-nav-bar left-icon="left" :title="title" @clickLeft="back" @clickRight="scan" :fixed="true" + :border="false" rightWidth="160rpx" leftWidth="160rpx" + > + <!-- <block slot="right"> + <view class="city"> + <view> + <text class="uni-nav-bar-text">{{user.username}}</text> + </view> + <uni-icons type="arrowdown" color="#333333" size="20" /> + </view> + </block> --> + </uni-nav-bar> + <view class="container"> + <view style="height: 16rpx;"></view> + <view class="card" v-for="(item,index) in form"> + <view class="card-select" v-show="item.inputType != 'table'" style="width: 100%;"> + <view class="flex"> + <view class="card-required" v-show="item.required">*</view> + <view >{{item.name}}</view> + </view> + <uni-combox :candidates="orderIds" placeholder="璇烽�夋嫨椤圭洰" v-model="orderId" + @input="getOrderId()" v-if="item.inputType == 'chose'"> + </uni-combox> + <view class="flex"> + <!-- 杈撳叆妗� --> + <view v-if="item.inputType != 'table'" style="flex:1"> + <input type="text" :placeholder="item.placeholder" v-model="item.value" v-if="item.inputType != 'chose'"> + </view> + <!-- 閫夋嫨鎸夐挳 --> + <view class="flex" style="width: 50rpx;" v-if="item.inputType == 'select'" @click="showPicker(item.type)"> + <uni-icons type="right" color="#000" ></uni-icons> + </view> + </view> + </view> + <!-- 琛ㄦ牸 --> + <view style="display: flex;flex-direction: column;width: 100%;font-size: 24rpx;" v-show="item.inputType == 'table'"> + <view >{{item.name}}:</view> + <view style="width: 100%; overflow-x: scroll;border: 1px solid #bebebe;" v-if="item.inputType == 'table'"> + <table cellpadding="0" cellspacing="0" style=""> + <thead> + <tr style="background-color: #949494;color: #FFF;"> + <td class="scroll-item" v-for="(item,index) in table"> + <view class="item-content">{{item.name}}</view> + </td> + </tr> + </thead> + <tbody> + <tr v-for="(item,index) in tableData"> + <td class="scroll-item" v-for="(subitem,i) in table"> + <view class="item-content" v-if="subitem.type != 'options'"> + <input type="text" v-model="item[subitem.type]"> + </view> + + <view v-if="subitem.type == 'options'" style="color: red;" @click="delItem(index)">鍒犻櫎</view> + </td> + </tr> + </tbody> + </table> + <view style="height: 16rpx;"></view> + <view style="position: sticky;width: 100%;left: 0;text-align: center;height: 70rpx;line-height: 70rpx;" v-show="tableData.length == 0">鏃犳暟鎹�...</view> + </view> + </view> + </view> + <view style="height: 16rpx;"></view> + <view style="text-align: center;display: flex;align-items: center;justify-content: center;"> + + <view style="background-color: #2d8cf0;width: 200rpx;height:50rpx;color: #fff;line-height: 50rpx;border-radius: 15rpx;" @click="addDetl('bottom')"> + <uni-icons type="plusempty" color="#fff"></uni-icons> + <text>娣诲姞鏄庣粏</text> + </view> + </view> + + + <view style="height: 16rpx;"></view> + </view> + + <view> + + </view> + + <u-picker :show="reimburseId" :columns="reimburseIds" @confirm="reimburseIdConfirm"></u-picker> + <u-picker :show="checkData" :columns="checkDatas" @confirm="checkDataConfirm"></u-picker> + + <view> + <!-- 鏅�氬脊绐� --> + <uni-popup ref="popup"> + <view class="popup"> + <view class="pop-title"> 娣诲姞鏄庣粏 </view> + <view class="pop-subtitle"> + 璐圭敤绫诲瀷 + </view> + <view class="pop-body"> + <u-radio-group v-model="radiovalue2" placement="column" shape="square" @change="popChange"> + <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist2" + @change="radioChange" :key="index" :label="item.name" :name="item.name" > + </u-radio> + </u-radio-group> + </view> + </view> + </uni-popup> + </view> + + <view class="floor"> + <view class="default">閲嶇疆</view> + <view class="primary" @click="submit()">淇濆瓨</view> + </view> + </view> +</template> + +<script> +import colorGradient from '../../../uni_modules/uview-ui/libs/function/colorGradient'; + export default { + data() { + return { + title: '淇敼鎶ラ攢瀹℃壒', + radiolist2: [{ + name: '椁愯垂', + disabled: false + }, + { + name: '浣忓璐�', + disabled: false + }, + { + name: '杞﹁垂', + disabled: false + }, { + name: '娌硅垂', + disabled: false + }, { + name: '鍏朵粬', + disabled: false + } + ], + radiovalue2: '椁愯垂', + form: [ + {name: '椤圭洰鍚�',placeholder: '璇烽�夋嫨',inputType: 'chose',type: 'orderId',value: '',submitVal: ''}, + {name: '鎶ラ攢绫诲瀷',placeholder: '璇烽�夋嫨',required:true,inputType: 'select',type: 'reimburseId',value: '',submitVal: ''}, + {name: '鏄惁鍐茶处',placeholder: '璇烽�夋嫨',required:true,inputType: 'select',type: 'checkData',value: '',submitVal: ''}, + {name: '鎶ラ攢鏄庣粏',placeholder: '璇烽�夋嫨',inputType: 'table'} + ], + table: [ + {name:'浜嬬敱',type: 'occupation'}, + {name:'璐圭敤绫诲瀷',type: 'expenseType$'}, + {name:'绋庣巼',type: 'taxRate'}, + {name:'鏈◣鏈竵閲戦',type: 'untaxedAmountInLocalCurrency'}, + {name:'鏈◣閲戦',type: 'untaxedAmount'}, + {name:'绋庨',type: 'taxAmount'}, + {name:'鍙戠エ閲戦',type: 'invoiceValue'}, + {name:'鍙戠エ鏈竵閲戦',type: 'invoiceAmountInLocalCurrency'}, + {name:'鎶ラ攢姣斾緥',type: 'reimbursementRatio'}, + {name:'鎶ラ攢閲戦',type: 'reimbursementAmount'}, + {name:'鎶ラ攢鏈竵閲戦',type: 'reimbursementAmountInLocalCurrency'}, + {name:'鍑虹撼纭閲戦',type: 'cashierConfirmationAmount'}, + {name:'鍒楁敮浜哄憳',type: 'userId$'}, + {name:'鍒楁敮閮ㄩ棬',type: 'deptId$'}, + {name:'鏇存柊鏃ユ湡',type: 'updateTime'}, + {name:'鏇存柊浜哄憳鍚嶅瓧',type: 'updateUserName'}, + {name:'鎿嶄綔',type: 'options'} + ], + tableData: [ + { + occupation: 'CRMREIMBURSE1699507854268', + expenseType$: '1', + taxRate: '0.0', + untaxedAmountInLocalCurrency: '1.1', + untaxedAmount: '1.3', + taxAmount: 'aaa', + invoiceValue: '213', + invoiceAmountInLocalCurrency: '123213', + reimbursementRatio: '0.0', + reimbursementAmount: 11, + reimbursementAmountInLocalCurrency:12, + cashierConfirmationAmount: 123, + userId$: '123', + deptId$: '璐㈠姟閮�', + updateTime: '2023-11-11', + updateUserName: 'name' + }, + { + occupation: '璇烽�夋嫨', + expenseType$: '1', + taxRate: '0.0', + untaxedAmountInLocalCurrency: '1.1', + untaxedAmount: '1.3', + taxAmount: 'aaa', + invoiceValue: '213', + invoiceAmountInLocalCurrency: 'CRMREIMBURSE1699507854268', + reimbursementRatio: '0.0', + reimbursementAmount: 11, + reimbursementAmountInLocalCurrency:12, + cashierConfirmationAmount: 123, + userId$: '123', + deptId$: '璐㈠姟閮�', + updateTime: '2023-11-11', + updateUserName: 'name' + }, + ], + dataRule: [ + {occupation: ''} + ], + reimburseId: false, + reimburseIds: [['椤圭洰鏈畬鎴�','椤圭洰宸插畬鎴愬湪璐ㄤ繚鏈熷唴','闈為」鐩瀷鎶ラ攢','鍏朵粬']], + checkData: false, + checkDatas: [['鏄�','鍚�']], + orderId: '', + orderIds: [], + orderIds2: [], + orderIdList: [], + newDetl: { + occupation: '', + expenseType$: '1', + taxRate: '0.0', + untaxedAmountInLocalCurrency: '1.1', + untaxedAmount: '1.3', + taxAmount: 'aaa', + invoiceValue: '213', + invoiceAmountInLocalCurrency: '123213', + reimbursementRatio: '0.0', + reimbursementAmount: 11, + reimbursementAmountInLocalCurrency:12, + cashierConfirmationAmount: 123, + userId$: '123', + deptId$: '璐㈠姟閮�', + updateTime: '2023-11-11', + updateUserName: 'name' + }, + } + }, + onLoad(option) { + let _this = this + _this.list = [] + const eventChannel = this.getOpenerEventChannel(); + eventChannel.on('reimburseOnlineDetl', function(data) { + if (data.data == 'add') { + _this.title = '娣诲姞鎶ラ攢瀹℃壒' + } + console.log(data) + console.log(_this.title) + }) + this.getOrderId('') + }, + methods: { + addDetl(type) { + this.type = type + // open 鏂规硶浼犲叆鍙傛暟 绛夊悓鍦� uni-popup 缁勪欢涓婄粦瀹� type灞炴�� + this.$refs.popup.open(type) + }, + popChange(n) { + // var detl=JSON.parse(JSON.stringify(this.newDetl)); // 鐗涢�� + let detl = {...this.newDetl} // 鐗涢�� + console.log('groupChange', n); + console.log(this.radiovalue2); + detl.expenseType$ = this.radiovalue2 + this.tableData.push(detl) + this.$refs.popup.close() + }, + radioChange(n) { + console.log('radioChange', n); + }, + showPicker(e) { + switch(e) { + case 'reimburseId': + this.reimburseId = true + break; + case 'orderId': + this.orderId = true + this.getOrderId(); + break + case 'checkData': + this.checkData = true + break + } + }, + getOrderId(condition) { + let _this = this + uni.request({ + url: `${_this.baseUrl}/orderQueryName/auth`, + header: { 'token': uni.getStorageSync('token') }, + method: 'POST', + data: {condition: condition}, + success(res) { + res = res.data + _this.orderIds = [] + _this.orderIdList = [] + if (res.code === 200 && res.data) { + _this.orderIds2 = res.data + for (let k of res.data) { + _this.orderIds.push(k.value) + _this.orderIdList.push(k) + } + + } + } + + }) + }, + delItem(index) { + this.tableData.splice(index,1) + }, + reimburseIdConfirm(e) { + console.log('confirm', e) + this.form[1].value = e.value[0] + this.form[1].submitVal = e.indexs[0] + this.reimburseId = false + console.log(this.form); + }, + checkDataConfirm(e) { + console.log('confirm', e) + this.form[2].value = e.value[0] + this.form[2].submitVal = e.indexs[0] + this.checkData = false + console.log(this.form); + }, + // 琛ㄥ崟鎻愪氦 + submit() { + let param = { + orderId: '', + checkData: '鍚�', + docType: null, + reimburseId: null, + templateName: '椤圭洰鏈畬鎴�', + reimburseOnlineDetls: [ + + ] + } + for (let element of this.orderIdList) { + if(element.value == this.orderId) { + param.orderId = element.id + '' + } + } + for (let k of this.form) { + if (k.type == 'reimburseId') { + param.reimburseId = k.submitVal + } + if (k.type == 'checkData') { + param.checkData = k.value + } + } + console.log(this.form); + console.log(param); + param.reimburseOnlineDetls = this.tableData + if (param.reimburseId == null || param.reimburseId === '') { + uni.showToast({title: '鎶ラ攢绫诲瀷涓嶈兘涓虹┖', icon: "none", position: 'top'}) + return + } + if (param.checkData == '') { + uni.showToast({title: '鏄惁鍐茶处涓嶈兘涓虹┖', icon: "none", position: 'top'}) + return + } + if (param.reimburseOnlineDetls.length == 0) { + uni.showToast({title: '璇锋坊鍔犳姤閿�鏄庣粏', icon: "none", position: 'top'}) + return + } + // console.log(this.orderIdList); + // console.log(this.orderIds); + console.log(param); + }, + + back() { + uni.navigateBack({}) + }, + scan() { + uni.navigateTo({ + url: '/pages/authority/authority' + }) + }, + } + } +</script> + +<style> + .flex { + display: flex; + align-items: center; + } + .flex-column { + display: flex; + flex-direction: column; + } + .container { + margin: 16rpx; + background-color: #fff; + } + .card { + display: flex; + margin: 8rpx 16rpx; + } + .card-select { + display: flex; + flex-direction: column; + } + .card-required { + color: red; + padding-right: 4rpx; + } + .scroll-item { + min-width: 150rpx; + padding: 10rpx; + text-align: center; + } + .scroll-item:last-child > .item-content { + min-width: 150rpx; + border-right: none; + } + .item-content { + min-width: 150rpx; + height: 30rpx; + line-height: 30rpx; + padding-right: 10rpx; + border-right: 1px solid #d3d3d3; + } + + .popup { + background-color: #fff; + border-radius: 50rpx 50rpx 0rpx 0rpx; + height: 70vh; + } + .pop-title { + width: 100%; + height: 100rpx; + line-height: 100rpx; + text-align: center; + font-size: 40rpx; + } + .pop-subtitle { + margin: 32rpx; + font-size: 32rpx; + } + .pop-body { + margin: 32rpx; + } + + .floor { + height: 100rpx; + line-height: 100rpx; + width: 100%; + background-color: #fff; + position: fixed; + bottom: 0; + left: 0; + display: flex; + align-items: center; + text-align: center; + letter-spacing: 10rpx; + } + .default { + flex: 2; + } + .default:active { + background-color: #eff0f1; + } + .primary { + flex: 3; + background-color: #2d8cf0; + color: #fff; + } + .primary:active { + background-color: #007dea; + } +</style> diff --git a/pages/business/goBusiness/reimburseOnline.vue b/pages/business/goBusiness/reimburseOnline.vue index c519295..54b8497 100644 --- a/pages/business/goBusiness/reimburseOnline.vue +++ b/pages/business/goBusiness/reimburseOnline.vue @@ -23,6 +23,9 @@ </view> + <view class="fxbtn"> + <uni-icons type="plusempty" color="#fff" @click="add()" ></uni-icons> + </view> </view> </template> @@ -44,12 +47,14 @@ this.getReimburseOnline() }, methods: { - back() { - uni.navigateBack({}) - }, - scan() { + add() { uni.navigateTo({ - url: '/pages/authority/authority' + url: '/pages/business/goBusiness/modiReimburseOnlineDetl', + success: function(res) { + res.eventChannel.emit('reimburseOnlineDetl', { + data: 'add' + }) + } }) }, goDetl(e) { @@ -84,6 +89,14 @@ } }) }, + back() { + uni.navigateBack({}) + }, + scan() { + uni.navigateTo({ + url: '/pages/authority/authority' + }) + }, } } </script> diff --git a/pages/business/goBusiness/reimburseOnlineDetl.vue b/pages/business/goBusiness/reimburseOnlineDetl.vue index 1c27638..84d43b9 100644 --- a/pages/business/goBusiness/reimburseOnlineDetl.vue +++ b/pages/business/goBusiness/reimburseOnlineDetl.vue @@ -123,116 +123,12 @@ <view class="item-content">{{item.updateTime}}</view> </td> <td class="scroll-item"> - <view class="item-content">{{item.updateUserName}}</view> + <view class="item-content-last">{{item.updateUserName}}</view> </td> </tr> </tbody> </table> </view> - <!-- <scroll-view class="box-scroll" scroll-x="true" > - <view class="scroll-head"> - <view class="scroll-item scroll-head"> - <view class="item-content">浜嬬敱</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">璐圭敤绫诲瀷</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">绋庣巼</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鏈◣鏈竵閲戦</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鏈◣閲戦</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">绋庨</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鍙戠エ閲戦</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鍙戠エ鏈竵閲戦</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鎶ラ攢姣斾緥</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鎶ラ攢閲戦</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鎶ラ攢鏈竵閲戦</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鍑虹撼纭閲戦</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鍒楁敮浜哄憳</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鍒楁敮閮ㄩ棬</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content">鏇存柊鏃ユ湡</view> - </view> - <view class="scroll-item scroll-head"> - <view class="item-content-last">鏇存柊浜哄憳鍚嶅瓧</view> - </view> - </view> - <view style="border-top: 1px solid #e7e7e7;" v-for="(item, index) in onlineDetl" :key="index"> - <view class="scroll-item"> - <view class="item-content">{{item.occupation}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.expenseType$}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.taxRate}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.untaxedAmountInLocalCurrency}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.untaxedAmount}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.taxAmount}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.invoiceValue}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.invoiceAmountInLocalCurrency}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.reimbursementRatio}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.reimbursementAmount}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.reimbursementAmountInLocalCurrency}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.cashierConfirmationAmount}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.userId$}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.deptId$}}</view> - </view> - <view class="scroll-item"> - <view class="item-content">{{item.updateTime}}</view> - </view> - <view class="scroll-item"> - <view class="item-content-last">{{item.updateUserName}}</view> - </view> - </view> - <view style="height: 10rpx;"></view> - </scroll-view> --> - </view> </view> @@ -255,10 +151,14 @@ </u-steps> </view> </view> + + <view style="height: 70rpx;"> + + </view>w <view class="floor"> <view class="wran">鍒犻櫎</view> - <view class="default">缂栬緫</view> + <view class="default" @click="modiReimburse()">缂栬緫</view> <view class="primary" @click="submit()">瀹℃壒</view> </view> </view> @@ -345,6 +245,11 @@ } }, methods: { + modiReimburse() { + uni.navigateTo({ + url: '/pages/business/goBusiness/modiReimburseOnlineDetl' + }) + }, back() { uni.navigateBack({}) }, -- Gitblit v1.9.1