You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			443 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Vue
		
	
		
		
			
		
	
	
			443 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Vue
		
	
| 
											3 years ago
										 | <template> | ||
|  |   <div> | ||
|  | 
 | ||
|  | 
 | ||
|  |     <el-card> | ||
|  |       <el-form :inline="true" :model="query" class="query-form" size="mini"> | ||
|  |         <el-row> | ||
|  |           <el-form-item class="query-form-item"> | ||
|  |             <el-input v-model="filterQuery.id" placeholder="记录ID" clearable></el-input> | ||
|  |           </el-form-item> | ||
|  | 
 | ||
|  |           <el-form-item class="query-form-item"> | ||
|  |             <el-select v-model="filterQuery.status" placeholder="处理状态"> | ||
|  |               <el-option label="全部" value=""></el-option> | ||
|  |               <el-option label="等待处理" value="0"></el-option> | ||
|  |               <el-option label="已处理" value="1"></el-option> | ||
|  |               <el-option label="异常" value="2"></el-option> | ||
|  |             </el-select> | ||
|  |           </el-form-item> | ||
|  |           <el-form-item class="query-form-item"> | ||
|  |             <el-date-picker | ||
|  |               v-model="filterQuery.syncTime" | ||
|  |               type="datetime" | ||
|  |               format="yyyy-MM-dd HH:mm:ss" | ||
|  |               value-format="yyyy-MM-dd HH:mm:ss" | ||
|  |               placeholder="请选择同步时间"> | ||
|  |             </el-date-picker> | ||
|  |           </el-form-item> | ||
|  |           <el-form-item> | ||
|  |             <el-button-group style="display:flex;"> | ||
|  |               <el-button type="primary" icon="el-icon-refresh" @click="onReset"></el-button> | ||
|  |               <el-button type="primary" icon="search" @click="getList">查询</el-button> | ||
|  |               <el-button type="primary" icon="search" @click="createScheduleDialog(1)" | ||
|  |                          :disabled="!configParms.orderScanFinish&& !configParms.orderUnReceive&& !configParms.orderUnCheck"> | ||
|  |                 同步单据 | ||
|  |               </el-button> | ||
|  |               <el-button type="primary" icon="search" @click="createScheduleDialog(2)" | ||
|  |                          :disabled="!configParms.typeBus&& !configParms.typeScan&& !configParms.typeThird"> | ||
|  |                 同步单据类型 | ||
|  |               </el-button> | ||
|  |               <el-button type="primary" icon="search" @click="createScheduleDialog(3)" | ||
|  |                          :disabled="!configParms.basicProducts&& !configParms.basicCorp&& | ||
|  |                                         !configParms.basicInv&&!configParms.basicThirdProducts&& !configParms.basicThirdCorp&& !configParms.basicThirdInv | ||
|  |                                 && !configParms.basicThirdBusOrder&& !configParms.sysUser">同步基础信息 | ||
|  |               </el-button> | ||
|  |             </el-button-group> | ||
|  |           </el-form-item> | ||
|  |         </el-row> | ||
|  |       </el-form> | ||
|  | 
 | ||
|  |       <el-table | ||
|  |         v-loading="loading" | ||
|  |         :data="list" | ||
|  |         style="width: 100%" | ||
|  |       > | ||
|  |         <el-table-column label="序号" type="index"></el-table-column> | ||
|  |         <el-table-column | ||
|  |           label="任务ID" | ||
|  |           prop="id" | ||
|  |           width="140" | ||
|  |           show-overflow-tooltip | ||
|  |         ></el-table-column> | ||
|  | 
 | ||
|  |         <el-table-column | ||
|  |           label="任务类型" | ||
|  |           prop="idDatas" | ||
|  |           width="140" | ||
|  |           show-overflow-tooltip | ||
|  |         > | ||
|  |           <template slot-scope="scope"> | ||
|  |             <span>{{ type[scope.row.idDatas] }}</span> | ||
|  |           </template> | ||
|  |         </el-table-column> | ||
|  |         <el-table-column | ||
|  |           label="状态" | ||
|  |           prop="status" | ||
|  |           width="140" | ||
|  |           show-overflow-tooltip | ||
|  |         > | ||
|  |           <template slot-scope="scope"> | ||
|  |             <el-tag | ||
|  |               :type="statusFilterType(scope.row.status)" | ||
|  |             >{{ status[scope.row.status] }} | ||
|  |             </el-tag | ||
|  |             > | ||
|  |           </template> | ||
|  |         </el-table-column> | ||
|  |         <el-table-column | ||
|  |           label="开始时间" | ||
|  |           width="180" | ||
|  |           prop="startTime" | ||
|  |           show-overflow-tooltip | ||
|  |         ></el-table-column> | ||
|  |         <el-table-column | ||
|  |           label="结束时间" | ||
|  |           width="180" | ||
|  |           prop="endTime" | ||
|  |           show-overflow-tooltip | ||
|  |         ></el-table-column> | ||
|  | 
 | ||
|  |         <el-table-column | ||
|  |           label="同步信息" | ||
|  |           prop="remark" | ||
|  |           show-overflow-tooltip | ||
|  |         ></el-table-column> | ||
|  | 
 | ||
|  |         <el-table-column label="操作" fixed="right" width="160"> | ||
|  |           <template slot-scope="scope"> | ||
|  |             <el-button | ||
|  |               type="text" | ||
|  |               size="small" | ||
|  |               @click.native.stop="detailDialog(scope.row.id)" | ||
|  |             >详情 | ||
|  |             </el-button | ||
|  |             > | ||
|  |             <el-button | ||
|  |               type="text" | ||
|  |               size="small" | ||
|  |               @click.native.stop="deleteDialog(scope.row.id)" | ||
|  |             >删除 | ||
|  |             </el-button | ||
|  |             > | ||
|  |           </template> | ||
|  |         </el-table-column> | ||
|  |       </el-table> | ||
|  |       <el-pagination | ||
|  |         :page-size="filterQuery.limit" | ||
|  |         @current-change="handleCurrentChange" | ||
|  |         layout="prev, pager, next" | ||
|  |         :total="total" | ||
|  |         :current-page="filterQuery.page" | ||
|  |       ></el-pagination> | ||
|  |     </el-card> | ||
|  | 
 | ||
|  |     <el-dialog | ||
|  |       title="同步信息" | ||
|  |       width="25%" | ||
|  |       :close-on-click-modal="false" | ||
|  |       :close-on-press-escape="false" | ||
|  |       :visible.sync="syncVisible" | ||
|  |     > | ||
|  |       <span v-text="syncInfo" style="white-space:pre-line;" class="syncInfo"></span> | ||
|  |     </el-dialog> | ||
|  | 
 | ||
|  |   </div> | ||
|  | </template> | ||
|  | 
 | ||
|  | <script> | ||
|  | import {filterLog, deleteLog, createSchedule, findConfig, updateConfig} from "@/api/sync/spsSyncStatus"; | ||
|  | import store from "@/store"; | ||
|  | 
 | ||
|  | export default { | ||
|  |   data() { | ||
|  |     return { | ||
|  |       filterQuery: { | ||
|  |         id: null, | ||
|  |         status: "1", | ||
|  |         page: 1, | ||
|  |         limit: 10, | ||
|  |         syncTime: null, | ||
|  |       }, | ||
|  |       list: [], | ||
|  |       headers: {}, | ||
|  |       detailList: [], | ||
|  |       thirdSys: [], | ||
|  |       thirdSysDetail: null, | ||
|  |       total: 0, | ||
|  |       currentRow: null, | ||
|  |       editQuery: null, | ||
|  |       type: { | ||
|  |         "AutoUploadOrder": "已完成单据", | ||
|  |         "AutoUploadBusType": "单据类型", | ||
|  |         "AutoUploadAllData": "基础信息", | ||
|  |         "AutoDownloadDiProducts": "国家库DI数据" | ||
|  |       }, | ||
|  |       status: { | ||
|  |         0: "等待处理", | ||
|  |         1: "处理完成", | ||
|  |         2: "处理异常", | ||
|  |       }, | ||
|  | 
 | ||
|  |       configQuery: { | ||
|  |         id: null, | ||
|  |         typeBus: null, | ||
|  |         typeScan: null, | ||
|  |         typeThird: null, | ||
|  |         basicProducts: null, | ||
|  |         basicCorp: null, | ||
|  |         basicInv: null, | ||
|  |         basicThirdProducts: null, | ||
|  |         basicThirdCorp: null, | ||
|  |         basicThirdInv: null, | ||
|  |         basicThirdBusOrder: null, | ||
|  |         orderScanFinish: null, | ||
|  |         dbDiProducts: null, | ||
|  |         downstreamEnable: null, | ||
|  |         syncTime: null, | ||
|  |       }, | ||
|  |       uploadFileUrl: null, | ||
|  |       uploadData: { | ||
|  |         thirdSys: "thirdId", | ||
|  |       }, | ||
|  |       templateDlUrl: null, | ||
|  |       checked: false, | ||
|  |       configParms: {}, | ||
|  |       syncInfo: null, | ||
|  |       syncVisible: false | ||
|  |     }; | ||
|  |   }, | ||
|  | 
 | ||
|  |   methods: { | ||
|  |     onReset() { | ||
|  |       this.$router.push({ | ||
|  |         path: "", | ||
|  |       }); | ||
|  |       this.filterQuery = { | ||
|  |         syncTime: null, | ||
|  |         id: null, | ||
|  |         status: null, | ||
|  |         page: 1, | ||
|  |         limit: 20, | ||
|  |       }; | ||
|  |       this.syncTime = null; | ||
|  |       this.getList(); | ||
|  |     }, | ||
|  |     getList() { | ||
|  |       this.loading = true; | ||
|  |       filterLog(this.filterQuery) | ||
|  |         .then((response) => { | ||
|  |           this.loading = false; | ||
|  |           if (response.code == 20000) { | ||
|  |             this.list = response.data.list || []; | ||
|  |             this.total = response.data.total || 0; | ||
|  |           } else { | ||
|  |             this.$message.error(response.message); | ||
|  |           } | ||
|  |         }) | ||
|  |         .catch(() => { | ||
|  |           this.loading = false; | ||
|  |           this.list = []; | ||
|  |           this.total = 0; | ||
|  |         }); | ||
|  |     }, | ||
|  | 
 | ||
|  |     getConfig() { | ||
|  |       findConfig() | ||
|  |         .then((response) => { | ||
|  |           if (response.code == 20000) { | ||
|  |             this.configQuery = response.data; | ||
|  |           } else { | ||
|  |             this.$message.error(response.message); | ||
|  |           } | ||
|  |         }) | ||
|  |         .catch(() => { | ||
|  |           this.loading = false; | ||
|  |           this.list = []; | ||
|  |           this.total = 0; | ||
|  |         }); | ||
|  |     }, | ||
|  |     saveConfig() { | ||
|  |       updateConfig(this.configQuery) | ||
|  |         .then((response) => { | ||
|  |           this.loading = false; | ||
|  |           if (response.code == 20000) { | ||
|  |             this.$message.success("更新成功!"); | ||
|  |             this.getConfig(); | ||
|  |           } | ||
|  |         }) | ||
|  |         .catch(() => { | ||
|  |           this.loading = false; | ||
|  |         }); | ||
|  |     }, | ||
|  | 
 | ||
|  | 
 | ||
|  |     cancelDialog(val) { | ||
|  |       this.udiImportDetailVisible = false; | ||
|  |       this.thrCorpSelectVisible = false; | ||
|  |       if (val) { | ||
|  |         this.getList(); | ||
|  |       } | ||
|  |     } | ||
|  |     , | ||
|  |     handleCurrentChange(val) { | ||
|  |       this.filterQuery.page = val; | ||
|  |       this.getList(); | ||
|  |     } | ||
|  |     , | ||
|  | 
 | ||
|  | 
 | ||
|  |     createScheduleDialog(type) { | ||
|  |       if (this.$isNotBlank(this.filterQuery.syncTime)) { | ||
|  |         this.$confirm("此操作将从" + this.filterQuery.syncTime + "开始同步最新数据,是否继续", "提示", { | ||
|  |           confirmButtonText: "确定", | ||
|  |           cancelButtonText: "取消", | ||
|  |           type: "warning", | ||
|  |         }) | ||
|  |           .then(() => { | ||
|  |             this.createSchedule(type); | ||
|  |           }) | ||
|  |           .catch(() => { | ||
|  |           }); | ||
|  |       } else { | ||
|  |         this.createSchedule(type); | ||
|  |       } | ||
|  | 
 | ||
|  |     }, | ||
|  | 
 | ||
|  |     createSchedule(type) { | ||
|  |       let query = { | ||
|  |         createType: type, | ||
|  |         syncTime: this.filterQuery.syncTime, | ||
|  |       } | ||
|  | 
 | ||
|  |       createSchedule(query) | ||
|  |         .then((response) => { | ||
|  |           this.loading = false; | ||
|  |           if (response.code == 20000) { | ||
|  |             this.$message.success("创建成功!"); | ||
|  |           } else if (response.code == 501) { | ||
|  |             this.$message.warning(response.message); | ||
|  |           } else { | ||
|  |             this.$message.error(response.message); | ||
|  |           } | ||
|  |           this.getList(); | ||
|  |         }) | ||
|  |         .catch(() => { | ||
|  |           this.loading = false; | ||
|  |         }); | ||
|  |     }, | ||
|  |     deleteDialog(rowId) { | ||
|  |       this.$confirm("此操作将删除该任务信息, 是否继续?", "提示", { | ||
|  |         confirmButtonText: "确定", | ||
|  |         cancelButtonText: "取消", | ||
|  |         type: "warning", | ||
|  |       }) | ||
|  |         .then(() => { | ||
|  |           let dQuery = { | ||
|  |             id: rowId, | ||
|  |           }; | ||
|  |           deleteLog(dQuery) | ||
|  |             .then((response) => { | ||
|  |               this.loading = false; | ||
|  |               if (response.code == 20000) { | ||
|  |                 this.$message.success("删除成功"); | ||
|  |               } else { | ||
|  |                 this.$message.error(response.message); | ||
|  |               } | ||
|  |               this.getList(); | ||
|  |             }) | ||
|  |             .catch(() => { | ||
|  |               this.loading = false; | ||
|  |             }); | ||
|  |         }) | ||
|  |         .catch(() => { | ||
|  |         }); | ||
|  |     } | ||
|  |     , | ||
|  |     handleChange(response, files, fileList) { | ||
|  |       console.log(response); | ||
|  |       if (response.code != 20000) { | ||
|  |         this.$message.error(response.message); | ||
|  |         this.getList(); | ||
|  |       } else { | ||
|  |         // console.log(files[0] + "\n" + this.fileList[0] + "\n" + fileList[0]);
 | ||
|  |         this.$message.success(response.data); | ||
|  |         this.getList(); | ||
|  |       } | ||
|  |     } | ||
|  |     , | ||
|  |     statusFilterType(status) { | ||
|  |       const statusMap = { | ||
|  |         0: "warning", | ||
|  |         1: "success", | ||
|  |         2: "danger", | ||
|  |       }; | ||
|  |       return statusMap[status]; | ||
|  |     } | ||
|  |     , | ||
|  |     getSyncConfig() { | ||
|  |       findConfig() | ||
|  |         .then((response) => { | ||
|  |           if (response.code == 20000) { | ||
|  |             this.configParms = response.data; | ||
|  |           } | ||
|  |         }) | ||
|  |         .catch(() => { | ||
|  |         }); | ||
|  |     }, | ||
|  |     detailDialog(id) { | ||
|  |       this.syncVisible = true; | ||
|  |       this.list.forEach(item => { | ||
|  |         if (id === item.id) { | ||
|  |           this.syncInfo = item.remark; | ||
|  |         } | ||
|  |       }) | ||
|  |     } | ||
|  |   }, | ||
|  | 
 | ||
|  |   mounted() { | ||
|  |   }, | ||
|  |   components: {}, | ||
|  |   created() { | ||
|  |     this.headers = { | ||
|  |       ADMIN_ID: store.getters.adminId, | ||
|  |       ADMIN_TOKEN: store.getters.token, | ||
|  |     }; | ||
|  |     this.getSyncConfig(); | ||
|  |     this.getList(); | ||
|  |     this.getConfig(); | ||
|  |   }, | ||
|  | }; | ||
|  | </script> | ||
|  | <style> | ||
|  | .itemTag { | ||
|  |   float: left; | ||
|  |   text-align: left; | ||
|  |   margin-top: 10px; | ||
|  |   width: 100px; | ||
|  | } | ||
|  | 
 | ||
|  | .text { | ||
|  |   font-size: 13px; | ||
|  |   font-family: "Microsoft YaHei"; | ||
|  | } | ||
|  | 
 | ||
|  | .el-row { | ||
|  |   display: flex; | ||
|  |   flex-wrap: wrap; | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | .el-col { | ||
|  |   border-radius: 4px; | ||
|  |   flex-wrap: wrap; | ||
|  | } | ||
|  | 
 | ||
|  | .syncInfo { | ||
|  |   font-size: medium; | ||
|  |   font-family: "Microsoft YaHei"; | ||
|  |   line-height: 25px; | ||
|  | } | ||
|  | </style> |