Selaa lähdekoodia

reactor:工单受理地址可选任意级;新增常用意见管理;

zhangchong 1 vuosi sitten
vanhempi
commit
9151d738ef
30 muutettua tiedostoa jossa 435 lisäystä ja 152 poistoa
  1. 4 13
      src/api/system/commonAdvice.ts
  2. 1 1
      src/components/CommonAdvice/index.vue
  3. 1 1
      src/layout/navBars/breadcrumb/telControl.vue
  4. 5 5
      src/layout/navBars/breadcrumb/userNews.vue
  5. 7 10
      src/views/business/order/accept/index.vue
  6. 1 33
      src/views/business/order/components/Order-expand-form.vue
  7. 0 4
      src/views/business/order/index.vue
  8. 2 2
      src/views/business/publish/component/Order-publish.vue
  9. 0 4
      src/views/knowledge/apply/my/component/Knowledge-my-apply-add.vue
  10. 0 4
      src/views/knowledge/apply/my/component/Knowledge-my-apply-edit.vue
  11. 0 4
      src/views/knowledge/config/type/component/Knowledge-type-add.vue
  12. 0 4
      src/views/knowledge/config/type/component/Knowledge-type-edit.vue
  13. 0 4
      src/views/knowledge/knowledge/component/knowledge-edit.vue
  14. 0 4
      src/views/knowledge/knowledge/draft/index.vue
  15. 118 0
      src/views/system/config/advice/component/Advice-add.vue
  16. 128 0
      src/views/system/config/advice/component/Advice-edit.vue
  17. 157 0
      src/views/system/config/advice/index.vue
  18. 0 4
      src/views/system/config/area/component/Area-add.vue
  19. 0 4
      src/views/system/config/area/component/Area-edit.vue
  20. 9 9
      src/views/system/config/area/index.vue
  21. 0 4
      src/views/system/config/dict/component/Dict-add.vue
  22. 0 4
      src/views/system/config/dict/component/Dict-edit.vue
  23. 0 4
      src/views/system/menu/component/Menu-add.vue
  24. 0 4
      src/views/system/menu/component/Menu-edit.vue
  25. 0 8
      src/views/system/organize/component/Org-add.vue
  26. 0 8
      src/views/system/organize/component/Org-edit.vue
  27. 1 1
      src/views/system/parameter/component/Parameter-add.vue
  28. 1 1
      src/views/system/parameter/component/Parameter-edit.vue
  29. 0 4
      src/views/system/user/component/User-add.vue
  30. 0 4
      src/views/system/user/component/User-edit.vue

+ 4 - 13
src/api/business/commonAdvice.ts → src/api/system/commonAdvice.ts

@@ -13,7 +13,7 @@ import request from '/@/utils/request';
  */
 export const commonList = (params: object) => {
 	return request({
-		url: `/api/v1/CommonP/common-list`,
+		url: `/api/v1/Sys/common-list`,
 		method: 'get',
 		params,
 	});
@@ -24,7 +24,7 @@ export const commonList = (params: object) => {
  */
 export const addCommon = (data: object) => {
 	return request({
-		url: `/api/v1/CommonP/add-common`,
+		url: `/api/v1/Sys/add-common`,
 		method: 'post',
 		data,
 	});
@@ -35,17 +35,8 @@ export const addCommon = (data: object) => {
  */
 export const deleteCommon = (data: object) => {
 	return request({
-		url: `/api/v1/CommonP/del-common`,
+		url: `/api/v1/Sys/del-common`,
 		method: 'post',
 		data,
 	});
-};
-/**
- * @description 获取省市区
- */
-export const treeArea = () => {
-	return request({
-		url: `/api/v1/CommonP/tree-area`,
-		method: 'get',
-	});
-};
+};

+ 1 - 1
src/components/CommonAdvice/index.vue

@@ -88,7 +88,7 @@
 <script setup lang="ts" name="commonAdvice">
 import { reactive, ref, computed } from 'vue';
 import {ElMessage, ElMessageBox, FormInstance} from 'element-plus';
-import { commonList, addCommon, deleteCommon } from '/@/api/business/commonAdvice';
+import { commonList, addCommon, deleteCommon } from '/@/api/system/commonAdvice';
 import { commonEnum } from '/@/utils/constants';
 const emit = defineEmits(['chooseAdvice', 'update:modelValue']);
 const props = defineProps({

+ 1 - 1
src/layout/navBars/breadcrumb/telControl.vue

@@ -402,7 +402,7 @@ import other from '/@/utils/other';
 import mittBus from '/@/utils/mitt';
 import { workflowStepOptions } from '/@/api/system/workflow';
 import { restFlowStart, restFlowDel, restFlowStartWex, getTelList } from '/@/api/public/wex';
-import { commonList } from '/@/api/business/commonAdvice';
+import { commonList } from '/@/api/system/commonAdvice';
 import { auth } from '/@/utils/authFunction';
 import { VoiceInterfaceObject } from '/@/utils/PhoneScript';
 import { WebsocketInterface } from '/@/utils/websocket';

+ 5 - 5
src/layout/navBars/breadcrumb/userNews.vue

@@ -26,13 +26,13 @@ import { reactive } from 'vue';
 const state = reactive({
 	newsList: [
 		{
-			label: '关于版本发布的通知',
-			value: 'vue-next-admin,基于 vue3 + CompositionAPI + typescript + vite + element plus,正式发布时间:2021年02月28日!',
+			label: '标题',
+			value: '内容',
 			time: '2020-12-08',
 		},
 		{
-			label: '关于学习交流的通知',
-			value: 'QQ群号码 665452019,欢迎小伙伴入群学习交流探讨!',
+			label: '标题',
+			value: '内容!',
 			time: '2020-12-08',
 		},
 	],
@@ -43,7 +43,7 @@ const onAllReadClick = () => {
 };
 // 前往通知中心点击
 const onGoToGiteeClick = () => {
-	window.open('https://gitee.com/lyt-top/vue-next-admin');
+
 };
 </script>
 

+ 7 - 10
src/views/business/order/accept/index.vue

@@ -231,11 +231,6 @@
 							<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12" v-if="state.ruleForm.no">
 								<el-form-item label="工单编号"> {{ state.ruleForm.no }} </el-form-item>
 							</el-col>
-							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-								<el-form-item label="工单标题" prop="title" :rules="[{ required: true, message: '请填写工单标题', trigger: 'blur' }]">
-									<el-input v-model="state.ruleForm.title" placeholder="请填写工单标题" clearable> </el-input>
-								</el-form-item>
-							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 								<el-row :gutter="0">
 									<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
@@ -320,17 +315,14 @@
 											<el-cascader
 												:options="state.areaOptions"
 												filterable
-												:props="{ value: 'id', label: 'areaName', emitPath: false }"
+												:props="{ value: 'id', label: 'areaName', emitPath: false, checkStrictly: true }"
 												placeholder="请选择事发地址"
 												class="w100"
 												v-model="state.ruleForm.areaCode"
 												ref="areaRef"
 												@change="changeArea"
+
 											>
-												<template #default="{ node, data }">
-													<span>{{ data.areaName }}</span>
-													<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-												</template>
 											</el-cascader>
 										</el-form-item>
 									</el-col>
@@ -395,6 +387,11 @@
 									</el-select>
 								</el-form-item>
 							</el-col>
+              <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+                <el-form-item label="工单标题" prop="title" :rules="[{ required: true, message: '请填写工单标题', trigger: 'blur' }]">
+                  <el-input v-model="state.ruleForm.title" placeholder="请填写工单标题" clearable> </el-input>
+                </el-form-item>
+              </el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 								<el-form-item label="诉求详情" prop="content" :rules="[{ required: true, message: '请填写诉求详情', trigger: 'blur' }]">
 									<common-advice

+ 1 - 33
src/views/business/order/components/Order-expand-form.vue

@@ -230,10 +230,6 @@
 							ref="marketTypeRef"
 							@change="changeMarketType"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.dicDataName }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>
@@ -249,10 +245,6 @@
 							ref="industryClassifyRef"
 							@change="changeIndustryClassify"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.dicDataName }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>
@@ -271,10 +263,6 @@
 							ref="brandRef"
 							@change="changeBrand"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.dicDataName }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>
@@ -297,10 +285,6 @@
 							ref="objectClassifyRef"
 							@change="changeObjectClassify"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.dicDataName }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>
@@ -322,10 +306,6 @@
 								ref="problemCascadeRef"
 								@change="changeProblems"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.dicDataName }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>
@@ -348,10 +328,6 @@
 								ref="problemCascadeRef"
 								@change="changeProblems"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.dicDataName }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>
@@ -436,10 +412,6 @@
 								ref="eCommercePlatformRef"
 								@change="changeECommercePlatform"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.dicDataName }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>
@@ -457,17 +429,13 @@
 							<el-cascader
 								:options="state.areaOptions"
 								filterable
-								:props="{ value: 'id', label: 'areaName', emitPath: false }"
+								:props="{ value: 'id', label: 'areaName', emitPath: false, checkStrictly: true }"
 								placeholder="请选择经营地址"
 								class="w100"
 								v-model="state.expandForm.businessArea"
 								ref="areaRef"
 								@change="changeArea"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.areaName }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>

+ 0 - 4
src/views/business/order/index.vue

@@ -67,10 +67,6 @@
 									ref="cascadeRef"
 									@change="getKnowledgeList"
 								>
-									<template #default="{ node, data }">
-										<span>{{ data.orgName }}</span>
-										<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-									</template>
 								</el-cascader>
 							</el-form-item>
 						</el-col>

+ 2 - 2
src/views/business/publish/component/Order-publish.vue

@@ -90,12 +90,12 @@
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item label="实际办理部门">
-							{{ state.publishDetail.actualHandleOrgName?.name ?? '' }}
+              <el-checkbox :label="state.publishDetail.actualHandleOrgName">{{ state.publishDetail.actualHandleOrgName?.name }}</el-checkbox>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item label="需回访部门" prop="checkList" :rules="[{ required: false, message: '请选择需回访部门', trigger: 'blur' }]">
-							<el-checkbox-group v-model="state.ruleForm.idNames" :disabled="disabled">
+							<el-checkbox-group v-model="state.ruleForm.idNames" :disabled="disabled" :min="1">
 								<el-checkbox :label="item" v-for="item in idNames" :key="item.id">{{ item.name }}</el-checkbox>
 							</el-checkbox-group>
 						</el-form-item>

+ 0 - 4
src/views/knowledge/apply/my/component/Knowledge-my-apply-add.vue

@@ -50,10 +50,6 @@
 								ref="cascadeRef"
 								@change="getKnowledgeList"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.orgName }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>

+ 0 - 4
src/views/knowledge/apply/my/component/Knowledge-my-apply-edit.vue

@@ -50,10 +50,6 @@
 								ref="cascaderRef"
 								@change="getselKnowledgeList"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.orgName }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>

+ 0 - 4
src/views/knowledge/config/type/component/Knowledge-type-add.vue

@@ -21,10 +21,6 @@
 								ref="cascadeRef"
 								@change="getKnowledgeList"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.name }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>

+ 0 - 4
src/views/knowledge/config/type/component/Knowledge-type-edit.vue

@@ -21,10 +21,6 @@
 								ref="cascadeRef"
 								@change="getKnowledgeList"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.name }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>

+ 0 - 4
src/views/knowledge/knowledge/component/knowledge-edit.vue

@@ -23,10 +23,6 @@
 								ref="cascadeRef"
 								@change="getKnowledgeList"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.name }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>

+ 0 - 4
src/views/knowledge/knowledge/draft/index.vue

@@ -15,10 +15,6 @@
 						class="w100"
 						v-model="state.queryParams.KnowledgeTypeId"
 					>
-						<template #default="{ node, data }">
-							<span>{{ data.name }}</span>
-							<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-						</template>
 					</el-cascader>
 				</el-form-item>
 				<el-form-item label="创建时间" prop="crTime">

+ 118 - 0
src/views/system/config/advice/component/Advice-add.vue

@@ -0,0 +1,118 @@
+<template>
+		<el-dialog v-model="state.dialogVisible" width="50%" draggable title="新增参数">
+			<el-form :model="state.ruleForm" label-width="90px" ref="ruleFormRef">
+				<el-row :gutter="10">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+						<el-form-item label="参数名称" prop="settingName" :rules="[{ required: true, message: '请输入参数名称', trigger: 'blur' }]">
+							<el-input v-model="state.ruleForm.settingName" placeholder="请输入参数名称" clearable></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+						<el-form-item label="参数" prop="code" :rules="[{ required: true, message: '请输入参数', trigger: 'blur' }]">
+							<el-input v-model.trim="state.ruleForm.code" placeholder="请输入参数" clearable></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+						<el-form-item label="参数值" prop="settingValue" :rules="[{ required: true, message: '请输入参数值', trigger: 'blur' }]">
+							<el-input v-model.trim="state.ruleForm.settingValue" placeholder="有多个参数值,请以的|隔开,如1|2|3" clearable></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+						<el-form-item label="排序" prop="sort" :rules="[{ required: false, message: '请输入排序', trigger: 'blur' }]">
+							<el-input-number v-model="state.ruleForm.sort" :min="1" :precision="0" />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+						<el-form-item label="参数说明" prop="remark" :rules="[{ required: false, message: '请输入参数说明', trigger: 'blur' }]">
+							<el-input
+								type="textarea"
+								:autosize="{ minRows: 6, maxRows: 10 }"
+								v-model="state.ruleForm.remark"
+								placeholder="请输入参数说明"
+								clearable
+							></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="onCancel" class="default-button">取 消</el-button>
+					<el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="loading">确 定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+</template>
+
+<script setup lang="ts" name="parameterAdd">
+import { reactive, ref } from 'vue';
+import { ElMessage, FormInstance } from 'element-plus';
+import { throttle } from '/@/utils/tools';
+import { SetingsAdd } from '/@/api/system/parameter';
+// 定义子组件向父组件传值/事件
+const emit = defineEmits(['updateList']);
+
+// 定义变量内容
+const state = reactive<any>({
+	dialogVisible: false,
+	ruleForm: {
+		settingName: '', // 参数名称
+		code: '', // 参数
+		settingValue: '', // 参数值
+		sort: 1, // 排序
+		remark: '', // 参数说明
+	},
+});
+let loading = ref<boolean>(false);  // 加载状态
+// 打开弹窗
+const ruleFormRef = ref<RefType>();
+const openDialog = async () => {
+	ruleFormRef.value?.resetFields();
+	try {
+		state.dialogVisible = true;
+	} catch (error) {
+		console.log(error);
+	}
+};
+// 关闭弹窗
+const closeDialog = () => {
+	state.dialogVisible = false;
+};
+// 取消
+const onCancel = () => {
+	closeDialog();
+};
+// 新增
+const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	await formEl.validate((valid: boolean) => {
+		if (!valid) return;
+		loading.value = true;
+		state.ruleForm.settingValue = state.ruleForm.settingValue.split('|');
+		SetingsAdd(state.ruleForm)
+			.then(() => {
+				ElMessage({
+					message: '操作成功',
+					type: 'success',
+				});
+				emit('updateList');
+			})
+			.catch((error) => {
+				// 新增失败
+				ElMessage({
+					message: `操作失败: ${error.message}`,
+					type: 'error',
+				});
+			})
+			.finally(() => {
+				loading.value = false;
+				closeDialog();
+			});
+	});
+}, 1000);
+// 暴露变量
+defineExpose({
+	openDialog,
+	closeDialog,
+});
+</script>

+ 128 - 0
src/views/system/config/advice/component/Advice-edit.vue

@@ -0,0 +1,128 @@
+<template>
+		<el-dialog v-model="state.dialogVisible" width="50%" draggable :title="dialogTitle">
+			<el-form :model="state.ruleForm" label-width="90px" ref="ruleFormRef">
+				<el-row :gutter="10">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+						<el-form-item label="参数名称" prop="settingName" :rules="[{ required: true, message: '请输入参数名称', trigger: 'blur' }]">
+							<el-input v-model="state.ruleForm.settingName" placeholder="请输入参数名称" clearable :disabled="state.isDisabled"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+						<el-form-item label="参数" prop="code" :rules="[{ required: true, message: '请输入参数', trigger: 'blur' }]">
+							<el-input v-model.trim="state.ruleForm.code" placeholder="请输入参数" clearable :disabled="state.isDisabled"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+						<el-form-item label="参数值" prop="settingValue" :rules="[{ required: true, message: '请输入参数值', trigger: 'blur' }]">
+							<el-input
+								v-model.trim="state.ruleForm.settingValue"
+								placeholder="有多个参数值,请以的|隔开,如1|2|3"
+								clearable
+								:disabled="state.isDisabled"
+							></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+						<el-form-item label="排序" prop="sort" :rules="[{ required: false, message: '请输入排序', trigger: 'blur' }]">
+							<el-input-number v-model="state.ruleForm.sort" :min="1" :precision="0" :disabled="state.isDisabled" />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+						<el-form-item label="参数说明" prop="remark" :rules="[{ required: false, message: '请输入参数说明', trigger: 'blur' }]">
+							<el-input
+								:disabled="state.isDisabled"
+								type="textarea"
+								:autosize="{ minRows: 6, maxRows: 10 }"
+								v-model="state.ruleForm.remark"
+								placeholder="请输入参数说明"
+								clearable
+							></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer v-if="!state.isDisabled">
+				<span class="dialog-footer">
+					<el-button @click="onCancel" class="default-button">取 消</el-button>
+					<el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="loading">确 定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+</template>
+
+<script setup lang="ts" name="parameterEdit">
+import { computed, reactive, ref } from 'vue';
+import { ElMessage, FormInstance } from 'element-plus';
+import { throttle } from '/@/utils/tools';
+import { modifySettings, setitngsDetail } from '/@/api/system/parameter';
+// 定义子组件向父组件传值/事件
+const emit = defineEmits(['updateList']);
+
+// 定义变量内容
+const state = reactive<any>({
+	dialogVisible: false,
+	ruleForm: {
+		settingName: '', // 参数名称
+		code: '', // 参数
+		settingValue: '', // 参数值
+		sort: 1, // 排序
+		remark: '', // 参数说明
+	},
+	isDisabled: false, // 是否禁用
+});
+let loading = ref<boolean>(false);  // 加载状态
+const dialogTitle = computed(() => {
+	return state.isDisabled ? '查看参数' : '编辑参数';
+});
+// 打开弹窗
+const ruleFormRef = ref<RefType>();
+const openDialog = async (id: string, isDisabled?: boolean) => {
+	ruleFormRef.value?.resetFields();
+	try {
+		const res: any = await setitngsDetail(id);
+		state.ruleForm = res.result ?? <EmptyObjectType>{};
+		state.ruleForm.settingValue = state.ruleForm.settingValue?.join('|');
+		state.isDisabled = isDisabled ?? false;
+		state.dialogVisible = true;
+	} catch (error) {
+		console.log(error);
+	}
+};
+// 关闭弹窗
+const closeDialog = () => {
+	state.dialogVisible = false;
+};
+// 取消
+const onCancel = () => {
+	closeDialog();
+};
+// 新增
+const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	await formEl.validate((valid: boolean) => {
+		if (!valid) return;
+		loading.value = true;
+		state.ruleForm.settingValue = state.ruleForm.settingValue.split('|');
+		modifySettings(state.ruleForm)
+			.then(() => {
+				ElMessage({
+					message: '操作成功',
+					type: 'success',
+				});
+				loading.value = false;
+				closeDialog();
+				emit('updateList');
+			})
+			.catch(() => {
+				// 新增失败
+				loading.value = false;
+				closeDialog();
+			});
+	});
+}, 1000);
+// 暴露变量
+defineExpose({
+	openDialog,
+	closeDialog,
+});
+</script>

+ 157 - 0
src/views/system/config/advice/index.vue

@@ -0,0 +1,157 @@
+<template>
+	<div class="system-config-advice-container layout-pd">
+    <el-card shadow="never">
+      <el-form :model="state.queryParams" ref="ruleFormRef" :inline="true" @submit.native.prevent>
+        <el-form-item label="参数名称" prop="settingName">
+          <el-input v-model="state.queryParams.settingName" placeholder="请输入参数名称" clearable @keyup.enter="queryList" />
+        </el-form-item>
+        <el-form-item label="参数" prop="code">
+          <el-input v-model="state.queryParams.code" placeholder="请输入参数" clearable @keyup.enter="queryList" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="queryList" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+          <el-button @click="resetQuery(ruleFormRef)" v-waves class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+        </el-form-item>
+      </el-form>
+    </el-card>
+		<el-card shadow="never">
+			<div class="mb20">
+				<el-button type="primary" @click="addParameter" v-waves v-auth="'system:config:advice:add'">
+					<SvgIcon name="ele-Plus" class="mr5" />新增
+				</el-button>
+			</div>
+			<!-- 表格 -->
+			<el-table :data="state.tableData" v-loading="state.loading">
+				<el-table-column type="index" width="60" label="序号" />
+				<el-table-column prop="settingName" label="参数名称" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="code" label="参数" show-overflow-tooltip width="130"></el-table-column>
+				<el-table-column prop="settingValue" label="参数值" show-overflow-tooltip>
+					<template #default="{ row }">
+						<span v-if="row.settingValue">{{ row.settingValue.join('|') }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="remark" label="参数说明" show-overflow-tooltip width="300"></el-table-column>
+				<el-table-column prop="creator.name" label="创建人" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="afterBegin" label="创建时间" show-overflow-tooltip width="170">
+					<template #default="{ row }">
+						<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="sort" label="排序" show-overflow-tooltip width="60"></el-table-column>
+				<el-table-column label="操作" width="200" fixed="right" align="center">
+					<template #default="{ row }">
+						<el-button link type="primary" @click="updateParameter(row)" v-auth="'system:config:advice:edit'" title="修改参数"> 修改 </el-button>
+						<el-button link type="info" @click="viewParameter(row)" v-auth="'system:config:advice:detail'" title="查看详情"> 查看 </el-button>
+						<!--              <el-button link type="danger" @click="parameterDelete(row)" v-auth="'system:timeLimit:detail'" title="删除参数"> 删除 </el-button>-->
+					</template>
+				</el-table-column>
+				<template #empty>
+					<Empty />
+				</template>
+			</el-table>
+			<!-- 分页 -->
+			<pagination
+				:total="state.total"
+				v-model:page="state.queryParams.PageIndex"
+				v-model:limit="state.queryParams.PageSize"
+				@pagination="queryList"
+			/>
+		</el-card>
+		<!--  常用意见新增  -->
+		<advice-add ref="adviceAddRef" @updateList="queryList" />
+		<!--  常用意见编辑  -->
+		<advice-edit ref="adviceEditRef" @updateList="queryList" />
+	</div>
+</template>
+
+<script lang="ts" setup name="systemConfigAdvice">
+import { reactive, ref, onMounted, defineAsyncComponent } from 'vue';
+import { getSystemSettings } from '/@/api/system/parameter';
+import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
+import { throttle } from '/@/utils/tools';
+import { formatDate } from '/@/utils/formatTime';
+import {auth} from "/@/utils/authFunction";
+
+// 引入组件
+const AdviceAdd = defineAsyncComponent(() => import('/@/views/system/config/advice/component/Advice-add.vue')); // 常用意见新增
+const AdviceEdit = defineAsyncComponent(() => import('/@/views/system/config/advice/component/Advice-edit.vue')); // 常用意见编辑
+
+// 定义变量内容
+const state = reactive<any>({
+	loading: false, // 加载状态
+	queryParams: {
+		// 查询参数
+		PageIndex: 1,
+		PageSize: 10,
+		settingName: '', // 参数名称
+		code: '', // 参数编码
+	},
+	total: 0, // 总条数
+	tableData: [], // 表格数据
+});
+const ruleFormRef = ref<any>(null); // 表单ref
+// 获取参数列表
+const queryList = throttle(() => {
+	state.loading = true;
+  if (!auth('system:config:advice:query')) ElMessage.error('抱歉,您没有权限获取系统参数列表!');
+  else {
+    getSystemSettings(state.queryParams)
+        .then((res) => {
+          state.loading = false;
+          state.tableData = res.result.items ?? [];
+          state.total = res.result.total ?? 0;
+        })
+        .finally(() => {
+          state.loading = false;
+        });
+  }
+}, 1000);
+// 重置表单
+const resetQuery = (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.resetFields();
+	queryList();
+};
+// 新增参数
+const adviceAddRef = ref<RefType>(); // 参数新增
+const addParameter = () => {
+	adviceAddRef.value.openDialog();
+};
+// 修改参数
+const adviceEditRef = ref<RefType>(); // 参数编辑
+const updateParameter = (row: any) => {
+	adviceEditRef.value.openDialog(row.id);
+};
+// 查看详情
+const viewParameter = (row: any) => {
+	adviceEditRef.value.openDialog(row.id, true);
+};
+// 删除参数
+const parameterDelete = (row: any) => {
+	ElMessageBox.confirm(`此操作将删除模板:“${row.name}”,是否继续?`, '提示', {
+		confirmButtonText: '确认',
+		cancelButtonText: '取消',
+		type: 'warning',
+		draggable: true,
+		cancelButtonClass: 'default-button',
+		autofocus: false,
+	})
+		.then(() => {
+			// workflowDelete(row.id).then(() => {
+			ElMessage.success('删除成功');
+			queryList();
+			// });
+		})
+		.catch(() => {});
+};
+// 页面加载时
+onMounted(() => {
+	queryList();
+});
+</script>
+
+<style lang="scss" scoped>
+.system-config-advice-container {
+
+}
+</style>

+ 0 - 4
src/views/system/area/component/Area-add.vue → src/views/system/config/area/component/Area-add.vue

@@ -24,10 +24,6 @@
 								class="w100"
 								v-model="state.ruleForm.parentId"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.areaName }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>

+ 0 - 4
src/views/system/area/component/Area-edit.vue → src/views/system/config/area/component/Area-edit.vue

@@ -24,10 +24,6 @@
                   class="w100"
                   v-model="state.ruleForm.parentId"
               >
-                <template #default="{ node, data }">
-                  <span>{{ data.areaName }}</span>
-                  <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-                </template>
               </el-cascader>
             </el-form-item>
           </el-col>

+ 9 - 9
src/views/system/area/index.vue → src/views/system/config/area/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="system-area-container layout-padding">
+  <div class="system-config-area-container layout-padding">
     <div class="layout-padding-auto layout-padding-view pd20">
       <div class="flex-center-between mb20">
         <el-form :model="state.queryParams" ref="ruleFormRef" :inline="true" @submit.native.prevent>
@@ -21,7 +21,7 @@
           />
             {{ state.isExpand ? '收起' : '展开' }}</el-button
           >
-          <el-button type="primary" @click="onOpenAddArea('')" v-auth="'system:area:add'"> <SvgIcon name="ele-Plus" class="mr5" />新增 </el-button>
+          <el-button type="primary" @click="onOpenAddArea('')" v-auth="'system:config:area:add'"> <SvgIcon name="ele-Plus" class="mr5" />新增 </el-button>
         </div>
       </div>
       <!-- 表格 -->
@@ -47,7 +47,7 @@
     <area-edit ref="areaEditRef" @updateList="queryList" />
   </div>
 </template>
-<script lang="ts" setup name="systemArea">
+<script lang="ts" setup name="systemConfigArea">
 import { defineAsyncComponent, ref, h, reactive, onMounted, watch } from 'vue';
 import {ElButton, ElMessage, ElMessageBox} from 'element-plus';
 import type { FormInstance } from 'element-plus';
@@ -57,8 +57,8 @@ import { throttle } from '/@/utils/tools';
 import other from '/@/utils/other';
 import {treeArea,treeAreaDelete} from '/@/api/system/area';
 // 引入组件
-const AreaAdd = defineAsyncComponent(() => import('/@/views/system/area/component/Area-add.vue'));  // 新增区域
-const AreaEdit = defineAsyncComponent(() => import('/@/views/system/area/component/Area-edit.vue'));  // 编辑区域
+const AreaAdd = defineAsyncComponent(() => import('/@/views/system/config/area/component/Area-add.vue'));  // 新增区域
+const AreaEdit = defineAsyncComponent(() => import('/@/views/system/config/area/component/Area-edit.vue'));  // 编辑区域
 
 // 定义变量内容
 const state = reactive({
@@ -97,7 +97,7 @@ const state = reactive({
       align: 'center',
       cellRenderer: ({ rowData }: any) => {
         return h('span', { class: 'flex' }, [
-          (auth('system:area:edit') && rowData.isCanModify)
+          (auth('system:config:area:edit') && rowData.isCanModify)
               ? h(
                   ElButton,
                   {
@@ -109,7 +109,7 @@ const state = reactive({
                   { default: () => '修改' }
               )
               : '',
-          (auth('system:area:delete') && rowData.isCanModify)
+          (auth('system:config:area:delete') && rowData.isCanModify)
               ? h(
                   ElButton,
                   {
@@ -223,7 +223,7 @@ const onDelArea = (row: any) => {
 };
 // 获取所有部门结构
 const queryList = async () => {
-  if (!auth('system:area:query')) ElMessage.error('抱歉,您没有权限获区域列表!');
+  if (!auth('system:config:area:query')) ElMessage.error('抱歉,您没有权限获区域列表!');
   else {
     state.loading = true;
     try {
@@ -243,7 +243,7 @@ onMounted(() => {
 });
 </script>
 <style lang="scss" scoped>
-.system-area-container {
+.system-config-area-container{
   .table {
     flex: 1;
   }

+ 0 - 4
src/views/system/config/dict/component/Dict-add.vue

@@ -20,10 +20,6 @@
 								class="w100"
 								v-model="state.ruleForm.parentId"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.dicDataName }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>

+ 0 - 4
src/views/system/config/dict/component/Dict-edit.vue

@@ -20,10 +20,6 @@
 								class="w100"
 								v-model="state.ruleForm.parentId"
 							>
-								<template #default="{ node, data }">
-									<span>{{ data.dicDataName }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-								</template>
 							</el-cascader>
 						</el-form-item>
 					</el-col>

+ 0 - 4
src/views/system/menu/component/Menu-add.vue

@@ -13,10 +13,6 @@
 							class="w100"
 							v-model="state.ruleForm.parentId"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.title }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>

+ 0 - 4
src/views/system/menu/component/Menu-edit.vue

@@ -13,10 +13,6 @@
 							class="w100"
 							v-model="state.ruleForm.parentId"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.title }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>

+ 0 - 8
src/views/system/organize/component/Org-add.vue

@@ -27,10 +27,6 @@
 							@change="getKnowledgeList"
 							:disabled="state.disabled"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.orgName }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>
@@ -46,10 +42,6 @@
 							ref="areaRef"
 							@change="changeArea"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.areaName }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>

+ 0 - 8
src/views/system/organize/component/Org-edit.vue

@@ -26,10 +26,6 @@
 							@change="getKnowledgeList"
 							disabled
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.orgName }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>
@@ -45,10 +41,6 @@
 							ref="areaRef"
 							@change="changeArea"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.areaName }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>

+ 1 - 1
src/views/system/parameter/component/Parameter-add.vue

@@ -19,7 +19,7 @@
 					</el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 						<el-form-item label="排序" prop="sort" :rules="[{ required: false, message: '请输入排序', trigger: 'blur' }]">
-							<el-input-number v-model="state.ruleForm.sort" :min="1" :precision="0" />
+							<el-input-number v-model="state.ruleForm.sort" :min="1" :precision="0"/>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">

+ 1 - 1
src/views/system/parameter/component/Parameter-edit.vue

@@ -24,7 +24,7 @@
 					</el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 						<el-form-item label="排序" prop="sort" :rules="[{ required: false, message: '请输入排序', trigger: 'blur' }]">
-							<el-input-number v-model="state.ruleForm.sort" :min="1" :precision="0" :disabled="state.isDisabled" />
+							<el-input-number v-model="state.ruleForm.sort" :min="1" :precision="0" :disabled="state.isDisabled"/>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">

+ 0 - 4
src/views/system/user/component/User-add.vue

@@ -40,10 +40,6 @@
 							ref="cascadeRef"
 							@change="getKnowledgeList"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.orgName }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>

+ 0 - 4
src/views/system/user/component/User-edit.vue

@@ -40,10 +40,6 @@
 							ref="cascadeRef"
 							@change="getKnowledgeList"
 						>
-							<template #default="{ node, data }">
-								<span>{{ data.orgName }}</span>
-								<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
 						</el-cascader>
 					</el-form-item>
 				</el-col>