123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429 |
- <template>
- <div class="page-container list-container">
- <div :gutter="10" class="list-btns-container">
- <!--<el-button size="small" type="primary" icon="Plus" @click="handleAdd()"
- v-hasPermi="['system:dept:add']">新增</el-button>-->
- <el-button size="small" type="info" icon="Sort" @click="toggleExpandAll"
- >展开/折叠</el-button
- >
- </div>
- <el-form
- class="list-search-container"
- :model="queryParams"
- ref="queryRef"
- :inline="true"
- v-show="showSearch"
- >
- <el-form-item :label="dept + '名称:'" prop="deptName">
- <el-input
- size="small"
- v-model="queryParams.deptName"
- :placeholder="'请输入' + dept + '名称'"
- clearable
- style="width: 200px"
- @keyup.enter="handleQuery"
- />
- </el-form-item>
- <el-form-item>
- <el-button
- size="small"
- type="primary"
- icon="Search"
- @click="handleQuery"
- >搜索</el-button
- >
- <el-button size="small" icon="Refresh" @click="resetQuery"
- >重置</el-button
- >
- </el-form-item>
- </el-form>
- <el-table
- size="small"
- v-if="refreshTable"
- v-loading="loading"
- :data="deptList"
- border
- height="100%"
- row-key="deptId"
- :default-expand-all="isExpandAll"
- :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
- >
- <el-table-column
- prop="deptName"
- :label="dept + '名称'"
- width="260"
- ></el-table-column>
- <el-table-column
- prop="orderNum"
- label="排序"
- width="200"
- ></el-table-column>
- <el-table-column prop="type" label="类别" width="100">
- <template #default="scope">
- <dict-tag :options="company_dept" :value="scope.row.type" />
- </template>
- </el-table-column>
- <el-table-column prop="auditStatus" label="审核状态" width="100">
- <template #default="scope">
- <dict-tag
- :options="sys_audit_status"
- :value="scope.row.auditStatus"
- />
- </template>
- </el-table-column>
- <el-table-column
- label="审核信息"
- align="center"
- :show-overflow-tooltip="true"
- >
- <template #default="scope">
- <router-link
- v-if="scope.row.type === '1'"
- :to="{
- path: '/aduit/company/form',
- query: { deptId: scope.row.deptId },
- }"
- class="link-type"
- >
- <span>查看详情</span>
- </router-link>
- </template>
- </el-table-column>
- <el-table-column
- label="创建时间"
- align="center"
- prop="createTime"
- width="200"
- >
- <template #default="scope">
- <span>{{ parseTime(scope.row.createTime) }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="操作"
- align="center"
- class-name="small-padding fixed-width"
- >
- <template #default="scope">
- <el-button
- link
- type="primary"
- size="small"
- @click="handleAdd(scope.row)"
- v-hasPermi="['system:dept:add']"
- >新增</el-button
- >
- <el-button
- v-show="scope.row.parentId != 0"
- link
- type="warning"
- size="small"
- @click="handleUpdate(scope.row)"
- v-hasPermi="['system:dept:edit']"
- >修改</el-button
- >
- <el-button
- v-show="scope.row.parentId != 0"
- size="small"
- link
- type="danger"
- @click="handleDelete(scope.row)"
- v-hasPermi="['system:dept:remove']"
- >删除</el-button
- >
- </template>
- </el-table-column>
- </el-table>
- <!-- 添加或修改企业对话框 -->
- <el-dialog
- :title="title"
- v-model="open"
- width="600px"
- append-to-body
- draggable
- >
- <el-form ref="deptRef" :model="form" :rules="rules" label-width="80px">
- <el-row :gutter="24">
- <el-col :span="12" v-if="form.type === '0'">
- <el-form-item label="上级单位" prop="parentId">
- <el-tree-select
- v-model="form.parentId"
- :data="deptOptions"
- :props="{
- value: 'deptId',
- label: 'deptName',
- children: 'children',
- }"
- value-key="deptId"
- placeholder="选择上级单位"
- check-strictly
- :render-after-expand="false"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item
- :label="form.type === '1' ? '企业名称' : '部门名称'"
- prop="deptName"
- >
- <el-input
- v-model="form.deptName"
- :placeholder="
- form.type === '1' ? '请输入企业名称' : '请输入部门名称'
- "
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="显示排序" prop="orderNum">
- <el-input-number
- style="width: 100%"
- v-model="form.orderNum"
- controls-position="right"
- :min="0"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="负责人" prop="leader">
- <el-input
- v-model="form.leader"
- placeholder="请输入负责人"
- maxlength="20"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="联系电话" prop="phone">
- <el-input
- v-model="form.phone"
- placeholder="请输入联系电话"
- maxlength="11"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="邮箱" prop="email">
- <el-input
- v-model="form.email"
- placeholder="请输入邮箱"
- maxlength="50"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="类别">
- <el-radio-group v-model="form.type" :disabled="disabled">
- <el-radio
- v-for="dict in company_dept"
- :key="dict.value"
- :label="dict.value"
- >{{ dict.label }}</el-radio
- >
- </el-radio-group>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <div class="dialog-footer">
- <el-button
- type="primary"
- icon="Finished"
- size="small"
- @click="submitForm"
- >确 定</el-button
- >
- <el-button icon="Close" size="small" @click="cancel">取 消</el-button>
- </div>
- </template>
- </el-dialog>
- </div>
- </template>
-
- <script setup name="Dept">
- import {
- listDept,
- getDept,
- delDept,
- addDept,
- updateDept,
- listDeptExcludeChild,
- } from "@/api/system/dept";
- import useUserStore from "@/store/modules/user";
- const { proxy } = getCurrentInstance();
- const roleType = useUserStore().roleType;
- const dept = ref(roleType === "admin" ? "企业" : "部门");
- const { company_dept } = proxy.useDict("company_dept");
- const { sys_audit_status } = proxy.useDict("sys_audit_status");
- const disabled = ref(false);
- const deptList = ref([]);
- const open = ref(false);
- const loading = ref(true);
- const showSearch = ref(true);
- const title = ref("");
- const deptOptions = ref([]);
- const isExpandAll = ref(true);
- const refreshTable = ref(true);
- const data = reactive({
- form: {},
- queryParams: {
- deptName: undefined,
- status: undefined,
- },
- rules: {
- parentId: [
- { required: true, message: "上级企业不能为空", trigger: "blur" },
- ],
- deptName: [
- { required: true, message: "企业名称不能为空", trigger: "blur" },
- ],
- orderNum: [
- { required: true, message: "显示排序不能为空", trigger: "blur" },
- ],
- email: [
- {
- type: "email",
- message: "请输入正确的邮箱地址",
- trigger: ["blur", "change"],
- },
- ],
- phone: [
- {
- pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
- message: "请输入正确的手机号码",
- trigger: "blur",
- },
- ],
- },
- });
- const { queryParams, form, rules } = toRefs(data);
- /** 查询企业列表 */
- function getList() {
- loading.value = true;
- listDept(queryParams.value).then((response) => {
- deptList.value = proxy.handleTree(response.data, "deptId");
- loading.value = false;
- });
- }
- /** 取消按钮 */
- function cancel() {
- open.value = false;
- reset();
- }
- /** 表单重置 */
- function reset() {
- form.value = {
- deptId: undefined,
- parentId: undefined,
- deptName: undefined,
- orderNum: 0,
- leader: undefined,
- phone: undefined,
- email: undefined,
- status: "0",
- };
- disabled.value = false;
- deptOptions.value = [];
- proxy.resetForm("deptRef");
- }
- /** 搜索按钮操作 */
- function handleQuery() {
- getList();
- }
- /** 重置按钮操作 */
- function resetQuery() {
- proxy.resetForm("queryRef");
- handleQuery();
- }
- /** 新增按钮操作 */
- function handleAdd(row) {
- reset();
- listDept().then((response) => {
- deptOptions.value = deptOptions.value.concat(
- proxy.handleTree(response.data, "deptId")
- );
- });
- if (row != undefined) {
- form.value.parentId = row.deptId;
- form.value.type = "0";
- disabled.value = true;
- title.value = "添加部门";
- } else {
- form.value.type = "1";
- disabled.value = true;
- title.value = "添加企业";
- }
- open.value = true;
- }
- /** 展开/折叠操作 */
- function toggleExpandAll() {
- refreshTable.value = false;
- isExpandAll.value = !isExpandAll.value;
- nextTick(() => {
- refreshTable.value = true;
- });
- }
- /** 修改按钮操作 */
- function handleUpdate(row) {
- reset();
- listDeptExcludeChild(row.deptId).then((response) => {
- deptOptions.value = deptOptions.value.concat(
- proxy.handleTree(response.data, "deptId")
- );
- });
- getDept(row.deptId).then((response) => {
- form.value = response.data;
- open.value = true;
- title.value = "修改企业";
- });
- }
- /** 提交按钮 */
- function submitForm() {
- proxy.$refs["deptRef"].validate((valid) => {
- if (valid) {
- form.value.status = 0;
- if (form.value.type === "1") {
- form.value.parentId = 0;
- }
- if (form.value.deptId != undefined) {
- updateDept(form.value).then((response) => {
- proxy.$modal.msgSuccess("修改成功");
- open.value = false;
- getList();
- });
- } else {
- addDept(form.value).then((response) => {
- proxy.$modal.msgSuccess("新增成功");
- open.value = false;
- getList();
- });
- }
- }
- });
- }
- /** 删除按钮操作 */
- function handleDelete(row) {
- proxy.$modal
- .confirm("是否确认删除?")
- .then(function () {
- return delDept(row.deptId);
- })
- .then(() => {
- getList();
- proxy.$modal.msgSuccess("删除成功");
- })
- .catch(() => {});
- }
- getList();
- </script>
-
|