修改看板

master
夜笙歌 5 months ago
parent e516aa346d
commit 0c02ea8a62

@ -81,7 +81,7 @@ export function getSysPrintTemplateNodeList (query) {
*
* @param data
*/
export const updateNode = (data: []) => {
export const updateTemplateNode = (data: []) => {
return request({
url: '/system/printTemplateNode/updateNode',
method: 'post',

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 955 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1011 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 868 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

@ -60,7 +60,7 @@
:style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<el-image style="width: 100%; height: 100%" :src="lineBarImg" fit="contain" />
</template>
<div class="moduleText">双轴图
</div>
@ -167,7 +167,10 @@
@dragstart="onDragStart($event, 'map')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100px;text-align: center">
<el-image style="width:80px;height: 80px;margin-top: 10px;" :src="mapImg" fit="contain" />
</div>
</template>
<div class="moduleText">映射</div>
</el-card>
@ -176,25 +179,25 @@
:style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<el-image style="width: 100%; height: 100%" :src="customizationRequestImg" fit="contain" />
</template>
<div class="moduleText">静态数据</div>
</el-card>
<el-card class="moduleCard" shadow="never" :draggable="true"
@dragstart="onDragStart($event, 'data')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
</template>
<div class="moduleText">设备数据</div>
</el-card>
<!-- <el-card class="moduleCard" shadow="never" :draggable="true"-->
<!-- @dragstart="onDragStart($event, 'data')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"-->
<!-- :body-style="{padding:'4px 0'}">-->
<!-- <template #header>-->
<!-- <el-image style="width: 100%; height: 100%" :src="network" fit="contain" />-->
<!-- </template>-->
<!-- <div class="moduleText">设备数据</div>-->
<!-- </el-card>-->
<template v-for="i in customData">
<el-card class="moduleCard" shadow="never" :draggable="true"
@dragstart="onDragStart($event, 'customData',i)"
:style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<el-image style="width: 100%; height: 100%" :src="network" fit="contain" />
</template>
<div class="moduleText">{{ i.name }}</div>
</el-card>
@ -223,7 +226,10 @@
@dragstart="onDragStart($event, 'text')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100%;text-align: center">
<el-image style="width:50px;height: 50px;text-align: center" :src="textImg" fit="contain" />
</div>
</template>
<div class="moduleText">文字</div>
</el-card>
@ -232,7 +238,10 @@
:style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100%;text-align: center">
<el-image style="width:50px;height: 50px;text-align: center" :src="inputNodeImg" fit="contain" />
</div>
</template>
<div class="moduleText">输入框</div>
</el-card>
@ -240,7 +249,10 @@
@dragstart="onDragStart($event, 'time')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100%;text-align: center">
<el-image style="width:50px;height: 50px;text-align: center" :src="timeImg" fit="contain" />
</div>
</template>
<div class="moduleText">时间</div>
</el-card>
@ -248,7 +260,10 @@
@dragstart="onDragStart($event, 'img')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100%;text-align: center">
<el-image style="width:50px;height: 50px;text-align: center" :src="imgImg" fit="contain" />
</div>
</template>
<div class="moduleText">图片</div>
</el-card>
@ -256,7 +271,10 @@
@dragstart="onDragStart($event, 'icon')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100%;text-align: center">
<el-image style="width:50px;height: 50px;text-align: center" :src="iconImg" fit="contain" />
</div>
</template>
<div class="moduleText">图标</div>
</el-card>
@ -264,7 +282,10 @@
@dragstart="onDragStart($event, 'video')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100%;text-align: center">
<el-image style="width:50px;height: 50px;text-align: center" :src="videoImg" fit="contain" />
</div>
</template>
<div class="moduleText">视频</div>
</el-card>
@ -272,7 +293,10 @@
@dragstart="onDragStart($event, 'timeline')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100%;text-align: center">
<el-image style="width:50px;height: 50px;text-align: center" :src="timelineImg" fit="contain" />
</div>
</template>
<div class="moduleText">时间线</div>
</el-card>
@ -281,7 +305,10 @@
:style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100%;text-align: center">
<el-image style="width:50px;height: 50px;text-align: center" :src="digitalFlopImg" fit="contain" />
</div>
</template>
<div class="moduleText">数字翻牌器</div>
</el-card>
@ -299,7 +326,10 @@
:style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100%;text-align: center">
<el-image style="width:50px;height: 50px;text-align: center" :src="scrollTableImg" fit="contain" />
</div>
</template>
<div class="moduleText">滚动表格</div>
</el-card>
@ -308,7 +338,10 @@
:style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<StarFilled />
<div style="width: 100%;height: 100%;text-align: center">
<el-image style="width:50px;height: 50px;text-align: center" :src="backgroundimg" fit="contain" />
</div>
</template>
<div class="moduleText">背景</div>
</el-card>
@ -1292,16 +1325,30 @@
import backgroundBarImg from './images/backgroundBarImg.png';
import pieImg from './images/pieImg.png';
import multiCurvesImg from './images/multiCurvesImg.png';
import lineBarImg from './images/lineBarImg.png';
import multiLinesImg from './images/multiLinesImg.png';
import multiBarsImg from './images/multiBarsImg.png';
import annularImg from './images/annularImg.png';
import radarImg from './images/radarImg.png';
import carouselImg from './images/carouselImg.png';
import network from './images/network.png';
import nightingaleRoseDiagramImg from './images/nightingaleRoseDiagramImg.png';
import curveImg from './images/curveImg.png';
import dashboardImg from './images/dashboardImg.png';
import lineImg from './images/lineImg.png';
import barImg from './images/barImg.png';
import customizationRequestImg from './images/customizationRequestImg.png';
import mapImg from './images/mapImg.png';
import backgroundimg from './images/backgroundimg.png';
import scrollTableImg from './images/scrollTableImg.png';
import timeImg from './images/timeImg.png';
import timelineImg from './images/timelineImg.png';
import videoImg from './images/videoImg.png';
import inputNodeImg from './images/inputNodeImg.png';
import digitalFlopImg from './images/digitalFlopImg.png';
import iconImg from './images/iconImg.png';
import imgImg from './images/imgImg.png';
import textImg from './images/textImg.png';
import FlowRuler from './FlowRuler.vue';
import {
@ -1387,7 +1434,7 @@ onMounted(async () => {
outputData: e.designDataFieldList
};
});
});
})
customBoard.value = JSON.parse(localStorage.getItem('BOARDNODE') || '[]');
await nextTick();
getBoardApi(router.currentRoute.value.query.id)

@ -1,6 +1,18 @@
<template>
<div style="width: 100%; height: 100vh; overflow: hidden">
<div class="left">
<div class="printTemplateList" v-for=" i in printTemplateList">
<el-card @click="setNodes" class="moduleCard" shadow="never"
:style="{display:'inline-block',margin:'0 4px 4px 0'}"
:body-style="{padding:'4px 0'}">
<template #header>
<el-image style="width: 100%; height: 100%" :src="lineImg" fit="contain" />
</template>
<div class="moduleText">{{ i.templateName }}</div>
</el-card>
</div>
</div>
<div class="center">
<div id="printInfo" ref="printRef">
<div
class="content"
@ -99,7 +111,10 @@ import TimeNode from './nodes/timeNode.vue';
import SelectNode from './nodes/selectNode.vue';
import { useRoute } from 'vue-router';
import { isJSON } from '@/utils/scrin.js';
import { listPrintTemplateList } from '@/api/system/printTemplateList/index';
import lineImg from '@/views/boardGenerate/images/lineImg.png';
const printTemplateList = ref([]);
const route = useRoute();
const printType = ref(0);
const printers = ref([
@ -557,9 +572,12 @@ const messageFun = (event) => {
if (data.type === 'JSONDATA') {
if (typeof data.message === 'object' && data.message !== null && !Array.isArray(data.message)) {
pageDatas.value = [data.message];
}
if (Array.isArray(data.message)) {
window.chrome?.webview?.postMessage('setDataFinally');
} else if (Array.isArray(data.message)) {
pageDatas.value = data.message;
window.chrome?.webview?.postMessage('setDataFinally');
} else {
window.chrome?.webview?.postMessage('setDataFail');
}
}
if (data.type === 'setTemplate') {
@ -568,12 +586,12 @@ const messageFun = (event) => {
}
console.log(event);
};
console.log(window.chrome);
// window.addEventListener('message', messageFun);
const setNodes = () => {
nodes.value = JSON.parse(printNode || '[]');
};
onMounted(() => {
window.chrome?.webview?.addEventListener('message', messageFun);
window.chrome?.webview?.postMessage('onMounted');
nodes.value = JSON.parse(localStorage.getItem('printNodes') || '[]');
const param = route.query.data;
if (param) {
let code = decodeURIComponent(param);
@ -586,6 +604,10 @@ onMounted(() => {
pageDatas.value = [data];
}
}
listPrintTemplateList().then(data => {
console.log(data);
printTemplateList.value = data.rows;
});
});
const printInfoObj = {
@ -708,7 +730,21 @@ defineExpose({
.left {
display: inline-block;
width: calc(100% - 200px);
width: 550px;
height: 100vh;
overflow: auto;
margin-right: 50px;
}
.center {
display: inline-block;
width: calc(100% - 200px - 600px);
height: 100vh;
overflow: auto;
&::-webkit-scrollbar {
display: none;
}
}
.right {

@ -521,7 +521,6 @@ let printNode = `[
}
]`;
window.addEventListener('message', (event) => {
console.log('event', event);
if (isJSON(event.data)) {
let data = JSON.parse(event.data);
if (data.type === 'print') {
@ -542,6 +541,7 @@ window.addEventListener('message', (event) => {
});
onMounted(() => {
// nodes.value = JSON.parse(localStorage.getItem('printNodes') || '[]');
nodes.value = JSON.parse(printNode || '[]');
const param = route.query.data;
if (isJSON(param)) {
let data = JSON.parse(param);

@ -385,6 +385,9 @@ import BarCodeNode from './nodes/barCodeNode.vue';
import QRCodeNode from './nodes/QRCodeNode.vue';
import TimeNode from './nodes/timeNode.vue';
import SelectNode from './nodes/selectNode.vue';
import { updatePrintTemplateList } from '@/api/system/printTemplateList';
import { getPrintTemplateInfo, updatePrintTemplateInfo } from '@/api/system/printTemplateInfo';
import { getPrintTemplateNode, getSysPrintTemplateNodeList, updateTemplateNode } from '@/api/system/printTemplateNode';
const router = useRouter();
const { updateNode } = useVueFlow();
@ -399,6 +402,7 @@ const isSnapToGrid = ref(true);
const pageWidth = ref(21);
const pageHeight = ref(29.7);
const pageType = ref('A4');
const pageId = ref('');
const zoom = ref(1);
const zoomInput = ref('100%');
const nodeAttrForm = ref({});
@ -486,6 +490,29 @@ const view = () => {
};
const save = () => {
localStorage.setItem('printNodes', JSON.stringify(nodes.value));
updatePrintTemplateInfo({
templateInfoId: pageId.value,
templateListId: router.currentRoute.value.query.id,
paperType: pageType.value === 'zdy' ? '自定义' : pageType.value,
width: pageWidth.value,
height: pageHeight.value,
activeFlag: '1'
});
updateTemplateNode(
nodes.value.map(e => {
return {
templateInfoId: pageId.value,
id: e.id,
type: e.type,
name: e.name,
width: e.dimensions.width,
height: e.dimensions.height,
x: e.position.x,
y: e.position.y,
data: JSON.stringify(e.data)
};
})
);
};
const clear = () => {
pid.value = `area_${uuidv4().replaceAll('-', '_')}`
@ -515,6 +542,36 @@ onMounted(() => {
pid.value = nodes.value.find(e => e.name === 'area')?.id;
}
console.log(nodes.value);
getPrintTemplateInfo(router.currentRoute.value.query.id).then(e => {
let data = e.data;
pageType.value = data.paperType === '自定义' ? 'zdy' : data.paperType;
pageId.value = data.templateInfoId;
pageWidth.value = data.width;
pageHeight.value = data.height;
getSysPrintTemplateNodeList({ templateInfoId: data.templateInfoId }).then(v => {
nodes.value = v.data.map(vv => {
return {
id: vv.id,
type: vv.type,
name: vv.name,
dimensions: {
width: vv.width,
height: vv.height
},
handleBounds: {
source: null,
target: null
},
position: {
x: vv.x,
y: vv.y
},
data: JSON.parse(vv.data)
};
});
});
});
});
watch(() => flowRef.value?.viewport, () => {
if (flowRef.value && (flowRef.value.viewport.x !== 0 || flowRef.value.viewport.y !== 0)) {

@ -0,0 +1,317 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
:leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="模板名称" prop="templateName">
<el-input v-model="queryParams.templateName" placeholder="请输入模板名称" clearable
@keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="模板类型" prop="templateType">
<el-select v-model="queryParams.templateType" placeholder="请选择模板类型" clearable>
<el-option label="通用" value="0" />
<el-option label="web" value="1" />
<el-option label="上位机" value="2" />
<el-option label="PDA" value="3" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</transition>
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd"
v-hasPermi="['system:printTemplateList:add']">新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
v-hasPermi="['system:printTemplateList:edit']">修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
v-hasPermi="['system:printTemplateList:remove']">删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport"
v-hasPermi="['system:printTemplateList:export']">导出
</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true"
@queryTable="getList"></right-toolbar>
</el-row>
</template>
<el-table v-loading="loading" :data="printTemplateListList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="模板列表ID" align="center" prop="templateListId" v-if="columns[0].visible" />
<el-table-column label="模板编号" align="center" prop="templateCode" v-if="columns[2].visible" />
<el-table-column label="模板名称" align="center" prop="templateName" v-if="columns[3].visible" />
<el-table-column label="模板类型" align="center" prop="templateType" v-if="columns[4].visible">
<template #default="scope">
<span v-if="scope.row.templateType === '0'"></span>
<span v-if="scope.row.templateType === '1'">web</span>
<span v-if="scope.row.templateType === '2'"></span>
<span v-if="scope.row.templateType === '3'">PDA</span>
</template>
</el-table-column>
<el-table-column label="模板描述" align="center" prop="templateDescription" v-if="columns[6].visible" />
<el-table-column label="备注" align="center" prop="remark" v-if="columns[9].visible" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:printTemplateList:edit']"></el-button>
</el-tooltip>
<el-tooltip content="查看" placement="top">
<el-button link type="primary" icon="View" @click="handleView(scope.row.templateListId)"
v-hasPermi="['system:printTemplateList:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:printTemplateList:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 添加或修改打印模板列表对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="printTemplateListFormRef" :model="form" :rules="rules" label-width="120px">
<el-form-item label="模板编号" prop="templateCode">
<el-input v-model="form.templateCode" placeholder="请输入模板编号" />
</el-form-item>
<el-form-item label="模板名称" prop="templateName">
<el-input v-model="form.templateName" placeholder="请输入模板名称" />
</el-form-item>
<el-form-item label="模板类型" prop="templateType">
<el-radio-group v-model="form.templateType">
<el-radio value="0">通用</el-radio>
<el-radio value="1">web</el-radio>
<el-radio value="2">上位机</el-radio>
<el-radio value="3">PDA</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="模板描述" prop="templateDescription">
<el-input v-model="form.templateDescription" placeholder="请输入模板描述" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="PrintTemplateList" lang="ts">
import { useRouter } from 'vue-router';
import {
listPrintTemplateList,
getPrintTemplateList,
delPrintTemplateList,
addPrintTemplateList,
updatePrintTemplateList
} from '@/api/system/printTemplateList';
import {
PrintTemplateListVO,
PrintTemplateListQuery,
PrintTemplateListForm
} from '@/api/system/printTemplateList/types';
const router = useRouter();
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { sys_template_type, active_flag } = toRefs<any>(proxy?.useDict('sys_template_type', 'active_flag'));
const printTemplateListList = ref<PrintTemplateListVO[]>([]);
const buttonLoading = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref<Array<string | number>>([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const queryFormRef = ref<ElFormInstance>();
const printTemplateListFormRef = ref<ElFormInstance>();
const dialog = reactive<DialogOption>({
visible: false,
title: ''
});
//
const columns = ref<FieldOption[]>([
{ key: 0, label: `模板列表ID`, visible: false },
{ key: 1, label: `租户编号`, visible: false },
{ key: 2, label: `模板编号`, visible: true },
{ key: 3, label: `模板名称`, visible: true },
{ key: 4, label: `模板类型`, visible: true },
{ key: 5, label: `纸张尺寸`, visible: true },
{ key: 6, label: `模板描述`, visible: true },
{ key: 7, label: `版本号`, visible: true },
{ key: 8, label: `激活标识`, visible: true },
{ key: 9, label: `备注`, visible: true },
{ key: 10, label: `创建部门`, visible: false },
{ key: 11, label: `创建人`, visible: false },
{ key: 12, label: `创建时间`, visible: false },
{ key: 13, label: `更新人`, visible: false },
{ key: 14, label: `更新时间`, visible: false }
]);
const initFormData: PrintTemplateListForm = {
templateListId: undefined,
templateCode: undefined,
templateName: undefined,
templateType: undefined,
paperSize: undefined,
templateDescription: undefined,
activeFlag: undefined,
remark: undefined
};
const data = reactive<PageData<PrintTemplateListForm, PrintTemplateListQuery>>({
form: { ...initFormData },
queryParams: {
pageNum: 1,
pageSize: 10,
templateListId: undefined,
templateCode: undefined,
templateName: undefined,
templateType: undefined,
paperSize: undefined,
templateDescription: undefined,
activeFlag: undefined,
params: {}
},
rules: {
templateCode: [
{ required: true, message: '模板编号不能为空', trigger: 'blur' }
],
templateName: [
{ required: true, message: '模板名称不能为空', trigger: 'blur' }
],
templateType: [
{ required: true, message: '模板类型不能为空', trigger: 'change' }
]
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询打印模板列表列表 */
const getList = async () => {
loading.value = true;
const res = await listPrintTemplateList(queryParams.value);
printTemplateListList.value = res.rows;
total.value = res.total;
loading.value = false;
};
/** 取消按钮 */
const cancel = () => {
reset();
dialog.visible = false;
};
/** 表单重置 */
const reset = () => {
form.value = { ...initFormData };
printTemplateListFormRef.value?.resetFields();
};
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
};
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
};
/** 多选框选中数据 */
const handleSelectionChange = (selection: PrintTemplateListVO[]) => {
ids.value = selection.map(item => item.templateListId);
single.value = selection.length != 1;
multiple.value = !selection.length;
};
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = '添加打印模板列表';
};
const handleView = (id) => {
router.push({ path: '/print/printList', query: { id } });
};
/** 修改按钮操作 */
const handleUpdate = async (row?: PrintTemplateListVO) => {
reset();
const _templateListId = row?.templateListId || ids.value[0];
const res = await getPrintTemplateList(_templateListId);
Object.assign(form.value, res.data);
dialog.visible = true;
dialog.title = '修改打印模板列表';
};
/** 提交按钮 */
const submitForm = () => {
printTemplateListFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (form.value.templateListId) {
await updatePrintTemplateList(form.value).finally(() => buttonLoading.value = false);
} else {
await addPrintTemplateList(form.value).finally(() => buttonLoading.value = false);
}
proxy?.$modal.msgSuccess('操作成功');
dialog.visible = false;
await getList();
}
});
};
/** 删除按钮操作 */
const handleDelete = async (row?: PrintTemplateListVO) => {
const _templateListIds = row?.templateListId || ids.value;
await proxy?.$modal.confirm('是否确认删除打印模板列表编号为"' + _templateListIds + '"的数据项?').finally(() => loading.value = false);
await delPrintTemplateList(_templateListIds);
proxy?.$modal.msgSuccess('删除成功');
await getList();
};
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('system/printTemplateList/export', {
...queryParams.value
}, `printTemplateList_${new Date().getTime()}.xlsx`);
};
onMounted(() => {
getList();
});
</script>
Loading…
Cancel
Save