From 2d43a1df3f5ba42710e6d21c27d1e13bdb8dfd56 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期一, 24 三月 2025 09:23:08 +0800 Subject: [PATCH] - --- src/pages/delivergoods/feedback.vue | 640 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 639 insertions(+), 1 deletions(-) diff --git a/src/pages/delivergoods/feedback.vue b/src/pages/delivergoods/feedback.vue index 02409e3..f597c84 100644 --- a/src/pages/delivergoods/feedback.vue +++ b/src/pages/delivergoods/feedback.vue @@ -1,8 +1,646 @@ <template> + <up-sticky bgColor="#fff"> + <view class="coreshop-ff content c-p-10"> + <view class="coreshop-ff content c-p-l-10 c-p-t-10 c-p-r-10"> + <up-search placeholder="璇风偣鍑婚�夋嫨鏃ユ湡" @click='clickTime' @clear='init' disabled v-model="workTime" + search-icon="calendar" @search='init'></up-search> + </view> + </view> + </up-sticky> + <view class="c-p-b-100"> + <view class="c-p-l-20 c-p-r-20" v-if="orderList&&orderList.length>0"> + <view class="listrecord c-p-t-20" v-for="(item,index) in orderList" :key="item.keyid"> + <view class="coreshop-ff chuany-bradius20"> + <view class="chuany-font26"> + <view class="chuany-flex chuany-justify-between"> + <text class="chuany-width5">{{index+1}}</text> + <view class="chuany-width15"> + {{$util.formatDate(item.deliverTime,'riqi')}} + </view> + <view class="chuany-width67" @click='goDetail(item)'> + <u-text size='14' :text="item.companyName" lines="1"> + <!-- <u-text size='14' :text="item.remark||item.companyName" lines="1"> --> + </u-text> + </view> + <view class="chuany-width11 chuany-flex chuany-justify-between"> + <up-icon v-if="item.deliveredstatus=='Undeliver'" name="play-right" size='18' + @tap.stop='startOrder(item)'></up-icon> + <up-icon v-else-if="item.deliveredstatus=='Deliver'" name="checkbox-mark" size='18' + @tap.stop="editOrder(item)"></up-icon> + </view> + </view> + </view> + </view> + </view> + <up-loadmore :status="loadStatus" /> + </view> + <view v-else> + <up-empty text='鏆傛棤' icon="/static/order.png"> + </up-empty> + </view> + <up-modal title="瀹屾垚閫佽揣" :show="show7" showCancelButton @confirm="confirmSave" @cancel='cancelModal' + :asyncClose="true" ref='modalFinish'> + <up-form labelPosition="left" :model="arrangeInfo" ref="formFinishRef" labelWidth='140rpx'> + <up-form-item label="鏀惰揣鍗曚綅" prop="buyerId" :borderBottom='false' ref="item1"> + <up-input v-model="arrangeInfo.companyName" placeholder="璇烽�夋嫨鏀惰揣鍗曚綅" border="none" readonly> + </up-input> + </up-form-item> + <up-form-item label="鎰忚鍙嶉" prop="wentifankui" labelPosition='top' :borderBottom='false' ref="item1"> + <up-input v-model="arrangeInfo.wentifankui" border="none" placeholder="璇疯緭鍏ユ剰瑙佸弽棣�"></up-input> + </up-form-item> + + <up-form-item label="閫佽揣鍗�" prop="attachments" required> + <tem-upload-file immediate :url="`https://appimchat.oss-cn-chengdu.aliyuncs.com`" ref="uploadB" + :isSource='true' fileType="all" @success="success('File',$event)" @error="errorInvoice" + @complete="completeInvoice('',$event)"> + </tem-upload-file> + </up-form-item> + </up-form> + </up-modal> + <up-modal title="鍑鸿溅鎵撳崱" :show="showClockIn" showCancelButton @confirm="confirmClockSave" @cancel='cancelModal' + :asyncClose="true" ref='clockInModal'> + <up-form labelPosition="left" :model="clockInfo" ref="formClockInRef" labelWidth='140rpx'> + <up-form-item label="杞﹁締妫�鏌�" prop="carConditionAttachments" v-if="clockInfo.clockType=='ClockIn'" + required> + <tem-upload-file immediate btnText="涓婁紶鐓х墖" :url="`https://appimchat.oss-cn-chengdu.aliyuncs.com`" + ref="carCondition" :isSource='true' fileType="all" + @success="successClock('carCondition',$event)" @error="errorInvoice" + @complete="completeInvoice('carCondition',$event)"> + </tem-upload-file> + </up-form-item> + <template v-else> + <up-form-item label="瑁呰揣鐓х墖" prop="attachments" required> + <tem-upload-file immediate btnText="涓婁紶鐓х墖" :url="`https://appimchat.oss-cn-chengdu.aliyuncs.com`" + ref="zhuanghuo" :isSource='true' fileType="all" @success="successClock('zhuanghuo',$event)" + @error="errorInvoice" @complete="completeInvoice('zhuanghuo',$event)"> + </tem-upload-file> + </up-form-item> + <up-form-item label="鏈璐у師鍥�" prop="emptyCause" :borderBottom='false' @click="clickAction" + labelWidth='160rpx' ref="item1"> + <up-input v-model="clockInfo.emptyCause" disabled border="none" disabledColor="#ffffff" + placeholder="璇烽�夋嫨鏈璐у師鍥�"></up-input> + </up-form-item> + </template> + <up-form-item label="閲岀▼琛�" required prop="mileage" :borderBottom='false' ref="item1"> + <up-input v-model="clockInfo.mileage" placeholder="璇疯緭鍏ラ噷绋�" border="none" type="digit"> + <template #suffix> + <text>km</text> + </template> + </up-input> + </up-form-item> + <up-form-item label="閲岀▼鐓х墖" required prop="mileageImg" :borderBottom='false' ref="item1"> + <tem-upload-file immediate max="1" btnText="涓婁紶鐓х墖" + :url="`https://appimchat.oss-cn-chengdu.aliyuncs.com`" ref="licheng" :isSource='true' + fileType="all" @success="successClock('licheng',$event)" @error="errorInvoice" + @complete="completeInvoice('licheng',$event)"> + </tem-upload-file> + </up-form-item> + <up-form-item label="杞﹀喌澶囨敞" prop="carCondition" labelPosition='top' :borderBottom='false' ref="item1"> + <up-input v-model="clockInfo.carCondition" border="none" placeholder="璇疯緭鍏ヨ溅鍐靛娉�"></up-input> + </up-form-item> + </up-form> + </up-modal> + <fui-date-picker :show="datePickerShow" :value="getFirstDayOfMonth()" type="3" zIndex="10000" + @change="changePicker" :minDate='minDate' :maxDate='maxDate' @cancel="clickTime"></fui-date-picker> + <up-action-sheet :show="showActions" :actions="actions" title="璇烽�夋嫨" @close="showActions = false" + @select="selectItem"> + </up-action-sheet> + <!-- <view class="tabbtns chuany-flex chuany-justify-between"> + <view class="chuany-width45"> + <up-button type="primary" text="鍑鸿溅鎵撳崱" @click="clockIn('ClockIn')"></up-button> + </view> + <view class="chuany-width45"> + <up-button type="success" text="涓嬬彮鎵撳崱" @click="clockIn('Clockout')"></up-button> + </view> + </view> --> + </view> </template> <script> + import { + mapActions, + mapGetters, + mapMutations + } from 'vuex' + export default { + data() { + return { + datePickerShow: false, + shougHuoshow: false, + workTime: this.$util.formatDate(new Date()), + orderList: [], + loadStatus: 'loadmore', + pageIndex: 1, + pageSize: 30, + contentVal: '', + customerList: [], + isEdit: false, + editItem: {}, + isLoading: false, + show7: false, + showClockIn: false, + showActions: false, + driverName: '', + // actions: [{ + // name: '鏈畬鎴�', + // id: 'Reject' + // }, { + // name: '宸插畬鎴�', + // id: 'Delivered' + // }], + actions: [{ + name: '璐х墿涓嶉綈', + id: '璐х墿涓嶉綈' + }, { + name: '鏈畬宸�', + id: '鏈畬宸�' + }], + // selectAc: '宸插畬鎴�', + minDate: this.$util.formatDate(new Date(), null, -7), + maxDate: this.$util.formatDate(new Date(), null, 7), + deliverTime: Number(new Date(this.$util.formatDate(new Date(), null, 1))), + arrangeInfo: { + keyid: '', + wentifankui: '', + companyName: '', + attachments: [], + Deliveredstatus: 'Delivered' + }, + rules: { + 'mileage': { + type: 'string', + required: true, + message: '璇疯緭鍏ラ噷绋�', + trigger: ['blur', 'change'] + }, + 'attachments': { + type: 'array', + required: true, + message: '璇蜂笂浼犺璐х収鐗�', + trigger: ['blur', 'change'] + }, + 'carConditionAttachments': { + type: 'array', + required: true, + message: '璇蜂笂浼犺溅杈嗘鏌ョ収鐗�', + trigger: ['blur', 'change'] + }, + 'mileageImg': { + type: 'string', + required: true, + message: '璇蜂笂浼犻噷绋嬬収鐗�', + trigger: ['blur', 'change'] + }, + }, + rules1: { + 'attachments': { + type: 'array', + required: true, + message: '璇蜂笂浼犻�佽揣鍗曠収鐗�', + trigger: ['blur', 'change'] + }, + }, + radio: '', + switchVal: false, + driverList: [], + buyerName: '', + timeStart: new Date(), + timeEnd: new Date(), + sevenDaysDriver: [], + deliverKeyID: '', + deliverKeyName: '', + companyName: '', + clockInfo: { + emptyCause: '', + carConditionAttachments: [], + attachments: [], + mileageImg: '', + clockType: '', //ClockIn ,Clockout + carCondition: '' + }, + } + }, + onShow() { + this.init() + }, + onReady() { + this.$refs.formClockInRef.setRules(this.rules); + this.$refs.formFinishRef.setRules(this.rules1); + }, + onLoad() { + this.Getdrivers() + this.getCustomer() + this.GetDriversOfWithin7days() + }, + onReachBottom() { + if (this.loadStatus != 'nomore') { + this.getList() + } + }, + onPullDownRefresh() { + this.timeStart = new Date() + this.timeEnd = new Date() + this.workTime = this.$util.formatDate(new Date()) + this.deliverKeyName = '' + this.init() + uni.stopPullDownRefresh(); + }, + methods: { + clockIn(text) { + this.clockInfo.clockType = text + this.showClockIn = true + }, + success(text, e) { + //e.res 涓烘湇鍔″櫒杩斿洖鏁版嵁 + //涓婁紶鎴愬姛鍥炶皟锛屽鐞嗘湇鍔″櫒杩斿洖鏁版嵁銆愭澶勬牴鎹疄闄呰繑鍥炴暟鎹繘琛屽鐞嗐�� + let obj = {} + let res = e.res + if (res.statusCode == 200) { + obj.PlanAttachment = res.data + this.arrangeInfo.attachments.push(obj) + this.$refs.uploadB.urls.push(res.data) + this.$refs.uploadB.urls = this.$refs.uploadB.urls.filter(item => { + return item.indexOf('https') !== -1 + }) + this.$refs.uploadB.status.push('success') + this.$refs.uploadB.status.length = this.$refs.uploadB.urls.length + } else { + uni.$u.toast(res.error) + this.$refs.uploadB.deleteImage() + } + console.log(this.arrangeInfo.attachments); + }, + successClock(text, e) { + let obj = {} + //e.res 涓烘湇鍔″櫒杩斿洖鏁版嵁 + //涓婁紶鎴愬姛鍥炶皟锛屽鐞嗘湇鍔″櫒杩斿洖鏁版嵁銆愭澶勬牴鎹疄闄呰繑鍥炴暟鎹繘琛屽鐞嗐�� + let res = e.res + // let res = JSON.parse(e.res.data.replace(/\ufeff/g, "") || "{}") + if (res.statusCode == 200) { + if (res.data && text == 'carCondition') { + obj.planAttachment = res.data //杞﹁締妫�鏌ョ収鐗� + this.$refs.carCondition.urls.push(res.data) + this.$refs.carCondition.urls = this.$refs.carCondition.urls.filter(item => { + return item.indexOf('https') !== -1 + }) + this.$refs.carCondition.status.push('success') + this.$refs.carCondition.status.length = this.$refs.carCondition.urls.length + console.log(this.$refs.carCondition.status); + this.clockInfo.carConditionAttachments.push(obj) + } else if (res.data && text == 'licheng') { + this.clockInfo.mileageImg = res.data //閲岀▼鐓х墖 + this.$refs.licheng.urls.push(res.data) + this.$refs.licheng.urls = this.$refs.licheng.urls.filter(item => { + return item.indexOf('https') !== -1 + }) + this.$refs.licheng.status.push('success') + this.$refs.licheng.status.length = this.$refs.licheng.urls.length + } else { + obj.planAttachment = res.data //瑁呰揣鐓х墖 + this.$refs.zhuanghuo.urls.push(res.data) + this.$refs.zhuanghuo.urls = this.$refs.zhuanghuo.urls.filter(item => { + return item.indexOf('https') !== -1 + }) + this.$refs.zhuanghuo.status.push('success') + this.$refs.zhuanghuo.status.length = this.$refs.zhuanghuo.urls.length + this.clockInfo.attachments.push(obj) + } + } else { + uni.$u.toast(res.error) + if (text == 'carCondition') { + this.$refs.carCondition.deleteImage() + } else if (text == 'licheng') { + this.$refs.licheng.deleteImage() + } else { + this.$refs.zhuanghuo.deleteImage() + } + } + }, + GetDriversOfWithin7days() { + this.$api.GetDriversOfWithin7days().then(res => { + if (res.code == 1) { + this.sevenDaysDriver = res.data + } + }) + }, + changePicker(val) { + console.log(val); + this.workTime = val.result + this.timeStart = new Date(val.result) //宸ヤ綔寮�濮嬫椂闂� + this.timeEnd = new Date(val.result) + this.datePickerShow = !this.datePickerShow + this.init() + }, + confirmDate(val) { + console.log(val); + this.arrangeInfo.deliverTime = val + this.shougHuoshow = false + }, + getCustomer() { + this.$api.GeCorporateClients().then(res => { + if (res.code == 1) { + this.customerList = res.data + this.customerList.forEach(item => { + item.name = item.companyName + }) + } + }) + }, + selectItem(item) { + this.arrangeInfo.Deliveredstatus = item.id + // this.selectAc = item.name + }, + getFirstDayOfMonth() { + var currentDate = new Date(); + // currentDate.setDate(1); // 灏嗘棩鏈熻涓�1 + return this.$util.formatDate(currentDate); + }, + clickTime() { + this.datePickerShow = !this.datePickerShow + }, + clickShouTime() { + this.shougHuoshow = !this.shougHuoshow + }, + clickAction() { + this.showActions = true + uni.hideKeyboard() + }, + editOrder(item) { + this.isEdit = true + this.$refs.uploadB.urls = [] + this.$refs.uploadB.status = [] + this.arrangeInfo.keyid = item.keyid + this.arrangeInfo.companyName = item.companyName + this.show7 = true + // let obj = this.customerList.find(ite => { + // return ite.keyid == item.buyerId + // }) + // this.buyerName = obj.companyName + }, + startOrder(item) { + let that = this + uni.showModal({ + title: '鎻愮ず', + content: '纭寮�濮嬮�佽揣鍚楋紵', + success: function(res) { + if (res.confirm) { + // 鎵ц纭鍚庣殑鎿嶄綔 + that.$api.StartDeliverPlan(item.keyid).then(req => { + if (req.code == 1) { + that.$util.showToast({ + title: '寮�濮嬮�佽揣鎴愬姛锛�' + }) + that.init() + } else { + that.$util.showToast({ + title: req.error + }) + } + }) + } else { + // 鎵ц鍙栨秷鍚庣殑鎿嶄綔 + } + } + }) + }, + init() { + this.pageIndex = 1 + this.pageSize = 30 + this.loadStatus = 'loadmore' + this.orderList = [] + this.contentVal = '' + this.getList() + }, + //閫夋嫨鍥剧墖鎴栦笂浼犲畬鎴愭椂瑙﹀彂 + completeInvoice(val, e) { + if (e.action == 'delete') { + if (val == 'licheng') { + this.clockInfo.mileageImg = '' + return + } + switch (val) { + case 'carCondition': + this.clockInfo.carConditionAttachments = [] + break; + case 'zhuanghuo': + this.clockInfo.attachments = [] + break; + default: + this.arrangeInfo.attachments = [] + break; + } + // 鍒犻櫎澶勭悊 + console.log(e.urls, 'e.urls', this.arrangeInfo.attachments); + e.urls.forEach(item => { + let obj = {} + obj.planAttachment = item //鍙戠エ + console.log(item); + switch (val) { + case 'carCondition': + this.clockInfo.carConditionAttachments.push(obj) + break; + case 'zhuanghuo': + this.clockInfo.attachments.push(obj) + break; + default: + this.arrangeInfo.attachments.push(obj) + break; + } + }) + console.log(e, this.arrangeInfo, this.clockInfo, '0-0-0-'); + return + } + // $util.pathToBase64(e.urls[0]).then(res => { + // idCardFaceBase64.value = res + // console.log(idCardFaceBase64, idCardFaceBase64.value); + // }) + }, + errorInvoice(e) { + console.log(e, '--------------'); + }, + confirmSave() { + this.$refs.formFinishRef.validate().then(res => { + this.$api.FinishDeliverPlan(this.arrangeInfo).then(res => { + if (res.code == 1) { + this.arrangeInfo = { + keyid: '', + wentifankui: '', + companyName: '', + attachments: [], + Deliveredstatus: 'Delivered' + } + this.show7 = false + this.driverName = '' + this.buyerName = '' + this.init() + } else { + this.$refs.modalFinish.loading = false + this.$util.showToast({ + title: res.error + }) + } + }) + }).catch(errors => { + this.$refs.modalFinish.loading = false + }) + }, + confirmClockSave() { + console.log(this.clockInfo); + // if (!this.clockInfo.mileageImg) { + // this.$refs.clockInModal.loading = false + // return this.$util.showToast({ + // title: '璇蜂笂浼犻噷绋嬬収鐗囷紒' + // }) + // } + this.clockInfo = this.$util.removeEmptyValuesRecursive(this.clockInfo) + this.$refs.formClockInRef.validate().then(res => { + this.$api.Clock(this.clockInfo).then(res => { + if (res.code == 1) { + this.clockInfo = { + emptyCause: '', + carConditionAttachments: [], + mileageImg: '', + attachments: [], + clockType: '', //ClockIn ,Clockout + carCondition: '' + } + this.showClockIn = false + // this.init() + } else { + this.$util.showToast({ + title: res.error + }) + this.$refs.clockInModal.loading = false + } + }) + }).catch(errors => { + this.$refs.clockInModal.loading = false + }) + + + }, + cancelModal() { + this.showClockIn = false + this.show7 = false + this.arrangeInfo = { + deliverTime: this.$util.formatDate(new Date(), null, 1), + driverId: '', + buyerId: '', + dianhua: '', + wentifankui: '', + lianxiren: '', + dizhi: '', + } + this.clockInfo = { + emptyCause: '', + carConditionAttachments: [], + mileageImg: '', + attachments: [], + clockType: '', //ClockIn ,Clockout + carCondition: '' + } + this.driverName = '' + this.buyerName = '' + }, + Getdrivers() { + this.$api.Getdrivers().then(res => { + if (res.code == 1) { + this.driverList = res.data + } + }) + }, + getList() { + this.deliverKeyName == '' ? this.deliverKeyID = '' : null + let data = { + page: { + pageIndex: this.pageIndex, + pageSize: this.pageSize, + } + } + if (this.timeStart) { + data.timeStart = this.timeStart + } + if (this.timeEnd) { + data.timeEnd = this.timeEnd + } + if (this.deliverKeyID) { + data.deliverKeyID = this.deliverKeyID + } + this.$api.driverGetDeliverPlans(data).then(res => { + if (res.code == 1) { + if (this.pageIndex == 1) { + this.orderList = res.data.data + } else { + this.orderList = this.orderList.concat(...res.data.data) + } + console.log(this.orderList, 'orderList鈥�'); + // totalPages = res.data.totalCount + // 鏍规嵁count鏁伴噺鍒ゆ柇鏄惁杩樻湁鏁版嵁 + if (res.data.page.totalCount > this.orderList.length) { + this.loadStatus = 'loadmore' + this.pageIndex++ + } else { + // 鏁版嵁宸插姞杞藉畬姣� + this.loadStatus = 'nomore' + } + } else { + // _that.$refs.uToast.show({ message: res.msg, type: 'error' }); + } + }) + }, + accept(item) { + let that = this + uni.showModal({ + title: '鎻愮ず', + content: '纭鍙楃悊璇ラ�佽揣鍚楋紵', + success: function(res) { + if (res.confirm) { + // 鎵ц纭鍚庣殑鎿嶄綔 + that.$api.AcceptAppointmentDeliver(item.keyid).then(req => { + if (req.code == 1) { + that.$util.showToast({ + title: '鍙楃悊鎴愬姛锛�' + }) + that.init() + } else { + that.$util.showToast({ + title: req.error + }) + } + }) + } else { + // 鎵ц鍙栨秷鍚庣殑鎿嶄綔 + } + } + }) + }, + actionClick(item, e) { + console.log(e); + if (e.index == 0) { + this.contentVal = item.wentifankui + } + }, + goDetail(item) { + uni.navigateTo({ + url: `/pages/delivergoods/feedbackdetail?KeyId=${item.keyid}` + }); + } + } + } </script> -<style> +<style lang="scss"> + .u-textarea { + padding: 0 !important; + } + + .u-form-item__body { + padding: 5px 0 !important; + } + + .labelSty { + .u-form-item__body__left.data-v-98223e3d { + display: block; + } + } </style> \ No newline at end of file -- Gitblit v1.9.1