From 2293a1b58a3227a4870466e3699b6baf0af29303 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期一, 11 八月 2025 17:19:53 +0800 Subject: [PATCH] - --- src/views/system/dept/index.vue | 530 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 274 insertions(+), 256 deletions(-) diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index bc56d7a..2dd5f3b 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -8,15 +8,17 @@ import EditPen from "~icons/ep/edit-pen"; import Refresh from "~icons/ep/refresh"; import AddFill from "~icons/ri/add-circle-line"; +import IonEnterOutline from "~icons/ion/enter-outline"; 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({}); const { form, state, @@ -45,197 +47,209 @@ 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 - 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 + </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(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="nowRole.code == 'CGR' ? CGRcolumns : columns" - :tableRef="tableRef?.getTableRef()" - @refresh="onSearch" - @fullscreen="onFullscreen" - > - <!-- <template #buttons> + <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)" @@ -244,86 +258,90 @@ 鏂板椤圭洰 </el-button> </template> --> - <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 type="danger" text class="mr-1!"> 鎵归噺鍒犻櫎 </el-button> - </template> - </el-popconfirm> - </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(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(IonEnterOutline)" + @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 :now-info="nowItem" @backListPage="backListPage" /> + </template> </div> </template> -- Gitblit v1.9.1