From e1b04baf60478e3de9e41e1fc39e1e4346321817 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期五, 29 八月 2025 13:27:31 +0800 Subject: [PATCH] '一些改动' --- src/views/system/dept/index.vue | 516 ++++++++++++++++++++++++++++++++------------------------- 1 files changed, 290 insertions(+), 226 deletions(-) diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index 04b15f4..00afbe3 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -1,213 +1,253 @@ <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"; +import { type CusExtendDto } from "@/utils/auth"; import Delete from "~icons/ep/delete"; 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"; 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, openDialog, handleDelete, - handleSelectionChange -} = useDept(); + handleSelectionChange, + handleSizeChange, + handleCurrentChange, + pagination, + checkboxAsRadio, + onSelectionCancel, + onbatchDel, + nowRole +} = useDept(tableRef); function onFullscreen() { // 閲嶇疆琛ㄦ牸楂樺害 tableRef.value.setAdaptive(); } +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: 'id', - label: 'name', - emitPath: false, - 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%]!" - > - <el-checkbox label="鏈�" :value="1" /> - <el-checkbox label="鏃�" :value="0" /> - </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%]!" - > - <el-checkbox label="鏈�" :value="1" /> - <el-checkbox label="鏃�" :value="0" /> - </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" - :icon="useRenderIcon('ri/search-line')" - :loading="loading" - @click="onSearch" - > - 鎼滅储 - </el-button> - <!-- <el-button - :icon="useRenderIcon(Refresh)" - @click="resetForm(formRef)" - > - 閲嶇疆 - </el-button> --> - <el-button - type="primary" - :icon="useRenderIcon(AddFill)" - @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 == 'DLJG'" + :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 == 'CGR'" + :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 == 'DLJG' ? CGRcolumns : columns" + :tableRef="tableRef?.getTableRef()" + @refresh="onSearch" + @fullscreen="onFullscreen" + > + <!-- <template #buttons> <el-button type="primary" :icon="useRenderIcon(AddFill)" @@ -216,66 +256,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" - default-expand-all - :loading="loading" - :data="dataList" - :columns="dynamicColumns" - :header-cell-style="{ - background: 'var(--el-fill-color-light)', - color: 'var(--el-text-color-primary)' - }" - @selection-change="handleSelectionChange" - > - <template #operation="{ row }"> - <el-button - class="reset-margin" - link - type="primary" - :size="size" - :icon="useRenderIcon(EditPen)" - @click="openDialog('淇敼', row)" - > - 淇敼 - </el-button> - <!-- <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