|
|
@@ -62,14 +62,10 @@
|
|
|
<!-- 通报类别(单选框) -->
|
|
|
<el-row :gutter="24">
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="通报类别" prop="notificationMattersType" required>
|
|
|
- <el-select
|
|
|
- v-model="item.notificationMattersType"
|
|
|
- :disabled="!isEditable"
|
|
|
- placeholder="请选择通报类别"
|
|
|
- >
|
|
|
+ <el-form-item label="通报类别" prop="conm">
|
|
|
+ <el-select v-model="item.conm" :disabled="!isEditable" placeholder="请选择通报类别">
|
|
|
<el-option
|
|
|
- v-for="item in notificationMattersTypeOptions"
|
|
|
+ v-for="item in conmOptions"
|
|
|
:key="item.value"
|
|
|
:label="item.label"
|
|
|
:value="item.value"
|
|
|
@@ -82,7 +78,7 @@
|
|
|
<!-- 水上交通安全信息(多行文本) -->
|
|
|
<el-row :gutter="24">
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="水上交通安全信息" prop="wtis" required>
|
|
|
+ <el-form-item label="水上交通安全信息" prop="wtis">
|
|
|
<el-input
|
|
|
v-model="item.wtis"
|
|
|
type="textarea"
|
|
|
@@ -99,8 +95,16 @@
|
|
|
<!-- 接收单位名称 -->
|
|
|
<el-row :gutter="24">
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="接收单位名称" prop="receivingUnitName" required>
|
|
|
- <el-input v-model="item.receivingUnitName" placeholder="" :disabled="true" />
|
|
|
+ <el-form-item label="接收单位名称" prop="middleIdList">
|
|
|
+ <el-tree-select
|
|
|
+ v-model="item.middleIdList"
|
|
|
+ :data="unitOptions"
|
|
|
+ :disabled="!isEditable"
|
|
|
+ node-key="strId"
|
|
|
+ style="width: 100%"
|
|
|
+ show-checkbox
|
|
|
+ multiple
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -131,27 +135,19 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="24">
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item label="上传附件">
|
|
|
- <div style="color: #999999">
|
|
|
- 提示:目前支持的文件格式: *.gif, *.jpeg, *.jpg, *.png, *.rar, *.zip, *.doc, *.ppt, *.xls,
|
|
|
- *.pdf, *.docx *.xlsx, *.bmp, *.xml,*.ofd,*.wps。 文件大小支持:100M以内。
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="行政处罚决定" prop="smr">
|
|
|
- <FileUpload :isShowTip="false" v-model="item.smr" />
|
|
|
+ <el-form-item label="查看附件" prop="smr">
|
|
|
+ <FileUpload v-model="item.smr" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="通报事项的相关证据" prop="ertnmFilePath">
|
|
|
- <FileUpload :isShowTip="false" v-model="item.ertnmFilePath" />
|
|
|
+ <FileUpload v-model="item.ertnmFilePath" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="通报事项的其他材料" prop="omfnmFilePath">
|
|
|
- <FileUpload :isShowTip="false" v-model="item.omfnmFilePath" />
|
|
|
+ <FileUpload v-model="item.omfnmFilePath" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -159,7 +155,7 @@
|
|
|
<!-- 安全管理建议 -->
|
|
|
<el-row :gutter="24" class="mt-4">
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="安全管理建议" prop="smr" required>
|
|
|
+ <el-form-item label="安全管理建议" prop="smr">
|
|
|
<el-input
|
|
|
v-model="item.smr"
|
|
|
type="textarea"
|
|
|
@@ -173,11 +169,11 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <!-- 安全管理建议附件(核心改造) -->
|
|
|
+ <!-- 安全管理建议附件 -->
|
|
|
<el-row :gutter="24">
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="安全管理建议附件">
|
|
|
- <FileUpload :isShowTip="false" v-model="item.smraFilePath" />
|
|
|
+ <FileUpload v-model="item.smraFilePath" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -185,7 +181,7 @@
|
|
|
<!-- 是否需要反馈 -->
|
|
|
<el-row :gutter="24">
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="是否需要反馈" prop="wfir" required>
|
|
|
+ <el-form-item label="是否需要反馈" prop="wfir">
|
|
|
<el-select v-model="item.wfir" placeholder="请选择是否需要反馈" :disabled="!isEditable">
|
|
|
<el-option
|
|
|
v-for="item in isFeedback"
|
|
|
@@ -219,7 +215,10 @@ import type { FormInstance, FormRules, UploadFile } from 'element-plus';
|
|
|
import { UploadFilled, Plus, Delete, Document } from '@element-plus/icons-vue';
|
|
|
import { ElMessage } from 'element-plus';
|
|
|
import MattersListDrawer from './mattersListDrawer.vue';
|
|
|
-import { outTypeList, asyncOutTypeList } from '@/libs/commonMeth';
|
|
|
+import { outTypeList, asyncOutTypeList, outDeptTree } from '@/libs/commonMeth';
|
|
|
+import { TreeOptions } from '@/types/global';
|
|
|
+import useDeptStore from '@/store/modules/dept';
|
|
|
+
|
|
|
interface Props {
|
|
|
formData: any;
|
|
|
}
|
|
|
@@ -228,7 +227,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
formData: {},
|
|
|
});
|
|
|
|
|
|
-const notificationMattersTypeOptions = asyncOutTypeList('bj_category_onm');
|
|
|
+const conmOptions = asyncOutTypeList('bj_category_onm');
|
|
|
const industryType = asyncOutTypeList('bj_industry_type');
|
|
|
const isFeedback = asyncOutTypeList('bj_is_feedback');
|
|
|
|
|
|
@@ -254,12 +253,12 @@ const formRules = reactive<FormRules>({
|
|
|
{ required: true, message: '请输入通报标准或具体行为', trigger: 'blur' },
|
|
|
{ max: 1000, message: '长度不能超过1000个字符', trigger: 'blur' },
|
|
|
],
|
|
|
- notificationMattersType: [{ required: true, message: '请选择通报类别', trigger: 'change' }],
|
|
|
+ conm: [{ required: true, message: '请选择通报类别', trigger: 'change' }],
|
|
|
wtis: [
|
|
|
{ required: true, message: '请填写水上交通安全信息', trigger: 'blur' },
|
|
|
{ max: 3000, message: '长度不能超过3000个字符', trigger: 'blur' },
|
|
|
],
|
|
|
- receivingUnitName: [{ required: true, message: '请选择接收单位名称', trigger: 'change' }],
|
|
|
+ middleIdList: [{ required: true, message: '请选择接收单位名称', trigger: 'change' }],
|
|
|
safetySuggestion: [
|
|
|
{ required: true, message: '请填写安全管理建议', trigger: 'blur' },
|
|
|
{ max: 200, message: '长度不能超过200个字符', trigger: 'blur' },
|
|
|
@@ -270,8 +269,12 @@ const formRules = reactive<FormRules>({
|
|
|
// 抽屉控制
|
|
|
const drawerVisible = ref(false);
|
|
|
|
|
|
+const unitOptions: any = ref<TreeOptions[]>();
|
|
|
+
|
|
|
+const deptStore = useDeptStore();
|
|
|
+
|
|
|
// 初始化
|
|
|
-onMounted(() => {
|
|
|
+onMounted(async () => {
|
|
|
// 从路由获取页面类型
|
|
|
const type = route.query.type as 'add' | 'edit' | 'detail';
|
|
|
if (['add', 'edit', 'detail'].includes(type)) {
|
|
|
@@ -282,6 +285,11 @@ onMounted(() => {
|
|
|
if (currentType.value === 'edit' || currentType.value === 'detail') {
|
|
|
fetchNoticeData();
|
|
|
}
|
|
|
+ // 加载组织架构
|
|
|
+ if (!deptStore.hasDeptData) {
|
|
|
+ await deptStore.loadDeptDataFromCache();
|
|
|
+ }
|
|
|
+ unitOptions.value = deptStore.deptData;
|
|
|
});
|
|
|
|
|
|
// 监听路由变化
|
|
|
@@ -307,6 +315,7 @@ const onClickNotice = (id: number) => {
|
|
|
|
|
|
const selectedRow = (row: any) => {
|
|
|
noticeItems.value[noticeItems.value.length - 1] = row;
|
|
|
+ noticeItems.value.forEach(item => (item.middleIdList = []));
|
|
|
drawerVisible.value = false;
|
|
|
};
|
|
|
|
|
|
@@ -322,7 +331,9 @@ const handleDelete = (index: number) => {
|
|
|
|
|
|
// 添加通报事项
|
|
|
const addNoticeItem = () => {
|
|
|
- noticeItems.value.push({});
|
|
|
+ noticeItems.value.push({
|
|
|
+ middleIdList: [],
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
// 表单校验
|