Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
weiqiao-vue
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
金民
weiqiao-vue
Commits
1031dfe4
Commit
1031dfe4
authored
Jan 22, 2026
by
孙祥林
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[孙祥林]fix:生产备料编辑-生成领料单走自定义页面
parent
b74e23fb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
213 additions
and
48 deletions
+213
-48
xjrsoft-vue3/src/views/ckgl/scbl/components/Form.vue
+131
-46
xjrsoft-vue3/src/views/ckgl/scbl/components/PickListModal.vue
+80
-0
xjrsoft-vue3/src/views/ckgl/scbl/components/config.ts
+2
-2
No files found.
xjrsoft-vue3/src/views/ckgl/scbl/components/Form.vue
View file @
1031dfe4
<
template
>
<div
class=
"pt-4"
>
<SimpleForm
ref=
"systemFormRef"
:formProps=
"data.formDataProps"
:formModel=
"state.formModel"
:isWorkFlow=
"props.fromPage
!=
FromPageType.MENU"
:isCamelCase=
"true"
:isWorkFlow=
"props.fromPage
!=
FromPageType.MENU"
:isCamelCase=
"true"
@
model-change=
"handleChange"
/>
<PickListModal
ref=
"pickModalRef"
@
success=
"handlePickSuccess"
/>
</div>
</
template
>
<
script
lang=
"ts"
setup
>
import
{
reactive
,
ref
,
onMounted
,
nextTick
,
watch
}
from
'vue'
;
import
{
reactive
,
ref
,
onMounted
,
nextTick
,
watch
,
onUnmounted
}
from
'vue'
;
import
{
formProps
,
formEventConfigs
}
from
'./config'
;
import
SimpleForm
from
'/@/components/SimpleForm/src/SimpleForm.vue'
;
import
{
addMesWarehousePrepare
,
getMesWarehousePrepare
,
updateMesWarehousePrepare
}
from
'/@/api/ckgl/scbl'
;
import
{
cloneDeep
,
isString
}
from
'lodash-es'
;
import
{
addMesWarehousePrepare
,
getMesWarehousePrepare
,
updateMesWarehousePrepare
,
}
from
'/@/api/ckgl/scbl'
;
import
{
cloneDeep
,
isString
}
from
'lodash-es'
;
import
{
FormDataProps
}
from
'/@/components/Designer/src/types'
;
import
{
usePermission
}
from
'/@/hooks/web/usePermission'
;
import
CustomButtonModal
from
'/@/components/Form/src/components/CustomButtonModal.vue'
;
import
{
FromPageType
}
from
'/@/enums/workflowEnum'
;
import
{
createFormEvent
,
getFormDataEvent
,
loadFormEvent
,
submitFormEvent
,}
from
'/@/hooks/web/useFormEvent'
;
import
{
createFormEvent
,
getFormDataEvent
,
loadFormEvent
,
submitFormEvent
,
}
from
'/@/hooks/web/useFormEvent'
;
import
{
changeWorkFlowForm
,
changeSchemaDisabled
}
from
'/@/hooks/web/useWorkFlowForm'
;
import
{
WorkFlowFormParams
}
from
'/@/model/workflow/bpmnConfig'
;
import
{
useRouter
}
from
'vue-router'
;
import
PickListModal
from
'./PickListModal.vue'
;
import
{
useModal
}
from
'/@/components/Modal'
;
const
[
registerPickList
,
{
openModal
:
openPickList
}]
=
useModal
();
const
{
filterFormSchemaAuth
}
=
usePermission
();
const
RowKey
=
'id'
;
const
emits
=
defineEmits
([
'changeUploadComponentIds'
,
'loadingCompleted'
,
'update:value'
]);
const
emits
=
defineEmits
([
'changeUploadComponentIds'
,
'loadingCompleted'
,
'update:value'
]);
const
props
=
defineProps
({
fromPage
:
{
type
:
Number
,
default
:
FromPageType
.
MENU
,
},
});
const
pickModalRef
=
ref
<
InstanceType
<
typeof
PickListModal
>>
();
const
systemFormRef
=
ref
();
const
data
:
{
formDataProps
:
FormDataProps
}
=
reactive
({
formDataProps
:
cloneDeep
(
formProps
),
});
const
state
=
reactive
({
formModel
:
{},
formInfo
:
{
formId
:
''
,
formName
:
''
}
formInfo
:
{
formId
:
''
,
formName
:
''
},
});
const
{
currentRoute
}
=
useRouter
();
watch
(
()
=>
state
.
formModel
,
(
val
)
=>
{
(
val
)
=>
{
emits
(
'update:value'
,
val
);
},
{
deep
:
true
,
},
);
onMounted
(
async
()
=>
{
try
{
if
(
props
.
fromPage
==
FromPageType
.
MENU
)
{
setMenuPermission
();
if
(
currentRoute
.
value
.
meta
){
state
.
formInfo
.
formName
=
currentRoute
.
value
.
meta
.
title
&&
isString
(
currentRoute
.
value
.
meta
.
title
)?
currentRoute
.
value
.
meta
.
title
:
''
;
state
.
formInfo
.
formId
=
currentRoute
.
value
.
meta
.
formId
&&
isString
(
currentRoute
.
value
.
meta
.
formId
)?
currentRoute
.
value
.
meta
.
formId
:
''
;
if
(
currentRoute
.
value
.
meta
)
{
state
.
formInfo
.
formName
=
currentRoute
.
value
.
meta
.
title
&&
isString
(
currentRoute
.
value
.
meta
.
title
)
?
currentRoute
.
value
.
meta
.
title
:
''
;
state
.
formInfo
.
formId
=
currentRoute
.
value
.
meta
.
formId
&&
isString
(
currentRoute
.
value
.
meta
.
formId
)
?
currentRoute
.
value
.
meta
.
formId
:
''
;
}
await
createFormEvent
(
formEventConfigs
,
state
.
formModel
,
await
createFormEvent
(
formEventConfigs
,
state
.
formModel
,
systemFormRef
.
value
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
);
//表单事件:初始化表单
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
,
);
//表单事件:初始化表单
await
nextTick
();
await
loadFormEvent
(
formEventConfigs
,
state
.
formModel
,
await
loadFormEvent
(
formEventConfigs
,
state
.
formModel
,
systemFormRef
.
value
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
);
//表单事件:加载表单
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
,
);
//表单事件:加载表单
}
else
if
(
props
.
fromPage
==
FromPageType
.
FLOW
)
{
emits
(
'loadingCompleted'
);
//告诉系统表单已经加载完毕
// loadingCompleted后 工作流页面直接利用Ref调用setWorkFlowForm方法
...
...
@@ -78,15 +110,43 @@
}
else
if
(
props
.
fromPage
==
FromPageType
.
DESKTOP
)
{
// 桌面设计 表单事件需要执行
emits
(
'loadingCompleted'
);
//告诉系统表单已经加载完毕
await
createFormEvent
(
formEventConfigs
,
state
.
formModel
,
await
createFormEvent
(
formEventConfigs
,
state
.
formModel
,
systemFormRef
.
value
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
);
//表单事件:初始化表单
await
loadFormEvent
(
formEventConfigs
,
state
.
formModel
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
,
);
//表单事件:初始化表单
await
loadFormEvent
(
formEventConfigs
,
state
.
formModel
,
systemFormRef
.
value
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
);
//表单事件:加载表单
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
,
);
//表单事件:加载表单
}
await
nextTick
();
// 编辑弹窗-顶部按钮:拿子表勾选行
(
window
as
any
).
scbl_getSelectedRows
=
()
=>
{
const
rows
=
systemFormRef
.
value
?.
getTableSelectedRows
?.(
'c331cc5721334363bf1dbc68c26d65ad'
)
||
[];
console
.
log
(
'编辑弹窗-选中行:'
,
rows
);
// 后续:打开你自己的弹窗
pickModalRef
.
value
?.
open
(
rows
);
};
}
catch
(
error
)
{}
});
onUnmounted
(()
=>
{
delete
(
window
as
any
).
scbl_getSelectedRows
;
});
function
handlePickSuccess
(
data
)
{
// data 就是勾选行(单条对象 或 数组)
console
.
log
(
'弹窗返回'
,
data
);
}
// 根据菜单页面权限,设置表单属性(必填,禁用,显示)
function
setMenuPermission
()
{
data
.
formDataProps
.
schemas
=
filterFormSchemaAuth
(
data
.
formDataProps
.
schemas
!
);
...
...
@@ -106,19 +166,23 @@
}
finally
{
}
return
values
;
}
}
// 根据行唯一ID查询行数据,并设置表单数据 【编辑】
async
function
setFormDataFromId
(
rowId
)
{
try
{
const
record
=
await
getMesWarehousePrepare
(
rowId
);
const
record
=
await
getMesWarehousePrepare
(
rowId
);
setFieldsValue
(
record
);
state
.
formModel
=
record
;
await
getFormDataEvent
(
formEventConfigs
,
state
.
formModel
,
await
getFormDataEvent
(
formEventConfigs
,
state
.
formModel
,
systemFormRef
.
value
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
);
//表单事件:获取表单数据
}
catch
(
error
)
{
}
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
,
);
//表单事件:获取表单数据
}
catch
(
error
)
{}
}
// 辅助返回表单数据
async
function
getFieldsValue
()
{
...
...
@@ -144,7 +208,7 @@
await
systemFormRef
.
value
.
resetFields
();
}
// 设置表单数据全部为Disabled 【查看】
async
function
setDisabledForm
(
)
{
async
function
setDisabledForm
()
{
data
.
formDataProps
.
schemas
=
changeSchemaDisabled
(
cloneDeep
(
data
.
formDataProps
.
schemas
));
}
// 获取行键值
...
...
@@ -157,9 +221,15 @@
values
[
RowKey
]
=
rowId
;
state
.
formModel
=
values
;
let
saveVal
=
await
updateMesWarehousePrepare
(
values
);
await
submitFormEvent
(
formEventConfigs
,
state
.
formModel
,
await
submitFormEvent
(
formEventConfigs
,
state
.
formModel
,
systemFormRef
.
value
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
);
//表单事件:提交表单
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
,
);
//表单事件:提交表单
return
saveVal
;
}
catch
(
error
)
{}
}
...
...
@@ -168,14 +238,20 @@
try
{
state
.
formModel
=
values
;
let
saveVal
=
await
addMesWarehousePrepare
(
values
);
await
submitFormEvent
(
formEventConfigs
,
state
.
formModel
,
await
submitFormEvent
(
formEventConfigs
,
state
.
formModel
,
systemFormRef
.
value
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
);
//表单事件:提交表单
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
,
);
//表单事件:提交表单
return
saveVal
;
}
catch
(
error
)
{}
}
// 根据工作流页面权限,设置表单属性(必填,禁用,显示)
async
function
setWorkFlowForm
(
obj
:
WorkFlowFormParams
)
{
async
function
setWorkFlowForm
(
obj
:
WorkFlowFormParams
)
{
try
{
if
(
obj
.
formId
)
state
.
formInfo
.
formId
=
obj
.
formId
;
if
(
obj
.
formName
)
state
.
formInfo
.
formName
=
obj
.
formName
;
...
...
@@ -189,17 +265,29 @@
state
.
formModel
=
formModels
;
setFieldsValue
(
formModels
);
}
catch
(
error
)
{}
await
createFormEvent
(
formEventConfigs
,
state
.
formModel
,
await
createFormEvent
(
formEventConfigs
,
state
.
formModel
,
systemFormRef
.
value
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
);
//表单事件:初始化表单
await
loadFormEvent
(
formEventConfigs
,
state
.
formModel
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
,
);
//表单事件:初始化表单
await
loadFormEvent
(
formEventConfigs
,
state
.
formModel
,
systemFormRef
.
value
,
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
);
//表单事件:加载表单
formProps
.
schemas
,
true
,
state
.
formInfo
.
formName
,
state
.
formInfo
.
formId
,
);
//表单事件:加载表单
}
function
handleChange
(
val
)
{
function
handleChange
(
val
)
{
emits
(
'update:value'
,
val
);
}
async
function
sendMessageForAllIframe
()
{
async
function
sendMessageForAllIframe
()
{
try
{
if
(
systemFormRef
.
value
&&
systemFormRef
.
value
.
sendMessageForAllIframe
)
{
systemFormRef
.
value
.
sendMessageForAllIframe
();
...
...
@@ -218,8 +306,6 @@
setWorkFlowForm
,
getRowKey
,
getFieldsValue
,
sendMessageForAllIframe
sendMessageForAllIframe
,
});
</
script
>
\ No newline at end of file
xjrsoft-vue3/src/views/ckgl/scbl/components/PickListModal.vue
0 → 100644
View file @
1031dfe4
<
template
>
<BasicModal
v-bind=
"$attrs"
@
register=
"registerModal"
title=
"生成领料单"
width=
"700px"
@
ok=
"handleOk"
@
cancel=
"handleCancel"
>
<!-- 可编辑表格 -->
<BasicTable
:dataSource=
"tableData"
:columns=
"columns"
:pagination=
"false"
:scroll=
"
{ y: 300 }"
rowKey="id"
/>
</BasicModal>
</
template
>
<
script
lang=
"ts"
setup
>
import
{
ref
,
defineExpose
}
from
'vue'
;
import
{
BasicModal
,
useModal
}
from
'/@/components/Modal'
;
import
{
BasicTable
,
BasicColumn
}
from
'/@/components/Table'
;
import
{
useMessage
}
from
'/@/hooks/web/useMessage'
;
import
{
h
}
from
'vue'
;
import
{
InputNumber
}
from
'ant-design-vue'
;
const
{
Message
}
=
useMessage
();
const
[
registerModal
,
{
openModal
,
closeModal
}]
=
useModal
();
const
{
createMessage
}
=
useMessage
();
const
emit
=
defineEmits
([
'success'
]);
// ✅ 必须写
/* 表格数据 */
const
tableData
=
ref
<
any
[]
>
([]);
/* 表格列定义 */
const
columns
:
BasicColumn
[]
=
[
{
title
:
'物料编码'
,
dataIndex
:
'wlbh'
,
width
:
120
},
{
title
:
'物料名称'
,
dataIndex
:
'wlmc'
,
width
:
200
},
{
title
:
'领料数量'
,
dataIndex
:
'blsl'
,
width
:
130
,
// 常驻输入框
customRender
:
({
record
})
=>
h
(
InputNumber
,
{
value
:
record
.
blsl
,
min
:
0
,
max
:
999999
,
size
:
'small'
,
style
:
{
width
:
'100%'
},
onChange
:
(
val
)
=>
(
record
.
blsl
=
val
),
}),
},
];
/* 打开弹窗 - 父组件调用 */
function
open
(
rows
:
any
[])
{
tableData
.
value
=
rows
.
map
((
r
)
=>
({
...
r
,
blsl
:
r
.
blsl
||
0
}));
openModal
(
true
);
}
/* 确认 - 回传所有行(含改后的数量) */
function
handleOk
()
{
// 简单校验:数量不能全 0
const
allZero
=
tableData
.
value
.
every
((
r
)
=>
r
.
blsl
===
0
);
if
(
allZero
)
{
createMessage
.
warning
(
'请至少输入一行领料数量'
);
// ✅ 用 createMessage
return
;
}
emit
(
'success'
,
tableData
.
value
);
// 回传完整数组
closeModal
();
}
function
handleCancel
()
{
closeModal
();
}
defineExpose
({
open
});
</
script
>
xjrsoft-vue3/src/views/ckgl/scbl/components/config.ts
View file @
1031dfe4
...
...
@@ -723,10 +723,10 @@ export const formProps: FormProps = {
event
:
[
{
operateType
:
2
,
operateConfig
:
{
js
:
'
formActionType.openModal(curRowData
)'
},
operateConfig
:
{
js
:
'
window.scbl_getSelectedRows(
)'
},
},
],
type
:
2
,
type
:
1
,
modal
:
{
bindModal
:
'2013812486102130689'
,
innerParams
:
[
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment