Эх сурвалжийг харах

reactor:知识库类型管理新增适用部门;

zhangchong 10 сар өмнө
parent
commit
8fed65eb0d

+ 21 - 5
src/views/knowledge/config/type/component/Knowledge-type-add.vue

@@ -1,14 +1,14 @@
 <template>
 	<div class="knowledge-type-add-container">
-		<el-dialog title="新增类型" v-model="state.dialogVisible" width="500px" draggable>
+		<el-dialog title="新增类型" v-model="state.dialogVisible" draggable>
 			<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="80px">
-				<el-row :gutter="35">
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+				<el-row :gutter="10">
+					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
 						<el-form-item label="类型名称" prop="name" :rules="[{ required: true, message: '请填写类型名称', trigger: 'blur' }]">
 							<el-input v-model="state.ruleForm.name" placeholder="请填写类型名称" clearable></el-input>
 						</el-form-item>
 					</el-col>
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
 						<el-form-item label="上级类型" prop="parentId" :rules="[{ required: false, message: '请选择上级类型', trigger: 'change' }]">
 							<el-cascader
 								:options="state.treeData"
@@ -24,7 +24,23 @@
 							</el-cascader>
 						</el-form-item>
 					</el-col>
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+          <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+            <el-form-item label="适用部门" prop="parentId" :rules="[{ required: true, message: '请选择适用部门', trigger: 'change' }]">
+              <el-cascader
+                :options="state.treeData"
+                filterable
+                :props="{ checkStrictly: true, value: 'id', label: 'name', emitPath: false, children: 'children' }"
+                placeholder="请选择适用部门"
+                clearable
+                class="w100"
+                v-model="state.ruleForm.parentId"
+                ref="cascadeRef"
+                @change="getKnowledgeList"
+              >
+              </el-cascader>
+            </el-form-item>
+          </el-col>
+					<el-col :xs="24" :sm="24" :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="0" :precision="0" class="w100" placeholder="请填写排序" />
 						</el-form-item>

+ 21 - 5
src/views/knowledge/config/type/component/Knowledge-type-edit.vue

@@ -1,14 +1,14 @@
 <template>
 	<div class="knowledge-type-edit-container">
-		<el-dialog title="修改类型" v-model="state.dialogVisible" width="500px" draggable>
+		<el-dialog title="修改类型" v-model="state.dialogVisible" draggable>
 			<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="80px">
-				<el-row :gutter="35">
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+				<el-row :gutter="10">
+					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
 						<el-form-item label="类型名称" prop="name" :rules="[{ required: true, message: '请填写类型名称', trigger: 'blur' }]">
 							<el-input v-model="state.ruleForm.name" placeholder="请填写类型名称" clearable></el-input>
 						</el-form-item>
 					</el-col>
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
 						<el-form-item label="上级类型" prop="parentId" :rules="[{ required: false, message: '请选择上级类型', trigger: 'change' }]">
 							<el-cascader
 								:options="state.treeData"
@@ -24,7 +24,23 @@
 							</el-cascader>
 						</el-form-item>
 					</el-col>
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+          <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+            <el-form-item label="适用部门" prop="parentId" :rules="[{ required: true, message: '请选择适用部门', trigger: 'change' }]">
+              <el-cascader
+                :options="state.treeData"
+                filterable
+                :props="{ checkStrictly: true, value: 'id', label: 'name', emitPath: false, children: 'children' }"
+                placeholder="请选择适用部门"
+                clearable
+                class="w100"
+                v-model="state.ruleForm.parentId"
+                ref="cascadeRef"
+                @change="getKnowledgeList"
+              >
+              </el-cascader>
+            </el-form-item>
+          </el-col>
+					<el-col :xs="24" :sm="24" :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="0" :precision="0" class="w100" placeholder="请填写排序" />
 						</el-form-item>

+ 2 - 2
src/views/statistics/order/source.vue

@@ -33,13 +33,13 @@
 		</el-card>
 		<el-card shadow="never">
 			<el-row :gutter="20">
-				<el-col :xs="24" :sm="12" :md="18" :lg="18" :xl="18">
+				<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
           <template v-if="dataTable.length">
             <v-chart class="chart" :option="option" :loading="state.loading" autoresize />
           </template>
           <Empty v-else />
 				</el-col>
-				<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
+				<el-col :xs="24" :sm="24" :md="24" :lg="6" :xl="6">
 					<ProTable
 						ref="proTableRef"
 						:columns="columns"

+ 113 - 39
src/views/statistics/order/timeSource.vue

@@ -33,10 +33,10 @@
 		</el-card>
 		<el-card shadow="never">
 			<el-row :gutter="20">
-				<el-col :xs="24" :sm="12" :md="18" :lg="18" :xl="18">
+				<el-col :xs="24" :sm="24" :md="24" :lg="16" :xl="16">
 					<v-chart class="chart" :option="option" :loading="state.loading" autoresize />
 				</el-col>
-				<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
+				<el-col :xs="24" :sm="24" :md="24" :lg="8" :xl="8">
 					<ProTable
 						ref="proTableRef"
 						:columns="columns"
@@ -59,7 +59,6 @@
 <script setup lang="tsx" name="statisticsOrderTimeSource">
 import { onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import { callList, callPeriodBase } from '@/api/statistics/call';
 import { defaultDate, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
 import { orderSource, orderSourceExport } from '@/api/statistics/order';
@@ -69,9 +68,112 @@ import { useRouter } from 'vue-router';
 const proTableRef = ref<RefType>(); // 表格ref
 // 表格配置项
 const columns = ref<any[]>([
-	{ prop: 'source', label: '时间段', align: 'center' },
-	{ prop: 'num', label: '数量', align: 'center' },
-	{ prop: 'rateText', label: '占比', align: 'center' },
+  { prop: 'time', label: '时间段', align: 'center', minWidth: 100, fixed: 'left' },
+  {
+    prop: 'subtotal',
+    label: '小计',
+    align: 'center',
+  },
+  {
+    prop: 'phone',
+    label: '电话',
+    align: 'center',
+  },
+  {
+    prop: 'web',
+    label: '因特网',
+    align: 'center',
+  },
+  {
+    prop: 'rests',
+    label: '其他',
+    align: 'center',
+  },
+  {
+    prop: 'created',
+    label: '自建',
+    align: 'center',
+  },
+  {
+    prop: 'weChat',
+    label: '微信',
+    align: 'center',
+  },
+  {
+    prop: 'app',
+    label: 'APP',
+    align: 'center',
+  },
+  {
+    prop: 'wisdomYB',
+    label: '智慧宜宾',
+    align: 'center',
+    minWidth: 120,
+  },
+  {
+    prop: 'platform',
+    label: '综治平台',
+    align: 'center',
+    minWidth: 120,
+  },
+  {
+    prop: 'platform12328',
+    label: '省12328平台',
+    align: 'center',
+    minWidth: 120,
+  },
+  {
+    prop: 'mayorAndNetizens',
+    label: '市长和网民',
+    align: 'center',
+    minWidth: 120,
+  },
+  {
+    prop: 'mediaYB',
+    label: '宜宾融媒体',
+    align: 'center',
+    minWidth: 120,
+  },
+  {
+    prop: 'platform12345',
+    label: '省12345平台',
+    align: 'center',
+    minWidth: 120,
+  },
+  {
+    prop: 'interaction',
+    label: '省政民互动',
+    minWidth: 120,
+    align: 'center',
+  },
+  {
+    prop: 'serviceYB',
+    label: '宜办事',
+    align: 'center',
+  },
+  {
+    prop: 'cityTransfer',
+    label: '市州互转',
+    align: 'center',
+    minWidth: 120,
+  },
+  {
+    prop: 'platform110',
+    label: '宜宾110平台',
+    align: 'center',
+    minWidth: 120,
+  },
+  {
+    prop: 'noService',
+    label: '办不成事反映窗口',
+    align: 'center',
+    minWidth: 150,
+  },
+  {
+    prop: 'iyb',
+    label: 'i宜宾',
+    align: 'center',
+  },
 ]);
 // 定义变量内容
 const ruleFormRef = ref<RefType>(); // 表单ref
@@ -106,22 +208,7 @@ const queryList = () => {
 	Reflect.deleteProperty(request, 'crTime');
 	orderSource(request)
 		.then((res: any) => {
-			state.tableData = res.result;
-			const legendData = state.tableData
-				.map((item: any) => {
-					return item.source;
-				})
-				.filter((item: any) => item !== '合计');
-			const dataTable = state.tableData
-				.map((item: any) => {
-					return {
-						name: item.source,
-						value: item.num,
-						...item,
-					};
-				})
-				.filter((item: any) => item.name !== '合计');
-			setOption(legendData, dataTable);
+			setOption([], []);
 			state.loading = false;
 		})
 		.catch(() => {
@@ -175,9 +262,9 @@ const setOption = (legendData: string[], data: any) => {
 			],
 		},
 		grid: {
-			left: '3%',
-			right: '4%',
-			bottom: '3%',
+			left: '0',
+			right: '1%',
+			bottom: '0%',
 			top: '20%',
 			containLabel: true,
 		},
@@ -395,7 +482,7 @@ const setOption = (legendData: string[], data: any) => {
 				data: [120, 132, 101, 134, 90, 230, 210, 101, 134, 90, 230, 210, 120, 132, 101, 134, 90, 230, 210, 101, 134, 90, 230, 210],
 			},
 			{
-				name: '计',
+				name: '计',
 				type: 'bar',
 				stack: 'total',
 				data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //默认数据
@@ -414,20 +501,8 @@ const setOption = (legendData: string[], data: any) => {
 		],
 		animationEasing: 'elasticOut',
 		animationDuration: 2000,
-		// animationDelayUpdate: function (idx) {
-		//   return idx * 50 + 1000;
-		// }
 	};
 };
-// 获取基础信息
-const getBaseInfo = async () => {
-	try {
-		const { result } = await callPeriodBase();
-		state.callForwardingSource = result.callForwardingSource ?? [];
-	} catch (e) {
-		console.log(e);
-	}
-};
 // 表格导出
 const exportTable = (val: any, isExportAll = false) => {
 	let request = Other.deepClone(state.queryParams);
@@ -463,7 +538,6 @@ const onDetail = () => {
 	});
 };
 onMounted(() => {
-	getBaseInfo();
 	queryList();
 });
 </script>