From bab490d2da009c1a23b352b3b964e0c2dd06a0b3 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期四, 12 六月 2025 17:32:42 +0800 Subject: [PATCH] 移动端功能优化 --- eims-ui-mobile/src/pages/repair/res-list.vue | 509 +++++++++++++++++++++----------------------------------- 1 files changed, 190 insertions(+), 319 deletions(-) diff --git a/eims-ui-mobile/src/pages/repair/res-list.vue b/eims-ui-mobile/src/pages/repair/res-list.vue index 914a751..e782d72 100644 --- a/eims-ui-mobile/src/pages/repair/res-list.vue +++ b/eims-ui-mobile/src/pages/repair/res-list.vue @@ -12,177 +12,38 @@ title="璁惧缁翠慨" left-arrow @click-left="goBack" - right-text="鎻愪氦" - @click-right="handleClickRight" custom-style="background: #4D80F0;" safeAreaInsetTop > - <template #right> - <text v-if="isOperatorOrRepair()" class="text-white">鎺ュ崟</text> - </template> +<!-- <template #right>--> +<!-- <text v-if="isLineOrRepair()" class="text-white">鎺ュ崟</text>--> +<!-- </template>--> </wd-navbar> - <wd-drop-menu> - <wd-drop-menu-item - v-model="resTypeId" - label-key="dictLabel" - value-key="dictValue" - :options="resTypeList" - @change="handleResType" - /> - <wd-drop-menu-item - v-model="filterDate" - :options="filterDateList" - @change="handleFilterDate" - /> - <wd-drop-menu-item - v-model="status" - label-key="dictLabel" - value-key="dictValue" - :options="statusList" - @change="handleResStatu" - /> - </wd-drop-menu> +<!-- <wd-drop-menu>--> +<!-- <wd-drop-menu-item--> +<!-- v-model="resTypeId"--> +<!-- label-key="dictLabel"--> +<!-- value-key="dictValue"--> +<!-- :options="resTypeList"--> +<!-- @change="handleResType"--> +<!-- />--> +<!-- <wd-drop-menu-item--> +<!-- v-model="filterDate"--> +<!-- :options="filterDateList"--> +<!-- @change="handleFilterDate"--> +<!-- />--> +<!-- <wd-drop-menu-item--> +<!-- v-model="status"--> +<!-- label-key="dictLabel"--> +<!-- value-key="dictValue"--> +<!-- :options="statusList"--> +<!-- @change="handleResStatu"--> +<!-- />--> +<!-- </wd-drop-menu>--> </template> <view class="bg-base"> - <wd-card type="rectangle" v-for="(item, index) in dataList" :key="item.id"> - <template #title> - <view class="flex justify-between items-center"> - <view class="flex items-center menu-title-box"> - <view class="menu-indicator"></view> - <text class="ml-1 text-sm">{{ item.resCode }}</text> - <text class="text-color-gray ml-2 text-mini">鎺ュ崟:{{ item.createTime }}</text> - </view> - - <view> - <wd-tag size="small" v-if="item.status === '1'" type="warning">宸叉帴鍗�</wd-tag> - <wd-tag size="small" v-else-if="item.status === '2'" type="primary">缁翠慨涓�</wd-tag> - <wd-tag size="small" v-else-if="item.status === '3'" type="success">宸插畬鎴�</wd-tag> - </view> - </view> - </template> - <view class="flex h-[240rpx] items-center"> - <image - v-if="item.reqType === '1'" - class="slot-img text-center" - src="/static/ico/ico-huiyi.png" - /> - <image - v-else-if="item.reqType === '2'" - class="slot-img text-center" - src="/static/ico/ico-setting.png" - /> - <image - v-else-if="item.reqType === '3'" - class="slot-img text-center" - src="/static/ico/ico-faxian.png" - /> - <view class="flex-1 mt-1"> - <view class="text-color-base"> - <template v-if="item.reqType === '1'"> - <text>璁惧绫诲瀷</text> - <text class="mx-2">|</text> - <text>{{ item.equName }}</text> - </template> - - <template v-if="item.reqType === '2'"> - <text>宸ュ叿绫诲瀷</text> - <text class="mx-2">|</text> - <text>{{ item.fixtureName }}</text> - </template> - - <template v-if="item.reqType === '3'"> - <text>鍏朵粬绫诲瀷</text> - </template> - <view class="text-color-gray mt-1 text-mini"> - <text>鎶ヤ慨浜�: {{ item.reqUserName }}</text> - </view> - <view class="text-color-gray mt-1 text-mini"> - <text>鎶ヤ慨鏃堕棿: {{ item.reqTime }}</text> - </view> - - <view class="text-color-gray mt-1 text-mini"> - <text>缁翠慨寮�濮�: {{ item.startTime }}</text> - </view> - <view class="text-color-gray mt-1 text-mini"> - <text>缁翠慨缁撴潫: {{ item.endTime }}</text> - </view> - <view class="text-color-gray mt-1 text-mini"> - <text>缁翠慨浜�: {{ item.resUserName }}</text> - </view> - </view> - </view> - <view> - <!--鎿嶄綔宸ユ垨缁翠慨宸ヨ鑹�--> - <template v-if="isOperatorOrRepair()"> - <wd-button - v-if="item.status === '1'" - size="small" - icon="edit-outline" - @click.stop="handleStartRepair(item)" - > - 寮�濮嬬淮淇� - </wd-button> - <wd-button - v-else-if="item.status === '2'" - size="small" - icon="edit-outline" - @click.stop="itemClick(item)" - > - 缁翠慨涓� - </wd-button> - <view class="h-full flex flex-col" v-else-if="item.status === '3'"> - <wd-button size="small" icon="warn-bold" @click.stop="itemClick(item)"> - 璇︽儏 - </wd-button> - <wd-button - class="mt-4" - size="small" - icon="edit-outline" - @click.stop="goToFeedBack(item)" - > - 鏌ョ湅璇勪环 - </wd-button> - </view> - </template> - - <!--绠$悊鍛樿鑹�--> - <template v-else-if="isLeader()"> - <wd-button - v-if="item.status === '1'" - size="small" - icon="warn-bold" - disabled - @click.stop="itemClick(item)" - > - 寰呯淮淇� - </wd-button> - <wd-button - v-else-if="item.status === '2'" - size="small" - icon="warn-bold" - disabled - @click.stop="itemClick(item)" - > - 缁翠慨涓� - </wd-button> - <view class="h-full flex flex-col" v-else-if="item.status === '3'"> - <wd-button size="small" icon="warn-bold" @click.stop="itemClick(item)"> - 璇︽儏 - </wd-button> - <wd-button - class="mt-4" - size="small" - icon="edit-outline" - @click.stop="goToFeedBack(item)" - > - {{ item.fbId == null ? '鍐欒瘎浠�' : '鏌ョ湅璇勪环' }} - </wd-button> - </view> - </template> - </view> - </view> - </wd-card> + <res-card v-for="(item, index) in dataList" :key="item.id" :item="item" @click="handleResClick" /> </view> </z-paging> </template> @@ -192,10 +53,11 @@ import { useToast, useMessage } from 'wot-design-uni' import { getRepairResList, addRepairRes, updateRepairRes } from '@/service/repair' import { DICT_REPAIR_RES_STATUS, DICT_REPAIR_REQ_TYPE, getDictInfo } from '@/service/dict' -import { isLeader, isOperatorOrRepair } from '@/utils/RoleUtils' +import { isLeader, isLineOrRepair, isRepair } from "@/utils/RoleUtils"; import { useUserStore } from '@/store' import { formatDate } from '@/utils/DateUtils' import dayjs from "dayjs"; +import ResCard from "@/components/repair/res-card.vue"; const userStore = useUserStore() const message = useMessage() @@ -232,15 +94,15 @@ ]) const resTypeList = ref<any>([{ dictLabel: '鎵�鏈夌被鍨�', dictValue: -1 }]) const statusList = ref<any>([{ dictLabel: '鎵�鏈夌姸鎬�', dictValue: -1 }]) -function handleResType({ value }) { - reloadData() -} -function handleResStatu({ value }) { - reloadData() -} -function handleFilterDate({ value }) { - reloadData() -} +// function handleResType({ value }) { +// reloadData() +// } +// function handleResStatu({ value }) { +// reloadData() +// } +// function handleFilterDate({ value }) { +// reloadData() +// } const paging = ref(null) const dataList = ref([]) @@ -249,35 +111,44 @@ const queryParams: any = { pageNum, pageSize, - reqType: resTypeId.value, - status: status.value, + params: {}, + // reqType: resTypeId.value, + // status: status.value, } - if (resTypeId.value === -1) { - delete queryParams.reqType - } - if (status.value === -1) { - delete queryParams.status - } - - if (filterDate.value === '1') { - // 鑾峰彇褰撳墠鏃ユ湡 - const now = dayjs() - queryParams.params = { - beginReqTime: now.startOf('day').format('YYYY-MM-DD 00:00:00'), - endReqTime: now.endOf('day').format('YYYY-MM-DD 23:59:59'), - } - } else if (filterDate.value === '2') { - const now = dayjs() - queryParams.params = { - beginReqTime: now.startOf('month').format('YYYY-MM-DD 00:00:00'), - endReqTime: now.endOf('month').format('YYYY-MM-DD 23:59:59'), - } - } else { - delete queryParams.params - } + // if (resTypeId.value === -1) { + // delete queryParams.reqType + // } + // if (status.value === -1) { + // delete queryParams.status + // } + // + // if (filterDate.value === '1') { + // // 鑾峰彇褰撳墠鏃ユ湡 + // const now = dayjs() + // queryParams.params = { + // beginReqTime: now.startOf('day').format('YYYY-MM-DD 00:00:00'), + // endReqTime: now.endOf('day').format('YYYY-MM-DD 23:59:59'), + // } + // } else if (filterDate.value === '2') { + // const now = dayjs() + // queryParams.params = { + // beginReqTime: now.startOf('month').format('YYYY-MM-DD 00:00:00'), + // endReqTime: now.endOf('month').format('YYYY-MM-DD 23:59:59'), + // } + // } else { + // delete queryParams.params + // } // 濡傛灉鏄粠鎵爜椤甸潰杩囨潵锛屽彧鑳芥煡璇㈠浐瀹氳澶囩殑鏁版嵁 if (option?.from === 'scan') { queryParams.assetNo = option.assetNo + } + queryParams.params.status = '0,1,2,3' + queryParams.reqUser = userStore?.userInfo?.userId + if (isRepair()) { + queryParams.params.status = null + queryParams.resUser = userStore?.userInfo?.userId + delete queryParams.reqUser + delete queryParams.params } getRepairResList(queryParams) .then((res: any) => { @@ -291,128 +162,128 @@ paging.value.reload() } -/** - * 鏉$洰鐐瑰嚮浜嬩欢 - * @param item - */ -function itemClick(item: any) { - goToDetail(item) -} - -/** - * 寮�濮嬬淮淇� - * @param item - */ -function handleStartRepair(item: any) { - // 纭寮�濮嬩慨鏀圭姸鎬佷负2-缁翠慨涓� - const data = Object.assign({}, item) - // 纭寮�濮嬩慨鏀圭姸鎬佷负2-缁翠慨涓� - data.status = '2' - // 璁剧疆寮�濮嬬淮淇椂闂� - data.startTime = formatDate(new Date()) - message - .confirm({ - msg: '纭畾寮�濮嬬淮淇紵', - title: '鎻愮ず', - beforeConfirm: ({ resolve }) => { - updateRepair(data, resolve) - }, - }) - .then(() => {}) - .catch((error) => { - console.log(error) - }) -} - -/** - * 鏇存柊缁翠慨宸ュ崟 - * @param data - * @param resolve - */ -function updateRepair(data: any, resolve: any) { - updateRepairRes(data) - .then((res: any) => { - resolve(true) - if (res?.code === 200) { - reloadData() - // 缁翠慨涓姸鎬佹墠闇�瑕佽烦杞� - if (data?.status === '2') { - goToDetail(data) - } - } - }) - .catch((res) => { - console.error(res) - }) -} - -function goToDetail(item) { - uni.navigateTo({ - url: `/pages/repair/res-detail?id=${item.id}`, - }) -} - -function goToFeedBack(item) { - uni.navigateTo({ - url: `/pages/repair/repair-fb?id=${item.id}`, - }) -} +// /** +// * 鏉$洰鐐瑰嚮浜嬩欢 +// * @param item +// */ +// function itemClick(item: any) { +// goToDetail(item) +// } +// +// /** +// * 寮�濮嬬淮淇� +// * @param item +// */ +// function handleStartRepair(item: any) { +// // 纭寮�濮嬩慨鏀圭姸鎬佷负2-缁翠慨涓� +// const data = Object.assign({}, item) +// // 纭寮�濮嬩慨鏀圭姸鎬佷负2-缁翠慨涓� +// data.status = '2' +// // 璁剧疆寮�濮嬬淮淇椂闂� +// data.startTime = formatDate(new Date()) +// message +// .confirm({ +// msg: '纭畾寮�濮嬬淮淇紵', +// title: '鎻愮ず', +// beforeConfirm: ({ resolve }) => { +// updateRepair(data, resolve) +// }, +// }) +// .then(() => {}) +// .catch((error) => { +// console.log(error) +// }) +// } +// +// /** +// * 鏇存柊缁翠慨宸ュ崟 +// * @param data +// * @param resolve +// */ +// function updateRepair(data: any, resolve: any) { +// updateRepairRes(data) +// .then((res: any) => { +// resolve(true) +// if (res?.code === 200) { +// reloadData() +// // 缁翠慨涓姸鎬佹墠闇�瑕佽烦杞� +// if (data?.status === '2') { +// goToDetail(data) +// } +// } +// }) +// .catch((res) => { +// console.error(res) +// }) +// } +// +// function goToDetail(item) { +// uni.navigateTo({ +// url: `/pages/repair/res-detail?id=${item.id}`, +// }) +// } +// +// function goToFeedBack(item) { +// uni.navigateTo({ +// url: `/pages/repair/repair-fb?id=${item.id}`, +// }) +// } const goBack = () => { uni.navigateBack() } -function handleClickRight() { - if (isLeader()) { - toast.info('璇风櫥褰曠淮淇伐璐﹀彿鎺ュ崟') - } else if (isOperatorOrRepair()) { - handleSelectReq() - } -} +// function handleClickRight() { +// if (isLineOrRepair()) { +// handleSelectReq() +// } else { +// toast.info('璇风櫥褰曟姤淇伐璐﹀彿鎺ュ崟') +// } +// } - -/** - * 閫夋嫨鎶ヤ慨鍗� - */ -function handleSelectReq() { - uni.navigateTo({ - url: '/pages/repair/req-list', - events: { - // 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�佸埌褰撳墠椤甸潰鐨勬暟鎹� - selectReq: function (data) { - console.error(data) - // 閫夋嫨鎶ヤ慨鍗曞悗锛屼慨鏀规姤淇崟鐘舵�佸拰鏂板缁翠慨宸ュ崟 - const resCode = `WXD${data.data.code.slice(3)}` - const deptId = userStore?.userInfo?.deptId - const userId = userStore?.userInfo?.userId - const resData = { - reqId: data.data.id, - reqCode: data.data.code, - reqUser: data.data.reqUser, - reqDept: data.data.reqDept, - resCode, - status: '1', - resUser: userId, - resDept: deptId, - } - addRepairRes(resData) - .then((res: any) => { - if (res.code === 200) { - toast.success(res?.msg || '鎿嶄綔鎴愬姛') - reloadData() - } else { - toast.error(res?.msg || '鐢熸垚缁翠慨宸ュ崟澶辫触锛岃閲嶈瘯') - } - }) - .catch((res) => { - toast.error(res?.msg || '鐢熸垚缁翠慨宸ュ崟澶辫触锛岃閲嶈瘯') - }) - }, - }, - success: function (res) { - // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹� - res.eventChannel.emit('OnSelectReq', { data: '缁翠慨鍗曢〉闈㈤�夋嫨鎶ヤ慨鍗�' }) - }, - }) -} +// +// /** +// * 閫夋嫨鎶ヤ慨鍗� +// */ +// function handleSelectReq() { +// uni.navigateTo({ +// url: '/pages/repair/req-list', +// events: { +// // 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�佸埌褰撳墠椤甸潰鐨勬暟鎹� +// selectReq: function (data) { +// console.error(data) +// // 閫夋嫨鎶ヤ慨鍗曞悗锛屼慨鏀规姤淇崟鐘舵�佸拰鏂板缁翠慨宸ュ崟 +// const resCode = `WXD${data.data.code.slice(3)}` +// const deptId = userStore?.userInfo?.deptId +// const userId = userStore?.userInfo?.userId +// const resData = { +// reqId: data.data.id, +// reqCode: data.data.code, +// reqUser: data.data.reqUser, +// reqDept: data.data.reqDept, +// resCode, +// status: '1', +// resUser: userId, +// resDept: deptId, +// } +// addRepairRes(resData) +// .then((res: any) => { +// if (res.code === 200) { +// toast.success(res?.msg || '鎿嶄綔鎴愬姛') +// reloadData() +// } else { +// toast.error(res?.msg || '鐢熸垚缁翠慨宸ュ崟澶辫触锛岃閲嶈瘯') +// } +// }) +// .catch((res) => { +// toast.error(res?.msg || '鐢熸垚缁翠慨宸ュ崟澶辫触锛岃閲嶈瘯') +// }) +// }, +// }, +// success: function (res) { +// // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹� +// res.eventChannel.emit('OnSelectReq', { data: '缁翠慨鍗曢〉闈㈤�夋嫨鎶ヤ慨鍗�' }) +// }, +// }) +// } async function initData() { const rList: any = await getDictInfo(DICT_REPAIR_REQ_TYPE) @@ -423,10 +294,10 @@ onLoad((options) => { Object.assign(option, options) initData() - uni.$on('res-list-refresh', reloadData) + uni.$on('list-refresh', reloadData) }) onUnload(() => { - uni.$off('res-list-refresh', reloadData) + uni.$off('list-refresh', reloadData) }) </script> -- Gitblit v1.9.3