新增多个控制器以支持密炼相关功能,包括报警记录、自动卸料日志、物料对应、称量校验日志、密炼机动作状态等,提供分页查询、通过ID查询及导出Excel功能,增强系统的可用性与数据管理能力。

This commit is contained in:
geht
2026-06-02 18:53:40 +08:00
parent 38f22ef8bd
commit 2d142dbc9c
173 changed files with 7105 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesAlarm/list',
queryById = '/xslmes/mcs/mcsToMesAlarm/queryById',
exportXls = '/xslmes/mcs/mcsToMesAlarm/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,38 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '机台名称', align: 'center', dataIndex: 'equipName' },
{ title: '机台类型', align: 'center', dataIndex: 'equipType' },
{ title: 'Barcode', align: 'center', dataIndex: 'barcode' },
{ title: '报警代码', align: 'center', dataIndex: 'almCode' },
{ title: '报警内容', align: 'center', dataIndex: 'alarmInf' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
{ title: '读取时间', align: 'center', dataIndex: 'readTime' },
{ title: '交互标识', align: 'center', dataIndex: 'mesFlag' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: 'Barcode', field: 'barcode', component: 'JInput', colProps: { span: 6 } },
{ label: '报警代码', field: 'almCode', component: 'JInput', colProps: { span: 6 } },
{
label: '写入时间', field: 'writeTime', component: 'RangePicker',
componentProps: { valueType: 'Date', placeholder: ['开始时间', '结束时间'] },
colProps: { span: 8 },
},
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: 'GUID', field: 'guid', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台名称', field: 'equipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Barcode', field: 'barcode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '报警代码', field: 'almCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '报警内容', field: 'alarmInf', component: 'Input', componentProps: { disabled: true }, colProps: { span: 24 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '交互标识', field: 'mesFlag', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="上辅机报警记录" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesAlarm.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesAlarmModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesAlarm" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesAlarmModal from './components/McsToMesAlarmModal.vue';
import { columns, searchFormSchema } from './McsToMesAlarm.data';
import { list, getExportUrl } from './McsToMesAlarm.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '上辅机报警记录',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '上辅机报警记录', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesAutoXlLog/list',
queryById = '/xslmes/mcs/mcsToMesAutoXlLog/queryById',
exportXls = '/xslmes/mcs/mcsToMesAutoXlLog/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,37 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: 'GUID', align: 'center', dataIndex: 'guid' },
{ title: '设备ID', align: 'center', dataIndex: 'equipId' },
{ title: '机台名称', align: 'center', dataIndex: 'equipName' },
{ title: '计划编号', align: 'center', dataIndex: 'planId' },
{ title: '卸料车号', align: 'center', dataIndex: 'xlCarNum' },
{ title: '卸料条码', align: 'center', dataIndex: 'xlBarcode' },
{ title: 'RFID', align: 'center', dataIndex: 'rfid' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
{ title: '交互标识', align: 'center', dataIndex: 'mesFlag' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '计划编号', field: 'planId', component: 'JInput', colProps: { span: 6 } },
{
label: '写入时间', field: 'writeTime', component: 'RangePicker',
componentProps: { valueType: 'Date', placeholder: ['开始时间', '结束时间'] },
colProps: { span: 8 },
},
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: 'GUID', field: 'guid', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '设备ID', field: 'equipId', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台名称', field: 'equipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划编号', field: 'planId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '卸料车号', field: 'xlCarNum', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '卸料条码', field: 'xlBarcode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'RFID', field: 'rfid', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '交互标识', field: 'mesFlag', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="自动卸料日志" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesAutoXlLog.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesAutoXlLogModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesAutoXlLog" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesAutoXlLogModal from './components/McsToMesAutoXlLogModal.vue';
import { columns, searchFormSchema } from './McsToMesAutoXlLog.data';
import { list, getExportUrl } from './McsToMesAutoXlLog.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '自动卸料日志',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '自动卸料日志', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesBinToMater/list',
queryById = '/xslmes/mcs/mcsToMesBinToMater/queryById',
exportXls = '/xslmes/mcs/mcsToMesBinToMater/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,36 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '机台名称', align: 'center', dataIndex: 'equipName' },
{ title: '秤编号', align: 'center', dataIndex: 'scaleNum' },
{ title: '秤类别', align: 'center', dataIndex: 'scaleClass' },
{ title: '秤名称', align: 'center', dataIndex: 'scaleName' },
{ title: '料仓编号', align: 'center', dataIndex: 'binNo' },
{ title: '物料代码', align: 'center', dataIndex: 'matCode' },
{ title: '物料名称', align: 'center', dataIndex: 'matName' },
{ title: '是否使用', align: 'center', dataIndex: 'useYn' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: '物料代码', field: 'matCode', component: 'JInput', colProps: { span: 6 } },
{ label: '料仓编号', field: 'binNo', component: 'InputNumber', colProps: { span: 6 } },
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台名称', field: 'equipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '秤编号', field: 'scaleNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '秤类别', field: 'scaleClass', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '秤名称', field: 'scaleName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '料仓编号', field: 'binNo', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料代码', field: 'matCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料名称', field: 'matName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '是否使用', field: 'useYn', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="料仓物料对应" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesBinToMater.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesBinToMaterModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesBinToMater" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesBinToMaterModal from './components/McsToMesBinToMaterModal.vue';
import { columns, searchFormSchema } from './McsToMesBinToMater.data';
import { list, getExportUrl } from './McsToMesBinToMater.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '料仓物料对应',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '料仓物料对应', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesCheckScaleLog/list',
queryById = '/xslmes/mcs/mcsToMesCheckScaleLog/queryById',
exportXls = '/xslmes/mcs/mcsToMesCheckScaleLog/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,42 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: 'Guid', align: 'center', dataIndex: 'guid' },
{ title: 'Tand', align: 'center', dataIndex: 'tand' },
{ title: 'Tanz', align: 'center', dataIndex: 'tanz' },
{ title: 'Fend', align: 'center', dataIndex: 'fend' },
{ title: 'Fenz', align: 'center', dataIndex: 'fenz' },
{ title: 'Youd', align: 'center', dataIndex: 'youd' },
{ title: 'Youz', align: 'center', dataIndex: 'youz' },
{ title: 'Yed', align: 'center', dataIndex: 'yed' },
{ title: '校验日期', align: 'center', dataIndex: 'cdate' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
];
export const searchFormSchema: FormSchema[] = [
{
label: '校验日期', field: 'cdate', component: 'RangePicker',
componentProps: { valueType: 'Date', placeholder: ['开始时间', '结束时间'] },
colProps: { span: 8 },
},
{
label: '写入时间', field: 'writeTime', component: 'RangePicker',
componentProps: { valueType: 'Date', placeholder: ['开始时间', '结束时间'] },
colProps: { span: 8 },
},
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: 'Guid', field: 'guid', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Tand', field: 'tand', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Tanz', field: 'tanz', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Fend', field: 'fend', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Fenz', field: 'fenz', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Youd', field: 'youd', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Youz', field: 'youz', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Yed', field: 'yed', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '校验日期', field: 'cdate', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="称量校验日志" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesCheckScaleLog.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesCheckScaleLogModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesCheckScaleLog" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesCheckScaleLogModal from './components/McsToMesCheckScaleLogModal.vue';
import { columns, searchFormSchema } from './McsToMesCheckScaleLog.data';
import { list, getExportUrl } from './McsToMesCheckScaleLog.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '称量校验日志',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '称量校验日志', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesMixAct/list',
queryById = '/xslmes/mcs/mcsToMesMixAct/queryById',
exportXls = '/xslmes/mcs/mcsToMesMixAct/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,28 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '机台名称', align: 'center', dataIndex: 'equipName' },
{ title: '机台类型', align: 'center', dataIndex: 'equipType' },
{ title: '动作地址', align: 'center', dataIndex: 'mixActAddress' },
{ title: '动作名称', align: 'center', dataIndex: 'mixActName' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
{ title: '读写标识', align: 'center', dataIndex: 'rwFlag' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: '动作地址', field: 'mixActAddress', component: 'InputNumber', colProps: { span: 6 } },
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台名称', field: 'equipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '动作地址', field: 'mixActAddress', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '动作名称', field: 'mixActName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 24 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读写标识', field: 'rwFlag', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="密炼机动作状态" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesMixAct.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesMixActModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesMixAct" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesMixActModal from './components/McsToMesMixActModal.vue';
import { columns, searchFormSchema } from './McsToMesMixAct.data';
import { list, getExportUrl } from './McsToMesMixAct.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '密炼机动作状态',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '密炼机动作状态', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesMixAlarm/list',
queryById = '/xslmes/mcs/mcsToMesMixAlarm/queryById',
exportXls = '/xslmes/mcs/mcsToMesMixAlarm/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,38 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '机台名称', align: 'center', dataIndex: 'equipName' },
{ title: '机台类型', align: 'center', dataIndex: 'equipType' },
{ title: 'Barcode', align: 'center', dataIndex: 'barcode' },
{ title: '报警代码', align: 'center', dataIndex: 'almCode' },
{ title: '报警内容', align: 'center', dataIndex: 'alarmInf' },
{ title: '开始时间', align: 'center', dataIndex: 'saveTime' },
{ title: '结束时间', align: 'center', dataIndex: 'endTime' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: 'Barcode', field: 'barcode', component: 'JInput', colProps: { span: 6 } },
{ label: '报警代码', field: 'almCode', component: 'JInput', colProps: { span: 6 } },
{
label: '写入时间', field: 'writeTime', component: 'RangePicker',
componentProps: { valueType: 'Date', placeholder: ['开始时间', '结束时间'] },
colProps: { span: 8 },
},
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台名称', field: 'equipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Barcode', field: 'barcode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '报警代码', field: 'almCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '报警内容', field: 'alarmInf', component: 'Input', componentProps: { disabled: true }, colProps: { span: 24 } },
{ label: '开始时间', field: 'saveTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '结束时间', field: 'endTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="密炼机报警记录" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesMixAlarm.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesMixAlarmModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesMixAlarm" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesMixAlarmModal from './components/McsToMesMixAlarmModal.vue';
import { columns, searchFormSchema } from './McsToMesMixAlarm.data';
import { list, getExportUrl } from './McsToMesMixAlarm.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '密炼机报警记录',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '密炼机报警记录', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesMixBatch/list',
queryById = '/xslmes/mcs/mcsToMesMixBatch/queryById',
exportXls = '/xslmes/mcs/mcsToMesMixBatch/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,60 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '计划编号+车次', align: 'center', dataIndex: 'barcode' },
{ title: '配方代码', align: 'center', dataIndex: 'recipCode' },
{ title: '配方名称', align: 'center', dataIndex: 'recipName' },
{ title: '计划编号', align: 'center', dataIndex: 'planId' },
{ title: '班次', align: 'center', dataIndex: 'shiftId' },
{ title: '当前车次', align: 'center', dataIndex: 'batchNum' },
{ title: '密炼模式', align: 'center', dataIndex: 'mixMode' },
{ title: '排胶温度', align: 'center', dataIndex: 'discTemp' },
{ title: '保存时间', align: 'center', dataIndex: 'saveDateTime' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: 'Barcode', field: 'barcode', component: 'JInput', colProps: { span: 6 } },
{ label: '计划编号', field: 'planId', component: 'JInput', colProps: { span: 6 } },
{ label: '配方代码', field: 'recipCode', component: 'JInput', colProps: { span: 6 } },
{
label: '写入时间', field: 'writeTime', component: 'RangePicker',
componentProps: { valueType: 'Date', placeholder: ['开始时间', '结束时间'] },
colProps: { span: 8 },
},
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台名称', field: 'equipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划编号+车次', field: 'barcode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方代码', field: 'recipCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方名称', field: 'recipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划编号', field: 'planId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '工单号', field: 'moCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料代码', field: 'materCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料名称', field: 'materName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 24 } },
{ label: '保存日期', field: 'saveDate', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '保存时间', field: 'saveDateTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '班次', field: 'shiftId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '班组', field: 'shiftClass', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '设定车次', field: 'setNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '当前车次', field: 'batchNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '密炼模式', field: 'mixMode', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '密炼时间', field: 'curTim', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '有效时间', field: 'usefulMixTim', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '间隔时间', field: 'intervalTime', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '排胶温度', field: 'discTemp', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '排胶能量', field: 'discEnergy', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '排胶时间', field: 'discTime', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '排胶功率', field: 'discPower', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '排胶方式', field: 'emgyDiscFlag', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '批次重量', field: 'batchWei', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '重量', field: 'weight', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '操作员', field: 'oper', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="密炼批次数据" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesMixBatch.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesMixBatchModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesMixBatch" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesMixBatchModal from './components/McsToMesMixBatchModal.vue';
import { columns, searchFormSchema } from './McsToMesMixBatch.data';
import { list, getExportUrl } from './McsToMesMixBatch.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '密炼批次数据',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '密炼批次数据', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesMixCon/list',
queryById = '/xslmes/mcs/mcsToMesMixCon/queryById',
exportXls = '/xslmes/mcs/mcsToMesMixCon/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,28 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '机台名称', align: 'center', dataIndex: 'equipName' },
{ title: '机台类型', align: 'center', dataIndex: 'equipType' },
{ title: '控制参数地址', align: 'center', dataIndex: 'mixConAddress' },
{ title: '控制参数名称', align: 'center', dataIndex: 'mixConName' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
{ title: '读写标识', align: 'center', dataIndex: 'rwFlag' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: '控制参数地址', field: 'mixConAddress', component: 'InputNumber', colProps: { span: 6 } },
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台名称', field: 'equipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '控制参数地址', field: 'mixConAddress', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '控制参数名称', field: 'mixConName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 24 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读写标识', field: 'rwFlag', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="密炼机控制参数" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesMixCon.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesMixConModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesMixCon" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesMixConModal from './components/McsToMesMixConModal.vue';
import { columns, searchFormSchema } from './McsToMesMixCon.data';
import { list, getExportUrl } from './McsToMesMixCon.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '密炼机控制参数',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '密炼机控制参数', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesMixCurve/list',
queryById = '/xslmes/mcs/mcsToMesMixCurve/queryById',
exportXls = '/xslmes/mcs/mcsToMesMixCurve/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,32 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '机台名称', align: 'center', dataIndex: 'equipName' },
{ title: '机台类型', align: 'center', dataIndex: 'equipType' },
{ title: 'Barcode', align: 'center', dataIndex: 'barcode' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
{ title: '交互标识', align: 'center', dataIndex: 'mesFlag' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: 'Barcode', field: 'barcode', component: 'JInput', colProps: { span: 6 } },
{
label: '写入时间', field: 'writeTime', component: 'RangePicker',
componentProps: { valueType: 'Date', placeholder: ['开始时间', '结束时间'] },
colProps: { span: 8 },
},
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台名称', field: 'equipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Barcode', field: 'barcode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '曲线数据', field: 'curveData', component: 'InputTextArea', componentProps: { disabled: true, rows: 6 }, colProps: { span: 24 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '交互标识', field: 'mesFlag', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="密炼过程曲线" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesMixCurve.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesMixCurveModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesMixCurve" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesMixCurveModal from './components/McsToMesMixCurveModal.vue';
import { columns, searchFormSchema } from './McsToMesMixCurve.data';
import { list, getExportUrl } from './McsToMesMixCurve.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '密炼过程曲线',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '密炼过程曲线', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesMixExePlan/list',
queryById = '/xslmes/mcs/mcsToMesMixExePlan/queryById',
exportXls = '/xslmes/mcs/mcsToMesMixExePlan/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,46 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '计划编号', align: 'center', dataIndex: 'planId' },
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '机台类型', align: 'center', dataIndex: 'equipType' },
{ title: '计划日期', align: 'center', dataIndex: 'planDate' },
{ title: '班次', align: 'center', dataIndex: 'shiftId' },
{ title: '配方代码', align: 'center', dataIndex: 'recipCode' },
{ title: '设定车次', align: 'center', dataIndex: 'setNum' },
{ title: '完成车次', align: 'center', dataIndex: 'doneNum' },
{ title: '计划状态', align: 'center', dataIndex: 'planState' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '计划编号', field: 'planId', component: 'JInput', colProps: { span: 6 } },
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: '计划日期', field: 'planDate', component: 'JInput', colProps: { span: 6 } },
{ label: '计划状态', field: 'planState', component: 'InputNumber', colProps: { span: 6 } },
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '计划编号', field: 'planId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划来源', field: 'planSource', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台名称', field: 'equipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划日期', field: 'planDate', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '班次', field: 'shiftId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '班组', field: 'shiftClass', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划顺序', field: 'workOrder', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方代码', field: 'recipCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方名称', field: 'recipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料代码', field: 'materCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料名称', field: 'materName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '设定车次', field: 'setNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '完成车次', field: 'doneNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划状态', field: 'planState', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '开始时间', field: 'startTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '结束时间', field: 'endTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '备注', field: 'remark', component: 'Input', componentProps: { disabled: true }, colProps: { span: 24 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="密炼执行计划" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesMixExePlan.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesMixExePlanModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesMixExePlan" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesMixExePlanModal from './components/McsToMesMixExePlanModal.vue';
import { columns, searchFormSchema } from './McsToMesMixExePlan.data';
import { list, getExportUrl } from './McsToMesMixExePlan.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '密炼执行计划',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '密炼执行计划', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesMixStep/list',
queryById = '/xslmes/mcs/mcsToMesMixStep/queryById',
exportXls = '/xslmes/mcs/mcsToMesMixStep/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,46 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: 'Barcode', align: 'center', dataIndex: 'barcode' },
{ title: '密炼步序', align: 'center', dataIndex: 'mixId' },
{ title: '条件名称', align: 'center', dataIndex: 'condName' },
{ title: '实际时间', align: 'center', dataIndex: 'timAct' },
{ title: '温度实际', align: 'center', dataIndex: 'tempAct' },
{ title: '实际功率', align: 'center', dataIndex: 'powerAct' },
{ title: '实际能量', align: 'center', dataIndex: 'energyAct' },
{ title: '实际压力', align: 'center', dataIndex: 'ramPressAct' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: 'Barcode', field: 'barcode', component: 'JInput', colProps: { span: 6 } },
{ label: '密炼步序', field: 'mixId', component: 'InputNumber', colProps: { span: 6 } },
{
label: '写入时间', field: 'writeTime', component: 'RangePicker',
componentProps: { valueType: 'Date', placeholder: ['开始时间', '结束时间'] },
colProps: { span: 8 },
},
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Barcode', field: 'barcode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '密炼步序', field: 'mixId', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '条件地址', field: 'cond', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '条件名称', field: 'condName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '实际时间', field: 'timAct', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '温度实际', field: 'tempAct', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '实际功率', field: 'powerAct', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '实际能量', field: 'energyAct', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '动作地址', field: 'act', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '动作名称', field: 'actName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '实际压力', field: 'ramPressAct', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '实际转速', field: 'rotorSpdAct', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '实际栓位置', field: 'ramPosAct', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="密炼步序数据" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesMixStep.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesMixStepModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesMixStep" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesMixStepModal from './components/McsToMesMixStepModal.vue';
import { columns, searchFormSchema } from './McsToMesMixStep.data';
import { list, getExportUrl } from './McsToMesMixStep.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '密炼步序数据',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '密炼步序数据', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mcsToMesMixWeight/list',
queryById = '/xslmes/mcs/mcsToMesMixWeight/queryById',
exportXls = '/xslmes/mcs/mcsToMesMixWeight/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,48 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: 'Barcode', align: 'center', dataIndex: 'barcode' },
{ title: '物料代码', align: 'center', dataIndex: 'matCode' },
{ title: '物料名称', align: 'center', dataIndex: 'matName' },
{ title: '秤编号', align: 'center', dataIndex: 'scaleNum' },
{ title: '序号', align: 'center', dataIndex: 'idx' },
{ title: '设定重量', align: 'center', dataIndex: 'setWei' },
{ title: '实际重量', align: 'center', dataIndex: 'actWei' },
{ title: '计划编号', align: 'center', dataIndex: 'planId' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: 'Barcode', field: 'barcode', component: 'JInput', colProps: { span: 6 } },
{ label: '物料代码', field: 'matCode', component: 'JInput', colProps: { span: 6 } },
{ label: '计划编号', field: 'planId', component: 'JInput', colProps: { span: 6 } },
{
label: '写入时间', field: 'writeTime', component: 'RangePicker',
componentProps: { valueType: 'Date', placeholder: ['开始时间', '结束时间'] },
colProps: { span: 8 },
},
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: 'Barcode', field: 'barcode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料代码', field: 'matCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料名称', field: 'matName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '秤编号', field: 'scaleNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '序号', field: 'idx', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '第几批称量', field: 'shiftNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '设定重量', field: 'setWei', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '设定误差', field: 'setTol', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '实际重量', field: 'actWei', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '实际误差', field: 'actTol', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '车次', field: 'batchNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方名称', field: 'recipeName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划编号', field: 'planId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '工单号', field: 'moCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="密炼物料称量" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../McsToMesMixWeight.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<McsToMesMixWeightModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mcsToMesMixWeight" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import McsToMesMixWeightModal from './components/McsToMesMixWeightModal.vue';
import { columns, searchFormSchema } from './McsToMesMixWeight.data';
import { list, getExportUrl } from './McsToMesMixWeight.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: '密炼物料称量',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: '密炼物料称量', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mesToMcsMaterial/list',
queryById = '/xslmes/mcs/mesToMcsMaterial/queryById',
exportXls = '/xslmes/mcs/mesToMcsMaterial/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,37 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台号', align: 'center', dataIndex: 'equipId' },
{ title: '机台类型', align: 'center', dataIndex: 'equipType' },
{ title: '物料代码', align: 'center', dataIndex: 'matCode' },
{ title: '物料名称', align: 'center', dataIndex: 'matName' },
{ title: '物料类别', align: 'center', dataIndex: 'matType' },
{ title: '胶料类别', align: 'center', dataIndex: 'matRubType' },
{ title: '秤名称', align: 'center', dataIndex: 'scaleName' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
{ title: '交互标识', align: 'center', dataIndex: 'mesFlag' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: '物料代码', field: 'matCode', component: 'JInput', colProps: { span: 6 } },
{ label: '物料类别', field: 'matType', component: 'JInput', colProps: { span: 6 } },
{ label: '物料名称', field: 'matName', component: 'JInput', colProps: { span: 6 } },
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料代码', field: 'matCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料名称', field: 'matName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料条码', field: 'matBarcode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料类别', field: 'matType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '胶料类别', field: 'matRubType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '秤ID', field: 'scaleId', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '秤名称', field: 'scaleName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '小料设备号', field: 'cwsId', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '交互标识', field: 'mesFlag', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="MES下发物料" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../MesToMcsMaterial.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<MesToMcsMaterialModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mesToMcsMaterial" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import MesToMcsMaterialModal from './components/MesToMcsMaterialModal.vue';
import { columns, searchFormSchema } from './MesToMcsMaterial.data';
import { list, getExportUrl } from './MesToMcsMaterial.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: 'MES下发物料',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: 'MES下发物料', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mesToMcsMixPlan/list',
queryById = '/xslmes/mcs/mesToMcsMixPlan/queryById',
exportXls = '/xslmes/mcs/mesToMcsMixPlan/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,43 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '计划编号', align: 'center', dataIndex: 'planId' },
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '机台类型', align: 'center', dataIndex: 'equipType' },
{ title: '计划日期', align: 'center', dataIndex: 'planDate' },
{ title: '配方代码', align: 'center', dataIndex: 'recipCode' },
{ title: '工单号', align: 'center', dataIndex: 'moCode' },
{ title: '设定车次', align: 'center', dataIndex: 'setNum' },
{ title: '完成车次', align: 'center', dataIndex: 'doneNum' },
{ title: '计划状态', align: 'center', dataIndex: 'planState' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '计划编号', field: 'planId', component: 'JInput', colProps: { span: 6 } },
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: '计划日期', field: 'planDate', component: 'JInput', colProps: { span: 6 } },
{ label: '计划状态', field: 'planState', component: 'InputNumber', colProps: { span: 6 } },
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '计划编号', field: 'planId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划来源', field: 'planSource', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台名称', field: 'equipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划日期', field: 'planDate', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方代码', field: 'recipCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方名称', field: 'recipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料代码', field: 'materCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料名称', field: 'materName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 24 } },
{ label: '工单号', field: 'moCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方版本', field: 'rcipVersion', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方类型', field: 'proType', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划车次', field: 'setNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '完成车次', field: 'doneNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '计划状态', field: 'planState', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '备注', field: 'remark', component: 'Input', componentProps: { disabled: true }, colProps: { span: 24 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="MES下发混炼计划" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../MesToMcsMixPlan.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<MesToMcsMixPlanModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mesToMcsMixPlan" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import MesToMcsMixPlanModal from './components/MesToMcsMixPlanModal.vue';
import { columns, searchFormSchema } from './MesToMcsMixPlan.data';
import { list, getExportUrl } from './MesToMcsMixPlan.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: 'MES下发混炼计划',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: 'MES下发混炼计划', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mesToMcsRecipe/list',
queryById = '/xslmes/mcs/mesToMcsRecipe/queryById',
exportXls = '/xslmes/mcs/mesToMcsRecipe/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,42 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '配方代码', align: 'center', dataIndex: 'recipCode' },
{ title: '配方名称', align: 'center', dataIndex: 'recipName' },
{ title: '配方版本', align: 'center', dataIndex: 'recipVersion' },
{ title: '配方类型', align: 'center', dataIndex: 'proType' },
{ title: '是否使用', align: 'center', dataIndex: 'isUse' },
{ title: '总重', align: 'center', dataIndex: 'weight' },
{ title: '写入时间', align: 'center', dataIndex: 'writeTime' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: '配方代码', field: 'recipCode', component: 'JInput', colProps: { span: 6 } },
{ label: '配方名称', field: 'recipName', component: 'JInput', colProps: { span: 6 } },
{ label: '是否使用', field: 'isUse', component: 'InputNumber', colProps: { span: 6 } },
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方代码', field: 'recipCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方名称', field: 'recipName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方版本', field: 'recipVersion', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方类型', field: 'proType', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '是否使用', field: 'isUse', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '总重', field: 'weight', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '炭黑重量', field: 'thWeight', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '油料重量', field: 'ylWeight', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '粉料重量', field: 'flWeight', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '胶料重量', field: 'gwWeight', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '混炼室温度', field: 'setTcu1', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '转子温度', field: 'setTcu2', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '卸料门温度', field: 'setTcu3', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '超温排胶温度', field: 'setOverTempVal', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '架子车数', field: 'shelfLotCount', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '备注', field: 'remark', component: 'Input', componentProps: { disabled: true }, colProps: { span: 24 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="MES下发配方" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../MesToMcsRecipe.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<MesToMcsRecipeModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mesToMcsRecipe" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import MesToMcsRecipeModal from './components/MesToMcsRecipeModal.vue';
import { columns, searchFormSchema } from './MesToMcsRecipe.data';
import { list, getExportUrl } from './MesToMcsRecipe.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: 'MES下发配方',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: 'MES下发配方', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mesToMcsRecipeMixStep/list',
queryById = '/xslmes/mcs/mesToMcsRecipeMixStep/queryById',
exportXls = '/xslmes/mcs/mesToMcsRecipeMixStep/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,45 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '配方代码', align: 'center', dataIndex: 'recipCode' },
{ title: '序号', align: 'center', dataIndex: 'serial' },
{ title: '动作名称', align: 'center', dataIndex: 'action' },
{ title: '条件名称', align: 'center', dataIndex: 'condition' },
{ title: '时间(秒)', align: 'center', dataIndex: 'time' },
{ title: '温度(度)', align: 'center', dataIndex: 'temp' },
{ title: '能量(kWh)', align: 'center', dataIndex: 'energy' },
{ title: '功率(W)', align: 'center', dataIndex: 'power' },
{ title: '转速(rpm)', align: 'center', dataIndex: 'speed' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: '配方代码', field: 'recipCode', component: 'JInput', colProps: { span: 6 } },
{ label: '序号', field: 'serial', component: 'InputNumber', colProps: { span: 6 } },
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方代码', field: 'recipCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '序号', field: 'serial', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '动作地址', field: 'act', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '动作名称', field: 'action', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '条件地址', field: 'cond', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '条件名称', field: 'condition', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '时间(秒)', field: 'time', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '时间限制', field: 'timeLimit', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '温度(度)', field: 'temp', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '温度限制', field: 'tempLimit', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '能量(kWh)', field: 'energy', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '能量限制', field: 'energyLimit', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '功率(W)', field: 'power', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '功率限制', field: 'powerLimit', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '压力(10kp)', field: 'press', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '转速(rpm)', field: 'speed', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '栓位置', field: 'ramPos', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="MES下发配方步序" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../MesToMcsRecipeMixStep.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<MesToMcsRecipeMixStepModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mesToMcsRecipeMixStep" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import MesToMcsRecipeMixStepModal from './components/MesToMcsRecipeMixStepModal.vue';
import { columns, searchFormSchema } from './MesToMcsRecipeMixStep.data';
import { list, getExportUrl } from './MesToMcsRecipeMixStep.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: 'MES下发配方步序',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: 'MES下发配方步序', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>

View File

@@ -0,0 +1,13 @@
import { defHttp } from '/@/utils/http/axios';
enum Api {
list = '/xslmes/mcs/mesToMcsRecipeWeight/list',
queryById = '/xslmes/mcs/mesToMcsRecipeWeight/queryById',
exportXls = '/xslmes/mcs/mesToMcsRecipeWeight/exportXls',
}
export const getExportUrl = Api.exportXls;
export const list = (params) => defHttp.get({ url: Api.list, params });
export const queryById = (params) => defHttp.get({ url: Api.queryById, params });

View File

@@ -0,0 +1,44 @@
import { BasicColumn, FormSchema } from '/@/components/Table';
export const columns: BasicColumn[] = [
{ title: '机台编号', align: 'center', dataIndex: 'equipId' },
{ title: '配方代码', align: 'center', dataIndex: 'recipCode' },
{ title: '秤编号', align: 'center', dataIndex: 'scaleId' },
{ title: '序号', align: 'center', dataIndex: 'serial' },
{ title: '动作', align: 'center', dataIndex: 'action' },
{ title: '料仓编号', align: 'center', dataIndex: 'binNo' },
{ title: '物料代码', align: 'center', dataIndex: 'matCode' },
{ title: '物料名称', align: 'center', dataIndex: 'matName' },
{ title: '设定重量', align: 'center', dataIndex: 'setWeight' },
{ title: '误差重量', align: 'center', dataIndex: 'tolerance' },
{ title: '交互标识', align: 'center', dataIndex: 'mesFlag' },
];
export const searchFormSchema: FormSchema[] = [
{ label: '机台编号', field: 'equipId', component: 'JInput', colProps: { span: 6 } },
{ label: '配方代码', field: 'recipCode', component: 'JInput', colProps: { span: 6 } },
{ label: '物料代码', field: 'matCode', component: 'JInput', colProps: { span: 6 } },
{ label: '秤编号', field: 'scaleId', component: 'InputNumber', colProps: { span: 6 } },
];
export const formSchema: FormSchema[] = [
{ label: '', field: 'id', component: 'Input', show: false },
{ label: '机台编号', field: 'equipId', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '机台类型', field: 'equipType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '配方代码', field: 'recipCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '秤类型', field: 'scaleType', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '秤编号', field: 'scaleId', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '序号', field: 'serial', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '动作', field: 'action', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '料仓编号', field: 'binNo', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料代码', field: 'matCode', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料名称', field: 'matName', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '物料类型', field: 'matType', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '设定重量', field: 'setWeight', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '误差重量', field: 'tolerance', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '导切机编号', field: 'sfNum', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '备注', field: 'remark', component: 'Input', componentProps: { disabled: true }, colProps: { span: 24 } },
{ label: '写入时间', field: 'writeTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '读取时间', field: 'readTime', component: 'Input', componentProps: { disabled: true }, colProps: { span: 12 } },
{ label: '交互标识', field: 'mesFlag', component: 'InputNumber', componentProps: { disabled: true }, colProps: { span: 12 } },
];

View File

@@ -0,0 +1,30 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose title="MES下发配方称量" :width="1200">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from '../MesToMcsRecipeWeight.data';
defineEmits(['register']);
const [registerForm, { resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 120,
schemas: formSchema,
showActionButtonGroup: false,
baseColProps: { span: 12 },
disabled: true,
});
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: true, cancelText: '关闭' });
if (data?.record) {
await setFieldsValue({ ...data.record });
}
setProps({ disabled: true });
});
</script>

View File

@@ -0,0 +1,64 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<MesToMcsRecipeWeightModal @register="registerModal" />
</div>
</template>
<script lang="ts" name="xslmes-mcs-mesToMcsRecipeWeight" setup>
import { reactive } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import { useModal } from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage';
import MesToMcsRecipeWeightModal from './components/MesToMcsRecipeWeightModal.vue';
import { columns, searchFormSchema } from './MesToMcsRecipeWeight.data';
import { list, getExportUrl } from './MesToMcsRecipeWeight.api';
const queryParam = reactive<any>({});
const [registerModal, { openModal }] = useModal();
const { tableContext, onExportXls } = useListPage({
tableProps: {
title: 'MES下发配方称量',
api: list,
columns,
canResize: true,
formConfig: {
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToTime: [
['writeTime', ['writeTime_begin', 'writeTime_end'], 'YYYY-MM-DD HH:mm:ss'],
['cdate', ['cdate_begin', 'cdate_end'], 'YYYY-MM-DD HH:mm:ss'],
],
},
actionColumn: { width: 80, fixed: 'right' },
beforeFetch: (params) => Object.assign(params, queryParam),
},
exportConfig: { name: 'MES下发配方称量', url: getExportUrl, params: queryParam },
});
const [registerTable, { reload }] = tableContext;
const superQueryConfig = reactive({});
function handleSuperQuery(params) {
Object.keys(params).map((k) => { queryParam[k] = params[k]; });
reload();
}
function handleDetail(record: Recordable) {
openModal(true, { record, isUpdate: true, showFooter: false });
}
function getTableAction(record) {
return [{ label: '详情', onClick: handleDetail.bind(null, record) }];
}
</script>