数字督察一体化平台-前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

380 lines
14 KiB

<template>
<div class="container">
<el-tabs v-model="activeName" type="card">
<el-tab-pane label="情指行" name="情指行"> </el-tab-pane>
<el-tab-pane label="重点人员" name="重点人员"> </el-tab-pane>
<el-tab-pane label="民意感知" name="民意感知"> </el-tab-pane>
</el-tabs>
<header>
<el-row>
<el-col :span="12">
<div class="form-row flex">
<label class="text-center">{{ activeName }}</label>
<div class="flex wrap query-box">
<el-input
placeholder="单位编码"
v-model="query.externalId"
clearable
style="width: 200px"
/>
<el-input
placeholder="单位名称"
v-model="query.externalName"
clearable
style="width: 200px"
/>
</div>
</div>
</el-col>
<el-col :span="12">
<div class="form-row flex">
<label class="text-center">数字督察</label>
<div class="flex wrap query-box">
<div style="width: 280px">
<depart-tree-select
v-model="query.internalId"
placeholder="请选择机构"
/>
</div>
<el-select
style="width: 200px"
placeholder="单位层级"
v-model="query.level"
>
<el-option
value="2"
label="二级单位"
></el-option>
<el-option
value="3"
label="三级单位"
></el-option>
<el-option
value="4"
label="四级单位"
></el-option>
</el-select>
</div>
</div>
</el-col>
</el-row>
<div class="flex between mt-20 mb-26">
<el-button type="primary" @click="handleAdd">
<template #icon><icon name="el-icon-Plus" /></template>
新增</el-button
>
<div>
<el-button type="primary" @click="getList">
<template #icon
><icon name="el-icon-Search"
/></template>
查询</el-button
>
<el-button @click="reset">重置</el-button>
</div>
</div>
</header>
<p></p>
<el-tabs v-model="activeMaping">
<el-tab-pane label="全部" name="all">
<div class="table-container">
<el-table :data="list">
<el-table-column
:label="`${activeName}单位编码`"
prop="externalId"
width="150"
/>
<el-table-column
:label="`${activeName}单位名称`"
prop="externalName"
/>
<el-table-column
label="数字督察单位"
prop="internalName"
/>
<el-table-column
label="单位层级"
prop="level"
width="100"
align="center"
>
<template #default="{ row }">
<span v-if="row.level === 2">二级单位</span>
<span v-if="row.level === 3">三级单位</span>
<span v-if="row.level === 4">四级单位</span>
</template>
</el-table-column>
<el-table-column
label="最后修改时间"
prop="updateTime"
width="160"
/>
<el-table-column label="操作" width="160">
<template #default="{ row }">
<el-button
type="primary"
link
@click="handleEdit(row)"
>编辑</el-button
>
<el-button
type="danger"
link
@click="handleDel(row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex end mt-8">
<el-pagination
@size-change="getList"
@current-change="getList"
:current-page="query.current"
:page-sizes="[10, 20, 50]"
v-model:page-size="query.size"
v-model:current-page="query.current"
layout="total, sizes, prev, pager, next"
:total="total"
>
</el-pagination>
</div>
</el-tab-pane>
<el-tab-pane label="未映射" name="noMaping">
<template #label>
<el-badge :value="0">
<span>未映射</span>
</el-badge>
</template>
<div class="table-container">
<el-table :data="list">
<el-table-column
:label="`${activeName}单位编码`"
prop="externalId"
width="150"
/>
<el-table-column
:label="`${activeName}单位名称`"
prop="externalName"
/>
<el-table-column
label="数字督察单位"
prop="internalName"
/>
<el-table-column
label="单位层级"
prop="level"
width="100"
align="center"
>
<template #default="{ row }">
<span v-if="row.level === 2">二级单位</span>
<span v-if="row.level === 3">三级单位</span>
<span v-if="row.level === 4">四级单位</span>
</template>
</el-table-column>
<el-table-column
label="最后修改时间"
prop="updateTime"
width="160"
/>
<el-table-column label="操作" width="160">
<template #default="{ row }">
<el-button
type="primary"
link
@click="handleEdit(row)"
>编辑</el-button
>
<el-button
type="danger"
link
@click="handleDel(row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex end mt-8">
<el-pagination
@size-change="getList"
@current-change="getList"
:current-page="query.current"
:page-sizes="[10, 20, 50]"
v-model:page-size="query.size"
v-model:current-page="query.current"
layout="total, sizes, prev, pager, next"
:total="total"
>
</el-pagination>
</div>
</el-tab-pane>
</el-tabs>
</div>
<el-dialog
v-model="show"
:title="mode === 'add' ? '新增机构映射' : '编辑机构映射'"
width="600"
>
<el-form :label-width="140" :model="formData" ref="fomrRef">
<el-form-item
label="来源"
prop="source"
:rules="{
required: true,
message: '请选择',
trigger: ['blur'],
}"
>
<el-select
v-model="formData.source"
clearable
style="width: 280px"
>
<el-option label="情指行" value="情指行"></el-option>
<el-option label="重点人员" value="重点人员"></el-option>
<el-option label="民意感知" value="民意感知"></el-option>
</el-select>
</el-form-item>
<el-form-item
label="单位编码"
prop="externalId"
:rules="{
required: true,
message: '请输入',
trigger: ['blur'],
}"
>
<el-input
v-model="formData.externalId"
clearable
style="width: 280px"
placeholder="请输入"
/>
</el-form-item>
<el-form-item
label="单位名称"
prop="externalName"
:rules="{
required: true,
message: '请输入',
trigger: ['blur'],
}"
>
<el-input
v-model="formData.externalName"
clearable
style="width: 280px"
placeholder="请输入"
/>
</el-form-item>
<el-form-item
label="数字督察单位"
prop="internalId"
:rules="{
required: true,
message: '请选择',
trigger: ['blur'],
}"
>
<depart-tree-select
v-model="formData.internalId"
placeholder="请选择"
style="width: 280px"
/>
</el-form-item>
</el-form>
<footer class="flex end mt-40">
<el-button @click="show = false" size="large">取消</el-button>
<el-button type="primary" @click="submit" size="large"
>确定</el-button
>
</footer>
</el-dialog>
</template>
<script setup>
import {
listDepartMaping,
addDepartMaping,
updateDepartMaping,
delDepartMaping,
} from "@/api/system/departMaping";
import feedback from "@/utils/feedback";
const activeName = ref("情指行");
const activeMaping = ref("all");
const query = ref({
current: 1,
size: 10,
});
const list = ref([]);
const total = ref(0);
function getList() {
listDepartMaping(activeName.value, query.value).then((data) => {
list.value = data.records;
total.value = data.total;
});
}
function reset() {
query.value = {
current: 1,
size: 10,
};
getList();
}
watch(activeName, () => {
getList();
});
onMounted(() => {
getList();
});
const show = ref(false);
const mode = ref("add");
const formData = ref({});
const fomrRef = ref();
function handleAdd() {
formData.value = {
source: activeName.value,
};
show.value = true;
mode.value = "add";
}
function handleEdit(row) {
formData.value = { ...row };
formData.value.source = activeName.value;
show.value = true;
mode.value = "edit";
}
async function handleDel(row) {
await feedback.confirm("确定要删除该数据?");
await delDepartMaping(row.id);
getList();
feedback.msgSuccess("删除成功");
}
async function submit() {
await fomrRef.value.validate();
if (mode.value === "add") {
await addDepartMaping(formData.value);
} else {
await updateDepartMaping(formData.value);
}
show.value = false;
formData.value = {
source: activeName.value,
};
getList();
feedback.msgSuccess("操作成功");
}
</script>
<style lang="scss" scoped>
</style>