Ver código fonte

Merge branch 'dev-wangyijie' of ssh://www.yixzm.cn:22022/Dim5-ideal/bj-maritime-dcds-web into dev-wangyijie

wangyijie 1 dia atrás
pai
commit
e2406d9c22

+ 25 - 0
src/views/notificationAnalysis/releaseReceiptStatistics/config/content.detail.config.ts

@@ -0,0 +1,25 @@
+const contentDetailConfig = {
+	pageName: 'ntlo',
+	header: {
+		title: '直属海事局通报明细',
+	},
+	pageListParams: {
+		industryType: '1',
+	},
+	propsList: [
+		{ type: 'index', label: '序号', fixed: true },
+		{ type: 'normal', label: '违法事件编号', sortable: true, prop: 'violationNumber', width: 150 },
+		{ type: 'normal', label: '发布单位', sortable: true, prop: 'releasedUnit', width: 150 },
+		{ type: 'normal', label: '船舶名称', prop: 'chineseVesselName', width: 140 },
+		{ type: 'normal', label: '通报事项类别', prop: 'conmStr', width: 120 },
+		{ type: 'normal', label: '通报事项', prop: 'notificationMatters' },
+		{ type: 'normal', label: '接收单位', sortable: true, prop: 'receivingUnit', width: 150 },
+		{ type: 'normal', label: '通报整体状态', prop: 'releaseStatusStr', width: 140 },
+		{ type: 'normal', label: '是否需要反馈', prop: 'wfirStr', width: 140 },
+		{ type: 'normal', label: '发布日期', prop: 'releasedDate', width: 140 },
+		{ type: 'normal', label: '发布人员', prop: 'createBy', width: 140 },
+		{ type: 'handler', label: '操作', slotName: 'operate', width: 180, fixed: 'right' },
+	],
+};
+
+export default contentDetailConfig;

+ 92 - 0
src/views/notificationAnalysis/releaseReceiptStatistics/config/detail.config.ts

@@ -0,0 +1,92 @@
+const modalConfig = {
+	pageName: 'ntlo',
+	detailTitle: '通报事项详情页',
+	labelWidth: '150px',
+	pageListParams: {
+		industryType: '1',
+	},
+	formItems: [
+		{
+			label: '创建人员',
+			prop: 'addName',
+			type: 'input',
+			disabled: true,
+			placeholder: '请输入创建人员',
+		},
+		{
+			label: '创建人员单位名称',
+			prop: 'addDept',
+			type: 'input',
+			disabled: true,
+			placeholder: '请输入创建人员单位名称',
+		},
+		{
+			label: '创建时间',
+			prop: 'addDate',
+			type: 'input',
+			disabled: true,
+			placeholder: '请输入创建时间',
+		},
+		{
+			label: '单位名称',
+			prop: 'unitName',
+			type: 'unitName',
+			placeholder: '请选择单位名称',
+		},
+		{
+			label: '联络人姓名',
+			prop: 'contactName',
+			type: 'contactName',
+			placeholder: '请输入联络人姓名',
+		},
+		{
+			label: '所属部门',
+			prop: 'belongsDept',
+			type: 'belongsDept',
+			placeholder: '请输入所属部门',
+		},
+		{
+			label: '所属职务',
+			prop: 'position',
+			type: 'position',
+			placeholder: '请输入所属职务',
+		},
+		{
+			label: '微信号',
+			prop: 'wxNumber',
+			type: 'input',
+			placeholder: '请输入微信号',
+		},
+		{
+			label: '联系电话',
+			prop: 'contactNumber',
+			type: 'contactNumber',
+			placeholder: '请输入联系电话',
+		},
+		{
+			label: '固定电话',
+			prop: 'fixedTelephone',
+			type: 'input',
+			placeholder: '请输入固定电话',
+		},
+		{
+			label: '传真号',
+			prop: 'faxNumber',
+			type: 'input',
+			placeholder: '请输入传真号',
+		},
+		{
+			label: '电子邮箱',
+			prop: 'email',
+			type: 'input',
+			placeholder: '请输入电子邮箱',
+		},
+		{
+			label: '短信接收人',
+			prop: 'msgRecipient',
+			type: 'msgRecipient',
+		},
+	],
+};
+
+export default modalConfig;

+ 103 - 0
src/views/notificationAnalysis/releaseReceiptStatistics/config/search.config.detail.ts

@@ -0,0 +1,103 @@
+interface OptionsType {
+	label: string;
+	value: string;
+}
+
+const searchConfig = {
+	pageName: 'historicalData',
+	viewCount: 4,
+	formItems: [
+		{
+			label: '发出单位',
+			prop: 'publishingUnit',
+			type: 'select',
+			options: [] as OptionsType[],
+			span: 6,
+			placeholder: '请选择发出单位',
+		},
+		{
+			label: '接收单位',
+			prop: 'publishingUnit',
+			type: 'select',
+			options: [] as OptionsType[],
+			span: 6,
+			placeholder: '请选输入接收单位',
+		},
+		{
+			label: '通报状态',
+			prop: 'notificationStatus',
+			type: 'select',
+			multiple: false,
+			options: [] as OptionsType[],
+			span: 6,
+			placeholder: '请选择通报状态',
+		},
+		{
+			label: '超期状态',
+			prop: 'overdueStatus',
+			type: 'select',
+			multiple: false,
+			options: [] as OptionsType[],
+			span: 6,
+			placeholder: '请选择超期状态',
+		},
+		{
+			label: '通报类型',
+			prop: 'notificationType',
+			type: 'select',
+			options: [],
+			placeholder: '请选择通报类型',
+			span: 6,
+		},
+		{
+			label: '通报事项类别',
+			prop: 'conm',
+			type: 'select',
+			options: [] as OptionsType[],
+			span: 6,
+			placeholder: '请选择通报事项类别',
+		},
+		{
+			label: '通报事项',
+			prop: 'notificationMatters',
+			type: 'input',
+			span: 6,
+			placeholder: '请输入通报事项',
+		},
+		{
+			label: '通报标准或具体行为列举',
+			prop: 'conm',
+			type: 'select',
+			options: [] as OptionsType[],
+			span: 6,
+			placeholder: '请选择通报标准或具体行为列举',
+		},
+		{
+			label: '是否需要反馈',
+			prop: 'wfir',
+			type: 'select',
+			multiple: false,
+			options: [] as OptionsType[],
+			span: 6,
+			placeholder: '请选择是否需要反馈',
+		},
+		{
+			label: '采取措施',
+			prop: 'takeMeasures',
+			type: 'select',
+			multiple: false,
+			options: [] as OptionsType[],
+			span: 6,
+			placeholder: '请选择采取措施',
+		},
+		{
+			label: '发布日期',
+			prop: 'releasedDates',
+			type: 'date-picker',
+			span: 6,
+			placeholder: '请选择发布日期',
+		},
+	],
+};
+
+export default searchConfig;

+ 143 - 0
src/views/notificationAnalysis/releaseReceiptStatistics/detail.vue

@@ -0,0 +1,143 @@
+<template>
+	<div class="sensitive-words flex">
+		<div class="table-box">
+			<pageSearch ref="searchTableRef" :searchConfig="searchDetailConfig" />
+			<pageContent
+				ref="tableListRef"
+				:total="total"
+				v-loading="loading"
+				:contentConfig="contentDetailConfig"
+				:pageList="tableData"
+			>
+				<template #operate="scope">
+					<el-button type="primary" link @click="handleCheck(scope.row.liaisonId)"> 查看 </el-button>
+				</template>
+			</pageContent>
+			<!-- <pageDetail :modalConfig="detailConfig" ref="modalRef"> </pageDetail> -->
+		</div>
+	</div>
+</template>
+
+<script setup lang="ts">
+import pageContent from '@/components/components/pageContent.vue';
+import contentDetailConfig from '../mattersStatistics/config/content.detail.config';
+import searchDetailConfig from './config/search.config.detail';
+import pageSearch from '@/components/components/pageSearch.vue';
+import pageDetail from './components/detail.detail.vue';
+// import detailConfig from './config/detail.config';
+import useSystemStore from '@/store/main';
+import { useRoute, useRouter } from 'vue-router';
+import {
+	bj_notification_type,
+	overdueStatus,
+	notificationStatus,
+	bj_lssuing_unit,
+	categoryOnm,
+	isFeedback,
+	takeMeasures,
+} from '@/plugins/dictData';
+
+// 使用pinia数据
+const systemStore = useSystemStore();
+const { pageDetailInfo, searchObj } = storeToRefs(systemStore);
+
+const total = ref(0);
+const pageSize = ref([10, 20, 30]);
+const tableData = ref([]);
+const tableListRef: any = ref<InstanceType<typeof pageContent>>();
+
+// --- 路由与Store ---
+const route = useRoute();
+const router = useRouter();
+
+const activeTab = ref('1');
+const searchTableRef: any = ref<InstanceType<typeof pageSearch>>();
+// 操作弹框
+import usePageModal from '@/components/components/hooks/usePageDetails';
+const { modalRef, handleNewDataClick, handleEditDataClick, handleCheckDataClick, handlePageDetail } =
+	usePageModal();
+
+const handleCheck = async (id: string) => {
+	await handlePageDetail(id);
+	await handleCheckDataClick();
+};
+
+onMounted(async () => {});
+
+const loading = ref(false);
+
+// 筛选-状态赋值 bj_notification_status
+async function searchItem() {
+	searchDetailConfig.formItems.forEach(item => {
+		if (item.prop === 'deliveryUnit') {
+			item.options = bj_lssuing_unit;
+		}
+		if (item.prop === 'releasedUnit') {
+			item.options = bj_lssuing_unit;
+		}
+		if (item.prop === 'notificationStatus') {
+			item.options = notificationStatus;
+		}
+		if (item.prop === 'overdueStatus') {
+			item.options = overdueStatus;
+		}
+		if (item.prop === 'notificationType') {
+			item.options = bj_notification_type;
+		}
+		if (item.prop === 'conm') {
+			item.options = categoryOnm;
+		}
+		if (item.prop === 'wfir') {
+			item.options = isFeedback;
+		}
+		if (item.prop === 'takeMeasures') {
+			item.options = takeMeasures;
+		}
+	});
+}
+searchItem();
+</script>
+
+<style scoped lang="scss">
+.sensitive-words {
+	height: calc(100vh - 95px);
+	margin-top: 0;
+	overflow-y: auto;
+	overflow-x: hidden;
+	scrollbar-width: none; /* 可选:隐藏滚动条 */
+	&::-webkit-scrollbar {
+		display: none;
+	}
+}
+
+.status {
+	cursor: pointer;
+	position: relative;
+
+	.status-tip {
+		position: absolute;
+		top: 2px;
+		left: 60px;
+	}
+}
+
+.dialog-tip {
+	text-align: center;
+}
+
+.table-box {
+	width: 55%;
+	display: flex;
+	flex-direction: column;
+	flex: 3;
+}
+
+:deep .el-tabs__item.is-active {
+	color: #fff;
+	background-color: #409eff;
+}
+:deep .el-tabs__header {
+	padding-left: 20px;
+	background-color: #fff;
+}
+</style>