123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- <template>
- <div class="relics-layout">
- <div class="relics-header">
- <div class="search">
- <el-form label-width="100px" inline>
- <el-form-item label="单位名称">
- <el-input v-model.trim="pageProps.orgName" clearable style="width: 250px" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="类型">
- <el-select style="width: 250px" v-model="pageProps.type" clearable>
- <el-option :value="Number(key)" :label="type" v-for="(type, key) in OrganizationTypeDesc" />
- </el-select>
- </el-form-item>
- <el-form-item>
- <el-button type="primary" @click="refresh">查询</el-button>
- <el-button type="primary" plain @click="pageProps = { ...initProps }">
- 重置
- </el-button>
- <el-button v-if="!isNotSuper" type="primary" @click="addHandler">
- 新增单位
- </el-button>
- </el-form-item>
- </el-form>
- </div>
- </div>
- <div class="relics-content">
- <el-table default-expand-all row-key="orgId" :data="relicsArray" border>
- <el-table-column label="单位名称" prop="orgName"></el-table-column>
- <el-table-column label="类型" prop="type" v-slot:default="{ row }: { row: OrganizationType }">
- {{ row.type ? OrganizationTypeDesc[row.type] : "" }}
- </el-table-column>
- <el-table-column label="行政区划" v-slot:default="{ row }: { row: OrganizationType }">
- <template v-if="row.province">
- <template v-if="row.zx">
- {{ `${row.city || ''}${row.area || ''}` }}
- </template>
- <template v-else>
- {{ `${row.province || ''}${row.city || ''}${row.area || ''}` }}
- </template>
- </template>
- </el-table-column>
- <el-table-column label="单位账号" prop="userName"></el-table-column>
- <el-table-column label="单位联系人" prop="contact"></el-table-column>
- <el-table-column label="创建时间" prop="updateTime" v-slot:default="{ row }">
- {{ row.updateTime && row.updateTime.substr(0, 16) }}
- </el-table-column>
- <el-table-column label="创建人" prop="createByName"></el-table-column>
- <el-table-column label="操作" width="100px" fixed="right">
- <template #default="{ row }: { row: OrganizationType }">
- <el-button link type="primary" @click="editHandler(row)" size="small">
- 编辑
- </el-button>
- <el-button link type="danger" v-if="!isNotSuper" @click="delOrganization(row)" size="small">
- 删除
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- </div>
- <div class="pag-layout">
- <el-pagination background layout="total, prev, pager, next, sizes, jumper" v-model:page-size="pageProps.pageSize"
- :page-sizes="[10, 20, 50, 100]" :total="total" @current-change="(data: number) => pageProps.pageNum = data"
- :current-page="pageProps.pageNum" />
- </div>
- </div>
- </template>
- <script lang="ts" setup>
- import { onActivated, ref, watch, computed } from "vue";
- import {
- getOrgListFetch,
- addOrgFetch,
- delOrgFetch,
- alterOrgFetch,
- PageProps,
- } from "@/request";
- import type { OrganizationType } from "@/request/organization";
- import { OrganizationTypeDesc } from "@/store/organization";
- import { organizationAdd, organizationEdit } from "./quisk";
- import { debounce } from "@/util";
- import { user } from "@/store/user";
- import { ElMessageBox } from "element-plus";
- import { openLoading, closeLoading } from "@/helper/loading";
- const initProps: PageProps<Partial<OrganizationType>> = {
- pageNum: 1,
- pageSize: 10,
- orgName: "",
- orgId: undefined,
- type: undefined,
- };
- const pageProps = ref({ ...initProps });
- const total = ref<number>(0);
- const relicsArray = ref<any[]>([]);
- const isNotSuper = computed(
- () =>
- user.value.roles.filter(
- (item) =>
- item.roleKey === "system_admin" || item.roleKey === "system_common"
- ).length > 0
- );
- // 1省级 2市级 3县级 4服务商
- const refresh = debounce(async () => {
- const data = await getOrgListFetch(pageProps.value);
- total.value = data.total;
- // console.log('parseTree', parseTree(data.records, 'orgId'))
- // relicsArray.value = data.records.length > 1 ? parseTree(data.records, 'orgId') : data.records
- relicsArray.value = [];
- setTimeout(() => {
- relicsArray.value = data.records;
- }, 200)
- });
- watch(pageProps, refresh, { deep: true, immediate: true });
- onActivated(refresh);
- const addHandler = async () => {
- await organizationAdd({ submit: addOrgFetch });
- await refresh();
- };
- const editHandler = async (org: OrganizationType) => {
- await organizationEdit({ org: org, submit: alterOrgFetch });
- await refresh();
- };
- const delOrganization = async (org: OrganizationType) => {
- console.log("org", org);
- const ok = await ElMessageBox.confirm("确定要删除吗", {
- type: "warning",
- });
- if (ok) {
- openLoading();
- await delOrgFetch({
- orgId: org.orgId,
- orgName: org.orgName,
- type: org.type,
- });
- await refresh();
- closeLoading();
- }
- };
- </script>
- <style scoped lang="scss">
- .relics-layout {
- height: 100%;
- overflow-y: auto;
- padding: 30px;
- }
- .pag-layout {
- margin-top: 20px;
- display: flex;
- justify-content: center;
- }
- .relics-header {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- .search {
- flex: 1;
- }
- .relics-oper {
- flex: 0 0 100px;
- text-align: right;
- }
- }
- </style>
|