Compare commits

..

10 Commits

Author SHA1 Message Date
shijing ff2e9a49e0 feat:禅道446折线图:X轴展示产品编号,Y轴展示分检的像位移值 2026-07-24 11:29:49 +08:00
shijing f3a92cb296 fix:光芯生产执行中的检验记录可以撤回并删除 2026-07-24 08:59:53 +08:00
shijing 9c302b215b Merge branch 'master' of http://gitea.xxhhcty.xyz:8080/zcdsj/factory_web 2026-07-23 16:40:07 +08:00
shijing f8e3523568 fix:禅道456 2026-07-23 16:40:05 +08:00
caoqianming a378a39917 fix:工艺画布拉线表单带入残留信息根因修复:禁用VueFlow connectOnClick(单击手柄会挂起待连接状态,之后再点手柄以旧节点为起点触发connect,导致间歇性带入错误输入/输出);预填改为prop挂载时确定;误吸附回起点按拉空白处理;单纯点击手柄不再弹新增表单;节点增减后重新适配视野 2026-07-23 16:06:02 +08:00
caoqianming 494999eb11 Merge branch 'master' of http://gitea.xxhhcty.xyz:8080/zcdsj/factory_web 2026-07-23 15:52:16 +08:00
caoqianming dbd93cb9b9 release: 3.1.2026072315 2026-07-23 15:51:49 +08:00
caoqianming 205768fbc3 fix:工艺路线表单残留问题根治:xtSelect外部清空值时同步清空显示文字(残留主因);画布/右侧新增弹框加key每次打开强制重建实例;route_form编辑时sort不再被count+1覆盖;无routeId不再全量拉辅料
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:50:32 +08:00
shijing ca5d96bd86 Merge branch 'master' of http://gitea.xxhhcty.xyz:8080/zcdsj/factory_web 2026-07-23 15:04:33 +08:00
shijing 1770b10d07 fix:交接扫码时光标丢失问题 2026-07-23 15:04:31 +08:00
21 changed files with 306 additions and 36 deletions

View File

@ -1,3 +1,7 @@
## 3.1.2026072315
- fix: 问题修复
- 工艺路线表单残留问题根治:xtSelect外部清空值时同步清空显示文字(残留主因);画布/右侧新增弹框加key每次打开强制重建实例;route_form编辑时sort不再被count+1覆盖;无routeId不再全量拉辅料 [caoqianming]
## 3.1.2026072314 ## 3.1.2026072314
- fix: 问题修复 - fix: 问题修复

View File

@ -61,6 +61,8 @@
:default-viewport="{ zoom: 0.9 }" :default-viewport="{ zoom: 0.9 }"
:min-zoom="0.2" :min-zoom="0.2"
:max-zoom="2" :max-zoom="2"
:connection-radius="8"
:connect-on-click="false"
:nodes-draggable="true" :nodes-draggable="true"
:nodes-connectable="!readonly" :nodes-connectable="!readonly"
:elements-selectable="true" :elements-selectable="true"
@ -87,12 +89,14 @@
</div> </div>
</div> </div>
<!-- 复用现有单步表单新增/编辑一条 Route --> <!-- 复用现有单步表单新增/编辑一条 Routekey 随每次打开递增强制重建实例预填走 prop 在挂载时即确定 -->
<route-form <route-form
v-if="dialogVisible" v-if="dialogVisible"
:key="dialogSeq"
ref="routeForm" ref="routeForm"
:count="count" :count="count"
:routepack="routepack" :routepack="routepack"
:prefill="formPrefill"
@success="onFormSuccess" @success="onFormSuccess"
@closed="dialogVisible = false" @closed="dialogVisible = false"
></route-form> ></route-form>
@ -141,6 +145,8 @@ export default {
edges: [], edges: [],
count: 0, count: 0,
dialogVisible: false, dialogVisible: false,
dialogSeq: 0,
formPrefill: null,
// //
matType: "30", matType: "30",
matKeyword: "", matKeyword: "",
@ -151,6 +157,7 @@ export default {
// 线 // 线
connectSource: null, connectSource: null,
connectMade: false, connectMade: false,
connectStartPos: null,
// //
hasFitted: false, hasFitted: false,
}; };
@ -282,9 +289,12 @@ export default {
if (pid) routeNodeIds.add(pid); if (pid) routeNodeIds.add(pid);
this.seedNodes = this.seedNodes.filter((s) => !routeNodeIds.has(s.id)); this.seedNodes = this.seedNodes.filter((s) => !routeNodeIds.has(s.id));
const prevCount = this.nodes.length;
this.edges = edges; this.edges = edges;
this.nodes = layoutGraph(routeNodes.concat(this.seedNodes), edges); this.nodes = layoutGraph(routeNodes.concat(this.seedNodes), edges);
this.syncStore(); this.syncStore();
// dagre 线
if (this.hasFitted && this.nodes.length !== prevCount) this.doFit();
}, },
/** 把本地 nodes/edges 命令式同步到 Vue Flow store先节点后边避免边找不到端点 */ /** 把本地 nodes/edges 命令式同步到 Vue Flow store先节点后边避免边找不到端点 */
@ -374,11 +384,18 @@ export default {
onConnectStart(params) { onConnectStart(params) {
this.connectSource = (params && (params.nodeId || params.source)) || null; this.connectSource = (params && (params.nodeId || params.source)) || null;
this.connectMade = false; this.connectMade = false;
const oe = params && params.event;
this.connectStartPos = oe && oe.clientX != null ? { x: oe.clientX, y: oe.clientY } : null;
}, },
/** 连到已有节点:新建一条 Route预填输入/输出物料 */ /** 连到已有节点:新建一条 Route预填输入/输出物料 */
onConnect(conn) { onConnect(conn) {
this.connectMade = true; this.connectMade = true;
if (this.readonly) return; if (this.readonly) return;
//
if (!conn.target || conn.target === conn.source) {
this.openAddFrom(conn.source);
return;
}
const src = this.nodes.find((n) => n.id === conn.source); const src = this.nodes.find((n) => n.id === conn.source);
const tgt = this.nodes.find((n) => n.id === conn.target); const tgt = this.nodes.find((n) => n.id === conn.target);
// id Number() // id Number()
@ -390,16 +407,28 @@ export default {
}); });
}, },
/** 拉线到空白处:新建工序,输出物料留空由后端自动生成下一节点 */ /** 拉线到空白处:新建工序,输出物料留空由后端自动生成下一节点 */
onConnectEnd() { onConnectEnd(evt) {
const src = this.connectSource; const src = this.connectSource;
const made = this.connectMade; const made = this.connectMade;
const startPos = this.connectStartPos;
this.connectSource = null; this.connectSource = null;
this.connectMade = false; this.connectMade = false;
this.connectStartPos = null;
if (this.readonly || made || !src) return; if (this.readonly || made || !src) return;
const node = this.nodes.find((n) => n.id === src); // ()线
const oe = evt && evt.clientX != null ? evt : evt && evt.event;
if (startPos && oe && oe.clientX != null) {
const dist = Math.hypot(oe.clientX - startPos.x, oe.clientY - startPos.y);
if (dist < 8) return;
}
this.openAddFrom(src);
},
/** 以某节点为输入新建工序:只带输入物料,其余字段一律默认值 */
openAddFrom(srcId) {
const node = this.nodes.find((n) => n.id === srcId);
// id // id
this.openForm("add", { this.openForm("add", {
material_in: src, material_in: srcId,
material_in_name: node ? node.data.label : "", material_in_name: node ? node.data.label : "",
}); });
}, },
@ -477,12 +506,13 @@ export default {
this.openForm("add", null); this.openForm("add", null);
}, },
/** 打开单步表单prefill 为 null 表示纯新增 */ /** 打开单步表单prefill 为 null 表示纯新增。预填经 prop 传入,在表单挂载 open 时一次性应用 */
openForm(mode, prefill) { openForm(mode, prefill) {
this.dialogSeq += 1;
this.formPrefill = prefill || null;
this.dialogVisible = true; this.dialogVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
const inst = this.$refs.routeForm.open(mode); this.$refs.routeForm.open(mode);
if (prefill) inst.setData(prefill);
}); });
}, },

View File

@ -123,8 +123,18 @@ onMounted(() => {
const init = () => { const init = () => {
if (props.label) { if (props.label) {
selectLabel.value = props.label; selectLabel.value = props.label;
} else { return;
if (props.multiple) { }
// (/)
const emptyVal =
props.modelValue == null ||
props.modelValue === "" ||
(Array.isArray(props.modelValue) && props.modelValue.length === 0);
if (emptyVal) {
selectLabel.value = "";
return;
}
if (props.multiple) {
if (isFixOptions.value) { if (isFixOptions.value) {
selectLabel.value = props.options selectLabel.value = props.options
.filter((item) => .filter((item) =>
@ -149,7 +159,6 @@ const init = () => {
selectLabel.value = props.obj[props.labelField]; selectLabel.value = props.obj[props.labelField];
} }
} }
}
} }
const isFixOptions = ref(false); const isFixOptions = ref(false);

View File

@ -6,7 +6,7 @@ const DEFAULT_CONFIG = {
DASHBOARD_URL: "/dashboard", DASHBOARD_URL: "/dashboard",
//版本号 //版本号
APP_VER: "3.1.2026072314", APP_VER: "3.1.2026072315",
//内核版本号 //内核版本号
CORE_VER: "1.6.9", CORE_VER: "1.6.9",

View File

@ -305,6 +305,8 @@ export default {
props: { props: {
count: { type: Number, default : 0 }, count: { type: Number, default : 0 },
routepack: { type: String, default: "" }, routepack: { type: String, default: "" },
// (线)setData
prefill: { type: Object, default: null },
}, },
emits: ["success", "closed"], emits: ["success", "closed"],
data() { data() {
@ -397,6 +399,11 @@ export default {
}, },
getroutemats(){ getroutemats(){
let that = this; let that = this;
// routeId(线)
if (!that.routeId) {
that.routemats = [];
return;
}
that.$API.mtm.routemat.list.req({ route: that.routeId,page: 0}).then((res) => { that.$API.mtm.routemat.list.req({ route: that.routeId,page: 0}).then((res) => {
that.routemats = res; that.routemats = res;
}); });
@ -498,9 +505,11 @@ export default {
let that = this; let that = this;
that.mode = mode; that.mode = mode;
that.resetForm(); that.resetForm();
if (that.prefill) that.setData(that.prefill);
that.visible = true; that.visible = true;
that.$nextTick(() => { that.$nextTick(() => {
if(that.count){ // setData sort
if(that.count && mode === "add"){
that.form.sort = that.count+1; that.form.sort = that.count+1;
} }
that.$refs.dialogForm && that.$refs.dialogForm.clearValidate(); that.$refs.dialogForm && that.$refs.dialogForm.clearValidate();

View File

@ -184,6 +184,7 @@
</el-container> </el-container>
<save-dialog <save-dialog
v-if="dialog.save" v-if="dialog.save"
:key="dialogSeq"
ref="saveDialog" ref="saveDialog"
:count = "count" :count = "count"
:routepack="routepack" :routepack="routepack"
@ -217,6 +218,7 @@ export default {
dialog: { dialog: {
save: false, save: false,
}, },
dialogSeq: 0,
fileList:[], fileList:[],
form: { form: {
name: "", name: "",
@ -341,13 +343,14 @@ export default {
table_add() { table_add() {
let that = this; let that = this;
that.count = this.$refs.tables.tableData.length; that.count = this.$refs.tables.tableData.length;
console.log("count",that.count); this.dialogSeq += 1;
this.dialog.save = true; this.dialog.save = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.saveDialog.open("add"); this.$refs.saveDialog.open("add");
}); });
}, },
table_edit(row) { table_edit(row) {
this.dialogSeq += 1;
this.dialog.save = true; this.dialog.save = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.saveDialog.open("edit").setData(row); this.$refs.saveDialog.open("edit").setData(row);

View File

@ -107,13 +107,7 @@
</el-table-column> </el-table-column>
<el-table-column label="总数"> <el-table-column label="总数">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.总切片数" @click="handleClick(scope.row)" style="color:#0052d9;">{{ scope.row.总切片数 }}</span> <span @click="handleClick(scope.row)" style="color:#0052d9;">{{ scope.row.总切片数 }}</span>
<span v-else @click="handleClick(scope.row)" style="color:#0052d9;">{{ scope.row.总生产数 }}</span>
</template>
</el-table-column>
<el-table-column label="合格率" prop="合格率">
<template #default="scope">
<span>{{((scope.row.总切片合格数/scope.row.总切片数)*100).toFixed(2) }}%</span>
</template> </template>
</el-table-column> </el-table-column>
</scTable> </scTable>
@ -137,11 +131,8 @@
<el-table-column label="物料名" prop="物料名" :filters="nameFilters" :filter-method="filterName" filter-placement="bottom-end"> <el-table-column label="物料名" prop="物料名" :filters="nameFilters" :filter-method="filterName" filter-placement="bottom-end">
</el-table-column> </el-table-column>
<el-table-column label="总数" prop="总切片数"> <el-table-column label="总数" prop="总切片数">
</el-table-column>
<el-table-column label="合格率" prop="合格率">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.总切片数>0">{{((scope.row.总切片合格数/scope.row.总切片数)*100).toFixed(2) }}%</span> <span @click="handleClick(scope.row)" style="color:#0052d9;">{{ scope.row.总切片数 }}</span>
<span v-else>0%</span>
</template> </template>
</el-table-column> </el-table-column>
</scTable> </scTable>
@ -149,13 +140,86 @@
</el-container> </el-container>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<el-drawer
v-model="boardVisible"
:title="boardTitle"
size="80%"
direction="rtl"
append-to-body
destroy-on-close
>
<div class="board-drawer-body">
<div class="board-drawer-table">
<el-table :data="boardList" border stripe height="100%" style="width: 100%;">
<el-table-column type="index" label="序号" width="60" />
<el-table-column label="板段号" prop="板段号" />
<el-table-column label="像位移" prop="像位移" />
</el-table>
</div>
<div class="board-drawer-chart">
<div class="board-chart-scroll">
<scEcharts
:option="chartOption"
:style="{ width: chartWidth + 'px', height: '100%' }"
/>
</div>
</div>
</div>
</el-drawer>
</el-main> </el-main>
</el-container> </el-container>
</template> </template>
<script> <script>
import scEcharts from "@/components/scEcharts";
export default { export default {
name: "workerTimes", name: "workerTimes",
components: { scEcharts },
computed: {
chartWidth() {
const perPoint = 22;
const minWidth = 600;
return Math.max(minWidth, (this.boardList.length || 1) * perPoint);
},
chartOption() {
const xs = this.boardList.map(i => i.板段号);
const ys = this.boardList.map(i => (i.像位移 == null ? null : Number(i.像位移)));
return {
tooltip: { trigger: 'axis' },
grid: { left: 50, right: 20, top: 30, bottom: 100 },
xAxis: {
type: 'category',
data: xs,
axisLabel: { rotate: 85, interval: 0, fontSize: 11 }
},
yAxis: { type: 'value', name: '像位移' },
series: [{
name: '像位移',
type: 'line',
data: ys,
connectNulls: false,
symbol: 'circle',
symbolSize: 6,
markLine: {
symbol: 'none',
silent: true,
data: [
{
yAxis: 100,
lineStyle: { color: '#f5a623', width: 1.5, type: 'dashed' },
label: { formatter: '标准 100', position: 'insideEndTop', color: '#f5a623' }
},
{
yAxis: 200,
lineStyle: { color: '#f5222d', width: 1.5, type: 'dashed' },
label: { formatter: '标准 200', position: 'insideEndTop', color: '#f5222d' }
}
]
}
}]
};
}
},
data() { data() {
return { return {
query:{ query:{
@ -175,6 +239,9 @@ export default {
filterNames:[], filterNames:[],
visible:false, visible:false,
userName:'', userName:'',
boardVisible:false,
boardTitle:'',
boardList:[],
code:'lineDay_p', code:'lineDay_p',
activeName:'shengchan', activeName:'shengchan',
apiObj: this.$API.system.user.list, apiObj: this.$API.system.user.list,
@ -310,6 +377,16 @@ export default {
deptChange(){ deptChange(){
this.getData(); this.getData();
}, },
handleClick(row){
let that = this;
let detail = row.板段明细;
if(typeof detail === 'string'){
try{ detail = JSON.parse(detail); }catch(e){ detail = []; }
}
that.boardList = Array.isArray(detail) ? detail : [];
that.boardTitle = (row.工装编号 || row.开台人员姓名 || '') + ' 板段列表';
that.boardVisible = true;
},
handleQuery(){ handleQuery(){
let that = this; let that = this;
that.getData(); that.getData();
@ -319,4 +396,26 @@ export default {
</script> </script>
<style scoped> <style scoped>
.board-drawer-body {
display: flex;
flex-direction: column;
height: 100%;
gap: 8px;
}
.board-drawer-table {
flex: 0 0 60%;
min-height: 0;
overflow: hidden;
}
.board-drawer-chart {
flex: 0 0 40%;
min-height: 0;
overflow: hidden;
}
.board-chart-scroll {
width: 100%;
height: 100%;
overflow-x: auto;
overflow-y: hidden;
}
</style> </style>

View File

@ -0,0 +1,72 @@
<!--
物料仓库合格库存统计
数据来源: BI 数据集 code=materialCount2 (POST api/bi/dataset/{code}/exec)
抽自 factory_web/src/views/inm/good.vue "物料仓库合格库存统计"抽屉内容
-->
<template>
<el-container v-loading="loading">
<el-header style="display: flex; align-items: center;">
<span style="font-weight: 600;">物料仓库合格库存统计</span>
<el-text style="margin-left: 16px;">仓库总数{{ totalCount }}</el-text>
<el-button type="primary" icon="el-icon-refresh" @click="getProductCount" :loading="loading" style="margin-left: auto;">刷新</el-button>
</el-header>
<el-container>
<el-header style="height: 40%;">
<scTable :data="tableData" hideDo hidePagination row-key="material_name" style="width: 100%;">
<el-table-column label="物料名" prop="material_name"></el-table-column>
<el-table-column label="数量" prop="count"></el-table-column>
</scTable>
</el-header>
<el-main>
<scEcharts :option="echartsOptions" height="100%"></scEcharts>
</el-main>
</el-container>
</el-container>
</template>
<script>
import scEcharts from "@/components/scEcharts/index.vue";
export default {
name: "goodStatistic",
components: { scEcharts },
data() {
return {
loading: false,
tableData: [],
totalCount: 0,
echartsOptions: {},
};
},
mounted() {
this.getProductCount();
},
methods: {
getProductCount() {
let that = this;
let query = {
material_types: "10",
select_material: "material.name as material_name",
groupby_material: "material.name",
};
that.loading = true;
that.$API.bi.dataset.exec
.req("materialCount2", { query: query })
.then((res) => {
let data = (that.tableData = res.data2.ds0 || []);
let totalCount = 0;
data.forEach((item) => {
totalCount += Number(item.count) || 0;
});
that.totalCount = totalCount;
if (res.echart_options) {
that.echartsOptions = JSON.parse(res.echart_options);
}
})
.finally(() => {
that.loading = false;
});
},
},
};
</script>

View File

@ -1,7 +1,7 @@
<!-- <!--
物料保障车间-仓库数量汇总表 物料保障车间-仓库数量汇总表
数据来源: BI 数据集 code=wh_material_summary (POST api/bi/dataset/{code}/exec) 数据来源: BI 数据集 code=wh_material_summary (POST api/bi/dataset/{code}/exec)
返回 res.data2.ds0~ds3, 分组维度为 material.model(型号) 返回 res.data2.ds0~ds4, 分组维度为 material.model(型号)
菜单/路由由后端下发, component statistics/material_wh_summary 菜单/路由由后端下发, component statistics/material_wh_summary
--> -->
<template> <template>
@ -25,15 +25,13 @@
<el-main id="elMain" v-loading="loading"> <el-main id="elMain" v-loading="loading">
<!-- KPI 概览 --> <!-- KPI 概览 -->
<el-row :gutter="15" style="margin-bottom: 15px;"> <div class="kpi-grid">
<el-col :md="6" :sm="12" v-for="k in kpiList" :key="k.label"> <el-card v-for="k in kpiList" :key="k.label" shadow="hover" class="kpi-card" :style="{ borderLeft: '4px solid ' + k.color }">
<el-card shadow="hover" class="kpi-card" :style="{ borderLeft: '4px solid ' + k.color }"> <div class="kpi-label">{{ k.label }} · 现有库存合计</div>
<div class="kpi-label">{{ k.label }} · 现有库存合计</div> <div class="kpi-value" :style="{ color: k.color }">{{ fmtNum(k.total) }}</div>
<div class="kpi-value" :style="{ color: k.color }">{{ fmtNum(k.total) }}</div> <div class="kpi-sub">覆盖 {{ k.count }} 个型号</div>
<div class="kpi-sub">覆盖 {{ k.count }} 个型号</div> </el-card>
</el-card> </div>
</el-col>
</el-row>
<!-- 库存量对比图 --> <!-- 库存量对比图 -->
<el-card shadow="never" style="margin-bottom: 15px;"> <el-card shadow="never" style="margin-bottom: 15px;">
@ -103,6 +101,18 @@
</el-table> </el-table>
</el-card> </el-card>
</el-col> </el-col>
<el-col :lg="12">
<el-card shadow="never" class="rpt-card">
<template #header><b>半成品库周数据</b><span class="hd-tip">(入库=采购入库+生产入库 / 出库=生产领料)</span></template>
<el-table :data="ds4" border stripe size="small" show-summary :summary-method="sumRow">
<el-table-column label="型号" prop="型号" width="110" />
<el-table-column label="入库数据" prop="入库数据" align="right" :formatter="numCell" />
<el-table-column label="出库数据" prop="出库数据" align="right" :formatter="numCell" />
<el-table-column label="现有库存" prop="现有库存" align="right" :formatter="numCell" />
</el-table>
</el-card>
</el-col>
</el-row> </el-row>
<!-- 设置安全库存上下限 --> <!-- 设置安全库存上下限 -->
@ -136,6 +146,7 @@ import scEcharts from "@/components/scEcharts/index.vue";
const BLOCKS = [ const BLOCKS = [
{ key: "原料", color: "#409EFF" }, { key: "原料", color: "#409EFF" },
{ key: "成品", color: "#67C23A" }, { key: "成品", color: "#67C23A" },
{ key: "半成品", color: "#B37FEB" },
{ key: "白玻", color: "#E6A23C" }, { key: "白玻", color: "#E6A23C" },
{ key: "黑玻", color: "#909399" }, { key: "黑玻", color: "#909399" },
]; ];
@ -151,6 +162,7 @@ export default {
ds1: [], ds1: [],
ds2: [], ds2: [],
ds3: [], ds3: [],
ds4: [],
safeDialog: { safeDialog: {
visible: false, visible: false,
saving: false, saving: false,
@ -267,6 +279,7 @@ export default {
this.ds1 = d.ds1 || []; this.ds1 = d.ds1 || [];
this.ds2 = d.ds2 || []; this.ds2 = d.ds2 || [];
this.ds3 = d.ds3 || []; this.ds3 = d.ds3 || [];
this.ds4 = d.ds4 || [];
}) })
.finally(() => { .finally(() => {
this.loading = false; this.loading = false;
@ -335,8 +348,19 @@ export default {
</script> </script>
<style scoped> <style scoped>
.kpi-grid {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 15px;
margin-bottom: 15px;
}
@media (max-width: 992px) {
.kpi-grid {
grid-template-columns: repeat(2, 1fr);
}
}
.kpi-card { .kpi-card {
margin-bottom: 8px; margin-bottom: 0;
} }
.kpi-label { .kpi-label {
color: #909399; color: #909399;

View File

@ -915,6 +915,7 @@ export default {
this.imputDisable = true; this.imputDisable = true;
await this.getInputText(data); await this.getInputText(data);
this.imputDisable = false; this.imputDisable = false;
await this.$nextTick();
this.$refs.codeInput.focus(); this.$refs.codeInput.focus();
}, },

View File

@ -87,12 +87,21 @@
> >
<template #default="scope"> <template #default="scope">
<el-button <el-button
v-if="scope.row.submit_time!==null"
link size="small" link size="small"
@click="check_revert(scope.row)" @click="check_revert(scope.row)"
v-auth="'ftestwork.create'" v-auth="'ftestwork.create'"
type="primary" type="primary"
>撤回 >撤回
</el-button> </el-button>
<el-button
v-else
link size="small"
@click="check_delete(scope.row)"
v-auth="'ftestwork.create'"
type="danger"
>删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</scTable> </scTable>
@ -159,7 +168,17 @@ export default {
}); });
}).catch(() => {}); }).catch(() => {});
}, },
check_delete(row){
let that = this;
this.$confirm(`确定删除该检验吗?`, "提示", {
type: "warning",
}).then(() => {
that.$API.qm.ftestwork.delete.req(row.id).then((res) => {
this.$refs.table.refresh();
})
})
},
handleQuery() { handleQuery() {
this.$refs.table.queryData(this.query); this.$refs.table.queryData(this.query);
}, },