diff --git a/sgzb-ui/src/api/claimAndRefund/return.js b/sgzb-ui/src/api/claimAndRefund/return.js index 10966289..fe9ab0ec 100644 --- a/sgzb-ui/src/api/claimAndRefund/return.js +++ b/sgzb-ui/src/api/claimAndRefund/return.js @@ -260,4 +260,13 @@ export function endBackOver(data) { method: 'post', data }) +} + +// 获取退料列表 +export function getUseInfoListApi(data) { + return request({ + url: '/material/backApply/getUseInfoList', + method: 'post', + data: data + }) } \ No newline at end of file diff --git a/sgzb-ui/src/views/claimAndreturn/return/apply/component/addReturn.vue b/sgzb-ui/src/views/claimAndreturn/return/apply/component/addReturn.vue index c2a69582..341a4efe 100644 --- a/sgzb-ui/src/views/claimAndreturn/return/apply/component/addReturn.vue +++ b/sgzb-ui/src/views/claimAndreturn/return/apply/component/addReturn.vue @@ -51,7 +51,7 @@ style="width: 240px" > - + @@ -100,6 +99,7 @@ v-model="queryParams.phone" placeholder="请输入退料人电话" clearable + maxlength="11" style="width: 240px" /> @@ -111,7 +111,6 @@ rows="1" type="textarea" style="width: 240px" - @keyup.enter.native="handleQuery" /> @@ -150,10 +149,36 @@ + + +
+ + 搜索 +
+
+
+ @@ -278,6 +302,7 @@ import { submitBackApplyApi, materialReturnNoteByApply, submitRefuseBackApply, + getUseInfoListApi, } from '@/api/claimAndRefund/return.js' import { mapState } from 'vuex' import { getInfo, h } from '@/api/login' @@ -377,6 +402,9 @@ export default { leaseApplyDetails: [], }, leaseApplyDetails: [], + displayedList: [], + isRestoringSelection: false, + keyword: '', //退料详情单条模板 leaseApplyDetailsItem: { createBy: null, @@ -516,6 +544,69 @@ export default { ...mapState(['user']), }, methods: { + // 获取列表 + async getList(agreementId) { + try { + const res = await getUseInfoListApi({ agreementId }) + if (!res.data) return + this.displayedList = res.data || [] + this.displayedList.forEach((item) => { + item.num = 0 + item.remark = '' + }) + this.leaseApplyDetails = [...this.displayedList] + } catch (error) { + console.log('🚀 ~ error:', error) + } + }, + handleSearch() { + const keyword = this.keyword.trim() + + // 1. 匹配 typeName 或 typeCode + const matched = this.displayedList.filter( + (item) => + item.typeName?.includes(keyword) || + item.typeCode?.includes(keyword), + ) + + // 2. 其他项(未匹配的) + const others = this.displayedList.filter( + (item) => !matched.includes(item), + ) + this.isRestoringSelection = true + + // 3. 重排:匹配项在前 + this.leaseApplyDetails = [...matched, ...others] + + // 5. 表格更新后恢复已勾选项 + this.$nextTick(() => { + this.restoreSelections() + }) + }, + + // ✅ 恢复勾选状态(保持选中项) + restoreSelections() { + this.$refs.tableRef.clearSelection() + // 1. 清除当前所有勾选状态 + this.$refs.tableRef.clearSelection() + + // 2. 只勾选 queryParams.leaseApplyDetails 中存在的行 + this.leaseApplyDetails.forEach((row) => { + const isSelected = this.queryParams.leaseApplyDetails.find( + (sel) => sel.typeId === row.typeId, + ) + console.log('🚀 ~ isSelected:', isSelected) + if (isSelected) { + this.$refs.tableRef.toggleRowSelection(row, true) + } + }) + + // 3. 延迟关闭标志(ElementUI 内部 toggleRowSelection 是异步的) + this.$nextTick(() => { + this.isRestoringSelection = false + }) + }, + // 获取 来往单位 列表数据 async GetUnitData() { this.selDeviceTypeChangeValue = '' @@ -577,7 +668,8 @@ export default { } else { this.queryParams.agreementId = res.data.agreementId this.queryParams.agreementCode = res.data.agreementCode - this.GetDeviceTypeTreeFn(res.data.agreementId) + // this.GetDeviceTypeTreeFn(res.data.agreementId) + this.getList(res.data.agreementId) } } }, @@ -619,8 +711,6 @@ export default { return template }, - /** 查询角色列表 */ - async getList() {}, /** 查询菜单树结构 */ getMenuTreeselect() { menuTreeselect().then((response) => { @@ -694,20 +784,9 @@ export default { }) this.resetForm('form') }, - /** 搜索按钮操作 */ - handleQuery() { - this.queryParams.pageNum = 1 - this.getList() - }, - /** 重置按钮操作 */ - resetQuery() { - this.dateRange = [] - this.resetForm('queryForm') - this.handleQuery() - }, //是否可用勾选框 selectable(row) { - console.log(row) + // console.log(row) if (row.num != 0) { return true } else { @@ -716,6 +795,7 @@ export default { }, // 多选框选中数据 handleSelectionChange(selection) { + if (this.isRestoringSelection) return this.queryParams.leaseApplyDetails = selection }, // 更多操作触发 @@ -734,84 +814,97 @@ export default { /** 保存按钮操作 */ handleAdd() { - this.$refs.queryForm.validate(async (valid) => { - if (!valid) { - return false - } else { - let backApplyInfo = [] - if (this.queryParams.leaseApplyDetails.length == 0) { - this.$message.error('请添加数据') - return - } - // const isRemark = this.queryParams.leaseApplyDetails.some( - // (item) => item.remark == '' || item.remark == undefined - // ); - const isNum = this.queryParams.leaseApplyDetails.some( - (item) => item.num == '' || item.num == undefined, - ) - if (isNum) { - this.$message.error('退料数量不能为空!') - return - } - this.queryParams.createBy = this.user.name - this.queryParams.companyId = this.companyId - this.queryParams.userId = this.userId - this.queryParams.backApplyInfo = { - backPerson: this.queryParams.backPerson, - phone: this.queryParams.phone, - remark: this.queryParams.remark, - backTime: this.queryParams.backTime, - companyId: this.companyId, - } - if (this.rowId != '') { - let params = { - companyId: this.companyId, - createBy: this.createBy, - userId: this.userId, - id: this.rowId, - agreementId: this.queryParams.agreementId, - backApplyInfo: this.queryParams.backApplyInfo, - backApplyDetails: - this.queryParams.leaseApplyDetails, - } - this.submitLoading = true - const res = await submitRefuseBackApply(params) - if (res.code == 200) { - this.$message({ type: 'success', message: res.msg }) - - this.$emit('goBackPage') - // setTimeout(() => { - // this.$tab.closeOpenPage({ - // path: '/claimAndRefund/return/returnApply', - // }) - // }, 1000) - } - - this.submitLoading = false + // 二次确认 + this.$confirm('是否确定保存?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }).then(() => { + this.$refs.queryForm.validate(async (valid) => { + if (!valid) { + return false } else { - let params = { + let backApplyInfo = [] + if (this.queryParams.leaseApplyDetails.length == 0) { + this.$message.error('请添加数据') + return + } + // const isRemark = this.queryParams.leaseApplyDetails.some( + // (item) => item.remark == '' || item.remark == undefined + // ); + const isNum = this.queryParams.leaseApplyDetails.some( + (item) => item.num == '' || item.num == undefined, + ) + if (isNum) { + this.$message.error('退料数量不能为空!') + return + } + this.queryParams.createBy = this.user.name + this.queryParams.companyId = this.companyId + this.queryParams.userId = this.userId + this.queryParams.backApplyInfo = { + backPerson: this.queryParams.backPerson, + phone: this.queryParams.phone, + remark: this.queryParams.remark, + backTime: this.queryParams.backTime, companyId: this.companyId, - createBy: this.createBy, - userId: this.userId, - agreementId: this.queryParams.agreementId, - backApplyInfo: this.queryParams.backApplyInfo, - backApplyDetails: - this.queryParams.leaseApplyDetails, } - this.submitLoading = true - const res = await submitBackApplyApi(params) - if (res.code == 200) { - this.$message({ type: 'success', message: res.msg }) - this.$emit('goBackPage') - // setTimeout(() => { - // this.$tab.closeOpenPage({ - // path: '/claimAndRefund/return/returnApply', - // }) - // }, 1000) + if (this.rowId != '') { + let params = { + companyId: this.companyId, + createBy: this.createBy, + userId: this.userId, + id: this.rowId, + agreementId: this.queryParams.agreementId, + backApplyInfo: this.queryParams.backApplyInfo, + backApplyDetails: + this.queryParams.leaseApplyDetails, + } + this.submitLoading = true + const res = await submitRefuseBackApply(params) + if (res.code == 200) { + this.$message({ + type: 'success', + message: res.msg, + }) + + this.$emit('goBackPage') + setTimeout(() => { + this.$tab.refreshPage({ + path: '/claimAndRefund/return/apply', + }) + }, 300) + } + + this.submitLoading = false + } else { + let params = { + companyId: this.companyId, + createBy: this.createBy, + userId: this.userId, + agreementId: this.queryParams.agreementId, + backApplyInfo: this.queryParams.backApplyInfo, + backApplyDetails: + this.queryParams.leaseApplyDetails, + } + this.submitLoading = true + const res = await submitBackApplyApi(params) + if (res.code == 200) { + this.$message({ + type: 'success', + message: res.msg, + }) + this.$emit('goBackPage') + setTimeout(() => { + this.$tab.refreshPage({ + path: '/claimAndRefund/return/apply', + }) + }, 300) + } + this.submitLoading = false } - this.submitLoading = false } - } + }) }) }, /** 修改按钮操作 */ @@ -850,14 +943,12 @@ export default { updateRole(this.form).then((response) => { this.$modal.msgSuccess('修改成功') this.open = false - this.getList() }) } else { this.form.menuIds = this.getMenuAllCheckedKeys() addRole(this.form).then((response) => { this.$modal.msgSuccess('新增成功') this.open = false - this.getList() }) } } @@ -880,7 +971,7 @@ export default { }, checkNum(row) { - let maxNum = row.useNum + let maxNum = row.totalUseNum if (row.num <= 1) { row.num = 1 } else if (row.num >= maxNum) {