H5配置页面
parent
0a7e873c66
commit
8a88401c01
|
@ -13,6 +13,10 @@ export default {
|
||||||
printTemplatePage(data) {
|
printTemplatePage(data) {
|
||||||
return request('page', data, 'get')
|
return request('page', data, 'get')
|
||||||
},
|
},
|
||||||
|
// 获取打印模板列表
|
||||||
|
printTemplateList(data) {
|
||||||
|
return request('list', data, 'get')
|
||||||
|
},
|
||||||
// 提交打印模板表单 edit为true时为编辑,默认为新增
|
// 提交打印模板表单 edit为true时为编辑,默认为新增
|
||||||
printTemplateSubmitForm(data, edit = false) {
|
printTemplateSubmitForm(data, edit = false) {
|
||||||
return request(edit ? 'edit' : 'add', data)
|
return request(edit ? 'edit' : 'add', data)
|
||||||
|
@ -24,5 +28,6 @@ export default {
|
||||||
// 获取打印模板详情
|
// 获取打印模板详情
|
||||||
printTemplateDetail(data) {
|
printTemplateDetail(data) {
|
||||||
return request('detail', data, 'get')
|
return request('detail', data, 'get')
|
||||||
}
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
import { baseRequest } from '@/utils/request'
|
||||||
|
|
||||||
|
const request = (url, ...arg) => baseRequest(`/print/records/` + url, ...arg)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标签打印记录Api接口管理器
|
||||||
|
*
|
||||||
|
* @author luojun
|
||||||
|
* @date 2024/09/16 14:49
|
||||||
|
**/
|
||||||
|
export default {
|
||||||
|
// 获取标签打印记录分页
|
||||||
|
printRecordsPage(data) {
|
||||||
|
return request('page', data, 'get')
|
||||||
|
},
|
||||||
|
// 提交标签打印记录表单 edit为true时为编辑,默认为新增
|
||||||
|
printRecordsSubmitForm(data, edit = false) {
|
||||||
|
return request(edit ? 'edit' : 'add', data)
|
||||||
|
},
|
||||||
|
// 删除标签打印记录
|
||||||
|
printRecordsDelete(data) {
|
||||||
|
return request('delete', data)
|
||||||
|
},
|
||||||
|
// 获取标签打印记录详情
|
||||||
|
printRecordsDetail(data) {
|
||||||
|
return request('detail', data, 'get')
|
||||||
|
},
|
||||||
|
// 打印标签并保存打印记录
|
||||||
|
printRecordsPrint(data) {
|
||||||
|
return request('print', data, 'post')
|
||||||
|
},
|
||||||
|
// 更具标签打印记录 id
|
||||||
|
printTemplateGetProductCode(data) {
|
||||||
|
return request('getProductCode', data, 'post')
|
||||||
|
},
|
||||||
|
}
|
|
@ -13,6 +13,10 @@ export default {
|
||||||
produceBarcodeHistoryPage(data) {
|
produceBarcodeHistoryPage(data) {
|
||||||
return request('page', data, 'get')
|
return request('page', data, 'get')
|
||||||
},
|
},
|
||||||
|
// 获取产品条码历史记录列表
|
||||||
|
produceBarcodeHistoryList(data) {
|
||||||
|
return request('list', data, 'get')
|
||||||
|
},
|
||||||
// 提交产品条码历史记录表单 edit为true时为编辑,默认为新增
|
// 提交产品条码历史记录表单 edit为true时为编辑,默认为新增
|
||||||
produceBarcodeHistorySubmitForm(data, edit = false) {
|
produceBarcodeHistorySubmitForm(data, edit = false) {
|
||||||
return request(edit ? 'edit' : 'add', data)
|
return request(edit ? 'edit' : 'add', data)
|
||||||
|
|
|
@ -89,6 +89,7 @@ export default function useFormHandler(formItems, api, backRouter) {
|
||||||
|
|
||||||
// 填充表单数据
|
// 填充表单数据
|
||||||
const populateFormData = (data) => {
|
const populateFormData = (data) => {
|
||||||
|
console.log(formData, 'formData')
|
||||||
Object.keys(formData).forEach((key) => {
|
Object.keys(formData).forEach((key) => {
|
||||||
if (data[key] !== undefined) formData[key] = data[key]
|
if (data[key] !== undefined) formData[key] = data[key]
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,120 +1,188 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="wrap flex">
|
<div class="wrap flex">
|
||||||
<div class="sider">
|
<div class="sider">
|
||||||
<iphone></iphone>
|
<iphone :info="viewinfo"></iphone>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<a-tabs v-model:activeKey="activeKey" type="card">
|
<a-tabs v-model:activeKey="activeKey" type="card">
|
||||||
<a-tab-pane key="1" tab="基本配置">Content of Tab Pane 1</a-tab-pane>
|
<a-tab-pane key="1" tab="基本配置">
|
||||||
<a-tab-pane key="2" tab="轮播图" force-render>
|
<a-card title="页面配置">
|
||||||
|
<a-form>
|
||||||
|
<a-row>
|
||||||
|
<a-col :span="6">
|
||||||
|
<a-form-item label="LOGO">
|
||||||
<a-upload
|
<a-upload
|
||||||
v-model:file-list="fileList"
|
v-model:file-list="logoFileList"
|
||||||
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
|
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
|
||||||
list-type="picture-card"
|
list-type="picture"
|
||||||
@preview="handlePreview"
|
@preview="handlePreview"
|
||||||
|
:max-count="1"
|
||||||
>
|
>
|
||||||
<div v-if="fileList.length < 8">
|
<a-button>
|
||||||
<plus-outlined />
|
<upload-outlined></upload-outlined>
|
||||||
<div style="margin-top: 8px">Upload</div>
|
upload
|
||||||
</div>
|
</a-button>
|
||||||
</a-upload>
|
</a-upload>
|
||||||
<a-modal :open="previewVisible" :title="previewTitle" :footer="null" @cancel="handleCancel">
|
</a-form-item>
|
||||||
<img alt="example" style="width: 100%" :src="previewImage" />
|
</a-col>
|
||||||
</a-modal>
|
<a-col :span="6">
|
||||||
|
<a-form-item label="页面背景图">
|
||||||
|
<a-upload
|
||||||
|
v-model:file-list="bgFileList"
|
||||||
|
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
|
||||||
|
list-type="picture"
|
||||||
|
@preview="handlePreview"
|
||||||
|
:max-count="1"
|
||||||
|
>
|
||||||
|
<a-button>
|
||||||
|
<upload-outlined></upload-outlined>
|
||||||
|
upload
|
||||||
|
</a-button>
|
||||||
|
</a-upload>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item label="是否展示产品信息">
|
||||||
|
<a-switch />
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="是否展示防伪码查询结果">
|
||||||
|
<a-switch />
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="是否展示溯源记录">
|
||||||
|
<a-switch />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</a-card>
|
||||||
|
<a-card class="mt-4" title="底部导航">
|
||||||
|
<a-form>
|
||||||
|
<a-row>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item label="是否展示">
|
||||||
|
<a-switch />
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="电话:">
|
||||||
|
<a-input></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="官方网址:">
|
||||||
|
<a-input></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="地址:">
|
||||||
|
<a-input></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="6">
|
||||||
|
<a-form-item label="左侧LOGO图">
|
||||||
|
<a-upload
|
||||||
|
v-model:file-list="btLogoFileList"
|
||||||
|
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
|
||||||
|
list-type="picture"
|
||||||
|
@preview="handlePreview"
|
||||||
|
:max-count="1"
|
||||||
|
>
|
||||||
|
<a-button>
|
||||||
|
<upload-outlined></upload-outlined>
|
||||||
|
upload
|
||||||
|
</a-button>
|
||||||
|
</a-upload>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="6">
|
||||||
|
<a-form-item label="公众号二维码">
|
||||||
|
<a-upload
|
||||||
|
v-model:file-list="qrFileList"
|
||||||
|
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
|
||||||
|
list-type="picture"
|
||||||
|
@preview="handlePreview"
|
||||||
|
:max-count="1"
|
||||||
|
>
|
||||||
|
<a-button>
|
||||||
|
<upload-outlined></upload-outlined>
|
||||||
|
upload
|
||||||
|
</a-button>
|
||||||
|
</a-upload>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</a-card>
|
||||||
|
<a-card class="mt-4" title="轮播图"
|
||||||
|
><a-form>
|
||||||
|
<a-row>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item label="是否展示">
|
||||||
|
<a-switch />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="6">
|
||||||
|
<a-form-item label="轮播图">
|
||||||
|
<a-upload
|
||||||
|
v-model:file-list="arrFileList"
|
||||||
|
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
|
||||||
|
list-type="picture"
|
||||||
|
@preview="handlePreview"
|
||||||
|
:max-count="5"
|
||||||
|
>
|
||||||
|
<a-button>
|
||||||
|
<upload-outlined></upload-outlined>
|
||||||
|
upload
|
||||||
|
</a-button>
|
||||||
|
</a-upload>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</a-card>
|
||||||
|
</a-tab-pane>
|
||||||
|
<a-tab-pane key="3" tab="产品信息">
|
||||||
|
<a-row :gutter="20">
|
||||||
|
<a-col :span="18">
|
||||||
|
<XnEditor v-model="viewInfo.productInfo"></XnEditor>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="6">
|
||||||
|
<div class="fields">
|
||||||
|
<p class="fields-item">${条码}</p>
|
||||||
|
<p class="fields-item">${条码}</p>
|
||||||
|
<p class="fields-item">${条码}</p>
|
||||||
|
</div>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-tab-pane>
|
||||||
|
<a-tab-pane key="4" tab="防伪码查询配置">
|
||||||
|
<a-row :gutter="20">
|
||||||
|
<a-col :span="18">
|
||||||
|
<XnEditor></XnEditor>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="6">
|
||||||
|
<div class="fields">
|
||||||
|
<p class="fields-item">${条码}</p>
|
||||||
|
<p class="fields-item">${条码}</p>
|
||||||
|
<p class="fields-item">${条码}</p>
|
||||||
|
</div>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="3" tab="产品验证正防伪信息">Content of Tab Pane 3</a-tab-pane>
|
|
||||||
<a-tab-pane key="4" tab="溯源流程">Content of Tab Pane 3</a-tab-pane>
|
|
||||||
<a-tab-pane key="5" tab="产品介绍">
|
<a-tab-pane key="5" tab="产品介绍">
|
||||||
<XnEditor></XnEditor>
|
<XnEditor></XnEditor>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
|
|
||||||
<a-tab-pane key="6" tab="超链接">Content of Tab Pane 3</a-tab-pane>
|
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
// const props = defineProps({})
|
|
||||||
|
|
||||||
// const emit = defineEmits()
|
|
||||||
|
|
||||||
// 生命周期钩子
|
|
||||||
import Iphone from '@/views/productionBusiness/basicData/brand/counterfeiting/iphone.vue'
|
import Iphone from '@/views/productionBusiness/basicData/brand/counterfeiting/iphone.vue'
|
||||||
|
|
||||||
const siderStyle = {
|
const logoFileList = ref([])
|
||||||
color: '#fff',
|
const bgFileList = ref([])
|
||||||
backgroundColor: '#fff',
|
const btLogoFileList = ref([])
|
||||||
width: '350'
|
const qrFileList = ref([])
|
||||||
}
|
const arrFileList = ref([])
|
||||||
|
|
||||||
let activeKey = ref('5')
|
let viewInfo = ref({
|
||||||
|
productInfo: ''
|
||||||
onMounted(() => {
|
|
||||||
console.log('Component mounted')
|
|
||||||
// TODO: Add your onMounted code here
|
|
||||||
})
|
})
|
||||||
|
|
||||||
onUpdated(() => {
|
|
||||||
console.log('Component updated')
|
|
||||||
// TODO: Add your onUpdated code here
|
|
||||||
})
|
|
||||||
|
|
||||||
onUnmounted(() => {
|
|
||||||
console.log('Component unmounted')
|
|
||||||
// TODO: Add your onUnmounted code here
|
|
||||||
})
|
|
||||||
|
|
||||||
// watch(() => {}, () => {})
|
|
||||||
function getBase64(file) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const reader = new FileReader()
|
|
||||||
reader.readAsDataURL(file)
|
|
||||||
reader.onload = () => resolve(reader.result)
|
|
||||||
reader.onerror = (error) => reject(error)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
const previewVisible = ref(false)
|
|
||||||
const previewImage = ref('')
|
|
||||||
const previewTitle = ref('')
|
|
||||||
const fileList = ref([
|
|
||||||
{
|
|
||||||
uid: '-1',
|
|
||||||
name: 'image.png',
|
|
||||||
status: 'done',
|
|
||||||
url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
uid: '-2',
|
|
||||||
name: 'image.png',
|
|
||||||
status: 'done',
|
|
||||||
url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
uid: '-3',
|
|
||||||
name: 'image.png',
|
|
||||||
status: 'done',
|
|
||||||
url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
uid: '-4',
|
|
||||||
name: 'image.png',
|
|
||||||
status: 'done',
|
|
||||||
url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'
|
|
||||||
},
|
|
||||||
])
|
|
||||||
const handleCancel = () => {
|
|
||||||
previewVisible.value = false
|
|
||||||
previewTitle.value = ''
|
|
||||||
}
|
|
||||||
const handlePreview = async (file) => {
|
|
||||||
if (!file.url && !file.preview) {
|
|
||||||
file.preview = await getBase64(file.originFileObj)
|
|
||||||
}
|
|
||||||
previewImage.value = file.url || file.preview
|
|
||||||
previewVisible.value = true
|
|
||||||
previewTitle.value = file.name || file.url.substring(file.url.lastIndexOf('/') + 1)
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
|
@ -133,4 +201,26 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.fields {
|
||||||
|
border: 1px solid #dcdee2;
|
||||||
|
padding: 15px 0;
|
||||||
|
border-radius: 5px;
|
||||||
|
height: 40vh;
|
||||||
|
overflow: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
cursor: pointer;
|
||||||
|
height: 50px;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 50px;
|
||||||
|
padding: 0 20px;
|
||||||
|
font-size: 16px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #f5f7fa;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -11,9 +11,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="container-box">
|
<div class="container-box">
|
||||||
<h3 class="container-box-title">产品信息</h3>
|
<h3 class="container-box-title">产品信息</h3>
|
||||||
<p class="container-box-desc">产品名称:莫个葡萄红酒</p>
|
<p class="container-box-desc">产品名称:</p>
|
||||||
<p class="container-box-desc">产品名称:莫个葡萄红酒</p>
|
|
||||||
<p class="container-box-desc">产品名称:莫个葡萄红酒</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="container-box">
|
<div class="container-box">
|
||||||
<h3 class="container-box-title">防伪查询结果</h3>
|
<h3 class="container-box-title">防伪查询结果</h3>
|
||||||
|
@ -21,9 +19,6 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="container-box">
|
<div class="container-box">
|
||||||
<h3 class="container-box-title">溯源记录</h3>
|
<h3 class="container-box-title">溯源记录</h3>
|
||||||
<p class="container-box-desc">产品名称:莫个葡萄红酒</p>
|
|
||||||
<p class="container-box-desc">产品名称:莫个葡萄红酒</p>
|
|
||||||
<p class="container-box-desc">产品名称:莫个葡萄红酒</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -31,7 +26,12 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
// const props = defineProps({})
|
const props = defineProps({
|
||||||
|
info: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
// const emit = defineEmits()
|
// const emit = defineEmits()
|
||||||
|
|
||||||
|
|
|
@ -101,19 +101,7 @@
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const {
|
const { searchFormState, tableRef, columns, loadData, reset, options, searchFormRef } = useTableManagement(
|
||||||
searchFormState,
|
|
||||||
tableRef,
|
|
||||||
selectedRowKeys,
|
|
||||||
columns,
|
|
||||||
loadData,
|
|
||||||
reset,
|
|
||||||
deleteBatchRecords,
|
|
||||||
options,
|
|
||||||
searchFormRef,
|
|
||||||
navigateTo,
|
|
||||||
deleteRecord
|
|
||||||
} = useTableManagement(
|
|
||||||
{
|
{
|
||||||
page: produceBarcodeHistoryApi.produceBarcodeHistoryPage
|
page: produceBarcodeHistoryApi.produceBarcodeHistoryPage
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,182 @@
|
||||||
|
<template>
|
||||||
|
<a-modal title="打印标签" :width="900" :visible="visible" :destroy-on-close="true" @close="onClose">
|
||||||
|
<DynamicForm :formItems="drawerForm" :model="formData" :rules="formRules" ref="formRef1" />
|
||||||
|
<template #footer>
|
||||||
|
<a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
|
||||||
|
<a-button type="primary" @click="onSubmitForm">保存</a-button>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div style="display: none" id="hiprint-printTemplate"></div>
|
||||||
|
</div>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup name="productionOrganizationForm">
|
||||||
|
import { cloneDeep } from 'lodash-es'
|
||||||
|
import printApi from '@/api/print/printApi'
|
||||||
|
import materialCategoryApi from '@/api/base/material/materialCategoryApi'
|
||||||
|
import { drawerForm, formRules } from '@/views/productionBusiness/labelPrinting/materialPrint/formFields/drawerForm'
|
||||||
|
import useFormHandler from '@/hook/useFormHandler'
|
||||||
|
import materialApi from '@/api/base/material/materialApi'
|
||||||
|
import unitApi from '@/api/base/unit/unitApi'
|
||||||
|
import productCodePackageConfigApi from '@/api/production/productcode/productCodePackageConfigApi'
|
||||||
|
import { newHiprintPrintTemplate } from '@/views/productionBusiness/labelPrinting/template/detail/utils/template-helper'
|
||||||
|
import { getCurrentInstance } from 'vue'
|
||||||
|
import printRecordsApi from '@/api/print/printRecordsApi'
|
||||||
|
|
||||||
|
// 抽屉状态
|
||||||
|
const visible = ref(false)
|
||||||
|
const emit = defineEmits({ successful: null })
|
||||||
|
const formRef1 = ref(null)
|
||||||
|
let recordData = reactive({})
|
||||||
|
let hiprintTemplate
|
||||||
|
const TEMPLATE_KEY = getCurrentInstance().type.name // 存储模板对象的 key
|
||||||
|
let templateRef = ref('')
|
||||||
|
|
||||||
|
// 打开抽屉
|
||||||
|
const onOpen = async (record) => {
|
||||||
|
visible.value = true
|
||||||
|
formRules.value = [formRef1.value]
|
||||||
|
|
||||||
|
if (record) {
|
||||||
|
recordData = cloneDeep(record)
|
||||||
|
fetchData().then(() => {
|
||||||
|
populateFormData(recordData)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
fetchData()
|
||||||
|
recordData = {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打印模版
|
||||||
|
const printTemplateList = await printApi.printTemplateList()
|
||||||
|
|
||||||
|
// 包装关系
|
||||||
|
const materialPackageData = await materialApi.materialPackageData({
|
||||||
|
materialId: record.id
|
||||||
|
})
|
||||||
|
|
||||||
|
// 基本单位
|
||||||
|
const unitList = await unitApi.sysUnitList({
|
||||||
|
groupId: record.unitGroupId
|
||||||
|
})
|
||||||
|
|
||||||
|
// 码包配置
|
||||||
|
const productCodePackageConfigListData = await productCodePackageConfigApi.productCodePackageConfigList()
|
||||||
|
|
||||||
|
drawerForm.forEach((item) => {
|
||||||
|
if (item.name === 'templateId') {
|
||||||
|
item.attrs.options = printTemplateList || []
|
||||||
|
item.attrs.onChange = (value) => {
|
||||||
|
templateRef.value = JSON.parse(printTemplateList.filter((item) => item.id === value)[0].templateData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.name === 'materialPackageId') {
|
||||||
|
item.attrs.options = materialPackageData.filter((item) => item.enabledState === 'ENABLE')
|
||||||
|
item.attrs.onChange = (value) => {
|
||||||
|
// 获取当前选择的单位
|
||||||
|
const materialPackage = materialPackageData.filter((item) => item.id === value)[0]
|
||||||
|
const unit = unitList.filter((item) => item.id === formData.unitId)[0]
|
||||||
|
formData.printNumber = (parseInt(materialPackage.unitRate) * formData.harvestNumber) / unit.rate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.name === 'unitId') {
|
||||||
|
item.attrs.options = unitList
|
||||||
|
item.attrs.onChange = (value) => {
|
||||||
|
// 获取当前选择的单位
|
||||||
|
const unit = unitList.filter((item) => item.id === value)[0]
|
||||||
|
formData.printNumber = unit.rate * formData.harvestNumber
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.name === 'packageConfigId') {
|
||||||
|
item.attrs.options = productCodePackageConfigListData
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.name === 'harvestNumber') {
|
||||||
|
item.attrs.onChange = (value) => {
|
||||||
|
formData.printNumber = formData.harvestNumber
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
materialCategoryApi.materialCategoryTree().then((res) => {
|
||||||
|
drawerForm.forEach((item) => {
|
||||||
|
if (item.name === 'templateId') {
|
||||||
|
item.attrs.treeData = res
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 关闭抽屉
|
||||||
|
const onClose = () => {
|
||||||
|
visible.value = false
|
||||||
|
}
|
||||||
|
// 默认要校验的refresh
|
||||||
|
// 验证并提交数据
|
||||||
|
const onSubmitForm = () => {
|
||||||
|
// 打印标签先生成打印模版
|
||||||
|
/*onSubmit({
|
||||||
|
isEnable: true,
|
||||||
|
id: recordData.id
|
||||||
|
}).then(() => {
|
||||||
|
onClose()
|
||||||
|
emit('successful')
|
||||||
|
})*/
|
||||||
|
/*buildDesigner()
|
||||||
|
|
||||||
|
// 参数: 打印时设置 左偏移量,上偏移量
|
||||||
|
let options = { leftOffset: -1, topOffset: -1 }
|
||||||
|
// 扩展
|
||||||
|
let ext = {
|
||||||
|
callback: () => {
|
||||||
|
console.log('浏览器打印窗口已打开')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 调用浏览器打印
|
||||||
|
hiprintTemplate.print(
|
||||||
|
{
|
||||||
|
name: '1231231',
|
||||||
|
qrCode: '1231'
|
||||||
|
},
|
||||||
|
options,
|
||||||
|
ext
|
||||||
|
)*/
|
||||||
|
printRecordsApi
|
||||||
|
.printRecordsPrint({
|
||||||
|
...formData,
|
||||||
|
materialId: recordData.id
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始化模板
|
||||||
|
const buildDesigner = () => {
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
$('#hiprint-printTemplate').empty() // 先清空, 避免重复构建
|
||||||
|
// 注意事项: 模板json(object)
|
||||||
|
// 如果使用 vue ref创建的模板json, 需要使用 .value 获取 (确保内部能够使用 object.key 拿到对应数据就行)
|
||||||
|
hiprintTemplate = newHiprintPrintTemplate(TEMPLATE_KEY, {
|
||||||
|
template: templateRef.value, // 模板json(object)
|
||||||
|
settingContainer: '#PrintElementOptionSetting' // 元素参数容器
|
||||||
|
})
|
||||||
|
// hiprintTemplate.bindData(recordData)
|
||||||
|
|
||||||
|
// 构建 并填充到 容器中
|
||||||
|
hiprintTemplate.design('#hiprint-printTemplate')
|
||||||
|
console.log(hiprintTemplate)
|
||||||
|
}
|
||||||
|
|
||||||
|
let { formData, onSubmit, populateFormData, fetchData } = useFormHandler([...drawerForm], {
|
||||||
|
submitForm: materialCategoryApi.materialCategorySubmitForm
|
||||||
|
})
|
||||||
|
// 抛出函数
|
||||||
|
defineExpose({
|
||||||
|
onOpen
|
||||||
|
})
|
||||||
|
</script>
|
|
@ -0,0 +1,157 @@
|
||||||
|
import tool from '@/utils/tool'
|
||||||
|
import { required } from '@/utils/formRules'
|
||||||
|
|
||||||
|
export const drawerForm = reactive([
|
||||||
|
{
|
||||||
|
label: '打印模版:',
|
||||||
|
name: 'templateId',
|
||||||
|
type: 'a-select',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请选择打印模版',
|
||||||
|
allowClear: true,
|
||||||
|
fieldNames: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'name',
|
||||||
|
value: 'id'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '收货数量:',
|
||||||
|
name: 'harvestNumber',
|
||||||
|
type: 'a-input',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请输入收货数量',
|
||||||
|
allowClear: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '单位:',
|
||||||
|
name: 'unitId',
|
||||||
|
type: 'a-select',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请选择单位',
|
||||||
|
fieldNames: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'name',
|
||||||
|
value: 'id'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '标签数(张):',
|
||||||
|
name: 'printNumber',
|
||||||
|
type: 'a-input-number',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请输入标签数',
|
||||||
|
treeData: [],
|
||||||
|
fieldNames: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'name',
|
||||||
|
value: 'id'
|
||||||
|
},
|
||||||
|
disabled: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '标准包装数量:',
|
||||||
|
name: 'standardPackageNumber',
|
||||||
|
type: 'a-input-number',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请输入标准包装数量',
|
||||||
|
treeData: [],
|
||||||
|
fieldNames: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'name',
|
||||||
|
value: 'id'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '包装:',
|
||||||
|
name: 'materialPackageId',
|
||||||
|
type: 'a-select',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请选择包装',
|
||||||
|
treeData: [],
|
||||||
|
fieldNames: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'name',
|
||||||
|
value: 'id'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '包装单位:',
|
||||||
|
name: 'packageUnit',
|
||||||
|
type: 'a-tree-select',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请选择包装单位',
|
||||||
|
treeData: [],
|
||||||
|
fieldNames: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'name',
|
||||||
|
value: 'id'
|
||||||
|
},
|
||||||
|
disabled: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '二维码规则:',
|
||||||
|
name: 'packageConfigId',
|
||||||
|
type: 'a-select',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请选择二维码规则',
|
||||||
|
fieldNames: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'name',
|
||||||
|
value: 'id'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '生产日期:',
|
||||||
|
name: 'productionTime',
|
||||||
|
type: 'a-date-picker',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请输入生产日期',
|
||||||
|
allowClear: true,
|
||||||
|
valueFormat: 'YYYY-MM-DD HH:mm:ss'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '失效日期:',
|
||||||
|
name: 'failureTime',
|
||||||
|
type: 'a-date-picker',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请输入失效日期',
|
||||||
|
allowClear: true,
|
||||||
|
valueFormat: 'YYYY-MM-DD HH:mm:ss'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
label: '批次:',
|
||||||
|
name: 'batch',
|
||||||
|
type: 'a-input',
|
||||||
|
span: 8,
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请输入批次'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
|
export const formRules = {
|
||||||
|
name: [required('请输入名称')],
|
||||||
|
parentId: [required('请选择上级物料')]
|
||||||
|
}
|
|
@ -13,7 +13,6 @@
|
||||||
ref="dynamicTreeRef"
|
ref="dynamicTreeRef"
|
||||||
treeTitle="物料分类"
|
treeTitle="物料分类"
|
||||||
:tableRef="tableRef"
|
:tableRef="tableRef"
|
||||||
:openFormRef="materialCategoryFormRef"
|
|
||||||
:apiModel="{
|
:apiModel="{
|
||||||
getTree: materialCategoryApi.materialCategoryTree,
|
getTree: materialCategoryApi.materialCategoryTree,
|
||||||
delTree: materialCategoryApi.materialCategoryDelete
|
delTree: materialCategoryApi.materialCategoryDelete
|
||||||
|
@ -55,7 +54,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template v-if="column.dataIndex === 'action'">
|
<template v-if="column.dataIndex === 'action'">
|
||||||
<a-space>
|
<a-space>
|
||||||
<a> 打印标签 </a>
|
<a @click="handleOpen(record)"> 打印标签 </a>
|
||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
|
@ -64,33 +63,25 @@
|
||||||
</a-row>
|
</a-row>
|
||||||
</a-card>
|
</a-card>
|
||||||
|
|
||||||
<material-category-form ref="materialCategoryFormRef" @successful="successful"></material-category-form>
|
<!-- <material-category-form ref="materialCategoryFormRef" @successful="successful"></material-category-form>-->
|
||||||
|
<material-print-form ref="materialPrintFormRef"></material-print-form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="materiel">
|
<script setup name="materiel">
|
||||||
import materialApi from '@/api/base/material/materialApi'
|
import materialApi from '@/api/base/material/materialApi'
|
||||||
import materialCategoryApi from '@/api/base/material/materialCategoryApi'
|
import materialCategoryApi from '@/api/base/material/materialCategoryApi'
|
||||||
|
|
||||||
import MaterialCategoryForm from '@/views/productionBusiness/basicData/materiel/detail/materialCategoryForm.vue'
|
// import MaterialCategoryForm from '@/views/productionBusiness/basicData/materiel/detail/materialCategoryForm.vue'
|
||||||
|
import MaterialPrintForm from '@/views/productionBusiness/labelPrinting/materialPrint/detail/materialPrintForm.vue'
|
||||||
|
|
||||||
import { useTableManagement } from '@/hook/useTableManagement'
|
import { useTableManagement } from '@/hook/useTableManagement'
|
||||||
import { materielColumn } from '@/views/productionBusiness/basicData/materiel/column/materiel-column'
|
import { materielColumn } from '@/views/productionBusiness/basicData/materiel/column/materiel-column'
|
||||||
import { searchFields } from '@/views/productionBusiness/basicData/materiel/formFields/searchFields'
|
import { searchFields } from '@/views/productionBusiness/basicData/materiel/formFields/searchFields'
|
||||||
|
|
||||||
const materialCategoryFormRef = ref(null)
|
const materialPrintFormRef = ref(null)
|
||||||
const dynamicTreeRef = ref(null)
|
const dynamicTreeRef = ref(null)
|
||||||
|
|
||||||
const {
|
const { searchFormState, tableRef, columns, loadData, options } = useTableManagement(
|
||||||
searchFormState,
|
|
||||||
tableRef,
|
|
||||||
selectedRowKeys,
|
|
||||||
columns,
|
|
||||||
loadData,
|
|
||||||
deleteBatchRecords,
|
|
||||||
options,
|
|
||||||
navigateTo,
|
|
||||||
deleteRecord
|
|
||||||
} = useTableManagement(
|
|
||||||
{
|
{
|
||||||
page: materialApi.materialPage,
|
page: materialApi.materialPage,
|
||||||
delete: materialApi.materialDelete
|
delete: materialApi.materialDelete
|
||||||
|
@ -114,11 +105,8 @@
|
||||||
tableRef.value.refresh()
|
tableRef.value.refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
const successful = () => {
|
const handleOpen = (record) => {
|
||||||
searchFormState.value.categoryId = null
|
materialPrintFormRef.value.onOpen(record)
|
||||||
tableRef.value.refresh()
|
|
||||||
|
|
||||||
dynamicTreeRef.value.loadTreeData()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
export const labelRecords = [
|
||||||
|
{
|
||||||
|
title: '物料名称',
|
||||||
|
dataIndex: 'materialName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '打印数量',
|
||||||
|
dataIndex: 'printNumber'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '二维码生成规则',
|
||||||
|
dataIndex: 'packageConfigName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '打印模版',
|
||||||
|
dataIndex: 'templateName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '生效时间',
|
||||||
|
dataIndex: 'productionTime'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '失效时间',
|
||||||
|
dataIndex: 'productionTime'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
dataIndex: 'createTime'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
export const labelDetailColumns = [
|
||||||
|
{
|
||||||
|
title: '产码',
|
||||||
|
dataIndex: 'productCode',
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '产码类型',
|
||||||
|
dataIndex: 'productCodeType',
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
dataIndex: 'createTime',
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: 'action',
|
||||||
|
align: 'center',
|
||||||
|
scopedSlots: { customRender: 'action' }
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,106 @@
|
||||||
|
<template>
|
||||||
|
<a-modal title="打印标签" :width="900" v-model:visible="visible" :destroy-on-close="true" @close="onClose">
|
||||||
|
<DynamicForm :formItems="drawerForm" :model="formData" ref="formRef1" />
|
||||||
|
<template #footer>
|
||||||
|
<a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
|
||||||
|
</template>
|
||||||
|
<a-table :dataSource="dataSource" :columns="labelDetailColumns" :pagination="false">
|
||||||
|
<template #bodyCell="{ record, column, index }">
|
||||||
|
<template v-if="column.dataIndex === 'productCodeType'">
|
||||||
|
{{ $TOOL.dictTypeData('DCGS', record.productCodeType) }}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template v-if="column.dataIndex === 'action'">
|
||||||
|
<a @click="handlePrint(record)"> 打印标签 </a>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div style="display: none" id="hiprint-printTemplate"></div>
|
||||||
|
</div>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup name="productionOrganizationForm">
|
||||||
|
import { cloneDeep } from 'lodash-es'
|
||||||
|
import materialCategoryApi from '@/api/base/material/materialCategoryApi'
|
||||||
|
import { drawerForm } from '@/views/productionBusiness/labelPrinting/records/formFields/drawerForm'
|
||||||
|
import useFormHandler from '@/hook/useFormHandler'
|
||||||
|
import materialApi from '@/api/base/material/materialApi'
|
||||||
|
import { labelDetailColumns } from '@/views/productionBusiness/labelPrinting/records/columns'
|
||||||
|
import printRecordsApi from '@/api/print/printRecordsApi'
|
||||||
|
import {getCurrentInstance} from "vue";
|
||||||
|
|
||||||
|
// 抽屉状态
|
||||||
|
const visible = ref(false)
|
||||||
|
const emit = defineEmits({ successful: null })
|
||||||
|
const formRef1 = ref(null)
|
||||||
|
let recordData = reactive({})
|
||||||
|
let dataSource = ref([])
|
||||||
|
let hiprintTemplate
|
||||||
|
const TEMPLATE_KEY = getCurrentInstance().type.name // 存储模板对象的 key
|
||||||
|
let templateRef = ref({})
|
||||||
|
|
||||||
|
// 打开抽屉
|
||||||
|
const onOpen = async (record) => {
|
||||||
|
visible.value = true
|
||||||
|
|
||||||
|
if (record) {
|
||||||
|
recordData = cloneDeep(record)
|
||||||
|
/// 获取打印详情
|
||||||
|
const printRecordsData = await printRecordsApi.printRecordsDetail({
|
||||||
|
id: record.id
|
||||||
|
})
|
||||||
|
// 获取物料的详情
|
||||||
|
const materialData = await materialApi.materialDetail({
|
||||||
|
id: record.materialId
|
||||||
|
})
|
||||||
|
|
||||||
|
const productCodeList = await printRecordsApi.printTemplateGetProductCode({
|
||||||
|
id: recordData.id
|
||||||
|
})
|
||||||
|
|
||||||
|
templateRef.value = JSON.parse(printRecordsData.templateData)
|
||||||
|
|
||||||
|
dataSource.value = productCodeList
|
||||||
|
fetchData().then(() => {
|
||||||
|
populateFormData(materialData)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
fetchData()
|
||||||
|
recordData = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 关闭抽屉
|
||||||
|
const onClose = () => {
|
||||||
|
visible.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
const handlePrint = (record) => {}
|
||||||
|
|
||||||
|
// 初始化模板
|
||||||
|
const buildDesigner = () => {
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
$('#hiprint-printTemplate').empty() // 先清空, 避免重复构建
|
||||||
|
// 注意事项: 模板json(object)
|
||||||
|
// 如果使用 vue ref创建的模板json, 需要使用 .value 获取 (确保内部能够使用 object.key 拿到对应数据就行)
|
||||||
|
hiprintTemplate = newHiprintPrintTemplate(TEMPLATE_KEY, {
|
||||||
|
template: templateRef.value, // 模板json(object)
|
||||||
|
settingContainer: '#PrintElementOptionSetting' // 元素参数容器
|
||||||
|
})
|
||||||
|
// hiprintTemplate.bindData(recordData)
|
||||||
|
|
||||||
|
// 构建 并填充到 容器中
|
||||||
|
hiprintTemplate.design('#hiprint-printTemplate')
|
||||||
|
console.log(hiprintTemplate)
|
||||||
|
}
|
||||||
|
|
||||||
|
let { formData, onSubmit, populateFormData, fetchData } = useFormHandler([...drawerForm], {
|
||||||
|
submitForm: materialCategoryApi.materialCategorySubmitForm
|
||||||
|
})
|
||||||
|
// 抛出函数
|
||||||
|
defineExpose({
|
||||||
|
onOpen
|
||||||
|
})
|
||||||
|
</script>
|
|
@ -0,0 +1,13 @@
|
||||||
|
import tool from '@/utils/tool'
|
||||||
|
|
||||||
|
export const drawerForm = [
|
||||||
|
{
|
||||||
|
label: '单据号:',
|
||||||
|
name: 'number',
|
||||||
|
type: 'a-input',
|
||||||
|
attrs: {
|
||||||
|
placeholder: '请输入单号',
|
||||||
|
allowClear: true,
|
||||||
|
disabled: true
|
||||||
|
}
|
||||||
|
}]
|
|
@ -0,0 +1,72 @@
|
||||||
|
<template>
|
||||||
|
<AdvancedSearchForm
|
||||||
|
:formState="searchFormState"
|
||||||
|
:formFields="searchFields"
|
||||||
|
@search="tableRef.refresh()"
|
||||||
|
@reset="tableRef.refresh()"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<a-card :bordered="false" class="mt-4" style="height: 100%">
|
||||||
|
<s-table
|
||||||
|
ref="tableRef"
|
||||||
|
:columns="columns"
|
||||||
|
:data="loadData"
|
||||||
|
bordered
|
||||||
|
:row-key="(record) => record.id"
|
||||||
|
:tool-config="options.toolConfig"
|
||||||
|
:scroll="{
|
||||||
|
x: 100
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<template #bodyCell="{ column, record }">
|
||||||
|
<template v-if="column.dataIndex === 'number'">
|
||||||
|
<span style="color: #0d84ff">{{ record.number }}</span>
|
||||||
|
</template>
|
||||||
|
<template v-if="column.dataIndex === 'enabledState'">
|
||||||
|
<a-tag color="#87d068" v-if="record.enabledState === 'ENABLE'">启用</a-tag>
|
||||||
|
<a-tag color="#f50" v-if="record.enabledState === 'DISABLED'">停用</a-tag>
|
||||||
|
</template>
|
||||||
|
<template v-if="column.dataIndex === 'action'">
|
||||||
|
<a-space>
|
||||||
|
<a
|
||||||
|
@click="handleOpen(record)"
|
||||||
|
>
|
||||||
|
<EyeOutlined />
|
||||||
|
查看
|
||||||
|
</a>
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</s-table>
|
||||||
|
</a-card>
|
||||||
|
|
||||||
|
<RecordsDetail ref="RecordsDetailRef"></RecordsDetail>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup name="brand">
|
||||||
|
import printRecordsApi from '@/api/print/printRecordsApi'
|
||||||
|
import { useTableManagement } from '@/hook/useTableManagement'
|
||||||
|
import { searchFields } from '@/views/productionBusiness/basicData/brand/formFields/searchFields'
|
||||||
|
import { labelRecords } from '@/views/productionBusiness/labelPrinting/records/columns'
|
||||||
|
import RecordsDetail from '@/views/productionBusiness/labelPrinting/records/detail/RecordsDetail.vue'
|
||||||
|
|
||||||
|
const RecordsDetailRef = ref(null)
|
||||||
|
|
||||||
|
const handleOpen = (record) => {
|
||||||
|
RecordsDetailRef.value.onOpen(record)
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
searchFormState,
|
||||||
|
tableRef,
|
||||||
|
columns,
|
||||||
|
loadData,
|
||||||
|
options,
|
||||||
|
} = useTableManagement(
|
||||||
|
{
|
||||||
|
page: printRecordsApi.printRecordsPage
|
||||||
|
},
|
||||||
|
labelRecords,
|
||||||
|
['sysBrandEdit', 'sysBrandDelete']
|
||||||
|
)
|
||||||
|
</script>
|
Loading…
Reference in New Issue