diff --git a/src/utils/util.js b/src/utils/util.js new file mode 100644 index 0000000..92a55f5 --- /dev/null +++ b/src/utils/util.js @@ -0,0 +1,30 @@ +const util = { + deepCopy(obj) { // 深拷贝 + if (obj == null) { + return null; + } + if (typeof obj !== "object") return obj; + let result; + if (Array.isArray(obj)) { + result = []; + obj.forEach(item => { + result.push( + typeof item === "object" && !(item instanceof Date) + ? util.deepCopy(item) + : item + ); + }); + } else { + result = {}; + Object.keys(obj).forEach(key => { + result[key] = + typeof obj[key] === "object" && !(obj[key] instanceof Date) + ? util.deepCopy(obj[key]) + : obj[key]; + }); + } + return result; + } +}; + +export default util; \ No newline at end of file diff --git a/src/views/serve/projectAdd.vue b/src/views/serve/projectAdd.vue index 6a93db1..ddeb736 100644 --- a/src/views/serve/projectAdd.vue +++ b/src/views/serve/projectAdd.vue @@ -143,9 +143,8 @@ @@ -429,34 +428,33 @@ export default { } this.$store.dispatch("setSystemId", this.projectManage.systemId); this.projectManage.state = state; - let tempArr = this.projectJudgmentData.map(i => { - let obj = { - projectId: this.projectId ? this.projectId : "", - judgmentId: i.judgmentId, - score: i.score, - sort: i.sort - }; - return obj; - }); - - let params = { - projectManage: this.projectManage, - projectJudgmentList: tempArr - }; - let { systemId } = this.projectManage; if (this.projectId) { if (systemId == 2 || systemId == 3) { console.log("系统id:", systemId); } else { - // 更新 - this.updateProject(params); + // 先走更新判分点中间表接口,再走更新项目接口 + this.updateProjectJudgment(); } } else { if (systemId == 2 || systemId == 3) { console.log("系统id:", systemId); } else { // 添加 + let tempArr = this.projectJudgmentData.map(i => { + let obj = { + projectId: this.projectId ? this.projectId : "", + judgmentId: i.judgmentId, + score: i.score, + sort: i.sort + }; + return obj; + }); + + let params = { + projectManage: this.projectManage, + projectJudgmentList: tempArr + }; this.addProject(params); } } @@ -495,6 +493,7 @@ export default { item.score = res.data[index]; return item; }); + // this.updateProjectJudgment(); } }); } @@ -613,22 +612,17 @@ export default { if (this.selectedJudgment.length) { this.judgementpointsquery = ""; this.dialogVisible = false; - if (this.projectId) { // 编辑的时候,新增调接口 - this.addProjectJudgment(); - } else { - // 新增时,假添加 - let tempArr = this.selectedJudgment.map(i => { - i.score = 0; - return i; - }); - this.projectJudgmentData = this.projectJudgmentData.concat(tempArr); - this.projectJudgmentData.map((e, i) => { - e.sort = i + 1; - }); - this.$nextTick(() => { - this.$refs.projectJudgementTable.clearSelection(); - }); - } + let tempArr = this.selectedJudgment.map(i => { + i.score = 0; + return i; + }); + this.projectJudgmentData = this.projectJudgmentData.concat(tempArr); + this.projectJudgmentData.map((e, i) => { + e.sort = i + 1; + }); + this.$nextTick(() => { + this.$refs.projectJudgementTable.clearSelection(); + }); } else { this.$message.warning("请选择判分点"); } @@ -642,48 +636,23 @@ export default { // 指定父元素下可被拖拽的子元素 draggable: ".draggable .el-table__row", onEnd({ newIndex, oldIndex }) { - let newItem = _this.projectJudgmentData[newIndex]; - _this.projectJudgmentData[newIndex] = _this.projectJudgmentData[oldIndex]; - _this.projectJudgmentData[oldIndex] = newItem; - // 循环,重新赋值排序赋值 - _this.projectJudgmentData.forEach((e, i) => { - _this.$set(e, "sort", i + 1);// 不更新 - _this.$set(e, "name", e.name + "?"); - _this.$set(e, "name", e.name.slice(0, e.name.length - 1)); // 不更新的解决方案 + // 解决拖拽数据不变化的问题:在改变了数据之后 先用一个变量深拷贝这个数据,然后把这个数据清空,最后再在vue的$nextTick函数里面重新给那个数据赋值 + _this.projectJudgmentData.splice(newIndex, 0, _this.projectJudgmentData.splice(oldIndex, 1)[0]); + let newArray = _this.projectJudgmentData.slice(0); + _this.projectJudgmentData = []; + _this.$nextTick(function () { + newArray.forEach((e, i) => { + _this.$set(e, "sort", i + 1);// 不更新 + _this.$set(e, "name", e.name + "?"); + _this.$set(e, "name", e.name.slice(0, e.name.length - 1)); // 不更新的解决方案 + }); + _this.projectJudgmentData = newArray; }); - // 调修改接口,更新列表 - if (_this.projectId) {// 如果是编辑项目,则调编辑接口 - _this.updateProjectJudgment(); - } - } - }); - }, - // 添加判分点中间表 - addProjectJudgment() { - let param = this.selectedJudgment.map((e, i) => { - let obj = { - judgmentId: e.judgmentId, - projectId: this.projectId || "", - score: 0, - sort: i + 1 - }; - return obj; - }); - console.log(param, "param", this.projectId); - this.$post(this.api.addProjectJudgment, param).then(res => { - // 重新调接口 - console.log("添加成功", res); - if (this.projectId) { // 有项目id,调接口,没有项目id,手动更新 - this.listAgain(); } - }).catch(err => { - console.log(err); }); - }, // 修改判分点中间表 - updateProjectJudgment() { - // 直接传data回去 + async updateProjectJudgment() { let param = this.projectJudgmentData.map((e, i) => { let obj = { judgmentId: e.judgmentId, @@ -694,49 +663,25 @@ export default { }; return obj; }); - this.$post(this.api.updateProjectJudgment, param).then(res => { - - // 重新调接口 - if (this.projectId) { // 有项目id,调接口,没有项目id,手动更新 - this.listAgain(); - } + await this.$post(`${this.api.updateProjectJudgment}?projectId=${this.projectId}`, param).then(res => { + let tempArr = this.projectJudgmentData.map(i => { + let obj = { + projectId: this.projectId ? this.projectId : "", + judgmentId: i.judgmentId, + score: i.score, + sort: i.sort + }; + return obj; + }); + let params = { + projectManage: this.projectManage, + projectJudgmentList: tempArr + }; + this.updateProject(params); }).catch(err => { console.log(err); }); }, - // 批量删除判分点中间表 - deleteProjectJudgment(values) { - if (values && values.length > 0) { - this.$post(this.api.deleteProjectJudgment + "?projectJudgmentIds=" + `${values}`).then(res => { - - // 重新调接口 - if (this.projectId) { // 有项目id,调接口,没有项目id,手动更新 - this.listAgain(); - } - }).catch(err => { - - }); - } - }, - // 重新调接口,专门赋值列表 - listAgain() { - this.listLoading = true - let scrollTop = this.$refs.main.scrollTop - this.projectJudgmentData = [] - this.$refs.main.scrollTop = scrollTop - this.$get(`${this.api.getProjectDetail}?projectId=${this.projectId}`).then(res => { - let { projectManage, projectJudgmentVos } = res; - projectJudgmentVos.map((e,i)=>{ - this.$set(e,'sort',i+1)// 不更新 - this.$set(e,'name',e.name+"?") - this.$set(e,'name',e.name.slice(0,e.name.length-1)) // 不更新的解决方案 - }); - this.projectJudgmentData = projectJudgmentVos; - this.listLoading = false - }).catch(()=>{ - this.listLoading = false - }) - }, handleCacheData() { // 处理缓存数据 this.isToPoint = true; this.$store.dispatch("setProject", {