瀏覽代碼

组织架构 调用封装 /三个通报 总60%

Luka 1 月之前
父節點
當前提交
6785f5f236

+ 1 - 1
src/views/notificationInfoInquiry/administrativePenalty/components/basicInformationOfAdministration.vue

@@ -14,7 +14,7 @@
 				>
 					<el-row>
 						<el-col :span="6">
-							<el-form-item label="查类型">
+							<el-form-item label="查类型">
 								<div>{{ formData.chineseName }}</div>
 							</el-form-item>
 						</el-col>

+ 9 - 3
src/views/notificationInfoInquiry/administrativePenalty/index.vue

@@ -5,7 +5,7 @@
 				<el-tree-select
 					v-model="scope.value"
 					:data="treeData"
-					node-key="id"
+					node-key="strId"
 					filterable
 					@change="newVal => onMessageChange(scope, newVal)"
 					placeholder="请选择处罚机构"
@@ -35,7 +35,8 @@ import pageContent from '@/components/components/pageContent.vue';
 import searchConfig from './config/search.config';
 import pageSearch from '@/components/components/pageSearch.vue';
 import useSystemStore from '@/store/main';
-import { outTypeList, outDeptTree } from '@/libs/commonMeth';
+import { outTypeList } from '@/libs/commonMeth';
+import useDeptStore from '@/store/modules/dept';
 import { TreeOptions } from '@/types/global';
 const systemStore = useSystemStore();
 import {
@@ -173,8 +174,13 @@ async function searchItem() {
 }
 searchItem();
 const treeData = ref<TreeOptions[]>();
+const deptStore = useDeptStore();
 onMounted(async () => {
-	treeData.value = await outDeptTree();
+	// 加载组织架构
+	if (!deptStore.hasDeptData) {
+		await deptStore.loadDeptDataFromCache();
+	}
+	treeData.value = deptStore.deptData;
 });
 </script>
 

+ 12 - 8
src/views/notificationInfoInquiry/publish/components/mattersListDrawer.vue

@@ -78,13 +78,16 @@
 				<el-table :data="tableData" border stripe size="small" :highlight-current-row="true">
 					<el-table-column fixed type="index" label="序号" width="50" align="center"></el-table-column>
 					<el-table-column prop="deliveryUnit" label="发布单位" min-width="200"></el-table-column>
-					<el-table-column
-						sortable
-						prop="notificationType"
-						label="通报类型"
-						min-width="120"
-					></el-table-column>
-					<el-table-column sortable prop="conm" label="通报事项类别" min-width="120"></el-table-column>
+					<el-table-column sortable prop="notificationType" label="通报类型" min-width="120">
+						<template #default="scope">
+							{{ getStatusLabel(bj_notification_type, scope.row.notificationType) }}
+						</template>
+					</el-table-column>
+					<el-table-column sortable prop="conm" label="通报事项类别" min-width="120">
+						<template #default="scope">
+							{{ getStatusLabel(categoryOnm, scope.row.conm) }}
+						</template>
+					</el-table-column>
 					<el-table-column
 						sortable
 						prop="notificationMatters"
@@ -122,7 +125,8 @@
 <script setup lang="ts">
 import { ref, reactive, watch, defineProps, defineEmits } from 'vue';
 import { fetchUnusedItem } from '@/api/notificationInfoManage/myPublish';
-import { outTypeList } from '@/libs/commonMeth';
+import { outTypeList, getStatusLabel } from '@/libs/commonMeth';
+import { bj_notification_type, categoryOnm } from '@/plugins/dictData';
 
 // 接收父组件传递的参数
 const props = defineProps({

+ 1 - 1
src/views/notificationInfoInquiry/publish/components/operationLog.vue

@@ -7,7 +7,7 @@
 				</template>
 				<el-table :data="tableData" style="width: 100%" :span-method="objectSpanMethod" border>
 					<el-table-column fixed type="index" label="序号" width="80" />
-					<el-table-column prop="receivingUnitStr" label="接收单位" width="200" />
+					<el-table-column prop="receivingUnit" label="接收单位" width="200" />
 					<el-table-column prop="operationTime" label="操作时间" width="200" />
 					<el-table-column prop="notificationLink" label="通报环节" width="200">
 						<template #default="scope">

+ 30 - 3
src/views/notificationInfoInquiry/publish/components/publishUnitInformation.vue

@@ -6,7 +6,7 @@
 					<div class="collapse-title">发布单位信息</div>
 				</template>
 				<div class="flex mb20 mt20">
-					<div class="mr20">发布单位:{{ formData.releasedUnitStr }}</div>
+					<div class="mr20">发布单位:{{ formData.releasedUnitName }}</div>
 					<div>发布日期:{{ formData.releasedDate }}</div>
 				</div>
 				<div>
@@ -18,6 +18,8 @@
 </template>
 
 <script setup lang="ts">
+import Cookies from 'js-cookie';
+
 interface IProps {
 	formData: any;
 }
@@ -25,12 +27,37 @@ const props = withDefaults(defineProps<IProps>(), {
 	formData: {},
 });
 const activeNames = ref(['1']);
-const formData = reactive({});
+const formData = reactive<any>({
+	releasedDate: formatCurrentDate(), // 使用函数初始化当前日期
+});
+
+// 格式化当前日期为 YYYY-MM-DD
+function formatCurrentDate() {
+	const now = new Date();
+	const year = now.getFullYear();
+	const month = String(now.getMonth() + 1).padStart(2, '0');
+	const day = String(now.getDate()).padStart(2, '0');
+	return `${year}-${month}-${day}`;
+}
+
+const user = JSON.parse(Cookies.get('user')!);
 
 watch(
 	() => props.formData,
-	newType => {}
+	newType => {
+		formData.releasedUnit = props.formData.releasedUnit || user.deptId;
+		formData.releasedUnitName = props.formData.releasedUnitName || user.dept.deptName;
+		formData.releasedDate = props.formData.releasedDate || formatCurrentDate();
+	}
 );
+
+onMounted(() => {
+	formData.releasedUnit = user.dept.deptName;
+});
+
+defineExpose({
+	getFormData: () => formData,
+});
 </script>
 
 <style scoped>

+ 1 - 20
src/views/notificationInfoInquiry/publish/components/questionInformation.vue

@@ -372,8 +372,6 @@ watch(
 
 // 选择船舶回调
 const handleSelectShip = (data: any) => {
-	console.log(data);
-
 	Object.assign(formData, data);
 	drawerVisible.value = false;
 	isShowAdd.value = false;
@@ -393,24 +391,7 @@ defineExpose({
 </script>
 
 <style scoped lang="scss">
-.ship-info-form {
-	background: #fff;
-	border-radius: 8px;
-	padding: 20px;
-	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.04);
-}
-:deep .el-collapse-item__header {
-	color: #5070ae;
-	font-size: 14px;
-	background: linear-gradient(135deg, #d2e8ff, #fcfeff);
-	box-shadow: 0 8px 20px #fcfeff;
-	text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
-	padding-left: 20px;
-}
-
-:deep .el-collapse-item__wrap {
-	padding: 20px;
-}
+@import '@/styles/collapse.scss';
 
 .form-container {
 	.el-form-item {

+ 43 - 32
src/views/notificationInfoInquiry/publish/components/waterSafetyInformation.vue

@@ -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: [],
+	});
 };
 
 // 表单校验

+ 1 - 1
src/views/notificationInfoInquiry/securityCheck/components/basicInformationOfSecurity.vue

@@ -14,7 +14,7 @@
 				>
 					<el-row>
 						<el-col :span="6">
-							<el-form-item label="查类型">
+							<el-form-item label="查类型">
 								<div>{{ formData.chineseName }}</div>
 							</el-form-item>
 						</el-col>

+ 9 - 3
src/views/notificationInfoInquiry/securityCheck/index.vue

@@ -5,7 +5,7 @@
 				<el-tree-select
 					v-model="scope.value"
 					:data="treeData"
-					node-key="id"
+					node-key="strId"
 					filterable
 					@change="newVal => onMessageChange(scope, newVal)"
 					placeholder="请选择检查机构"
@@ -35,7 +35,8 @@ import pageContent from '@/components/components/pageContent.vue';
 import searchConfig from './config/search.config';
 import pageSearch from '@/components/components/pageSearch.vue';
 import useSystemStore from '@/store/main';
-import { outTypeList, outDeptTree } from '@/libs/commonMeth';
+import { outTypeList } from '@/libs/commonMeth';
+import useDeptStore from '@/store/modules/dept';
 import { TreeOptions } from '@/types/global';
 const systemStore = useSystemStore();
 
@@ -152,8 +153,13 @@ async function searchItem() {
 }
 searchItem();
 const treeData = ref<TreeOptions[]>();
+const deptStore = useDeptStore();
 onMounted(async () => {
-	treeData.value = await outDeptTree();
+	// 加载组织架构
+	if (!deptStore.hasDeptData) {
+		await deptStore.loadDeptDataFromCache();
+	}
+	treeData.value = deptStore.deptData;
 });
 </script>
 

+ 119 - 106
src/views/notificationInfoInquiry/shipRegistration/components/basicInformationOfVessel.vue

@@ -1,114 +1,127 @@
 <template>
-  <div class="ship-info-form">
-    <el-collapse v-model="activeNames">
-      <el-collapse-item name="1">
-        <template #title="{ isActive }">
-          <div class="collapse-title">
-            船舶基本信息
-          </div>
-        </template>
-        <el-form
-          ref="ruleFormRef"
-          :model="formData"
-          label-width="150px"
-          size="default"
-          class="form-container mt20"
-        >
-          <el-row>
-            <el-col :span="8">
-              <el-form-item label="船舶识别号"><div>CS20250719</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="中文船名"><div>{{ formData.chineseName }}</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="英文船名"><div>YUE SAN SH HUO</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="初次登记号"><div>YUE SAN SH HUO</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="船舶种类"><div>无</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="船籍港"><div>广州</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="船舶所有人"><div>无</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="船舶所有人联系方式"><div>15817883344</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="船舶状态"><div>已注销</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="注销内容"><div>所有权 国籍</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="英文注销内容"><div>OWNERSHIP NATION</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="不注销内容"><div>-</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="注销原因"><div>交易至国内</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="注销原因详情内容"><div>郭患平卖船给徐铭</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="注销原因详情内容"><div>船东申报船舶的值为人民币580万</div></el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="8">
-              <el-form-item label="受理人"><div>李玉成</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="初审人"><div>李玉成</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="复审人"><div>李玉成</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="审批人"><div>李玉成</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="受理日期"><div>2025-08-14</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="初审日期"><div>2025-08-14</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="复审日期"><div>2025-08-14</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="操作人员"><div>李雪花</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="操作时间"><div>2025.10.1</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="证书编号"><div>2424132</div></el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="证书号码"><div>2049395385</div></el-form-item>
-            </el-col>
-          </el-row>
-        </el-form>
-      </el-collapse-item>
-    </el-collapse>
-  </div>
+	<div class="ship-info-form">
+		<el-collapse v-model="activeNames">
+			<el-collapse-item name="1">
+				<template #title="{ isActive }">
+					<div class="collapse-title">船舶基本信息</div>
+				</template>
+				<el-form
+					ref="ruleFormRef"
+					:model="formData"
+					label-width="150px"
+					size="default"
+					class="form-container mt20"
+				>
+					<el-row>
+						<el-col :span="8">
+							<el-form-item label="船舶识别号"
+								><div>{{ formData.shipId }}</div></el-form-item
+							>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="中文船名"
+								><div>{{ formData.shipNameCn }}</div></el-form-item
+							>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="英文船名"
+								><div>{{ formData.shipNameEn }}</div></el-form-item
+							>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="初次登记号"
+								><div>{{ formData.shipFirstregNo }}</div></el-form-item
+							>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="船舶种类"><div>无</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="船籍港"><div>广州</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="船舶所有人"
+								><div>{{ formData.shipOwner }}</div></el-form-item
+							>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="船舶所有人联系方式"><div>15817883344</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="船舶状态"><div>已注销</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="注销内容"><div>所有权 国籍</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="英文注销内容"><div>OWNERSHIP NATION</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="不注销内容"><div>-</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="注销原因"
+								><div>{{ formData.deletionReason }}</div></el-form-item
+							>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="注销原因详情内容"><div>郭患平卖船给徐铭</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="注销原因详情内容"><div>船东申报船舶的值为人民币580万</div></el-form-item>
+						</el-col>
+					</el-row>
+					<el-row>
+						<el-col :span="8">
+							<el-form-item label="受理人"><div>李玉成</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="初审人"><div>李玉成</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="复审人"><div>李玉成</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="审批人"><div>李玉成</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="受理日期"><div>2025-08-14</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="初审日期"><div>2025-08-14</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="复审日期"><div>2025-08-14</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="操作人员"><div>李雪花</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="操作时间"><div>2025.10.1</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="证书编号"><div>2424132</div></el-form-item>
+						</el-col>
+						<el-col :span="8">
+							<el-form-item label="证书号码"><div>2049395385</div></el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+			</el-collapse-item>
+		</el-collapse>
+	</div>
 </template>
 
 <script setup lang="ts">
-  const activeNames = ref(['1']);
-  const formData = reactive({
-    chineseName: '测试'
-  })
+const activeNames = ref(['1']);
+interface IProps {
+	formData: any;
+}
+const props = withDefaults(defineProps<IProps>(), {
+	formData: {},
+});
 </script>
 
 <style scoped>
 @import '@/styles/collapse.scss';
-</style>
+</style>

+ 21 - 19
src/views/notificationInfoInquiry/shipRegistration/components/shipCancelInfo.vue

@@ -1,27 +1,29 @@
 <template>
-  <div class="ship-info-form">
-    <el-collapse v-model="activeNames">
-      <el-collapse-item name="1">
-        <template #title="{ isActive }">
-          <div class="collapse-title">
-            船舶注销信息
-          </div>
-        </template>
-        <div class="mt20">
-          粤三水货1223(CN20039027136) 于 2025-04-12 15:23:29因 船舶已转让,受让人为黄维持,联系电话13433322,船位信息:珠海斗门,在中华人民共和国佛山海事局进行注销。目前船位在中华人民共和国珠海海事局,下一登记机关为中华人民共和国佛山海事局。
-        </div>
-      </el-collapse-item>
-    </el-collapse>
-  </div>
+	<div class="ship-info-form">
+		<el-collapse v-model="activeNames">
+			<el-collapse-item name="1">
+				<template #title="{ isActive }">
+					<div class="collapse-title">船舶注销信息</div>
+				</template>
+				<div class="mt20">
+					粤三水货1223(CN20039027136) 于 2025-04-12 15:23:29因
+					船舶已转让,受让人为黄维持,联系电话13433322,船位信息:珠海斗门,在中华人民共和国佛山海事局进行注销。目前船位在中华人民共和国珠海海事局,下一登记机关为中华人民共和国佛山海事局。
+				</div>
+			</el-collapse-item>
+		</el-collapse>
+	</div>
 </template>
 
 <script setup lang="ts">
-  const activeNames = ref(['1']);
-  const formData = reactive({
-    chineseName: '测试'
-  })
+const activeNames = ref(['1']);
+interface IProps {
+	formData: any;
+}
+const props = withDefaults(defineProps<IProps>(), {
+	formData: {},
+});
 </script>
 
 <style scoped>
 @import '@/styles/collapse.scss';
-</style>
+</style>

+ 9 - 3
src/views/notificationInfoInquiry/shipRegistration/index.vue

@@ -5,7 +5,7 @@
 				<el-tree-select
 					v-model="scope.value"
 					:data="treeData"
-					node-key="id"
+					node-key="strId"
 					filterable
 					@change="newVal => onMessageChange(scope, newVal)"
 					placeholder="请选择注销机构"
@@ -36,7 +36,8 @@ import searchConfig from './config/search.config';
 import pageSearch from '@/components/components/pageSearch.vue';
 import useSystemStore from '@/store/main';
 const systemStore = useSystemStore();
-import { outTypeList, outDeptTree } from '@/libs/commonMeth';
+import { outTypeList } from '@/libs/commonMeth';
+import useDeptStore from '@/store/modules/dept';
 import { TreeOptions } from '@/types/global';
 import { bj_reason_deregistration, bj_ship_port_registration } from '@/plugins/dictData';
 
@@ -135,8 +136,13 @@ async function searchItem() {
 }
 searchItem();
 const treeData = ref<TreeOptions[]>();
+const deptStore = useDeptStore();
 onMounted(async () => {
-	treeData.value = await outDeptTree();
+	// 加载组织架构
+	if (!deptStore.hasDeptData) {
+		await deptStore.loadDeptDataFromCache();
+	}
+	treeData.value = deptStore.deptData;
 });
 </script>
 

+ 10 - 3
src/views/notificationInfoManage/contactsmanage/components/detail.vue

@@ -87,7 +87,7 @@
 											v-model="formData.unitName"
 											:data="unitOptions"
 											:disabled="dialogLook || item.disabled"
-											node-key="id"
+											node-key="strId"
 											filterable
 											check-strictly="true"
 											:placeholder="item.placeholder"
@@ -171,8 +171,9 @@
 import { reactive, ref } from 'vue';
 import type { FormInstance } from 'element-plus';
 import useSystemStore from '@/store/main';
-import { outTypeList, outDeptTree } from '@/libs/commonMeth';
+import { outTypeList } from '@/libs/commonMeth';
 import { TreeOptions, IOptions } from '@/types/global';
+import useDeptStore from '@/store/modules/dept';
 const bj_msg_recipient = outTypeList('bj_msg_recipient'); //短信接收人
 import dayjs from 'dayjs';
 // 定义props
@@ -216,8 +217,14 @@ const queryUserNameOptions = (query: string) => {
 };
 
 const unitOptions: any = ref<TreeOptions[]>();
+const deptStore = useDeptStore();
 onMounted(async () => {
-	unitOptions.value = await outDeptTree();
+	// 加载组织架构
+	if (!deptStore.hasDeptData) {
+		await deptStore.loadDeptDataFromCache();
+	}
+	console.log(deptStore.deptData);
+	unitOptions.value = deptStore.deptData;
 });
 
 // 定义数据绑定

+ 9 - 4
src/views/notificationInfoManage/contactsmanage/components/treeSelect.vue

@@ -18,7 +18,7 @@
 				show-checkbox
 				check-on-click-node
 				:default-expanded-keys="expandedKeys"
-				node-key="id"
+				node-key="strId"
 				:filter-node-method="filterNode"
 				@check-change="handleCheckChange"
 				class="custom-tree"
@@ -30,8 +30,8 @@
 <script setup lang="ts">
 import { ref, computed } from 'vue';
 import { ElTree } from 'element-plus';
-import { outDeptTree } from '@/libs/commonMeth';
 import { TreeOptions } from '@/types/global';
+import useDeptStore from '@/store/modules/dept';
 
 const emit = defineEmits(['treeCheck']);
 
@@ -49,9 +49,14 @@ const treeRef = ref<InstanceType<typeof ElTree>>();
 
 const treeData = ref<TreeOptions[]>();
 const expandedKeys: any = ref([]);
+const deptStore = useDeptStore();
 onMounted(async () => {
-	treeData.value = await outDeptTree();
-	expandedKeys.value = treeData.value.map(node => node.id);
+	// 加载组织架构
+	if (!deptStore.hasDeptData) {
+		await deptStore.loadDeptDataFromCache();
+	}
+	treeData.value = deptStore.deptData;
+	expandedKeys.value = treeData.value.map(node => node.strId);
 	emit('treeCheck', '');
 });
 

+ 9 - 3
src/views/notificationInfoManage/mattersmanage/components/detail.vue

@@ -92,7 +92,7 @@
 											:data="treeData"
 											:render-after-expand="true"
 											:disabled="dialogLook || item.disabled"
-											node-key="id"
+											node-key="strId"
 											filterable
 											:placeholder="item.placeholder"
 											style="width: 100%"
@@ -181,7 +181,8 @@ import type { FormInstance } from 'element-plus';
 import useSystemStore from '@/store/main';
 import { TreeOptions } from '@/types/global';
 import dayjs from 'dayjs';
-import { outTypeList, outDeptTree } from '@/libs/commonMeth';
+import { outTypeList } from '@/libs/commonMeth';
+import useDeptStore from '@/store/modules/dept';
 import { categoryOnm, bj_notification_type, bj_lssuing_unit } from '@/plugins/dictData';
 const bj_nl_released_status = outTypeList('bj_nl_released_status'); //通报事项清单发布状态
 
@@ -307,8 +308,13 @@ function onPageDetail(urlId: number | [] | string) {
 	systemStore.detailPageDataAction(props.modalConfig.pageName, urlId);
 }
 const treeData = ref<TreeOptions[]>();
+const deptStore = useDeptStore();
 onMounted(async () => {
-	treeData.value = await outDeptTree();
+	// 加载组织架构
+	if (!deptStore.hasDeptData) {
+		await deptStore.loadDeptDataFromCache();
+	}
+	treeData.value = deptStore.deptData;
 });
 defineExpose({
 	setDialogVisible,

+ 9 - 4
src/views/notificationInfoManage/mattersmanage/index.vue

@@ -5,7 +5,7 @@
 				<el-tree-select
 					v-model="scope.value"
 					:data="treeData"
-					node-key="id"
+					node-key="strId"
 					filterable
 					@change="newVal => onMessageChange(scope, newVal)"
 					placeholder="请选择发布单位"
@@ -87,9 +87,9 @@ import detailConfig from './config/detail.config';
 import pageDetail from './components/detail.vue';
 import { changeInventoryStatus } from '@/api/notificationInfoManage/mattersmanage';
 import { categoryOnm, bj_notification_type, bj_lssuing_unit } from '@/plugins/dictData';
-
+import useDeptStore from '@/store/modules/dept';
 import useSystemStore from '@/store/main';
-import { outTypeList, outDeptTree } from '@/libs/commonMeth';
+import { outTypeList } from '@/libs/commonMeth';
 import { TreeOptions } from '@/types/global';
 
 const bj_nl_released_status = outTypeList('bj_nl_released_status'); //通报事项清单发布状态
@@ -196,8 +196,13 @@ async function searchItem() {
 
 searchItem();
 const treeData = ref<TreeOptions[]>();
+const deptStore = useDeptStore();
 onMounted(async () => {
-	treeData.value = await outDeptTree();
+	// 加载组织架构
+	if (!deptStore.hasDeptData) {
+		await deptStore.loadDeptDataFromCache();
+	}
+	treeData.value = deptStore.deptData;
 });
 </script>