From 7ed2a032d0724e68aec8af940f2ce0023a9f0eb7 Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期三, 15 四月 2026 09:27:51 +0800
Subject: [PATCH] 修改调度单年月日

---
 ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue |  164 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 138 insertions(+), 26 deletions(-)

diff --git a/ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue b/ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue
index e2b46db..94cf752 100644
--- a/ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue
+++ b/ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue
@@ -2,13 +2,13 @@
   <basicContainer>
     <avue-crud :option="option" v-model:search="queryParams" :table-loading="pageF.loading" :data="tableData"
       :page="page" :permission="permissionList" :before-open="beforeOpen" v-model="form" ref="crudRef"
-      @row-update="rowUpdate" @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel"
+      @row-update="rowUpdate" @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel" 
       @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
       @current-change="currentChange" @size-change="sizeChange" @on-load="onLoad">
 
       <template #dispatchNo-form="{ row, size, }">
         <div style="cursor: pointer;">
-          <el-input v-model="form.dispatchNo" @click="handleFormSearch" readonly placeholder="璇疯緭鍏ヨ皟搴﹀崟鍙�">
+          <el-input v-model="form.dispatchNo" @click="handleFormSearch" readonly placeholder="璇疯緭鍏� 璋冨害鍗曞彿">
             <template #append>
               <el-button icon="Search" style="cursor: pointer;" @click="handleFormSearch"></el-button>
             </template>
@@ -19,10 +19,10 @@
 
 
       <template #menu-left>
-        <el-button type="success" icon="Edit" :disabled="pageF.single" v-hasPermi="['cwgl:estimatedReceivable:edit']"
+        <el-button type="success" icon="Edit" :disabled="editIshow" v-hasPermi="['cwgl:estimatedReceivable:edit']"
           @click="handleUpdate">淇敼
         </el-button>
-        <el-button type="danger" icon="Delete" :disabled="pageF.multiple" @click="handleDelete"
+        <el-button type="danger" icon="Delete" :disabled="removeIshow" @click="handleDelete"
           v-hasPermi="['cwgl:estimatedReceivable:remove']">鍒犻櫎
         </el-button>
         <el-button type="warning" plain icon="Download" @click="handleExport"
@@ -34,19 +34,20 @@
 
 
       <template #menu="{ size, row, index }">
-        <el-link class="link-btn"  type="primary" :underline="false" plain :size="size"
+        <el-link class="link-btn" type="primary" :underline="false" plain :size="size"
           @click="handleEditBtn(row, index)" v-if="[0, 1].includes(row.relatedBillStatus) && row.isConfirmed != 2"
           v-hasPermi="['cwgl:estimatedReceivable:cancel']"> 缂栬緫
         </el-link>
-        <el-link class="link-btn"  type="primary" v-if="row.isConfirmed == 1"
-          :underline="false" plain :size="size" @click="handleCancel(row)"
-          v-hasPermi="['cwgl:estimatedReceivable:cancel']"> 鍙栨秷纭
+        <el-link class="link-btn" type="primary"
+          v-if="row.isConfirmed == 1 && row.relatedBillStatus != 2 && row.relatedBillStatus != 3" :underline="false"
+          plain :size="size" @click="handleCancel(row)" v-hasPermi="['cwgl:estimatedReceivable:cancel']"> 鍙栨秷纭
         </el-link>
-        <el-link class="link-btn" type="primary" v-if="row.isConfirmed == 0" :underline="false" plain
-          @click="handleAffirm(row)" v-hasPermi="['cwgl:estimatedReceivable:confirm']"> 纭
+        <el-link class="link-btn" type="primary" v-if="row.isConfirmed == 0 && ![2, 3].includes(row.relatedBillStatus)"
+          :underline="false" plain @click="handleAffirm(row)" v-hasPermi="['cwgl:estimatedReceivable:confirm']"> 纭
         </el-link>
-        <el-link class="link-btn" type="primary" v-if="row.isConfirmed == 1" :underline="false" plain
-          @click="handleInvalid(row)" v-hasPermi="['cwgl:estimatedReceivable:invalid']"> 浣滃簾
+        <el-link class="link-btn" type="primary"
+          v-if="row.isConfirmed == 1 && row.relatedBillStatus != 2 && row.relatedBillStatus != 3" :underline="false"
+          plain @click="handleInvalid(row)" v-hasPermi="['cwgl:estimatedReceivable:invalid']"> 浣滃簾
         </el-link>
         <el-link class="link-btn" type="primary" :underline="false" plain @click="handleFlow(row)"
           v-hasPermi="['cwgl:estimatedReceivable:flog']"> 鏃ュ織
@@ -125,6 +126,9 @@
 import { listEstimatedReceivableLog } from "@/api/cwgl/estimatedReceivableLog";
 import { listEstimatedReceivableBillLog } from "@/api/cwgl/estimatedReceivableBillLog";
 import {
+  getSelectCustomNam,
+} from "@/api/cwgl/pendingSettlementBusiness";
+import {
   listPendingSettlementBusiness,
 } from "@/api/cwgl/pendingSettlementBusiness";
 import useCurrentInstance from "@/utils/useCurrentInstance";
@@ -149,6 +153,8 @@
 const data = reactive({
   form: <EstimatedReceivableI>{},
   newTableData: [],
+  removeIshow: true,
+  editIshow: true,
   newForm: <EstimatedReceivableI>{
     pageNum: 1,
     pageSize: 10
@@ -166,7 +172,7 @@
   itemTableLoading1: false,
   itemTableLoading2: false,
 })
-const { queryParams, form, page, selectionList, newForm, newTableData, newSelectionList, itemTableLoading1, itemTableLoading2 } = toRefs(data);
+const { queryParams, form, page, selectionList, newForm, newTableData, newSelectionList, itemTableLoading1, itemTableLoading2, removeIshow, editIshow } = toRefs(data);
 const option = ref({
   pageKey: 'EstimatedReceivable',
   rowKey: 'id',
@@ -194,12 +200,14 @@
           message: "璐圭敤绯荤粺缂栧彿涓嶈兘涓虹┖", trigger: "blur"
         }
       ],
+      minWidth: 140,
       search: true,
       addDisplay: false,
       editDisplay: false,
     },
     dispatchNo: {
       label: '璋冨害鍗曞彿',
+      minWidth: 120,
       rules: [
         {
           required: true,
@@ -208,31 +216,55 @@
       ],
       search: true,
     },
+    // customerName: {
+    //   label: '瀹㈡埛鍚嶇О',
+    //   rules: [
+    //     {
+    //       required: true,
+    //       message: "瀹㈡埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur"
+    //     }
+    //   ],
+    //   search: true,
+    //   disabled: true,
+    // },
     customerName: {
       label: '瀹㈡埛鍚嶇О',
-      rules: [
-        {
-          required: true,
-          message: "瀹㈡埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur"
-        }
-      ],
       search: true,
-      disabled: true,
+      minWidth: 220,
+      showOverflowTooltip: true,
+      type: 'select',           // 璁剧疆涓轰笅鎷夋绫诲瀷
+      dicData: [], // 浣跨敤 selectCustomName 浣滀负鏁版嵁婧�
+      disabled: false  // 鏍规嵁闇�瑕佽缃槸鍚︾鐢�
     },
     projectName: {
       label: '椤圭洰鍚嶇О',
       search: true,
       disabled: true,
+      minWidth: 220,
+      showOverflowTooltip: true,
     },
     orderDate: {
       label: '涓嬪崟鏃ユ湡',
-      search: true,
+      minWidth: 180,
       type: 'datetime',  // 鏀逛负 datetime 绫诲瀷
       format: 'YYYY-MM-DD HH:mm:ss',
       valueFormat: 'YYYY-MM-DD HH:mm:ss',
     },
+    orderDateArray: {
+      label: '涓嬪崟鏃ユ湡',
+      search: true,
+      searchRange: true,
+      type: 'daterange',
+      startPlaceholder: '寮�濮嬫棩鏈�',
+      endPlaceholder: '缁撴潫鏃ユ湡',
+      valueFormat: 'YYYY-MM-DD',
+      hide: true,
+      addDisplay: false,
+      editDisplay: false,
+    },
     feeName: {
       label: '璐圭敤鍚嶇О',
+      minWidth: 120,
       rules: [
         {
           required: true,
@@ -257,12 +289,14 @@
     },
     relatedBillName: {
       label: '鍏宠仈璐﹀崟鍚嶇О',
+      minWidth: 120,
       addDisplay: false,  // 鏂板鏃朵笉鏄剧ず
       editDisplay: false, // 淇敼鏃朵笉鏄剧ず
     },
     relatedBillStatus: {
       label: '鍏宠仈璐﹀崟鐘舵��',
       search: true,
+      minWidth: 120,
       dataType: 'string',
       type: 'select',
       addDisplay: false,  // 鏂板鏃朵笉鏄剧ず
@@ -284,6 +318,8 @@
     },
     remark: {
       label: '澶囨敞',
+      minWidth: 120,
+      showOverflowTooltip: true,
       type: 'textarea', minRows: 3, maxRows: 5,
     },
 
@@ -369,12 +405,63 @@
     },
     handleSelectionChangeFunc: (selection: any) => {
       selectionList.value = selection;
-    },
-    getBeginListFunc: (params = {}) => {
-      params.feeType = 0;
-      return params
+      console.log(selection);
 
-    }
+      // 鏍规嵁閫変腑椤规暟閲忓拰鐘舵�佽缃紪杈戞寜閽槸鍚﹀彲鐢�
+      if (selection.length === 1 && [0, 1].includes(selection[0].relatedBillStatus)) {
+        editIshow.value = false;
+      } else {
+        editIshow.value = true;
+      }
+
+      if (selection.length === 1 && [0].includes(selection[0].isConfirmed)) {
+        removeIshow.value = false;
+      } else {
+        removeIshow.value = true;
+      }
+
+    },
+     getBeginListFunc: (params = {}) => {
+      // 1. 鏃ユ湡杞崲
+      let newParams = <any>{ ...params };
+      if (newParams) {
+        // 1. 瀹氫箟鏃ユ湡瀛楁鏄犲皠 (鏁扮粍鍚� : 鎺ュ彛闇�瑕佺殑鍓嶇紑)
+        // 杩欐牱鍐欑殑濂藉鏄細濡傛灉浣犳湁澶氫釜鏃ユ湡锛岀洿鎺ュ湪杩欓噷娣诲姞涓�琛屽嵆鍙�
+        const dateMap = {
+          orderDateArray: 'orderDate',
+        };
+
+        // 2. 閬嶅巻澶勭悊鏃ユ湡
+        Object.keys(dateMap).forEach(arrayKey => {
+          const prefix = dateMap[arrayKey];
+          const range = newParams[arrayKey];
+
+          if (Array.isArray(range) && range.length > 0) {
+            // 璧嬪�� Begin 鍜� End
+            newParams[`${prefix}Begin`] = range[0];
+            newParams[`${prefix}End`] = range[1];
+          }
+
+          // 銆愭牳蹇冩敼鍔ㄣ�戯細鏃犺鏄惁鏈夊�硷紝澶勭悊瀹屽悗閮芥妸鍘熷鐨� Array 瀛楁鍒犳帀
+          // 杩欐牱璇锋眰閲屽氨涓嶄細鍑虹幇 confirmTimeRangeArray: [...]
+          delete newParams[arrayKey];
+        });
+
+        // 3. 閫氱敤娓呮礂锛氬垹闄ゆ墍鏈夌┖瀛楃涓层�乶ull 鎴� undefined 鐨勫叾浠栧瓧娈�
+        Object.keys(newParams).forEach(key => {
+          const val = newParams[key];
+          if (val === '' || val === null || val === undefined) {
+            delete newParams[key];
+          }
+        });
+
+      } else {
+        newParams = {};
+      }
+
+      return newParams;
+
+    },
 
   })
 const dialog = reactive({
@@ -573,4 +660,29 @@
   crudRef.value.rowEdit(row, index)
   // option.value.editBtn = true;
 }
+
+/*  */
+const selectCustomName = ref([]);
+const getSelectCustomName = () => {
+  getSelectCustomNam().then((res) => {
+    if (res.code === 200) {
+      // selectCustomName.value = res.data;
+      selectCustomName.value = res.data.map(item => ({
+        dictLabel: item,
+        dictValue: item
+      }));
+      option.value.column.customerName.dicData = selectCustomName.value || [];
+    }
+  })
+}
+getSelectCustomName()
 </script>
+<style>
+:deep(.avue-crud__table) {
+  overflow-y: auto;
+}
+
+:deep(.el-scrollbar__bar.is-horizontal) {
+  pointer-events: auto;
+}
+</style>

--
Gitblit v1.8.0