Commit 64b77a7b by 张恒

feat(scjh): 更新生产计划模块的搜索表单和表格配置

- 添加计划编号搜索字段并启用客户选择功能
- 集成客户API数据源支持多选和搜索功能
- 调整表格列配置显示计划编号、客户和交付日期
- 修正占位符文本错误并调整字段必填验证规则
- 将子表单重构为标签页结构提升用户体验
- 优化产品列表组件的编辑和删除功能
- 更新工作流权限配置以匹配新的字段结构
parent a4d70719
...@@ -6,9 +6,9 @@ import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel'; ...@@ -6,9 +6,9 @@ import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel';
export interface MesProductionPlanPageParams extends BasicPageParams { export interface MesProductionPlanPageParams extends BasicPageParams {
jhbh: string; jhbh: string;
ddbh: string; kh: string;
ssgs: string; ywzz: string;
zt: string; zt: string;
} }
...@@ -19,13 +19,15 @@ export interface MesProductionPlanPageParams extends BasicPageParams { ...@@ -19,13 +19,15 @@ export interface MesProductionPlanPageParams extends BasicPageParams {
export interface MesProductionPlanPageModel { export interface MesProductionPlanPageModel {
id: string; id: string;
ddbh: string;
jhbh: string; jhbh: string;
ddbh: string;
kh: string; kh: string;
ssgs: string; jhjhrq: string;
ywzz: string;
zt: string; zt: string;
} }
...@@ -107,6 +109,8 @@ export interface MesProductionPlanProductModel { ...@@ -107,6 +109,8 @@ export interface MesProductionPlanProductModel {
cpbh: string; cpbh: string;
cpmc: string;
nbdm: string; nbdm: string;
hjzt: string; hjzt: string;
......
...@@ -222,3 +222,4 @@ ...@@ -222,3 +222,4 @@
}); });
</script> </script>
\ No newline at end of file
...@@ -3,19 +3,39 @@ import { BasicColumn } from '/@/components/Table'; ...@@ -3,19 +3,39 @@ 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[] = [
// {
// field: 'jhbh',
// label: '计划编号',
// defaultValue: undefined,
// component: 'Input',
// },
{ {
field: 'ddbh', field: 'jhbh',
label: '订单编号', label: '计划编号',
defaultValue: undefined, defaultValue: undefined,
component: 'Input', component: 'Input',
}, },
{ {
field: 'kh',
label: '客户',
defaultValue: undefined,
component: 'XjrSelect',
componentProps: {
datasourceType: 'api',
apiConfig: {
path: '/jcxx/getKhList',
method: 'GET',
apiId: '7bc8db3faba24b19a997856f6ef0b27e',
apiParams: [
{ key: '1', title: 'Query Params', tableInfo: [] },
{ key: '2', title: 'Header', tableInfo: [] },
{ key: '3', title: 'Body' },
],
script:
'var sql="select id as value,name as label from roke_partner where delete_mark = 0 and customer = \'1\'";\r\nreturn db.select(sql);',
},
labelField: 'label',
valueField: 'value',
mode: 'multiple',
showSearch: true,
getPopupContainer: () => document.body,
},
},
{
field: 'ywzz', field: 'ywzz',
label: '业务组织', label: '业务组织',
defaultValue: undefined, defaultValue: undefined,
...@@ -50,6 +70,19 @@ export const searchFormSchema: FormSchema[] = [ ...@@ -50,6 +70,19 @@ export const searchFormSchema: FormSchema[] = [
export const columns: BasicColumn[] = [ export const columns: BasicColumn[] = [
{ {
resizable: true, resizable: true,
dataIndex: 'jhbh',
title: '计划编号',
componentType: 'auto-code',
fixed: false,
sorter: true,
styleConfig: undefined,
listStyle: undefined,
},
{
resizable: true,
dataIndex: 'ddbh', dataIndex: 'ddbh',
title: '订单编号', title: '订单编号',
componentType: 'input', componentType: 'input',
...@@ -63,9 +96,9 @@ export const columns: BasicColumn[] = [ ...@@ -63,9 +96,9 @@ export const columns: BasicColumn[] = [
{ {
resizable: true, resizable: true,
dataIndex: 'jhbh', dataIndex: 'kh',
title: '计划编号', title: '客户',
componentType: 'auto-code', componentType: 'select',
fixed: false, fixed: false,
sorter: true, sorter: true,
...@@ -76,9 +109,9 @@ export const columns: BasicColumn[] = [ ...@@ -76,9 +109,9 @@ export const columns: BasicColumn[] = [
{ {
resizable: true, resizable: true,
dataIndex: 'kh', dataIndex: 'jhjhrq',
title: '客户', title: '计划交付日期',
componentType: 'select', componentType: 'date',
fixed: false, fixed: false,
sorter: true, sorter: true,
...@@ -236,7 +269,7 @@ export const formProps: FormProps = { ...@@ -236,7 +269,7 @@ export const formProps: FormProps = {
width: '100%', width: '100%',
span: 7, span: 7,
defaultValue: '', defaultValue: '',
placeholder: '请输入客户项目号', placeholder: '请输入客户项目号项目号',
prefix: '', prefix: '',
suffix: '', suffix: '',
addonBefore: '', addonBefore: '',
...@@ -283,7 +316,7 @@ export const formProps: FormProps = { ...@@ -283,7 +316,7 @@ export const formProps: FormProps = {
apiId: '93d735dcb7364a0f8102188ec4d77ac7', apiId: '93d735dcb7364a0f8102188ec4d77ac7',
}, },
dicOptions: [], dicOptions: [],
required: true, required: false,
rules: [], rules: [],
events: {}, events: {},
isShow: true, isShow: true,
...@@ -396,9 +429,9 @@ export const formProps: FormProps = { ...@@ -396,9 +429,9 @@ export const formProps: FormProps = {
componentProps: { componentProps: {
width: '100%', width: '100%',
span: 7, span: 7,
placeholder: '请选择下拉选择客户', placeholder: '',
showLabel: true, showLabel: true,
showSearch: false, showSearch: true,
isMultiple: false, isMultiple: false,
clearable: false, clearable: false,
disabled: false, disabled: false,
...@@ -442,7 +475,7 @@ export const formProps: FormProps = { ...@@ -442,7 +475,7 @@ export const formProps: FormProps = {
componentProps: { componentProps: {
width: '100%', width: '100%',
span: 7, span: 7,
placeholder: '请选择下拉选择业务组织', placeholder: '',
showLabel: true, showLabel: true,
showSearch: false, showSearch: false,
isMultiple: false, isMultiple: false,
...@@ -496,6 +529,25 @@ export const formProps: FormProps = { ...@@ -496,6 +529,25 @@ export const formProps: FormProps = {
}, },
}, },
{ {
key: '4b60581139c047959bf0ed8f0d5dd55f',
field: '',
label: '',
type: 'tab',
colProps: { span: 24 },
component: 'Tab',
children: [
{
span: 24,
name: '物料',
prefix: '',
suffix: '',
activeColor: '#1c8dff',
folderId: '',
imageUrl: '',
conFolderId: '',
conImageUrl: '',
list: [
{
key: '24ea4c6631d047a1a8e7c3fe86ab080c', key: '24ea4c6631d047a1a8e7c3fe86ab080c',
label: '', label: '',
field: 'mesProductionPlanProductList', field: 'mesProductionPlanProductList',
...@@ -516,8 +568,7 @@ export const formProps: FormProps = { ...@@ -516,8 +568,7 @@ export const formProps: FormProps = {
width: '100%', width: '100%',
span: '', span: '',
defaultValue: '', defaultValue: '',
placeholder: '请输入产品ID产品ID', placeholder: '',
maxlength: null,
prefix: '', prefix: '',
suffix: '', suffix: '',
addonBefore: '', addonBefore: '',
...@@ -540,7 +591,7 @@ export const formProps: FormProps = { ...@@ -540,7 +591,7 @@ export const formProps: FormProps = {
}, },
{ {
key: 'cd0038f42bc64c189b3821f0e2061321', key: 'cd0038f42bc64c189b3821f0e2061321',
title: '物料编号', title: '编号',
dataIndex: 'cpbh', dataIndex: 'cpbh',
componentType: 'Input', componentType: 'Input',
defaultValue: '', defaultValue: '',
...@@ -548,7 +599,7 @@ export const formProps: FormProps = { ...@@ -548,7 +599,7 @@ export const formProps: FormProps = {
width: '100%', width: '100%',
span: '', span: '',
defaultValue: '', defaultValue: '',
placeholder: '请输入物料编号', placeholder: '',
prefix: '', prefix: '',
suffix: '', suffix: '',
addonBefore: '', addonBefore: '',
...@@ -570,6 +621,37 @@ export const formProps: FormProps = { ...@@ -570,6 +621,37 @@ export const formProps: FormProps = {
}, },
}, },
{ {
key: 'c8f88cafd17f4655bfbe4643ffe58c9c',
title: '名称',
dataIndex: 'cpmc',
componentType: 'Input',
defaultValue: '',
componentProps: {
width: '100%',
span: '',
defaultValue: '',
placeholder: '',
prefix: '',
suffix: '',
addonBefore: '',
addonAfter: '',
disabled: false,
allowClear: false,
showLabel: true,
required: false,
rules: [],
events: {},
listStyle: '',
isSave: false,
isShow: true,
scan: false,
bordered: true,
isShowAi: false,
tooltipConfig: { visible: false, title: '提示文本' },
prestrainField: 'cpmc',
},
},
{
key: '6ce71ecb0b6e4d14ae65be4029b179fd', key: '6ce71ecb0b6e4d14ae65be4029b179fd',
title: '内部代码', title: '内部代码',
dataIndex: 'nbdm', dataIndex: 'nbdm',
...@@ -768,14 +850,14 @@ export const formProps: FormProps = { ...@@ -768,14 +850,14 @@ export const formProps: FormProps = {
itemId: '', itemId: '',
dicOptions: [], dicOptions: [],
useSelectButton: true, useSelectButton: true,
buttonName: '选择产品', buttonName: '选择',
showLabel: true, showLabel: true,
showComponentBorder: true, showComponentBorder: true,
showBorder: false, showBorder: false,
bordercolor: '#f0f0f0', bordercolor: '#f0f0f0',
bordershowtype: [true, true, true, true], bordershowtype: [true, true, true, true],
borderwidth: 1, borderwidth: 1,
showIndex: false, showIndex: true,
isShow: true, isShow: true,
multipleHeads: [], multipleHeads: [],
buttonList: [], buttonList: [],
...@@ -790,7 +872,77 @@ export const formProps: FormProps = { ...@@ -790,7 +872,77 @@ export const formProps: FormProps = {
hasCheckedCol: false, hasCheckedCol: false,
events: {}, events: {},
showPagenation: true, showPagenation: true,
widths: [
{
key: 'd762849da7e741a7b004c1c81b91593a',
name: '产品ID',
bindField: 'cpid',
resizable: false,
isEdit: false,
},
{
key: 'cd0038f42bc64c189b3821f0e2061321',
name: '编号',
bindField: 'cpbh',
resizable: false,
isEdit: true,
},
{
key: 'c8f88cafd17f4655bfbe4643ffe58c9c',
name: '名称',
bindField: 'cpmc',
resizable: false,
isEdit: true,
},
{
key: '6ce71ecb0b6e4d14ae65be4029b179fd',
name: '内部代码',
bindField: 'nbdm',
resizable: false,
isEdit: false,
},
{
key: '0c075736898c431ea3f5bca58ec65af6',
name: '型号',
bindField: 'xh',
resizable: false,
isEdit: false,
},
{
key: '697829b6aed54b8cbaa853c62619831a',
name: '合金状态',
bindField: 'hjzt',
resizable: false,
isEdit: false,
}, },
{
key: '2f56d9297a9c49d59d3b43f62e2946f2',
name: '规格(尺寸)',
bindField: 'gg',
resizable: false,
isEdit: false,
},
{
key: '6a93c6d77ce1428c9fbba62a02afd6d0',
name: '数量',
bindField: 'sl',
resizable: false,
isEdit: false,
},
{
key: '3b80cb19086e49e1a746cf9ace3f938e',
name: '质量/KG',
bindField: 'zl',
resizable: false,
isEdit: false,
},
],
},
},
],
},
],
componentProps: { tabPosition: 'top', size: 'default', type: 'line', isShow: true },
}, },
{ {
key: 'f7ae7fe08ec74cf6b91cd3cd35cfeaaf', key: 'f7ae7fe08ec74cf6b91cd3cd35cfeaaf',
......
...@@ -33,7 +33,7 @@ export const permissionList = [ ...@@ -33,7 +33,7 @@ export const permissionList = [
defaultValue: '', defaultValue: '',
}, },
{ {
required: true, required: false,
view: true, view: true,
edit: true, edit: true,
disabled: false, disabled: false,
...@@ -169,7 +169,7 @@ export const permissionList = [ ...@@ -169,7 +169,7 @@ export const permissionList = [
isSaveTable: false, isSaveTable: false,
showChildren: false, showChildren: false,
tableName: 'mesProductionPlanProductList', tableName: 'mesProductionPlanProductList',
fieldName: '物料编号', fieldName: '编号',
fieldId: 'cpbh', fieldId: 'cpbh',
type: 'Input', type: 'Input',
key: 'cd0038f42bc64c189b3821f0e2061321', key: 'cd0038f42bc64c189b3821f0e2061321',
...@@ -184,6 +184,21 @@ export const permissionList = [ ...@@ -184,6 +184,21 @@ export const permissionList = [
isSaveTable: false, isSaveTable: false,
showChildren: false, showChildren: false,
tableName: 'mesProductionPlanProductList', tableName: 'mesProductionPlanProductList',
fieldName: '名称',
fieldId: 'cpmc',
type: 'Input',
key: 'c8f88cafd17f4655bfbe4643ffe58c9c',
children: [],
},
{
required: true,
view: true,
edit: true,
disabled: false,
isSubTable: false,
isSaveTable: false,
showChildren: false,
tableName: 'mesProductionPlanProductList',
fieldName: '内部代码', fieldName: '内部代码',
fieldId: 'nbdm', fieldId: 'nbdm',
type: 'Input', type: 'Input',
......
<template> <template>
<ResizePageWrapper :hasLeft="false"> <ResizePageWrapper :hasLeft="false">
<template #resizeRight> <template #resizeRight>
...@@ -26,7 +27,11 @@ ...@@ -26,7 +27,11 @@
</template> </template>
</template> </template>
<template #bodyCell="{ column, record }"> <template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'action'"> <template v-if="column.dataIndex === 'action'">
<TableAction <TableAction
:actions="getLessActions(record)" :actions="getLessActions(record)"
:dropDownActions="getMoreActions(record)" :dropDownActions="getMoreActions(record)"
...@@ -39,14 +44,27 @@ ...@@ -39,14 +44,27 @@
}}</span> }}</span>
</template> </template>
</template> </template>
</BasicTable> </BasicTable>
</template> </template>
<ScjhModal @register="registerModal" @success="handleFormSuccess" @cancel="handleFormCancel" />
</ResizePageWrapper>
<ScjhModal @register="registerModal" @success="handleFormSuccess" @cancel="handleFormCancel"/>
</ResizePageWrapper>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, computed, provide, Ref, createVNode } from 'vue'; import { ref, computed,provide,Ref, createVNode,
} from 'vue';
import { Modal } from 'ant-design-vue'; import { Modal } from 'ant-design-vue';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
...@@ -61,19 +79,45 @@ ...@@ -61,19 +79,45 @@
import { useI18n } from '/@/hooks/web/useI18n'; import { useI18n } from '/@/hooks/web/useI18n';
import { usePermission } from '/@/hooks/web/usePermission'; import { usePermission } from '/@/hooks/web/usePermission';
import CustomButtonModal from '/@/components/Form/src/components/CustomButtonModal.vue'; import CustomButtonModal from '/@/components/Form/src/components/CustomButtonModal.vue';
import { executeListStyle, getValue } from '/@/hooks/web/useListStyle'; //列表样式配置 import { executeListStyle, getValue } from '/@/hooks/web/useListStyle';//列表样式配置
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { useModal } from '/@/components/Modal'; import { useModal } from '/@/components/Modal';
import ScjhModal from './components/ScjhModal.vue'; import ScjhModal from './components/ScjhModal.vue';
import { searchFormSchema, columns } from './components/config'; import { searchFormSchema, columns } from './components/config';
import Icon from '/@/components/Icon/index'; import Icon from '/@/components/Icon/index';
const listSpliceNum = ref(3); //操作列最先展示几个 const listSpliceNum = ref(3); //操作列最先展示几个
import { useConcurrentLock } from '/@/hooks/web/useConcurrentLock'; import { useConcurrentLock } from '/@/hooks/web/useConcurrentLock';
const pageParamsInfo = ref<any>({}); const pageParamsInfo = ref<any>({});
...@@ -92,6 +136,11 @@ ...@@ -92,6 +136,11 @@
const filterColumns = filterColumnAuth(columns); const filterColumns = filterColumnAuth(columns);
const tableRef = ref(); const tableRef = ref();
//展示在列表内的按钮 //展示在列表内的按钮
const actionButtons = ref<string[]>(['view', 'edit', 'delete']); const actionButtons = ref<string[]>(['view', 'edit', 'delete']);
const buttonConfigs = computed(() => { const buttonConfigs = computed(() => {
...@@ -162,12 +211,18 @@ ...@@ -162,12 +211,18 @@
const { currentRoute } = useRouter(); const { currentRoute } = useRouter();
const formIdComputedRef = computed(() => currentRoute.value.meta.formId as string); const formIdComputedRef = computed(() => currentRoute.value.meta.formId as string);
provide<Ref<string>>('currentFormId', formIdComputedRef); provide<Ref<string>>('currentFormId', formIdComputedRef);
const selectedKeys = ref<string[]>([]); const selectedKeys = ref<string[]>([]);
const selectedRowsData = ref<any[]>([]); const selectedRowsData = ref<any[]>([]);
const [registerModal, { openModal }] = useModal(); const [registerModal, { openModal }] = useModal();
const [registerTable, { reload }] = useTable({ const [registerTable, { reload }] = useTable({
...@@ -184,18 +239,25 @@ ...@@ -184,18 +239,25 @@
fieldMapToTime: [], fieldMapToTime: [],
showResetButton: false, showResetButton: false,
}, },
bordered: false, bordered:false,
beforeFetch: (params) => { beforeFetch: (params) => {
pageParamsInfo.value = { ...params, FormId: formIdComputedRef.value, PK: 'id' }; pageParamsInfo.value = {...params, FormId: formIdComputedRef.value,PK: 'id' }
return pageParamsInfo.value; return pageParamsInfo.value;
}, },
afterFetch: (res) => { afterFetch: (res) => {
selectedKeys.value = []; selectedKeys.value = [];
selectedRowsData.value = []; selectedRowsData.value = [];
}, },
useSearchForm: true, useSearchForm: true,
showTableSetting: true, showTableSetting: true,
striped: false, striped: false,
actionColumn: { actionColumn: {
width: 195, width: 195,
...@@ -212,10 +274,15 @@ ...@@ -212,10 +274,15 @@
objectId: formIdComputedRef.value, ////系统表单formId,自定义表单releaseId的id值 objectId: formIdComputedRef.value, ////系统表单formId,自定义表单releaseId的id值
}); });
function buttonClick(code) { function buttonClick(code) {
btnEvent[code](); btnEvent[code]();
} }
function handleAdd() { function handleAdd() {
openModal(true, { isUpdate: false }); openModal(true, { isUpdate: false });
} }
...@@ -235,12 +302,16 @@ ...@@ -235,12 +302,16 @@
id: record[field], id: record[field],
isUpdate: true, isUpdate: true,
}; };
openModal(true, info); openModal(true, info);
} catch (error) {} } catch (error) {}
} }
function handleDelete(record: Recordable) { function handleDelete(record: Recordable) {
deleteList([record.id]); deleteList([record.id]);
} }
...@@ -265,6 +336,10 @@ ...@@ -265,6 +336,10 @@
}); });
} }
function onSelectChange(selectedRowKeys: [], selectedRows) { function onSelectChange(selectedRowKeys: [], selectedRows) {
selectedKeys.value = selectedRowKeys; selectedKeys.value = selectedRowKeys;
selectedRowsData.value = selectedRows; selectedRowsData.value = selectedRows;
...@@ -272,6 +347,7 @@ ...@@ -272,6 +347,7 @@
function customRow(record: Recordable) { function customRow(record: Recordable) {
return { return {
onClick: () => { onClick: () => {
let selectedRowKeys = [...selectedKeys.value]; let selectedRowKeys = [...selectedKeys.value];
if (selectedRowKeys.indexOf(record.id) >= 0) { if (selectedRowKeys.indexOf(record.id) >= 0) {
...@@ -291,11 +367,15 @@ ...@@ -291,11 +367,15 @@
} }
function handleSuccess() { function handleSuccess() {
selectedKeys.value = []; selectedKeys.value = [];
selectedRowsData.value = []; selectedRowsData.value = [];
reload(); reload();
} }
function handleFormSuccess() { function handleFormSuccess() {
handleSuccess(); handleSuccess();
handleCloseFormEnableLocke(buttonConfigs.value, 'edit'); handleCloseFormEnableLocke(buttonConfigs.value, 'edit');
...@@ -304,8 +384,9 @@ ...@@ -304,8 +384,9 @@
handleCloseFormEnableLocke(buttonConfigs.value, 'edit'); handleCloseFormEnableLocke(buttonConfigs.value, 'edit');
} }
function handleView(record: Recordable) { function handleView(record: Recordable) {
let info = { let info={
isView: true, isView: true,
id: record.id, id: record.id,
}; };
...@@ -348,7 +429,7 @@ ...@@ -348,7 +429,7 @@
let list = getActions(record); let list = getActions(record);
return list.slice(listSpliceNum.value); return list.slice(listSpliceNum.value);
} }
function getActions(record: Recordable): ActionItem[] { function getActions(record: Recordable):ActionItem[] {
record.isCanEdit = false; record.isCanEdit = false;
let actionsList: ActionItem[] = []; let actionsList: ActionItem[] = [];
...@@ -375,17 +456,24 @@ ...@@ -375,17 +456,24 @@
}); });
return actionsList; return actionsList;
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
:deep(.ant-table-selection-col) { :deep(.ant-table-selection-col) {
width: 50px; width: 50px;
} }
.show { .show{
display: flex; display: flex;
} }
.hide { .hide{
display: none !important; display: none !important;
} }
</style> </style>
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