diff --git a/src/api/qc/qc.js b/src/api/qc/qc.js
index 346270d..f95b4e1 100644
--- a/src/api/qc/qc.js
+++ b/src/api/qc/qc.js
@@ -27,6 +27,7 @@ export const templateSearch = data => createAPI(`/qms/qc/templateSearch`,'post',
export const templateSave = data => createAPI(`/qms/qc/templateSave`,'post',data)
export const templateUpdate = data => createAPI(`/qms/qc/templateUpdate`,'post',data)
export const templateDelete = data => createAPI(`/qms/qc/templateDelete`,'post',data)
+export const templateCopy = data => createAPI(`/qms/qc/templateCopy`,'post',data)
export const inspectionTypeSearch = data => createAPI(`/qms/qc/inspectionTypeSearch`,'post',data)
export const objectSearch = data => createAPI(`/qms/qc/objectSearch`,'post',data)
export const templateDetailsSearch = data => createAPI(`/qms/qc/templateDetailsSearch`,'post',data)
diff --git a/src/views/modules/qc/qcTemplate.vue b/src/views/modules/qc/qcTemplate.vue
index 8a34136..d370a07 100644
--- a/src/views/modules/qc/qcTemplate.vue
+++ b/src/views/modules/qc/qcTemplate.vue
@@ -83,12 +83,13 @@
fixed="right"
header-align="center"
align="center"
- width="160"
+ width="220"
label="操作">
编辑
- 检验项目
- 删除
+ 复制
+ 检验项目
+ 删除
@@ -192,7 +193,7 @@
-
+
@@ -286,8 +287,13 @@
+
{
+ const copyData = {
+ site: row.site,
+ buNo: row.buNo,
+ templateId: row.templateId,
+ createBy: this.$store.state.user.name,
+ updateBy: this.$store.state.user.name
+ }
+ templateCopy(copyData).then(({data}) => {
+ if (data && data.code === 0) {
+ this.getDataList()
+ const newTemplateId = data.templateId ? `,新模板编码:${data.templateId}` : ''
+ this.$message({
+ message: `操作成功${newTemplateId}`,
+ type: 'success',
+ duration: 1500,
+ onClose: () => {}
+ })
+ } else {
+ this.$alert(data.msg, '错误', {
+ confirmButtonText: '确定'
+ })
+ }
+ })
+ }).catch(() => {
+ })
+ },
+
// 删除
deleteModel (row) {
this.$confirm(`是否删除这个检验模板?`, '提示', {
@@ -1519,10 +1576,38 @@
templateDetailsSearch(this.detailData).then(({data}) => {
this.detailList = data.rows
//this.objectSearch()
+ // 明细数据回填后立刻重排表格,避免弹窗内列宽计算滞后导致操作列留白/错位。
+ this.refreshDetailTableLayout()
})
this.detailModelFlag = true
},
+ /**
+ * @description 检验项目弹窗打开后,强制执行一次表格布局重算
+ * 业务意图:
+ * 1) 解决 el-dialog 场景下 el-table 首次可见时列宽未正确计算的问题;
+ * 2) 保证“操作列”与前置列边界对齐,避免出现右侧空白区或错位。
+ * 失败处理:
+ * - 若 ref 尚未挂载,则静默跳过,不影响弹窗基础功能。
+ */
+ handleDetailDialogOpen () {
+ this.refreshDetailTableLayout()
+ },
+
+ /**
+ * @description 统一封装明细表格重排逻辑
+ * 处理规则:
+ * 1) 使用 $nextTick 等待 DOM 与数据同步完成后再调用 doLayout;
+ * 2) 仅在 detailTable 实例存在时执行,避免空引用异常。
+ */
+ refreshDetailTableLayout () {
+ this.$nextTick(() => {
+ if (this.$refs.detailTable && this.$refs.detailTable.doLayout) {
+ this.$refs.detailTable.doLayout()
+ }
+ })
+ },
+
// 保存模板项目
saveDetail () {
// for (let i = 0; i < this.detailList.length; i++) {
@@ -1665,6 +1750,8 @@
refreshDetailList () {
templateDetailsSearch(this.detailData).then(({data}) => {
this.detailList = data.rows
+ // 快速新增弹窗关闭后,明细表数据会变化,需同步重排列宽避免显示失真。
+ this.refreshDetailTableLayout()
})
},