Commit adfd4b15 by 董晓奇

(1)工艺路线按照产品种类分,工艺路线上增加个字段,生产任务自动匹配

parent 21b17708
<template> <template>
<BasicModal
:height="600"
<BasicModal v-bind="$attrs"
:height="600" @register="registerModal"
v-bind="$attrs" @register="registerModal" :title="getTitle" :title="getTitle"
@ok="handleSubmit" @cancel="handleClose" > @ok="handleSubmit"
<ModalForm ref="formRef" v-model:value="state.formModel" :fromPage="FromPageType.MENU" /> @cancel="handleClose"
<template #footer v-if=" !state.isView"> >
<ModalForm ref="formRef" v-model:value="state.formModel" :fromPage="FromPageType.MENU" />
<template #footer v-if="!state.isView">
<template v-for="(item, index) in sortBy(formButtons, 'index')" :key="item.key"> <template v-for="(item, index) in sortBy(formButtons, 'index')" :key="item.key">
<template v-if="item.isShow"> <template v-if="item.isShow">
<CustomButtonModal v-if="item.type == CustomButtonModalType.Modal" :info="item" /> <CustomButtonModal v-if="item.type == CustomButtonModalType.Modal" :info="item" />
<a-button <a-button
:type="item.style" :type="item.style"
...@@ -22,29 +23,28 @@ ...@@ -22,29 +23,28 @@
</template> </template>
</template> </template>
</template> </template>
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, computed, reactive, provide, Ref } from 'vue'; import { ref, computed, reactive, provide, Ref } from 'vue';
import { BasicModal, useModalInner } from '/@/components/Modal'; import { BasicModal, useModalInner } from '/@/components/Modal';
import { CustomButtonModalType } from '/@/enums/userEnum'; import { CustomButtonModalType } from '/@/enums/userEnum';
import CustomButtonModal from '/@/components/Form/src/components/CustomButtonModal.vue'; import CustomButtonModal from '/@/components/Form/src/components/CustomButtonModal.vue';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { useI18n } from '/@/hooks/web/useI18n'; import { useI18n } from '/@/hooks/web/useI18n';
import { formProps ,formButtons } from './config'; import { formProps, formButtons } from './config';
import ModalForm from './Form.vue'; import ModalForm from './Form.vue';
import { FromPageType } from '/@/enums/workflowEnum'; import { FromPageType } from '/@/enums/workflowEnum';
import { sortBy } from 'lodash-es'; import { sortBy } from 'lodash-es';
import { executeCurFormEvent } from '/@/utils/event/data'; import { executeCurFormEvent } from '/@/utils/event/data';
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const { notification } = useMessage(); const { notification } = useMessage();
const formRef = ref(); const formRef = ref();
const isCopy = ref<boolean>(false) const isCopy = ref<boolean>(false);
const state = reactive({ const state = reactive({
formModel: {}, formModel: {},
isUpdate: true, isUpdate: true,
...@@ -55,40 +55,41 @@ ...@@ -55,40 +55,41 @@
const { t } = useI18n(); const { t } = useI18n();
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
await handleInner(data); await handleInner(data);
}); });
const getTitle = computed(() => (state.isView ? '查看' : state.isUpdate ? '编辑' : isCopy.value ? '复制数据' : '新增')); const getTitle = computed(() =>
state.isView ? '查看' : state.isUpdate ? '编辑' : isCopy.value ? '复制数据' : '新增',
);
async function handleInner(data) {
async function handleInner(data){
state.isUpdate = !!data?.isUpdate; state.isUpdate = !!data?.isUpdate;
state.isView = !!data?.isView; state.isView = !!data?.isView;
isCopy.value = !!data?.isCopy; isCopy.value = !!data?.isCopy;
setModalProps({ setModalProps({
destroyOnClose: true, destroyOnClose: true,
maskClosable: false, maskClosable: false,
showCancelBtn: false, showCancelBtn: false,
showOkBtn: false, showOkBtn: false,
canFullscreen: true, canFullscreen: true,
width: 1200, width: 1200,
footer: state.isView ? null : undefined,defaultFullscreen:true, footer: state.isView ? null : undefined,
defaultFullscreen: true,
}); });
if (state.isUpdate || state.isView || isCopy.value) { if (state.isUpdate || state.isView || isCopy.value) {
state.rowId = data.id; state.rowId = data.id;
if (state.isView) { if (state.isView) {
await formRef.value.setDisabledForm(); await formRef.value.setDisabledForm();
} }
await formRef.value.setFormDataFromId(state.rowId); await formRef.value.setFormDataFromId(state.rowId);
} else { } else {
formRef.value.resetFields(); formRef.value.resetFields();
} }
} }
async function saveModal() { async function saveModal() {
let saveSuccess = false; let saveSuccess = false;
try { try {
...@@ -117,9 +118,9 @@ ...@@ -117,9 +118,9 @@
async function handleSubmit() { async function handleSubmit() {
try { try {
const saveSuccess = await saveModal(); const saveSuccess = await saveModal();
setModalProps({ confirmLoading: true }); setModalProps({ confirmLoading: true });
if (saveSuccess) { if (saveSuccess) {
if (!state.isUpdate || isCopy.value) { if (!state.isUpdate || isCopy.value) {
//false 新增 //false 新增
...@@ -133,34 +134,31 @@ ...@@ -133,34 +134,31 @@
description: t('修改成功!'), description: t('修改成功!'),
}); //提示消息 }); //提示消息
} }
closeModal(); closeModal();
formRef.value.resetFields(); formRef.value.resetFields();
emit('success'); emit('success');
} }
} finally { } finally {
setModalProps({ confirmLoading: false }); setModalProps({ confirmLoading: false });
} }
} }
function customClick(item) { function customClick(item) {
if (item.key == 'confirm') { if (item.key == 'confirm') {
handleSubmit(); handleSubmit();
} else if (item.key == 'cancel' && props.formType !== 'normal') { } else if (item.key == 'cancel') {
handleClose(); handleClose();
closeModal(); closeModal();
} else if (item.key == 'reset') { } else if (item.key == 'reset') {
formRef.value.resetFields(); formRef.value.resetFields();
} else { } else {
executeCurFormEvent(item.event, state.formModel, true); executeCurFormEvent(item.event, state.formModel, true);
} }
} }
function handleClose() { function handleClose() {
formRef.value.resetFields(); formRef.value.resetFields();
} }
</script> </script>
\ No newline at end of file
...@@ -55,6 +55,18 @@ export const columns: BasicColumn[] = [ ...@@ -55,6 +55,18 @@ export const columns: BasicColumn[] = [
styleConfig: undefined, styleConfig: undefined,
listStyle: undefined, listStyle: undefined,
}, },
{
resizable: true,
dataIndex: 'productType',
title: '产品类型',
componentType: 'select',
fixed: false,
sorter: true,
styleConfig: undefined,
listStyle: undefined,
},
]; ];
//表头合并配置 //表头合并配置
export const headerMergingData = []; export const headerMergingData = [];
...@@ -136,7 +148,7 @@ export const formProps: FormProps = { ...@@ -136,7 +148,7 @@ export const formProps: FormProps = {
component: 'Grid', component: 'Grid',
children: [ children: [
{ {
span: 8, span: 6,
list: [ list: [
{ {
key: '536715321b4c49df8b63b2fcb7cc14ab', key: '536715321b4c49df8b63b2fcb7cc14ab',
...@@ -164,7 +176,7 @@ export const formProps: FormProps = { ...@@ -164,7 +176,7 @@ export const formProps: FormProps = {
], ],
}, },
{ {
span: 8, span: 6,
list: [ list: [
{ {
key: '8d9ef135306242729fb4673b9e2dd918', key: '8d9ef135306242729fb4673b9e2dd918',
...@@ -202,7 +214,7 @@ export const formProps: FormProps = { ...@@ -202,7 +214,7 @@ export const formProps: FormProps = {
], ],
}, },
{ {
span: 8, span: 6,
list: [ list: [
{ {
key: '6636f959cd3a4c239aeb3ab43505a27b', key: '6636f959cd3a4c239aeb3ab43505a27b',
...@@ -229,6 +241,58 @@ export const formProps: FormProps = { ...@@ -229,6 +241,58 @@ export const formProps: FormProps = {
}, },
], ],
}, },
{
span: 6,
list: [
{
key: '2fbc5d1e99af41beb0232f448f39432f',
field: 'productType',
label: '产品类型',
type: 'select',
component: 'XjrSelect',
colProps: { span: 24 },
componentProps: {
width: '100%',
span: 7,
placeholder: '请选择下拉选择',
showLabel: true,
showSearch: false,
isMultiple: false,
clearable: false,
disabled: false,
staticOptions: [
{ key: 1, label: 'Option 1', value: 'Option 1' },
{ key: 2, label: 'Option 2', value: 'Option 2' },
{ key: 3, label: 'Option 3', value: 'Option 3' },
],
defaultSelect: '',
datasourceType: 'api',
params: null,
labelField: 'label',
valueField: 'value',
apiConfig: {
path: '/jcxx/cplx/getAllCPLX',
method: 'GET',
apiId: 'd0471a2c71d242ebbdc3ce88e00f8008',
apiParams: [
{ key: '1', title: 'Query Params', tableInfo: [] },
{ key: '2', title: 'Header', tableInfo: [] },
{ key: '3', title: 'Body' },
],
script:
"var sql='SELECT id as value, cm as label FROM mes_base_cplx WHERE delete_mark = 0 ORDER BY pid ASC, paixu ASC';\r\nreturn db.select(sql)",
},
dicOptions: [],
required: false,
rules: [],
events: {},
isShow: true,
tooltipConfig: { visible: false, title: '提示文本' },
style: { width: '100%' },
},
},
],
},
], ],
componentProps: { componentProps: {
gutter: 16, gutter: 16,
......
<template> <template>
<BasicModal
:height="1080"
<BasicModal v-bind="$attrs"
:height="1080" @register="registerModal"
v-bind="$attrs" @register="registerModal" :title="getTitle" :title="getTitle"
@ok="handleSubmit" @cancel="handleClose" > @ok="handleSubmit"
<ModalForm ref="formRef" v-model:value="state.formModel" :fromPage="FromPageType.MENU" /> @cancel="handleClose"
>
</BasicModal> <ModalForm ref="formRef" v-model:value="state.formModel" :fromPage="FromPageType.MENU" />
</BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, computed, reactive, provide, Ref } from 'vue'; import { ref, computed, reactive, provide, Ref } from 'vue';
import { BasicModal, useModalInner } from '/@/components/Modal'; import { BasicModal, useModalInner } from '/@/components/Modal';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { useI18n } from '/@/hooks/web/useI18n'; import { useI18n } from '/@/hooks/web/useI18n';
import { formProps } from './config'; import { formProps } from './config';
import ModalForm from './Form.vue'; import ModalForm from './Form.vue';
import { FromPageType } from '/@/enums/workflowEnum'; import { FromPageType } from '/@/enums/workflowEnum';
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const { notification } = useMessage(); const { notification } = useMessage();
const formRef = ref(); const formRef = ref();
const isCopy = ref<boolean>(false) const isCopy = ref<boolean>(false);
const state = reactive({ const state = reactive({
formModel: {}, formModel: {},
isUpdate: true, isUpdate: true,
...@@ -38,40 +34,41 @@ ...@@ -38,40 +34,41 @@
const { t } = useI18n(); const { t } = useI18n();
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
await handleInner(data); await handleInner(data);
}); });
const getTitle = computed(() => (state.isView ? '查看' : state.isUpdate ? '编辑' : isCopy.value ? '复制数据' : '新增')); const getTitle = computed(() =>
state.isView ? '查看' : state.isUpdate ? '编辑' : isCopy.value ? '复制数据' : '新增',
);
async function handleInner(data) {
async function handleInner(data){
state.isUpdate = !!data?.isUpdate; state.isUpdate = !!data?.isUpdate;
state.isView = !!data?.isView; state.isView = !!data?.isView;
isCopy.value = !!data?.isCopy; isCopy.value = !!data?.isCopy;
setModalProps({ setModalProps({
destroyOnClose: true, destroyOnClose: true,
maskClosable: false, maskClosable: false,
showCancelBtn: !state.isView, showCancelBtn: !state.isView,
showOkBtn: !state.isView, showOkBtn: !state.isView,
canFullscreen: true, canFullscreen: true,
width: 1920, width: 1920,
footer: state.isView ? null : undefined,defaultFullscreen:true, footer: state.isView ? null : undefined,
defaultFullscreen: true,
}); });
if (state.isUpdate || state.isView || isCopy.value) { if (state.isUpdate || state.isView || isCopy.value) {
state.rowId = data.id; state.rowId = data.id;
if (state.isView) { if (state.isView) {
await formRef.value.setDisabledForm(); await formRef.value.setDisabledForm();
} }
await formRef.value.setFormDataFromId(state.rowId); await formRef.value.setFormDataFromId(state.rowId);
} else { } else {
formRef.value.resetFields(); formRef.value.resetFields();
} }
} }
async function saveModal() { async function saveModal() {
let saveSuccess = false; let saveSuccess = false;
try { try {
...@@ -94,14 +91,14 @@ ...@@ -94,14 +91,14 @@
} }
} catch (error) { } catch (error) {
if (error) { if (error) {
let errorFields = error["errorFields"]; let errorFields = error['errorFields'];
if (Array.isArray(errorFields) && errorFields.length > 0) { if (Array.isArray(errorFields) && errorFields.length > 0) {
let errorInfos = errorFields[0]["errors"]; let errorInfos = errorFields[0]['errors'];
if (Array.isArray(errorInfos) && errorInfos.length > 0) { if (Array.isArray(errorInfos) && errorInfos.length > 0) {
let description = errorInfos[0]; let description = errorInfos[0];
notification.error({ notification.error({
message: t('提示'), message: t('提示'),
description: "物料清单列表"+description, description: '物料清单列表' + description,
}); });
} }
} }
...@@ -113,9 +110,9 @@ ...@@ -113,9 +110,9 @@
async function handleSubmit() { async function handleSubmit() {
try { try {
const saveSuccess = await saveModal(); const saveSuccess = await saveModal();
setModalProps({ confirmLoading: true }); setModalProps({ confirmLoading: true });
if (saveSuccess) { if (saveSuccess) {
if (!state.isUpdate || isCopy.value) { if (!state.isUpdate || isCopy.value) {
//false 新增 //false 新增
...@@ -129,23 +126,19 @@ ...@@ -129,23 +126,19 @@
description: t('修改成功!'), description: t('修改成功!'),
}); //提示消息 }); //提示消息
} }
closeModal(); closeModal();
formRef.value.resetFields(); formRef.value.resetFields();
emit('success'); emit('success');
} }
} finally { } finally {
setModalProps({ confirmLoading: false }); setModalProps({ confirmLoading: false });
} }
} }
function handleClose() { function handleClose() {
formRef.value.resetFields(); formRef.value.resetFields();
closeModal(); closeModal();
} }
</script> </script>
import { FormProps, FormSchema } from '/@/components/Form'; import { FormProps, FormSchema } from '/@/components/Form';
import { BasicColumn } from '/@/components/Table'; import { BasicColumn } from '/@/components/Table';
import {uploadApi} from "/@/api/sys/upload"; import { uploadApi } from '/@/api/sys/upload';
export const searchFormSchema: FormSchema[] = [ export const searchFormSchema: FormSchema[] = [
{ {
...@@ -170,7 +170,7 @@ export const columns: BasicColumn[] = [ ...@@ -170,7 +170,7 @@ export const columns: BasicColumn[] = [
styleConfig: undefined, styleConfig: undefined,
listStyle: undefined, listStyle: undefined,
} },
]; ];
//表头合并配置 //表头合并配置
export const headerMergingData = []; export const headerMergingData = [];
...@@ -331,32 +331,32 @@ export const formProps: FormProps = { ...@@ -331,32 +331,32 @@ export const formProps: FormProps = {
style: { width: '100%' }, style: { width: '100%' },
}, },
}, },
/* { /* {
key: '25e30bcce47a437fb5674d9dbce3523a', key: '25e30bcce47a437fb5674d9dbce3523a',
field: 'zl', field: 'zl',
label: '重量/KG', label: '重量/KG',
type: 'number', type: 'number',
component: 'InputNumber', component: 'InputNumber',
colProps: { span: 24 }, colProps: { span: 24 },
defaultValue: 0, defaultValue: 0,
componentProps: { componentProps: {
width: '100%', width: '100%',
span: 7, span: 7,
defaultValue: 0, defaultValue: 0,
min: 0, min: 0,
step: 0.1, step: 0.1,
disabled: false, disabled: false,
showLabel: true, showLabel: true,
controls: true, controls: true,
required: false, required: false,
subTotal: false, subTotal: false,
isShow: true, isShow: true,
rules: [], rules: [],
events: { change: '' }, events: { change: '' },
tooltipConfig: { visible: false, title: '提示文本' }, tooltipConfig: { visible: false, title: '提示文本' },
style: { width: '100%' }, style: { width: '100%' },
}, },
},*/ },*/
{ {
key: 'd66e5ebfa5d64b829fde596c82155158', key: 'd66e5ebfa5d64b829fde596c82155158',
field: 'sfnbdd', field: 'sfnbdd',
...@@ -610,39 +610,39 @@ export const formProps: FormProps = { ...@@ -610,39 +610,39 @@ export const formProps: FormProps = {
{ {
span: 6, span: 6,
list: [ list: [
/* { /* {
key: 'eb29665fc1e3453d9ef8aa88f8dfac0c', key: 'eb29665fc1e3453d9ef8aa88f8dfac0c',
field: 'zzl', field: 'zzl',
label: '铸造量', label: '铸造量',
type: 'input', type: 'input',
component: 'Input', component: 'Input',
colProps: { span: 24 }, colProps: { span: 24 },
defaultValue: '', defaultValue: '',
componentProps: { componentProps: {
width: '100%', width: '100%',
span: 7, span: 7,
defaultValue: '', defaultValue: '',
placeholder: '', placeholder: '',
prefix: '', prefix: '',
suffix: '', suffix: '',
addonBefore: '', addonBefore: '',
addonAfter: '', addonAfter: '',
disabled: false, disabled: false,
allowClear: false, allowClear: false,
showLabel: true, showLabel: true,
required: false, required: false,
rules: [], rules: [],
events: { change: '' }, events: { change: '' },
listStyle: '', listStyle: '',
isSave: false, isSave: false,
isShow: true, isShow: true,
scan: false, scan: false,
bordered: true, bordered: true,
isShowAi: false, isShowAi: false,
tooltipConfig: { visible: false, title: '提示文本' }, tooltipConfig: { visible: false, title: '提示文本' },
style: { width: '100%' }, style: { width: '100%' },
}, },
},*/ },*/
{ {
key: '99da98d5a335454a9d613715e539c7bd', key: '99da98d5a335454a9d613715e539c7bd',
field: 'kh', field: 'kh',
...@@ -791,7 +791,6 @@ export const formProps: FormProps = { ...@@ -791,7 +791,6 @@ export const formProps: FormProps = {
tooltipConfig: { visible: false, title: '提示文本' }, tooltipConfig: { visible: false, title: '提示文本' },
}, },
}, },
], ],
}, },
{ {
...@@ -891,14 +890,11 @@ export const formProps: FormProps = { ...@@ -891,14 +890,11 @@ export const formProps: FormProps = {
style: { width: '100%' }, style: { width: '100%' },
}, },
}, },
], ],
}, },
{ {
span: 6, span: 6,
list: [ list: [],
],
}, },
], ],
componentProps: { componentProps: {
...@@ -988,6 +984,14 @@ export const formProps: FormProps = { ...@@ -988,6 +984,14 @@ export const formProps: FormProps = {
width: 150, width: 150,
component: '6baebd752fae4267aa0ce0a684aa3a1c', component: '6baebd752fae4267aa0ce0a684aa3a1c',
}, },
{
name: 'routing_id',
tableTitle: '工艺路线',
bindField: 'gylx',
show: true,
width: 150,
component: '90df3bd996a3469789d4557edf80aca7',
},
], ],
}, },
dicOptions: [], dicOptions: [],
...@@ -1084,7 +1088,6 @@ export const formProps: FormProps = { ...@@ -1084,7 +1088,6 @@ export const formProps: FormProps = {
}, },
], ],
}, },
], ],
componentProps: { componentProps: {
gutter: 16, gutter: 16,
...@@ -1224,7 +1227,8 @@ export const formProps: FormProps = { ...@@ -1224,7 +1227,8 @@ export const formProps: FormProps = {
}, },
], ],
}, },
{ span: 6, {
span: 6,
list: [ list: [
{ {
key: 'v2n5h0j9v1k1b5n6n7i2a1d8t8y4x8s7', key: 'v2n5h0j9v1k1b5n6n7i2a1d8t8y4x8s7',
...@@ -1274,7 +1278,7 @@ export const formProps: FormProps = { ...@@ -1274,7 +1278,7 @@ export const formProps: FormProps = {
style: { width: '100%' }, style: { width: '100%' },
}, },
}, },
] ],
}, },
{ span: 6, list: [] }, { span: 6, list: [] },
], ],
......
export const permissionList = [ export const permissionList = [
{ {
required: false, required: false,
view: true, view: true,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment