From 35cf8d289a09a6a4a34cf3d73fb41d84969ae4ee Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期一, 18 八月 2025 17:30:26 +0800
Subject: [PATCH] '注册修改'

---
 src/views/system/dept/index.vue |  505 ++++++++++++++++++++++++++++++++------------------------
 1 files changed, 289 insertions(+), 216 deletions(-)

diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue
index f156df0..e7225fb 100644
--- a/src/views/system/dept/index.vue
+++ b/src/views/system/dept/index.vue
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { ref, reactive, onMounted } from "vue";
+import { ref, reactive, onMounted, computed } from "vue";
 import { useDept } from "./utils/hook";
 import { PureTableBar } from "@/components/RePureTableBar";
 import { useRenderIcon } from "@/components/ReIcon/src/hooks";
@@ -8,18 +8,26 @@
 import EditPen from "~icons/ep/edit-pen";
 import Refresh from "~icons/ep/refresh";
 import AddFill from "~icons/ri/add-circle-line";
+import IconamoonEnterDuotone from "~icons/iconamoon/enter-duotone";
+import { useUserStoreHook } from "@/store/modules/user";
 
 defineOptions({
   name: "SystemDept"
 });
-
+import Detail from "./detail.vue";
 const formRef = ref();
 const tableRef = ref();
+const isList = ref(true);
+const nowItem = ref({
+  id: ""
+});
 const {
   form,
   state,
   loading,
   columns,
+  CGRcolumns,
+  selectedNum,
   dataList,
   onSearch,
   resetForm,
@@ -29,179 +37,218 @@
   handleSizeChange,
   handleCurrentChange,
   pagination,
-  checkboxAsRadio
-} = useDept();
+  checkboxAsRadio,
+  onSelectionCancel,
+  onbatchDel
+} = useDept(tableRef);
 
 function onFullscreen() {
   // 閲嶇疆琛ㄦ牸楂樺害
   tableRef.value.setAdaptive();
 }
-
+const nowRole = computed(() => {
+  return useUserStoreHook().nowRole;
+});
+const enterDetail = item => {
+  isList.value = false;
+  nowItem.value = item;
+};
+const backListPage = () => {
+  isList.value = true;
+};
 onMounted(() => {});
 </script>
 
 <template>
   <div class="main">
     <!-- class="search-form bg-bg_color w-full pl-8 pt-[12px] overflow-auto" -->
-    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
-      <el-form ref="formRef" :model="form" labelWidth="100">
-        <el-row>
-          <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
-            <el-form-item label="鏃堕棿锛�">
-              <el-date-picker
-                v-model="form.createDateRange"
-                type="daterange"
-                start-placeholder="寮�濮嬫棩鏈�"
-                end-placeholder="缁撴潫鏃ユ湡"
-                value-format="YYYY-MM-DD HH:mm:ss"
-                :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
-                class="w-[100%]!"
-              />
-              <!-- start-placeholder="寮�濮嬫棩鏈�"
+    <template v-if="isList">
+      <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
+        <el-form ref="formRef" :model="form" labelWidth="100">
+          <el-row>
+            <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
+              <el-form-item label="鏃堕棿锛�">
+                <el-date-picker
+                  v-model="form.createDateRange"
+                  type="daterange"
+                  start-placeholder="寮�濮嬫棩鏈�"
+                  end-placeholder="缁撴潫鏃ユ湡"
+                  value-format="YYYY-MM-DD HH:mm:ss"
+                  :default-time="[
+                    new Date('1 00:00:00'),
+                    new Date('1 23:59:59')
+                  ]"
+                  class="w-[100%]!"
+                />
+                <!-- start-placeholder="寮�濮嬫棩鏈�"
               end-placeholder="缁撴潫鏃ユ湡" -->
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
-            <el-form-item label="鍖哄煙锛�">
-              <el-cascader
-                v-model="form.xingzhengquyu"
-                class="w-full"
-                :options="state.regionList"
-                :props="{
-                  value: 'code',
-                  label: 'name',
-                  children: 'regions'
-                }"
-                clearable
-                filterable
-                placeholder="璇烽�夋嫨鍖哄煙"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
-            <el-form-item label="琛屼笟鍝佺洰锛�">
-              <el-select
-                v-model="form.hangyepinmu"
-                placeholder="璇烽�夋嫨琛屼笟鍝佺洰"
-                clearable
-                class="w-[100%]!"
-              >
-                <el-option
-                  v-for="item in state.hangyepingmuList"
-                  :key="item.id"
-                  :label="item.label"
-                  :value="item.value"
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
+              <el-form-item label="鍖哄煙锛�">
+                <el-cascader
+                  v-model="form.xingzhengquyu"
+                  class="w-full"
+                  :options="state.regionList"
+                  :props="{
+                    value: 'code',
+                    label: 'name',
+                    children: 'regions'
+                  }"
+                  clearable
+                  filterable
+                  placeholder="璇烽�夋嫨鍖哄煙"
                 />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
-            <el-form-item label="椤圭洰杩涘害锛�">
-              <el-select
-                v-model="form.orderStatus"
-                placeholder="璇烽�夋嫨椤圭洰杩涘害"
-                clearable
-                class="w-[100%]!"
-              >
-                <el-option
-                  v-for="item in state.orderStatusList"
-                  :key="item.id"
-                  :label="item.label"
-                  :value="item.value"
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+              <el-form-item label="琛屼笟鍝佺洰锛�">
+                <el-select
+                  v-model="form.hangyepinmu"
+                  placeholder="璇烽�夋嫨琛屼笟鍝佺洰"
+                  clearable
+                  class="w-[100%]!"
+                >
+                  <el-option
+                    v-for="item in state.hangyepingmuList"
+                    :key="item.id"
+                    :label="item.label"
+                    :value="item.value"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+              <el-form-item label="椤圭洰杩涘害锛�">
+                <el-select
+                  v-model="form.orderStatus"
+                  placeholder="璇烽�夋嫨椤圭洰杩涘害"
+                  clearable
+                  class="w-[100%]!"
+                >
+                  <el-option
+                    v-for="item in state.orderStatusList"
+                    :key="item.id"
+                    :label="item.label"
+                    :value="item.value"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+              <el-form-item label="璐ㄧ枒锛�">
+                <el-checkbox-group
+                  v-model="form.zhiyi"
+                  clearable
+                  class="w-[100%]!"
+                  @change="checkboxAsRadio(form.zhiyi)"
+                >
+                  <el-checkbox label="鏈�" value="true" />
+                  <el-checkbox label="鏃�" value="false" />
+                </el-checkbox-group>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+              <el-form-item label="鎶曡瘔锛�">
+                <el-checkbox-group
+                  v-model="form.tousu"
+                  clearable
+                  class="w-[100%]!"
+                  @change="checkboxAsRadio(form.tousu)"
+                >
+                  <el-checkbox label="鏈�" value="true" />
+                  <el-checkbox label="鏃�" value="false" />
+                </el-checkbox-group>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+              <el-form-item label="椤圭洰鍚嶇О锛�">
+                <el-input
+                  v-model="form.projectName"
+                  placeholder="璇疯緭鍏ラ」鐩悕绉�"
+                  clearable
+                  class="w-[100%]!"
                 />
-              </el-select>
-            </el-form-item> </el-col
-          ><el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
-            <el-form-item label="璐ㄧ枒锛�">
-              <el-checkbox-group
-                v-model="form.zhiyi"
-                clearable
-                class="w-[100%]!"
-                @change="checkboxAsRadio(form.zhiyi)"
-              >
-                <el-checkbox label="鏈�" value="true" />
-                <el-checkbox label="鏃�" value="false" />
-              </el-checkbox-group>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
-            <el-form-item label="鎶曡瘔锛�">
-              <el-checkbox-group
-                v-model="form.tousu"
-                clearable
-                class="w-[100%]!"
-                @change="checkboxAsRadio(form.tousu)"
-              >
-                <el-checkbox label="鏈�" value="true" />
-                <el-checkbox label="鏃�" value="false" />
-              </el-checkbox-group>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
-            <el-form-item label="椤圭洰鍚嶇О锛�">
-              <el-input
-                v-model="form.projectName"
-                placeholder="璇疯緭鍏ラ」鐩悕绉�"
-                clearable
-                class="w-[100%]!"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
-            <el-form-item label="浠g悊鏈烘瀯锛�">
-              <el-input
-                v-model="form.dailijigoumingcheng"
-                placeholder="璇疯緭鍏ヤ唬鐞嗘満鏋�"
-                clearable
-                class="w-[100%]!"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
-            <el-form-item label="涓爣渚涘簲鍟嗭細">
-              <el-input
-                v-model="form.zhongbiaoName"
-                placeholder="璇疯緭鍏ヤ腑鏍囦緵搴斿晢"
-                clearable
-                class="w-[100%]!"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
-            <el-form-item label="璇勫涓撳锛�">
-              <el-input
-                v-model="form.zhuanjiaName"
-                placeholder="璇疯緭鍏ヨ瘎瀹′笓瀹�"
-                clearable
-                class="w-[100%]!"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
-            <el-form-item label-width="40">
-              <el-button type="primary" :loading="loading" @click="onSearch">
-                鎼滅储
-              </el-button>
-              <!-- <el-button
-                :icon="useRenderIcon(Refresh)"
-                @click="resetForm(formRef)"
-              >
-                閲嶇疆
-              </el-button> -->
-              <el-button type="primary" @click="openDialog()"> 鏂板 </el-button>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </el-card>
-    <PureTableBar
-      title=""
-      :columns="columns"
-      :tableRef="tableRef?.getTableRef()"
-      @refresh="onSearch"
-      @fullscreen="onFullscreen"
-    >
-      <!-- <template #buttons>
+              </el-form-item>
+            </el-col>
+            <el-col
+              v-if="nowRole.code == 'CGR'"
+              :xs="24"
+              :sm="12"
+              :md="8"
+              :lg="6"
+              :xl="4"
+            >
+              <el-form-item label="浠g悊鏈烘瀯锛�">
+                <el-input
+                  v-model="form.dailijigoumingcheng"
+                  placeholder="璇疯緭鍏ヤ唬鐞嗘満鏋�"
+                  clearable
+                  class="w-[100%]!"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col
+              v-if="nowRole.code == 'DLJG'"
+              :xs="24"
+              :sm="12"
+              :md="8"
+              :lg="6"
+              :xl="4"
+            >
+              <el-form-item label="閲囪喘浜猴細">
+                <el-input
+                  v-model="form.caigourenmingcheng"
+                  placeholder="璇疯緭鍏ラ噰璐汉"
+                  clearable
+                  class="w-[100%]!"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+              <el-form-item label="涓爣渚涘簲鍟嗭細">
+                <el-input
+                  v-model="form.zhongbiaoName"
+                  placeholder="璇疯緭鍏ヤ腑鏍囦緵搴斿晢"
+                  clearable
+                  class="w-[100%]!"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+              <el-form-item label="璇勫涓撳锛�">
+                <el-input
+                  v-model="form.zhuanjiaName"
+                  placeholder="璇疯緭鍏ヨ瘎瀹′笓瀹�"
+                  clearable
+                  class="w-[100%]!"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+              <el-form-item label-width="40">
+                <el-button type="primary" :loading="loading" @click="onSearch">
+                  鎼滅储
+                </el-button>
+                <el-button :icon="useRenderIcon(Refresh)" @click="resetForm">
+                  閲嶇疆
+                </el-button>
+                <el-button type="primary" @click="openDialog()">
+                  鏂板
+                </el-button>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+      </el-card>
+      <PureTableBar
+        title=""
+        :columns="nowRole.code == 'CGR' ? CGRcolumns : columns"
+        :tableRef="tableRef?.getTableRef()"
+        @refresh="onSearch"
+        @fullscreen="onFullscreen"
+      >
+        <!-- <template #buttons>
         <el-button
           type="primary"
           :icon="useRenderIcon(AddFill)"
@@ -210,64 +257,90 @@
           鏂板椤圭洰
         </el-button>
       </template> -->
-      <template v-slot="{ size, dynamicColumns }">
-        <pure-table
-          ref="tableRef"
-          adaptive
-          :adaptiveConfig="{ offsetBottom: 45 }"
-          align-whole="center"
-          row-key="id"
-          showOverflowTooltip
-          table-layout="auto"
-          :loading="loading"
-          :data="dataList"
-          :columns="dynamicColumns"
-          :pagination="{ ...pagination, size }"
-          :header-cell-style="{
-            background: 'var(--el-fill-color-light)',
-            color: 'var(--el-text-color-primary)'
-          }"
-          @selection-change="handleSelectionChange"
-          @page-size-change="handleSizeChange"
-          @page-current-change="handleCurrentChange"
-        >
-          <template #operation="{ row }">
-            <el-button
-              class="reset-margin"
-              link
-              type="primary"
-              :size="size"
-              :icon="useRenderIcon(EditPen)"
-              @click="openDialog('淇敼', row)"
-            />
-            <!-- <el-button
-              class="reset-margin"
-              link
-              type="primary"
-              :size="size"
-              :icon="useRenderIcon(AddFill)"
-              @click="openDialog('鏂板', { parentId: row.id } as any)"
-            >
-              鏂板
-            </el-button> -->
-            <el-popconfirm
-              :title="`鏄惁纭鍒犻櫎閮ㄩ棬鍚嶇О涓�${row.projectName}鐨勮繖鏉℃暟鎹甡"
-              @confirm="handleDelete(row)"
-            >
+        <template v-slot="{ size, dynamicColumns }">
+          <div
+            v-if="selectedNum > 0"
+            v-motion-fade
+            class="bg-[var(--el-fill-color-light)] w-full h-[46px] mb-2 pl-4 flex items-center"
+          >
+            <div class="flex-auto">
+              <span
+                style="font-size: var(--el-font-size-base)"
+                class="text-[rgba(42,46,54,0.5)] dark:text-[rgba(220,220,242,0.5)]"
+              >
+                宸查�� {{ selectedNum }} 椤�
+              </span>
+              <el-button type="primary" text @click="onSelectionCancel">
+                鍙栨秷閫夋嫨
+              </el-button>
+            </div>
+            <el-popconfirm title="鏄惁纭鍒犻櫎?" @confirm="onbatchDel">
               <template #reference>
-                <el-button
-                  class="reset-margin"
-                  link
-                  type="primary"
-                  :size="size"
-                  :icon="useRenderIcon(Delete)"
-                />
+                <el-button type="danger" text class="mr-1!">
+                  鎵归噺鍒犻櫎
+                </el-button>
               </template>
             </el-popconfirm>
-          </template>
-        </pure-table>
-      </template>
-    </PureTableBar>
+          </div>
+          <pure-table
+            ref="tableRef"
+            adaptive
+            :adaptiveConfig="{ offsetBottom: 105 }"
+            align-whole="center"
+            row-key="id"
+            showOverflowTooltip
+            table-layout="auto"
+            :loading="loading"
+            :data="dataList"
+            :columns="dynamicColumns"
+            :pagination="{ ...pagination, size }"
+            :header-cell-style="{
+              background: 'var(--el-fill-color-light)',
+              color: 'var(--el-text-color-primary)'
+            }"
+            @selection-change="handleSelectionChange"
+            @page-size-change="handleSizeChange"
+            @page-current-change="handleCurrentChange"
+          >
+            <template #operation="{ row }">
+              <!-- <el-button
+                class="reset-margin"
+                link
+                type="primary"
+                :size="size"
+                :icon="useRenderIcon(EditPen)"
+                @click="openDialog('淇敼', row)"
+              /> -->
+              <el-button
+                class="reset-margin"
+                link
+                type="primary"
+                :size="size"
+                :icon="useRenderIcon(IconamoonEnterDuotone)"
+                @click="enterDetail(row)"
+              />
+              <el-popconfirm
+                :title="`鏄惁纭鍒犻櫎椤圭洰鍚嶇О涓�${row.projectName}鐨勮繖鏉℃暟鎹甡"
+                @confirm="handleDelete(row)"
+              >
+                <template #reference>
+                  <el-button
+                    class="reset-margin"
+                    link
+                    type="primary"
+                    :size="size"
+                    :icon="useRenderIcon(Delete)"
+                  />
+                </template>
+              </el-popconfirm>
+            </template>
+          </pure-table>
+        </template>
+      </PureTableBar>
+    </template>
+    <template v-else>
+      <detail :nowID="nowItem?.id" @backListPage="backListPage" />
+    </template>
   </div>
 </template>
 

--
Gitblit v1.9.1