Commit adfd4b15 by 董晓奇

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

parent 21b17708
<template>
<BasicModal
:height="600"
v-bind="$attrs" @register="registerModal" :title="getTitle"
@ok="handleSubmit" @cancel="handleClose" >
<ModalForm ref="formRef" v-model:value="state.formModel" :fromPage="FromPageType.MENU" />
<template #footer v-if=" !state.isView">
<BasicModal
:height="600"
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
@cancel="handleClose"
>
<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-if="item.isShow">
<template v-if="item.isShow">
<CustomButtonModal v-if="item.type == CustomButtonModalType.Modal" :info="item" />
<a-button
:type="item.style"
......@@ -22,29 +23,28 @@
</template>
</template>
</template>
</BasicModal>
</BasicModal>
</template>
<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 { CustomButtonModalType } from '/@/enums/userEnum';
import CustomButtonModal from '/@/components/Form/src/components/CustomButtonModal.vue';
import { CustomButtonModalType } from '/@/enums/userEnum';
import CustomButtonModal from '/@/components/Form/src/components/CustomButtonModal.vue';
import { useMessage } from '/@/hooks/web/useMessage';
import { useI18n } from '/@/hooks/web/useI18n';
import { formProps ,formButtons } from './config';
import { formProps, formButtons } from './config';
import ModalForm from './Form.vue';
import { FromPageType } from '/@/enums/workflowEnum';
import { sortBy } from 'lodash-es';
import { executeCurFormEvent } from '/@/utils/event/data';
import { sortBy } from 'lodash-es';
import { executeCurFormEvent } from '/@/utils/event/data';
const emit = defineEmits(['success', 'register']);
const { notification } = useMessage();
const formRef = ref();
const isCopy = ref<boolean>(false)
const isCopy = ref<boolean>(false);
const state = reactive({
formModel: {},
isUpdate: true,
......@@ -55,40 +55,41 @@
const { t } = useI18n();
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.isView = !!data?.isView;
isCopy.value = !!data?.isCopy;
setModalProps({
destroyOnClose: true,
maskClosable: false,
showCancelBtn: false,
showOkBtn: false,
canFullscreen: true,
width: 1200,
footer: state.isView ? null : undefined,defaultFullscreen:true,
width: 1200,
footer: state.isView ? null : undefined,
defaultFullscreen: true,
});
if (state.isUpdate || state.isView || isCopy.value) {
state.rowId = data.id;
if (state.isView) {
await formRef.value.setDisabledForm();
}
await formRef.value.setFormDataFromId(state.rowId);
} else {
formRef.value.resetFields();
}
}
async function saveModal() {
let saveSuccess = false;
try {
......@@ -117,9 +118,9 @@
async function handleSubmit() {
try {
const saveSuccess = await saveModal();
setModalProps({ confirmLoading: true });
if (saveSuccess) {
if (!state.isUpdate || isCopy.value) {
//false 新增
......@@ -133,34 +134,31 @@
description: t('修改成功!'),
}); //提示消息
}
closeModal();
formRef.value.resetFields();
emit('success');
}
} finally {
setModalProps({ confirmLoading: false });
}
}
function customClick(item) {
if (item.key == 'confirm') {
handleSubmit();
} else if (item.key == 'cancel' && props.formType !== 'normal') {
} else if (item.key == 'cancel') {
handleClose();
closeModal();
closeModal();
} else if (item.key == 'reset') {
formRef.value.resetFields();
} else {
executeCurFormEvent(item.event, state.formModel, true);
}
}
}
function handleClose() {
formRef.value.resetFields();
}
</script>
\ No newline at end of file
......@@ -55,6 +55,18 @@ export const columns: BasicColumn[] = [
styleConfig: undefined,
listStyle: undefined,
},
{
resizable: true,
dataIndex: 'productType',
title: '产品类型',
componentType: 'select',
fixed: false,
sorter: true,
styleConfig: undefined,
listStyle: undefined,
},
];
//表头合并配置
export const headerMergingData = [];
......@@ -136,7 +148,7 @@ export const formProps: FormProps = {
component: 'Grid',
children: [
{
span: 8,
span: 6,
list: [
{
key: '536715321b4c49df8b63b2fcb7cc14ab',
......@@ -164,7 +176,7 @@ export const formProps: FormProps = {
],
},
{
span: 8,
span: 6,
list: [
{
key: '8d9ef135306242729fb4673b9e2dd918',
......@@ -202,7 +214,7 @@ export const formProps: FormProps = {
],
},
{
span: 8,
span: 6,
list: [
{
key: '6636f959cd3a4c239aeb3ab43505a27b',
......@@ -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: {
gutter: 16,
......
<template>
<BasicModal
:height="1080"
v-bind="$attrs" @register="registerModal" :title="getTitle"
@ok="handleSubmit" @cancel="handleClose" >
<ModalForm ref="formRef" v-model:value="state.formModel" :fromPage="FromPageType.MENU" />
</BasicModal>
<BasicModal
:height="1080"
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
@cancel="handleClose"
>
<ModalForm ref="formRef" v-model:value="state.formModel" :fromPage="FromPageType.MENU" />
</BasicModal>
</template>
<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 { useMessage } from '/@/hooks/web/useMessage';
import { useI18n } from '/@/hooks/web/useI18n';
import { formProps } from './config';
import { formProps } from './config';
import ModalForm from './Form.vue';
import { FromPageType } from '/@/enums/workflowEnum';
const emit = defineEmits(['success', 'register']);
const { notification } = useMessage();
const formRef = ref();
const isCopy = ref<boolean>(false)
const isCopy = ref<boolean>(false);
const state = reactive({
formModel: {},
isUpdate: true,
......@@ -38,40 +34,41 @@
const { t } = useI18n();
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.isView = !!data?.isView;
isCopy.value = !!data?.isCopy;
setModalProps({
destroyOnClose: true,
maskClosable: false,
showCancelBtn: !state.isView,
showOkBtn: !state.isView,
canFullscreen: true,
width: 1920,
footer: state.isView ? null : undefined,defaultFullscreen:true,
width: 1920,
footer: state.isView ? null : undefined,
defaultFullscreen: true,
});
if (state.isUpdate || state.isView || isCopy.value) {
state.rowId = data.id;
if (state.isView) {
await formRef.value.setDisabledForm();
}
await formRef.value.setFormDataFromId(state.rowId);
} else {
formRef.value.resetFields();
}
}
async function saveModal() {
let saveSuccess = false;
try {
......@@ -94,14 +91,14 @@
}
} catch (error) {
if (error) {
let errorFields = error["errorFields"];
let errorFields = error['errorFields'];
if (Array.isArray(errorFields) && errorFields.length > 0) {
let errorInfos = errorFields[0]["errors"];
let errorInfos = errorFields[0]['errors'];
if (Array.isArray(errorInfos) && errorInfos.length > 0) {
let description = errorInfos[0];
notification.error({
message: t('提示'),
description: "物料清单列表"+description,
description: '物料清单列表' + description,
});
}
}
......@@ -113,9 +110,9 @@
async function handleSubmit() {
try {
const saveSuccess = await saveModal();
setModalProps({ confirmLoading: true });
if (saveSuccess) {
if (!state.isUpdate || isCopy.value) {
//false 新增
......@@ -129,23 +126,19 @@
description: t('修改成功!'),
}); //提示消息
}
closeModal();
formRef.value.resetFields();
emit('success');
}
} finally {
setModalProps({ confirmLoading: false });
}
}
function handleClose() {
formRef.value.resetFields();
closeModal();
}
</script>
import { FormProps, FormSchema } from '/@/components/Form';
import { BasicColumn } from '/@/components/Table';
import {uploadApi} from "/@/api/sys/upload";
import { uploadApi } from '/@/api/sys/upload';
export const searchFormSchema: FormSchema[] = [
{
......@@ -170,7 +170,7 @@ export const columns: BasicColumn[] = [
styleConfig: undefined,
listStyle: undefined,
}
},
];
//表头合并配置
export const headerMergingData = [];
......@@ -331,32 +331,32 @@ export const formProps: FormProps = {
style: { width: '100%' },
},
},
/* {
key: '25e30bcce47a437fb5674d9dbce3523a',
field: 'zl',
label: '重量/KG',
type: 'number',
component: 'InputNumber',
colProps: { span: 24 },
defaultValue: 0,
componentProps: {
width: '100%',
span: 7,
defaultValue: 0,
min: 0,
step: 0.1,
disabled: false,
showLabel: true,
controls: true,
required: false,
subTotal: false,
isShow: true,
rules: [],
events: { change: '' },
tooltipConfig: { visible: false, title: '提示文本' },
style: { width: '100%' },
},
},*/
/* {
key: '25e30bcce47a437fb5674d9dbce3523a',
field: 'zl',
label: '重量/KG',
type: 'number',
component: 'InputNumber',
colProps: { span: 24 },
defaultValue: 0,
componentProps: {
width: '100%',
span: 7,
defaultValue: 0,
min: 0,
step: 0.1,
disabled: false,
showLabel: true,
controls: true,
required: false,
subTotal: false,
isShow: true,
rules: [],
events: { change: '' },
tooltipConfig: { visible: false, title: '提示文本' },
style: { width: '100%' },
},
},*/
{
key: 'd66e5ebfa5d64b829fde596c82155158',
field: 'sfnbdd',
......@@ -610,39 +610,39 @@ export const formProps: FormProps = {
{
span: 6,
list: [
/* {
key: 'eb29665fc1e3453d9ef8aa88f8dfac0c',
field: 'zzl',
label: '铸造量',
type: 'input',
component: 'Input',
colProps: { span: 24 },
defaultValue: '',
componentProps: {
width: '100%',
span: 7,
defaultValue: '',
placeholder: '',
prefix: '',
suffix: '',
addonBefore: '',
addonAfter: '',
disabled: false,
allowClear: false,
showLabel: true,
required: false,
rules: [],
events: { change: '' },
listStyle: '',
isSave: false,
isShow: true,
scan: false,
bordered: true,
isShowAi: false,
tooltipConfig: { visible: false, title: '提示文本' },
style: { width: '100%' },
},
},*/
/* {
key: 'eb29665fc1e3453d9ef8aa88f8dfac0c',
field: 'zzl',
label: '铸造量',
type: 'input',
component: 'Input',
colProps: { span: 24 },
defaultValue: '',
componentProps: {
width: '100%',
span: 7,
defaultValue: '',
placeholder: '',
prefix: '',
suffix: '',
addonBefore: '',
addonAfter: '',
disabled: false,
allowClear: false,
showLabel: true,
required: false,
rules: [],
events: { change: '' },
listStyle: '',
isSave: false,
isShow: true,
scan: false,
bordered: true,
isShowAi: false,
tooltipConfig: { visible: false, title: '提示文本' },
style: { width: '100%' },
},
},*/
{
key: '99da98d5a335454a9d613715e539c7bd',
field: 'kh',
......@@ -791,7 +791,6 @@ export const formProps: FormProps = {
tooltipConfig: { visible: false, title: '提示文本' },
},
},
],
},
{
......@@ -891,14 +890,11 @@ export const formProps: FormProps = {
style: { width: '100%' },
},
},
],
},
{
span: 6,
list: [
],
list: [],
},
],
componentProps: {
......@@ -988,6 +984,14 @@ export const formProps: FormProps = {
width: 150,
component: '6baebd752fae4267aa0ce0a684aa3a1c',
},
{
name: 'routing_id',
tableTitle: '工艺路线',
bindField: 'gylx',
show: true,
width: 150,
component: '90df3bd996a3469789d4557edf80aca7',
},
],
},
dicOptions: [],
......@@ -1084,7 +1088,6 @@ export const formProps: FormProps = {
},
],
},
],
componentProps: {
gutter: 16,
......@@ -1224,7 +1227,8 @@ export const formProps: FormProps = {
},
],
},
{ span: 6,
{
span: 6,
list: [
{
key: 'v2n5h0j9v1k1b5n6n7i2a1d8t8y4x8s7',
......@@ -1274,7 +1278,7 @@ export const formProps: FormProps = {
style: { width: '100%' },
},
},
]
],
},
{ span: 6, list: [] },
],
......
export const permissionList = [
{
required: false,
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