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