zhangchong 4 месяцев назад
Родитель
Сommit
ed362e2fff

+ 11 - 0
src/api/snapshot/config.ts

@@ -14,6 +14,17 @@ export const getIndustryList = (params?: object) => {
 		params
 	});
 }
+/**
+ * @description 新增行业 修改该行业  基础信息
+ * @param {object} params
+ */
+export const baseIndustry = (params?: object) => {
+	return request({
+		url: '/api/v1/Industry/basedata',
+		method: 'get',
+		params,
+	});
+}
 /**
  * @description 新增行业
  * @param {object} data

+ 1 - 0
src/router/backEnd.ts

@@ -68,6 +68,7 @@ const getAppConfigFn = async () => {
 			nationalPlatformWordLimit: result.nationalPlatformWordLimit ?? 500, //  国家政务服务平台的发布整理字数限制
 			handleOpinionWordLimit: result.handleOpinionWordLimit ?? 2000, // 办理意见字数限制
 			callInOpenType: result.callInOpenType ?? 2, // 电话呼入弹单方式  1:接通弹屏  2:振铃弹屏
+			snapshot: result.snapshot ?? false, // 随手拍开关
 		});
 		/*	console.log(
 			`是否开启小休审批${result.isRestApproval},自动话后整理时间${result.talkingDealTime}秒,

+ 1 - 0
src/stores/appConfig.ts

@@ -22,6 +22,7 @@ export const useAppConfig = defineStore('AppConfig', {
 			nationalPlatformWordLimit: 500, // 国家政务服务平台的发布整理字数限制
 			handleOpinionWordLimit:2000,  // 办理意见字数限制
 			callInOpenType: 2, // 电话呼入弹单方式  1:接通弹屏  2:振铃弹屏
+			snapshot:false, // 随手拍开关
 		},
 	}),
 	actions: {

+ 1 - 0
src/types/pinia.d.ts

@@ -132,6 +132,7 @@ declare interface AppConfigState {
 		nationalPlatformWordLimit:string|number; //  国家政务服务平台的发布整理字数限制
 		handleOpinionWordLimit:string|number; //  办理意见字数限制
 		callInOpenType: string|number; // 电话呼入弹单方式  1:接通弹屏  2:振铃弹屏
+		snapshot:boolean; // 随手拍开关
 		fileExt: string;
 		[x: string]: any
 	}

+ 72 - 17
src/views/snapshot/config/industry/components/Industry-add.vue

@@ -36,8 +36,8 @@
 				</el-col>
 				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 					<el-form-item label="审批部门" prop="approveOrgId" :rules="[{ required: false, message: '请选择审批部门', trigger: 'change' }]">
-						<el-select v-model="state.ruleForm.approveOrgId" placeholder="请选择审批部门" class="w100">
-							<el-option v-for="item in state.genderOptions" :key="item.key" :label="item.value" :value="item.key" />
+						<el-select v-model="state.ruleForm.approveOrgId" placeholder="请选择审批部门" class="w100" clearable @change="selectDepartment" filterable>
+							<el-option v-for="item in department" :key="item.dicDataValue" :label="item.dicDataName" :value="item.dicDataValue" />
 						</el-select>
 					</el-form-item>
 				</el-col>
@@ -47,8 +47,8 @@
 						prop="bulletinTypePublicityId"
 						:rules="[{ required: false, message: '请选择关联宣传学习', trigger: 'change' }]"
 					>
-						<el-select v-model="state.ruleForm.bulletinTypePublicityId" placeholder="请选择关联宣传学习" class="w100">
-							<el-option v-for="item in state.genderOptions" :key="item.key" :label="item.value" :value="item.key" />
+						<el-select v-model="state.ruleForm.bulletinTypePublicityId" placeholder="请选择关联宣传学习" class="w100" clearable @change="selectxc" filterable>
+							<el-option v-for="item in bulletinType" :key="item.dicDataValue" :label="item.dicDataName" :value="item.dicDataValue"/>
 						</el-select>
 					</el-form-item>
 				</el-col>
@@ -58,15 +58,15 @@
 						prop="bulletinTypeGuideId"
 						:rules="[{ required: false, message: '请选择关联操作指引', trigger: 'change' }]"
 					>
-						<el-select v-model="state.ruleForm.bulletinTypeGuideId" placeholder="请选择关联操作指引" class="w100">
-							<el-option v-for="item in state.genderOptions" :key="item.key" :label="item.value" :value="item.key" />
+						<el-select v-model="state.ruleForm.bulletinTypeGuideId" placeholder="请选择关联操作指引" class="w100" clearable @change="selectzy" filterable>
+							<el-option v-for="item in bulletinType" :key="item.dicDataValue" :label="item.dicDataName" :value="item.dicDataValue" />
 						</el-select>
 					</el-form-item>
 				</el-col>
 				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 					<el-form-item label="关联受理类型" prop="acceptTypeCode" :rules="[{ required: false, message: '请选择关联受理类型', trigger: 'change' }]">
-						<el-select v-model="state.ruleForm.acceptTypeCode" placeholder="请选择关联受理类型" class="w100">
-							<el-option v-for="item in state.genderOptions" :key="item.key" :label="item.value" :value="item.key" />
+						<el-select v-model="state.ruleForm.acceptTypeCode" placeholder="请选择关联受理类型" class="w100" clearable @change="selectAcceptType" filterable>
+							<el-option v-for="item in acceptType" :key="item.dicDataValue" :label="item.dicDataName" :value="item.dicDataValue" />
 						</el-select>
 					</el-form-item>
 				</el-col>
@@ -81,8 +81,8 @@
 					</el-form-item>
 				</el-col>
 				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="小程序状态" prop="isAffix">
-						<el-switch v-model="state.ruleForm.isAffix" inline-prompt active-text="启用" inactive-text="禁用" />
+					<el-form-item label="小程序状态" prop="IsAppEnable">
+						<el-switch v-model="state.ruleForm.IsAppEnable" inline-prompt active-text="启用" inactive-text="禁用" />
 					</el-form-item>
 				</el-col>
 				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
@@ -147,7 +147,7 @@
 							:on-error="onUploadError"
 						>
 							<img v-if="bgUrl" :src="bgUrl" class="avatar" alt="" />
-							<SvgIcon v-else class="avatar-uploader-icon" name="ele-Plus" size="28px"/>
+							<SvgIcon v-else class="avatar-uploader-icon" name="ele-Plus" size="28px" />
 						</el-upload>
 					</el-form-item>
 				</el-col>
@@ -217,10 +217,10 @@
 </template>
 
 <script setup lang="ts">
-import { computed, defineAsyncComponent, reactive, ref } from 'vue';
+import { computed, defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { ElMessage, FormInstance, UploadFile, UploadFiles } from 'element-plus';
 import { throttle } from '@/utils/tools';
-import { addIndustry } from '@/api/snapshot/config';
+import { addIndustry, baseIndustry } from '@/api/snapshot/config';
 
 const AnnexList = defineAsyncComponent(() => import('@/components/AnnexList/index.vue')); // 附件列表
 
@@ -245,6 +245,7 @@ const state = reactive<any>({
 		acceptType: null, // 关联受理类型名称
 		titleSuffix: null, // 标题追加信息
 		isEnable: true, // 系统状态
+		IsAppEnable:true, // 小程序状态
 		displayOrder: 1, // 排序
 		pageUrl: null, // 页面Url
 		pageCareUrl: null, //Care页面Url
@@ -283,6 +284,42 @@ const openDialog = async () => {
 		console.log(error);
 	}
 };
+// 审批部门
+const selectDepartment = (val: any)=>{
+	if(val){
+		const item = department.value.find((item:any)=>item.dicDataValue === val);
+		state.ruleForm.approveOrgName = item?.dicDataName;
+	}else{
+		state.ruleForm.approveOrgName = null;
+	}
+}
+// 关联宣传学习
+const selectxc = (val:any)=>{
+	if(val){
+		const item = bulletinType.value.find((item:any)=>item.dicDataValue === val);
+		state.ruleForm.bulletinTypePublicityName = item?.dicDataName;
+	}else{
+		state.ruleForm.bulletinTypePublicityName = null;
+	}
+}
+// 关联操作指引
+const selectzy = (val:any)=>{
+	if(val){
+		const item = bulletinType.value.find((item:any)=>item.dicDataValue === val);
+		state.ruleForm.bulletinTypeGuideName = item?.dicDataName;
+	}else{
+		state.ruleForm.bulletinTypeGuideName = null;
+	}
+}
+// 受理类型
+const selectAcceptType = (val:any)=>{
+	if(val){
+		const item = acceptType.value.find((item:any)=>item.dicDataValue === val);
+		state.ruleForm.acceptType = item?.dicDataName;
+	}else{
+		state.ruleForm.acceptType = null;
+	}
+}
 // 上传地址
 const action = computed(() => {
 	return import.meta.env.VITE_API_UPLOAD_URL + '/file/upload?source=hotline';
@@ -293,7 +330,7 @@ const uploadListRefBg = ref<RefType>(); // 上传组件ref
 const updateSuccessBg = (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => {
 	if (response.result.path) {
 		// bgUrl.value = import.meta.env.VITE_API_UPLOAD_URL + response.result.path;
-		bgUrl.value = URL.createObjectURL(uploadFile.raw!)
+		bgUrl.value = URL.createObjectURL(uploadFile.raw!);
 		state.ruleForm.backgroundImgUrl = response.result.id;
 	} else {
 		uploadListRefBg.value.handleRemove(uploadFile);
@@ -306,7 +343,7 @@ const uploadListRefBanner = ref<RefType>();
 const updateSuccessBanner = (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => {
 	if (response.result.path) {
 		// bannerUrl.value = import.meta.env.VITE_API_UPLOAD_URL + response.result.path;
-		bannerUrl.value = URL.createObjectURL(uploadFile.raw!)
+		bannerUrl.value = URL.createObjectURL(uploadFile.raw!);
 		state.ruleForm.bannerImgUrl = response.result.id;
 	} else {
 		uploadListRefBanner.value.handleRemove(uploadFile);
@@ -319,7 +356,7 @@ const uploadListRefCell = ref<RefType>();
 const updateSuccessCell = (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => {
 	if (response.result.path) {
 		// cellImgUrl.value = import.meta.env.VITE_API_UPLOAD_URL + response.result.path;
-		cellImgUrl.value = URL.createObjectURL(uploadFile.raw!)
+		cellImgUrl.value = URL.createObjectURL(uploadFile.raw!);
 		state.ruleForm.cellImgUrl = response.result.id;
 	} else {
 		uploadListRefCell.value.handleRemove(uploadFile);
@@ -332,7 +369,7 @@ const uploadListRefCareCell = ref<RefType>();
 const updateSuccessCareCell = (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => {
 	if (response.result.path) {
 		// careCellImgUrl.value = import.meta.env.VITE_API_UPLOAD_URL + response.result.path;
-		careCellImgUrl.value = URL.createObjectURL(uploadFile.raw!)
+		careCellImgUrl.value = URL.createObjectURL(uploadFile.raw!);
 		state.ruleForm.careCellImgUrl = response.result.id;
 	} else {
 		uploadListRefCareCell.value.handleRemove(uploadFile);
@@ -363,6 +400,7 @@ const close = () => {
 	bannerUrl.value = '';
 	cellImgUrl.value = '';
 	careCellImgUrl.value = '';
+	state.ruleForm.files = [];
 };
 
 const filesFormat = ref<EmptyArrayType>([]); // 附件列表格式化
@@ -391,6 +429,23 @@ const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
 			});
 	});
 }, 300);
+// 获取基础数据
+const acceptType = ref<EmptyArrayType>([]); // 受理类型
+const bulletinType = ref<EmptyArrayType>([]); // 公告类型
+const department = ref<EmptyArrayType>([]); // 审批部门
+const getBaseData = async () => {
+	try {
+		const { result } = await baseIndustry();
+		acceptType.value = result.acceptType;
+		bulletinType.value = result.bulletinType;
+		department.value = result.department;
+	} catch (e) {
+		console.log(e);
+	}
+};
+onMounted(() => {
+	getBaseData();
+});
 // 暴露变量
 defineExpose({
 	openDialog,

+ 41 - 2
src/views/snapshot/config/industry/components/Industry-edit.vue

@@ -176,6 +176,11 @@
 							</el-upload>
 						</el-form-item>
 					</el-col>
+					<el-col>
+						<el-form-item label="附件">
+							<annex-list classify="行业管理上传" v-model="state.ruleForm.files" v-model:format="filesFormat" />
+						</el-form-item>
+					</el-col>
 				</el-row>
 				<el-row v-show="state.activeName === '2'">
 
@@ -191,11 +196,14 @@
 </template>
 
 <script setup lang="ts" name="parameterEdit">
-import { computed, reactive, ref } from 'vue';
+import { computed, defineAsyncComponent, reactive, ref } from 'vue';
 import { ElMessage, FormInstance, UploadFile, UploadFiles } from 'element-plus';
-import { throttle } from '@/utils/tools';
+import { throttle, transformFile } from '@/utils/tools';
 import { modifySettings, setitngsDetail } from '@/api/system/parameter';
 import { getIndustryDetail } from '@/api/snapshot/config';
+
+
+const AnnexList = defineAsyncComponent(() => import('@/components/AnnexList/index.vue')); // 附件列表
 // 定义子组件向父组件传值/事件
 const emit = defineEmits(['updateList']);
 
@@ -254,6 +262,7 @@ const openDialog = async (id: string, isDisabled?: boolean) => {
 	try {
 		const res: any = await getIndustryDetail(id);
 		state.ruleForm = res.result ?? <EmptyObjectType>{};
+		state.ruleForm.files = transformFile(res.result.files);
 		state.isDisabled = isDisabled ?? false;
 		loading.value = false;
 	} catch (error) {
@@ -268,7 +277,9 @@ const closeDialog = () => {
 const close = () => {
 	ruleFormRef.value?.resetFields();
 	ruleFormRef.value?.resetFields();
+	state.ruleForm.files = [];
 };
+const filesFormat = ref<EmptyArrayType>([]); // 附件列表格式化
 // 新增
 const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
@@ -299,3 +310,31 @@ defineExpose({
 	closeDialog,
 });
 </script>
+<style scoped lang="scss">
+.avatar-uploader .avatar {
+	width: 178px;
+	height: 178px;
+	display: block;
+}
+</style>
+<style>
+.avatar-uploader .el-upload {
+	border: 1px dashed var(--el-border-color);
+	border-radius: 6px;
+	cursor: pointer;
+	position: relative;
+	overflow: hidden;
+	transition: var(--el-transition-duration-fast);
+}
+
+.avatar-uploader .el-upload:hover {
+	border-color: var(--el-color-primary);
+}
+.avatar-uploader-icon {
+	font-size: 28px;
+	color: #8c939d;
+	width: 178px;
+	height: 178px;
+	text-align: center;
+}
+</style>