局长信箱-内网端(前端)
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.
 
 
 
 
 
 

210 lines
7.3 KiB

<template>
<div>
<h2>办理单位</h2>
<el-form :label-width="150" :model="form" :rules="rules" ref="formRef">
<el-row>
<el-col :span="12">
<el-form-item
:label="
secondaryResponsibleFlag ? '下发单位' : '主责单位'
"
prop="mainDeptId"
>
<el-select
v-model="form.mainDeptId"
placeholder="请选择办理单位"
filterable
clearable
>
<el-option
v-for="item in depts"
:key="item.id"
:label="item.name"
:value="item.id"
:disabled="
item.id === form.secondDeptId2 ||
item.id === form.secondDeptId1
"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="主办层级"
prop="mainDeptLevel"
class="el-form-item-label_nopadding"
>
<div class="flex gap-16 v-center" style="width: 100%">
<el-tooltip
content="如主办层级 为 市局主办,则在选择被举报/投诉对象时,可以在全局范围内选择 单位和民警<br/>
如主办层级 为 二级机构主办时,则在选择被举报/投诉对象时, 只能选择二级机构范围内的单位和民警<br/>
如主办层级 为 三级机构主办时,则在选择被举报/投诉对象时, 只能选择该三级机构和民警。"
placement="top-start"
:raw-content="true"
>
<icon
name="el-icon-QuestionFilled"
:size="16"
color="#FFA732"
/>
</el-tooltip>
<el-select
v-model="form.mainDeptLevel"
placeholder="请选择主办层级"
filterable
clearable
:disabled="mail.mainDeptLevel"
>
<el-option label="市局主办" :value="1" />
<el-option label="二级机构主办" :value="2" />
<el-option label="三级机构主办" :value="3" />
</el-select>
</div>
</el-form-item>
</el-col>
</el-row>
<template v-if="!secondaryResponsibleFlag">
<el-row>
<el-col :span="12">
<el-form-item label="次责单位1">
<el-select
v-model="form.secondDeptId1"
placeholder="请选择次责单位1"
filterable
clearable
>
<el-option
v-for="item in depts"
:key="item.id"
:label="item.name"
:value="item.id"
:disabled="
item.id === form.mainDeptId ||
item.id === form.secondDeptId2
"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="次责单位2">
<el-select
v-model="form.secondDeptId2"
placeholder="请选择次责单位2"
filterable
clearable
>
<el-option
v-for="item in depts"
:key="item.id"
:label="item.name"
:value="item.id"
:disabled="
item.id === form.mainDeptId ||
item.id === form.secondDeptId1
"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</template>
</el-form>
</div>
</template>
<script setup>
import { listSecond, listThree } from "@/api/org/department";
const props = defineProps({
data: {
type: Object,
default: {},
},
flowKey: {
type: String,
default: "first_distribute",
},
// 是否已选次级责任单位
secondaryResponsibleFlag: {
type: Boolean,
default: false,
},
mail: {
type: Object,
default: {},
},
});
const form = ref({
mainDeptLevel: props.mail.mainDeptLevel,
});
const formRef = ref(null);
const rules = ref({
mainDeptId: [
{
required: true,
message: "请选择办理单位",
},
],
});
if (props.mail.flowKey === "second_distribute") {
rules.value = {
mainDeptId: [
{
required: true,
message: "请选择办理单位",
},
],
mainDeptLevel: [
{
required: true,
message: "请选择主办层级",
},
],
};
}
const emits = defineEmits(["update:data"]);
const depts = ref([]);
getDepts();
function getDepts() {
if (props.flowKey === "first_distribute") {
listSecond().then((data) => {
depts.value = data;
});
}
if (props.flowKey === "second_distribute") {
listThree().then((data) => {
depts.value = data;
});
}
}
function validate() {
return new Promise((resolve, reject) => {
formRef.value.validate((valid) => {
if (valid) {
emits("update:data", form.value);
resolve(true);
} else {
reject();
}
});
});
}
defineExpose({
validate,
});
</script>
<style lang="scss" scoped>
:deep() {
.el-form-item-label_nopadding .el-form-item__label {
padding-right: 0;
}
}
</style>