From ec90cbd7680a6f927cb1cea43f33ab7df6d0864c Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期二, 11 十一月 2025 09:23:22 +0800
Subject: [PATCH] -
---
src/pages/delivergoods/query.vue | 534 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 534 insertions(+), 0 deletions(-)
diff --git a/src/pages/delivergoods/query.vue b/src/pages/delivergoods/query.vue
index 02409e3..2625f27 100644
--- a/src/pages/delivergoods/query.vue
+++ b/src/pages/delivergoods/query.vue
@@ -1,8 +1,542 @@
<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' :show-action="false" @clear='init' disabled
+ v-model="workTime" search-icon="calendar" @search='init'></up-search>
+ </view>
+ <view class="coreshop-ff content c-p-10 chuany-flex chuany-justify-between">
+ <!-- <view class="chuany-width82"> -->
+ <up-search placeholder="璇风偣鍑婚�夋嫨鍙告満" @click="clickAction('driver7')" @clear='init' disabled @change='init'
+ action-text="鏌ヨ" v-model="deliverKeyName" @search='init' @custom='init'></up-search>
+ <!-- </view>
+ <up-text align="right" text='閫佽揣瀹夋帓' size='14' @click="() => show7 = true"></up-text> -->
+ </view>
+ </view>
+ <up-subsection :list="list" current='1' activeColor="#f9ae3d" @change="sectionChange"></up-subsection>
+ </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-width7">{{index+1}}</text>
+ <view class="chuany-width12">
+ {{$util.formatDate(item.deliverTime,'riqi')}}
+ </view>
+ <view class="chuany-width13">
+ <u-text size='14' :text="item.driver&&item.driver.name" lines="1">
+ <!-- <u-text size='14' :text="item.remark||item.companyName" lines="1"> -->
+ </u-text>
+ </view>
+ <view class="chuany-width53" @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-width15 chuany-flex chuany-justify-between">
+ <u-text size='14' align="right" v-if='item.deliveredstatus=="Delivered"' type="success" text="宸查��" lines="1">
+ </u-text>
+ <u-text size='14' align="right" v-if='item.deliveredstatus=="Undeliver"' type="error" text="鏈��" lines="1">
+ </u-text>
+ <u-text size='14' align="right" v-if='item.deliveredstatus=="Deliver"' type="primary" text="閫佽揣涓�" lines="1">
+ </u-text>
+ </view>
+ <!-- <view class="chuany-width5" @tap.stop='editOrder(item)'>
+ <up-icon name="edit-pen"></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">
+ <up-form labelPosition="left" :model="arrangeInfo" ref="formRef" labelWidth='140rpx'>
+ <up-form-item label="閫佽揣鏃ユ湡" prop="deliverTime" required :borderBottom='false' ref="item1"
+ @click="clickShouTime">
+ <!-- <up-input v-model="arrangeInfo.deliverTime" readonly border="none"
+ placeholder="鐐瑰嚮閫夋嫨宸ヤ綔鏃ユ湡"></up-input> -->
+ <up-datetime-picker hasInput @confirm='confirmDate' :show="shougHuoshow" v-model="deliverTime"
+ mode="date" placeholder="鐐瑰嚮閫夋嫨宸ヤ綔鏃ユ湡" :minDate='Number(new Date(minDate))'
+ @cancel='() => shougHuoshow = false'></up-datetime-picker>
+ </up-form-item>
+ <up-form-item label="鍙告満" prop="driverId" required :borderBottom='false' @click="clickAction('driver')"
+ ref="item1">
+ <up-input v-model="driverName" disabled border="none" disabledColor="#ffffff"
+ placeholder="璇烽�夋嫨鍙告満"></up-input>
+ </up-form-item>
+ <up-form-item label="鏀惰揣鍗曚綅" prop="buyerId" required :borderBottom='false' ref="item1">
+ <up-input v-model="arrangeInfo.companyName" placeholder="璇烽�夋嫨鏀惰揣鍗曚綅" border="none">
+ <template #suffix>
+ <up-button @tap="clickAction" text="鐐瑰嚮閫夋嫨" type="primary" size="mini"></up-button>
+ </template>
+ </up-input>
+ </up-form-item>
+ <up-form-item label="鑱旂郴浜�" prop="lianxiren" :borderBottom='false' ref="item1">
+ <up-input v-model="arrangeInfo.lianxiren" border="none" placeholder="璇疯緭鍏ヨ仈绯讳汉"></up-input>
+ </up-form-item>
+ <up-form-item label="鑱旂郴鐢佃瘽" prop="dianhua" required :borderBottom='false' ref="item1">
+ <up-input v-model="arrangeInfo.dianhua" border="none" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"></up-input>
+ </up-form-item>
+ <up-form-item label="閫佽揣鍦板潃" prop="dizhi" required :borderBottom='false' ref="item1">
+ <up-input v-model="arrangeInfo.dizhi" border="none" placeholder="璇疯緭鍏ラ�佽揣鍦板潃"></up-input>
+ </up-form-item>
+ <up-form-item label="閫佽揣浜嬬敱" prop="remark" required :borderBottom='false' ref="item1">
+ <up-textarea v-model="arrangeInfo.remark" border="none" placeholder="璇疯緭鍏ラ�佽揣浜嬬敱"></up-textarea>
+ </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"
+ wrapMaxHeight='500px' @select="selectItem">
+ </up-action-sheet>
+ </view>
</template>
<script>
+ import {
+ mapGetters
+ } from 'vuex'
+ export default {
+ data() {
+ return {
+ list: ['鍏ㄩ儴', '鏈��', '宸查��'],
+ 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,
+ showActions: false,
+ driverName: '',
+ actions: [],
+ selectAc: '',
+ deliveredState: 'Undeliver',
+ 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: {
+ deliverTime: this.$util.formatDate(new Date(), null, 1),
+ driverId: '',
+ buyerId: '',
+ dianhua: '',
+ remark: '',
+ lianxiren: '',
+ dizhi: '',
+ companyName: ''
+ },
+ rules: {
+ 'deliverTime': {
+ type: 'string',
+ required: true,
+ message: '璇烽�夋嫨鏃ユ湡',
+ trigger: ['blur', 'change']
+ },
+ 'arrangeInfo.driverId': {
+ type: 'string',
+ max: 1,
+ required: true,
+ message: '璇烽�夋嫨鍙告満',
+ trigger: ['blur', 'change']
+ },
+ 'arrangeInfo.dianhua': {
+ type: 'string',
+ max: 1,
+ required: true,
+ message: '璇疯緭鍏ヨ仈绯荤數璇�',
+ trigger: ['blur', 'change']
+ },
+ 'arrangeInfo.dizhi': {
+ type: 'string',
+ max: 1,
+ required: true,
+ message: '璇疯緭鍏ラ�佽揣鍦板潃',
+ trigger: ['blur', 'change']
+ },
+ 'arrangeInfo.remark': {
+ type: 'string',
+ max: 1,
+ required: true,
+ message: '璇疯緭鍏ラ�佽揣浜嬬敱',
+ trigger: ['blur', 'change']
+ },
+ },
+ radio: '',
+ switchVal: false,
+ driverList: [],
+ buyerName: '',
+ timeStart: new Date(),
+ timeEnd: new Date(),
+ sevenDaysDriver: [],
+ deliverKeyID: '',
+ deliverKeyName: ''
+ }
+ },
+
+ computed: {
+ ...mapGetters(['userInfo']),
+ isAdmin() {
+ if (this.userInfo.oaPermissions) {
+ return this.userInfo.oaPermissions.bF_IsDeliverManage ? true : false
+ }
+ return false
+ },
+ },
+ onShow() {
+ this.init()
+ },
+ onReady() {
+ this.$refs.formRef.setRules(this.rules);
+ },
+ onLoad(options) {
+ // this.isAdmin = options.isAdmin
+ // console.log(options);
+ 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: {
+ sectionChange(val) {
+ switch (val) {
+ case 0:
+ this.deliveredState = null
+ break;
+ case 1:
+ this.deliveredState = 'Undeliver'
+ break;
+ case 2:
+ this.deliveredState = 'Delivered'
+ break;
+ }
+ this.init()
+ },
+ goDetail(item) {
+ uni.navigateTo({
+ url: `/pages/delivergoods/querydetail?KeyId=${item.keyid}&isAdmin=${this.isAdmin}`
+ });
+ },
+ 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) {
+ if (this.selectAc == 'driver') {
+ this.driverName = item.name
+ this.arrangeInfo.driverId = item.keyid
+ } else if (this.selectAc == 'driver7') {
+ this.deliverKeyID = item.keyid
+ this.deliverKeyName = item.name
+ this.init()
+ } else {
+ this.buyerName = item.name
+ this.arrangeInfo.buyerId = item.keyid
+ this.arrangeInfo.dizhi = item.adder
+ this.arrangeInfo.dianhua = item.companyPhone
+ this.arrangeInfo.lianxiren = item.businessManagers
+ this.arrangeInfo.companyName = item.companyName
+ }
+ this.selectAc = ''
+ },
+ 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(val) {
+ switch (val) {
+ case 'driver':
+ this.actions = this.driverList
+ break
+ case 'driver7':
+ this.actions = this.sevenDaysDriver
+ break
+ default:
+ this.actions = this.customerList
+ break
+ }
+ this.selectAc = val
+ this.showActions = true
+ uni.hideKeyboard()
+ },
+ editOrder(item) {
+ this.isEdit = true
+ this.arrangeInfo = {
+ deliverTime: this.$util.formatDate(new Date(), null, 1),
+ driverId: item.driverId,
+ buyerId: item.buyerId,
+ dianhua: item.dianhua,
+ remark: item.remark,
+ lianxiren: item.lianxiren,
+ dizhi: item.dizhi,
+ keyid: item.keyid,
+ companyName: item.companyName
+ }
+ this.show7 = true
+ this.driverName = item.driver && item.driver.name
+ // let obj = this.customerList.find(ite => {
+ // return ite.keyid == item.buyerId
+ // })
+ // this.buyerName = obj.companyName
+ },
+ delOrder(item) {
+ let that = this
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '纭鍒犻櫎璇ラ�佽揣鍚楋紵',
+ success: function(res) {
+ if (res.confirm) {
+ // 鎵ц纭鍚庣殑鎿嶄綔
+ that.$api.DelAppointmentDeliver({
+ keyid: 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()
+ },
+ confirmSave() {
+ this.$refs.formRef.validate().then(res => {
+ if (this.isEdit) {
+ this.$api.UpDataDeliverPlans(this.arrangeInfo).then(res => {
+ if (res.code == 1) {
+ this.isEdit = false
+ this.arrangeInfo = {
+ deliverTime: this.$util.formatDate(new Date(), null, 1),
+ driverId: '',
+ buyerId: '',
+ dianhua: '',
+ remark: '',
+ lianxiren: '',
+ dizhi: '',
+ }
+ this.show7 = false
+ this.driverName = ''
+ this.buyerName = ''
+ this.init()
+ } else {
+ this.$util.showToast({
+ title: res.error
+ })
+ }
+ this.isLoading = false
+ })
+ return
+ }
+ this.$api.CreatDeliverPlan(this.arrangeInfo).then(res => {
+ if (res.code == 1) {
+ this.arrangeInfo = {
+ deliverTime: this.$util.formatDate(new Date(), null, 1),
+ driverId: '',
+ buyerId: '',
+ dianhua: '',
+ remark: '',
+ lianxiren: '',
+ dizhi: '',
+ }
+ this.show7 = false
+ this.driverName = ''
+ this.buyerName = ''
+ this.init()
+ } else {
+ this.$util.showToast({
+ title: res.error
+ })
+ }
+ this.isLoading = false
+ })
+ })
+
+ },
+ cancelModal() {
+ this.arrangeInfo = {
+ deliverTime: this.$util.formatDate(new Date(), null, 1),
+ driverId: '',
+ buyerId: '',
+ dianhua: '',
+ remark: '',
+ lianxiren: '',
+ dizhi: '',
+ }
+ this.show7 = false
+ 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 = {
+ deliveredState: this.deliveredState,
+ 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
+ }
+ console.log(this.isAdmin);
+ let getListApi = null
+ if (this.isAdmin) {
+ getListApi = this.$api.GetDeliverPlans
+ } else {
+ getListApi = this.$api.workerGetDeliverPlans
+ }
+ getListApi(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.remark
+ }
+ }
+ }
+ }
</script>
<style>
+ .u-textarea {
+ padding: 0 !important;
+ }
+
+ .u-form-item__body {
+ padding: 5px 0 !important;
+ }
</style>
\ No newline at end of file
--
Gitblit v1.9.1