From 33e9a0acd637a10ce4cb9ecf91765ab71ec8af1f Mon Sep 17 00:00:00 2001
From: yangyin <1850366751@qq.com>
Date: 星期一, 02 九月 2024 13:33:23 +0800
Subject: [PATCH] 修改导入数据

---
 src/views/project/yw/dataManage/graph/GraphIndex.vue |   36 ++++++-----------
 src/views/project/yw/dataManage/graph/AddGraph.vue   |   82 +++++++++++++++++++++++++++--------------
 2 files changed, 67 insertions(+), 51 deletions(-)

diff --git a/src/views/project/yw/dataManage/graph/AddGraph.vue b/src/views/project/yw/dataManage/graph/AddGraph.vue
index e60d30e..1fd5bf0 100644
--- a/src/views/project/yw/dataManage/graph/AddGraph.vue
+++ b/src/views/project/yw/dataManage/graph/AddGraph.vue
@@ -12,7 +12,13 @@
 			<div class="relative transition-[opacity 0.3s]">
 				<div class="set-form-height">
 					<div class="flex flex-col">
-						<el-form :model="state.categoryForm" label-width="120px" label-position="left" :rules="state.categoryFormRules">
+						<el-form
+							:model="state.categoryForm"
+							label-width="120px"
+							label-position="left"
+							:rules="state.categoryFormRules"
+							ref="categoryFormRef"
+						>
 							<el-form-item label="瀵煎叆绫荤洰:">
 								<label>{{ state.categoryForm.ImportCategory }}</label>
 							</el-form-item>
@@ -20,15 +26,20 @@
 								<label>{{ state.categoryForm.CategoryType }}</label>
 							</el-form-item>
 							<el-form-item label="瀵煎叆鏂瑰紡:" prop="importType">
-								<el-upload ref="uploadRef" class="upload-demo w-[530px]" :http-request="uploadFile" drag :accept="state.allowType">
+								<el-upload
+									ref="uploadRef"
+									class="upload-demo w-[530px]"
+									:http-request="uploadFile"
+									drag
+									:accept="state.allowType"
+									:on-remove="handleRemove"
+								>
 									<el-icon class="el-icon--upload"><upload-filled /></el-icon>
 									<div class="el-upload__text">
 										<em>鐐瑰嚮鎴栨嫋鎷戒笂浼犳枃浠�</em>
 									</div>
 									<template #tip>
-										<div class="el-upload__tip">
-											鏀寔鏍煎紡锛歿{ state.allowType }};闄愬埗澶у皬{{ state.size }}M,鏈�澶氫笂浼爗{ state.limit }}涓枃浠�
-										</div>
+										<div class="el-upload__tip">鏀寔鏍煎紡锛歿{ state.allowType }};闄愬埗澶у皬{{ state.size }}M</div>
 									</template>
 								</el-upload>
 							</el-form-item>
@@ -52,7 +63,7 @@
 
 						<div class="set-form-footer">
 							<el-button type="primary" @click="onSubmit">纭� 璁�</el-button>
-							<el-button>鍙栨秷</el-button>
+							<el-button @click="handleExitFlow">鍙栨秷</el-button>
 						</div>
 					</div>
 				</div>
@@ -67,7 +78,13 @@
 import { reactive, ref } from 'vue';
 import { useRoute, useRouter } from 'vue-router';
 import { add_knowledge_file } from '/@/api/knowledge/group';
-
+const uploadFileChange = (rule, value, callback) => {
+	if (fileList.value.length === 0) {
+		return callback('璇烽�夋嫨闇�瑕佷笂浼犵殑鏂囦欢');
+	} else {
+		return true;
+	}
+};
 // 瀹氫箟鍙橀噺鍐呭
 const state = reactive({
 	detailTitle: '瀵煎叆鏁版嵁',
@@ -82,16 +99,11 @@
 	size: 5,
 	demoDesc: '浣跨敤闃块噷浜戞枃妗f櫤鑳借В鏋愭湇鍔℃嵁瑙f瀽鏂囨。锛屾娊鍙栨枃妗e唴瀹广�佸眰绾х粨鏋勭瓑淇℃伅銆�',
 	categoryFormRules: {
-		importType: [
-			{
-				required: true,
-				message: '璇烽�夋嫨鏂囦欢',
-				trigger: 'change',
-			},
-		],
+		importType: [{ required: true, validator: uploadFileChange, trigger: 'change' }],
 	},
 });
 const fileList = ref<UploadUserFile[]>([]);
+const categoryFormRef = ref(null);
 const router = useRouter();
 const route = useRoute();
 //杩斿洖
@@ -102,25 +114,39 @@
 const flag = ref(true);
 const uploadFile = (file: UploadUserFile) => {
 	fileList.value.push(file);
+	categoryFormRef.value.validateField(['importType']); //绉婚櫎涓婁紶鏂囦欢閿欒鎻愮ず!杩欐槸閲嶇偣锛侊紒
 };
-
+// 鏂囦欢鍒楄〃绉婚櫎鏂囦欢鏃剁殑閽╁瓙
+const handleRemove = (file) => {
+	// 4銆佸垹闄ゆ枃浠舵椂鍚屾椂鍒犻櫎姝ゆ枃浠跺凡涓婁紶鐨勬枃浠秈d锛堟鎿嶄綔瑙嗗叿浣撴儏鍐碉級
+	fileList.value.forEach((item, index) => {
+		if (item.file == file.raw) {
+			fileList.value.splice(index, 1);
+		}
+	});
+};
 //纭
 const onSubmit = async () => {
 	let group_id = route.query.group_id;
-	const data = new FormData();
-	fileList.value.forEach((item: any) => {
-		data.append('file', item.file);
+	if (group_id == null || group_id == '' || group_id == undefined) return;
+	categoryFormRef.value.validate(async (valid: boolean) => {
+		if (valid) {
+			const data = new FormData();
+			fileList.value.forEach((item: any) => {
+				data.append('file', item.file);
+			});
+			data.append('group_id', group_id);
+			const res = await add_knowledge_file(data);
+			if (res.json_ok) {
+				ElMessage.success('瀵煎叆鎴愬姛');
+				router.push({
+					name: 'GraphIndex',
+				});
+			} else {
+				ElMessage.error(res.json_msg);
+			}
+		}
 	});
-	data.append('group_id', group_id);
-	const res = await add_knowledge_file(data);
-	if (res.json_ok) {
-		ElMessage.success('瀵煎叆鎴愬姛');
-		router.push({
-			name: 'GraphIndex',
-		});
-	} else {
-		ElMessage.error(res.json_msg);
-	}
 };
 </script>
 <style scoped lang="scss">
diff --git a/src/views/project/yw/dataManage/graph/GraphIndex.vue b/src/views/project/yw/dataManage/graph/GraphIndex.vue
index 01d0182..923b10b 100644
--- a/src/views/project/yw/dataManage/graph/GraphIndex.vue
+++ b/src/views/project/yw/dataManage/graph/GraphIndex.vue
@@ -53,20 +53,20 @@
 
 		<template #header>
 			<!-- 鏌ヨ銆侀噸缃�佹帓搴忋�佸鍔犺〃鍗� -->
-			<el-form :inline="true" :model="formulaQueryParams">
+			<el-form :inline="true" :model="graphQueryParams">
 				<el-form-item label="鍚嶇О" prop="title">
-					<el-input v-model="formulaQueryParams.title" style="width: 226.4px" placeholder="鏂囦欢鍚嶇О" clearable></el-input>
+					<el-input v-model="graphQueryParams.title" style="width: 226.4px" placeholder="鏂囦欢鍚嶇О" clearable></el-input>
 				</el-form-item>
-				<el-form-item>
-					<el-select v-model="formulaQueryParams.Code" autocomplete="off" style="width: 226.4px" clearable>
+				<!-- <el-form-item>
+					<el-select v-model="graphQueryParams.Code" autocomplete="off" style="width: 226.4px" clearable>
 						<el-option v-for="item in Object.keys(analyzeMap)" :key="item" :value="parseInt(item)" :label="analyzeMap[item]">
 						</el-option>
 					</el-select>
-				</el-form-item>
+				</el-form-item> -->
 
 				<el-form-item>
-					<el-button type="primary" icon="ele-Search"> 鏌ヨ </el-button>
-					<el-button icon="ele-Refresh">閲嶇疆 </el-button>
+					<el-button type="primary" icon="ele-Search" @click="handleQueryTable"> 鏌ヨ </el-button>
+					<el-button icon="ele-Refresh" @click="resetQuery">閲嶇疆 </el-button>
 					<el-button icon="ele-Plus" @click="importData()"> 瀵煎叆鏁版嵁 </el-button>
 				</el-form-item>
 			</el-form></template
@@ -82,7 +82,7 @@
 					class="flex-auto"
 					:row-class-name="isFormulaTableDrag ? 'cursor-move' : 'cursor-pointer'"
 					:header-cell-style="{ textAlign: 'center' }"
-					:data="categoryTableData"
+					:data="displayTableData"
 					highlight-current-row
 				>
 					<el-table-column prop="name" label="鏂囦欢鍚嶇О" fixed="left" show-overflow-tooltip align="left" />
@@ -100,19 +100,6 @@
 						</template>
 					</el-table-column>
 				</el-table>
-				<!-- <div class="flex-0">
-					<el-pagination
-						v-model:currentPage="state.tableParams.PageIndex"
-						v-model:page-size="state.tableParams.PageSize"
-						:total="state.tableTotal"
-						:page-sizes="[10, 20, 50, 100]"
-						background
-						@size-change="handleSizeChange"
-						style="margin-bottom: 20px"
-						@current-change="handleCurrentChange"
-						layout="total, sizes, prev, pager, next, jumper"
-					/>
-				</div> -->
 			</div>
 		</template>
 		<!-- 澧炲姞銆佷慨鏀规暟鎹璇濇 -->
@@ -185,9 +172,9 @@
 } from '/@/api/knowledge/group';
 import AHMContainer from '/@/components/layout/AHMContainer.vue';
 import LeftTreeByMgr from '/@/components/tree/leftTreeByMgr.vue';
+import { useQueryTable } from '/@/hooks/useQueryTable';
 import { deepClone } from '/@/utils/other';
 import { convertListToTree } from '/@/utils/util';
-import { analyzeMap } from '/@/views/types/catalog/index';
 const state = reactive({
 	tableParams: {
 		PageIndex: 1,
@@ -277,9 +264,12 @@
 //#endregion
 
 //#region ====================== 鎼滅储琛ㄦ牸锛屽琛ㄦ牸鎺掑簭 ======================
-const formulaQueryParams = ref({
+const graphQueryParams = ref({
 	title: '',
 });
+const { resetQuery, handleQueryTable, displayTableData } = useQueryTable(categoryTableData, graphQueryParams, () => {
+	displayTableData.value = categoryTableData.value;
+});
 //#endregion
 
 //#region ====================== 璺宠浆鏂囨。璇︽儏椤甸潰 init======================

--
Gitblit v1.9.3