Commit bf93cc5f7f517bac6d05aa76fdc49ea4edf247fd
1 parent
718c52c3
feat: update
Showing
11 changed files
with
530 additions
and
171 deletions
.husky/pre-commit
1 | -#!/bin/sh | ||
2 | -. "$(dirname "$0")/_/husky.sh" | ||
3 | -. "$(dirname "$0")/common.sh" | 1 | +# #!/bin/sh |
2 | +# . "$(dirname "$0")/_/husky.sh" | ||
3 | +# . "$(dirname "$0")/common.sh" | ||
4 | 4 | ||
5 | -[ -n "$CI" ] && exit 0 | 5 | +# [ -n "$CI" ] && exit 0 |
6 | 6 | ||
7 | -PATH="/usr/local/bin:$PATH" | 7 | +# PATH="/usr/local/bin:$PATH" |
8 | 8 | ||
9 | -# Format and submit code according to lintstagedrc.js configuration | ||
10 | -pnpm exec lint-staged | 9 | +# # Format and submit code according to lintstagedrc.js configuration |
10 | +# pnpm exec lint-staged |
src/api/project/approve.ts
1 | import { find, isEmpty } from 'lodash-es'; | 1 | import { find, isEmpty } from 'lodash-es'; |
2 | import { defHttp } from '/@/utils/http/axios'; | 2 | import { defHttp } from '/@/utils/http/axios'; |
3 | -import { FIELDS_BASE_INFO, FIELDS_PROFIT_INFO } from '/@/views/project/order/tableData'; | 3 | +import { |
4 | + FIELDS_BASE_INFO, | ||
5 | + FIELDS_PROFIT_INFO, | ||
6 | + FIELDS_REPORT_INFO, | ||
7 | +} from '/@/views/project/order/tableData'; | ||
4 | 8 | ||
5 | enum Api { | 9 | enum Api { |
6 | APPROVE = '/order/erp/audit/wait_audit_list', | 10 | APPROVE = '/order/erp/audit/wait_audit_list', |
@@ -23,7 +27,6 @@ export const getWaitListApi = async (params: DemoParams) => { | @@ -23,7 +27,6 @@ export const getWaitListApi = async (params: DemoParams) => { | ||
23 | params, | 27 | params, |
24 | }); | 28 | }); |
25 | 29 | ||
26 | - console.log('%c [ ]-26', 'font-size:13px; background:pink; color:#bf2c9f;', 123); | ||
27 | res.records = res.records.map((item) => { | 30 | res.records = res.records.map((item) => { |
28 | item.fields = []; | 31 | item.fields = []; |
29 | !isEmpty(item.fieldInfos.baseFields) && | 32 | !isEmpty(item.fieldInfos.baseFields) && |
@@ -33,21 +36,24 @@ export const getWaitListApi = async (params: DemoParams) => { | @@ -33,21 +36,24 @@ export const getWaitListApi = async (params: DemoParams) => { | ||
33 | item.fields.push(obj?.label); | 36 | item.fields.push(obj?.label); |
34 | } | 37 | } |
35 | }); | 38 | }); |
36 | - !isEmpty(item.fieldInfos.baseFields) && | ||
37 | - Object.entries(item.fieldInfos.profitAnalysisFields).map(([key, value]) => { | 39 | + !isEmpty(item.fieldInfos.reportFields) && |
40 | + Object.entries(item.fieldInfos.reportFields).map(([key, value]) => { | ||
41 | + if (value === 'UN_LOCKED') { | ||
42 | + const obj = find(FIELDS_REPORT_INFO, { field: key }); | ||
43 | + item.fields.push(obj?.label); | ||
44 | + } | ||
45 | + }); | ||
46 | + !isEmpty(item.fieldInfos.reportFields) && | ||
47 | + Object.entries(item.fieldInfos.reportFields).map(([key, value]) => { | ||
38 | if (value === 'UN_LOCKED') { | 48 | if (value === 'UN_LOCKED') { |
39 | - const obj = find(FIELDS_PROFIT_INFO, { field: `profitAnalysisFields.${key}` }); | 49 | + const obj = find(FIELDS_PROFIT_INFO, { field: key }); |
40 | item.fields.push(obj?.label); | 50 | item.fields.push(obj?.label); |
41 | } | 51 | } |
42 | }); | 52 | }); |
53 | + | ||
43 | item.fields = item.fields.join(','); | 54 | item.fields = item.fields.join(','); |
44 | return item; | 55 | return item; |
45 | }); | 56 | }); |
46 | - console.log( | ||
47 | - '%c [ res.records ]-27', | ||
48 | - 'font-size:13px; background:pink; color:#bf2c9f;', | ||
49 | - res.records, | ||
50 | - ); | ||
51 | 57 | ||
52 | return new Promise((resolve) => { | 58 | return new Promise((resolve) => { |
53 | resolve(res.records); | 59 | resolve(res.records); |
@@ -57,18 +63,32 @@ export const getWaitListApi = async (params: DemoParams) => { | @@ -57,18 +63,32 @@ export const getWaitListApi = async (params: DemoParams) => { | ||
57 | export const getApprovedListApi = async (params: any) => { | 63 | export const getApprovedListApi = async (params: any) => { |
58 | const res = await defHttp.post({ | 64 | const res = await defHttp.post({ |
59 | url: Api.APPROVE_ED, | 65 | url: Api.APPROVE_ED, |
60 | - | ||
61 | params, | 66 | params, |
62 | }); | 67 | }); |
63 | 68 | ||
64 | res.records = res.records.map((item) => { | 69 | res.records = res.records.map((item) => { |
65 | item.fields = []; | 70 | item.fields = []; |
66 | - Object.entries(item.fieldInfos.baseFields).map(([key, value]) => { | ||
67 | - if (value === 'UN_LOCKED') { | ||
68 | - const obj = find(FIELDS_BASE_INFO, { field: key }); | ||
69 | - item.fields.push(obj?.label); | ||
70 | - } | ||
71 | - }); | 71 | + !isEmpty(item.fieldInfos.baseFields) && |
72 | + Object.entries(item.fieldInfos.baseFields).map(([key, value]) => { | ||
73 | + if (value === 'UN_LOCKED') { | ||
74 | + const obj = find(FIELDS_BASE_INFO, { field: key }); | ||
75 | + item.fields.push(obj?.label); | ||
76 | + } | ||
77 | + }); | ||
78 | + !isEmpty(item.fieldInfos.reportFields) && | ||
79 | + Object.entries(item.fieldInfos.reportFields).map(([key, value]) => { | ||
80 | + if (value === 'UN_LOCKED') { | ||
81 | + const obj = find(FIELDS_REPORT_INFO, { field: key }); | ||
82 | + item.fields.push(obj?.label); | ||
83 | + } | ||
84 | + }); | ||
85 | + !isEmpty(item.fieldInfos.reportFields) && | ||
86 | + Object.entries(item.fieldInfos.reportFields).map(([key, value]) => { | ||
87 | + if (value === 'UN_LOCKED') { | ||
88 | + const obj = find(FIELDS_PROFIT_INFO, { field: key }); | ||
89 | + item.fields.push(obj?.label); | ||
90 | + } | ||
91 | + }); | ||
72 | item.fields = item.fields.join(','); | 92 | item.fields = item.fields.join(','); |
73 | return item; | 93 | return item; |
74 | }); | 94 | }); |
src/views/project/approve/ProfitPanel.vue
0 → 100644
1 | +<template> | ||
2 | + <PageWrapper contentBackground> | ||
3 | + <BasicTable @register="registerTable"> | ||
4 | + <template #form-custom> custom-slot </template> | ||
5 | + <template #bodyCell="{ column, record }"> | ||
6 | + <template v-if="column.key === 'action'"> | ||
7 | + <TableAction | ||
8 | + :actions="[ | ||
9 | + { | ||
10 | + label: '通过', | ||
11 | + // icon: 'ic:outline-delete-outline', | ||
12 | + onClick: handleTrue.bind(null, record), | ||
13 | + }, | ||
14 | + { | ||
15 | + label: '拒绝', | ||
16 | + // icon: 'ic:outline-delete-outline', | ||
17 | + onClick: handleFalse.bind(null, record), | ||
18 | + }, | ||
19 | + ]" | ||
20 | + /> | ||
21 | + </template> | ||
22 | + </template> | ||
23 | + </BasicTable> | ||
24 | + </PageWrapper> | ||
25 | +</template> | ||
26 | +<script lang="ts"> | ||
27 | + import { defineComponent, ref } from 'vue'; | ||
28 | + import { BasicTable, useTable, TableAction } from '/@/components/Table'; | ||
29 | + import { Tabs } from 'ant-design-vue'; | ||
30 | + import { PageWrapper } from '/@/components/Page'; | ||
31 | + | ||
32 | + import { approveAuditApi, getWaitListApi } from '/@/api/project/approve'; | ||
33 | + | ||
34 | + export default defineComponent({ | ||
35 | + components: { | ||
36 | + PageWrapper, | ||
37 | + BasicTable, | ||
38 | + TableAction, | ||
39 | + [Tabs.name]: Tabs, | ||
40 | + [Tabs.TabPane.name]: Tabs.TabPane, | ||
41 | + }, | ||
42 | + setup() { | ||
43 | + const checkedKeys = ref<Array<string | number>>([]); | ||
44 | + const currentKey = ref('1'); | ||
45 | + | ||
46 | + const [registerTable, { reload }] = useTable({ | ||
47 | + api: getWaitListApi, | ||
48 | + searchInfo: { type: 10 }, | ||
49 | + | ||
50 | + columns: [ | ||
51 | + { | ||
52 | + title: '申请人', | ||
53 | + dataIndex: 'createBy', | ||
54 | + width: 150, | ||
55 | + }, | ||
56 | + { | ||
57 | + title: '申请字段', | ||
58 | + dataIndex: 'fields', | ||
59 | + width: 600, | ||
60 | + }, | ||
61 | + { | ||
62 | + title: '订单号', | ||
63 | + dataIndex: 'no6', | ||
64 | + }, | ||
65 | + { | ||
66 | + title: '订单字段1', | ||
67 | + dataIndex: 'no5', | ||
68 | + }, | ||
69 | + { | ||
70 | + title: '订单字段2', | ||
71 | + dataIndex: 'no4', | ||
72 | + }, | ||
73 | + { | ||
74 | + title: '订单字段3', | ||
75 | + dataIndex: 'no3', | ||
76 | + }, | ||
77 | + | ||
78 | + { | ||
79 | + title: '订单字段5', | ||
80 | + dataIndex: 'no1', | ||
81 | + }, | ||
82 | + ], | ||
83 | + // useSearchForm: true, | ||
84 | + // formConfig: getFormConfig(), | ||
85 | + rowKey: 'id', | ||
86 | + actionColumn: { | ||
87 | + width: 160, | ||
88 | + title: 'Action', | ||
89 | + dataIndex: 'action', | ||
90 | + // slots: { customRender: 'action' }, | ||
91 | + }, | ||
92 | + }); | ||
93 | + | ||
94 | + function onSelect(record, selected) { | ||
95 | + if (selected) { | ||
96 | + checkedKeys.value = [...checkedKeys.value, record.id]; | ||
97 | + } else { | ||
98 | + checkedKeys.value = checkedKeys.value.filter((id) => id !== record.id); | ||
99 | + } | ||
100 | + } | ||
101 | + function onSelectAll(selected, selectedRows, changeRows) { | ||
102 | + const changeIds = changeRows.map((item) => item.id); | ||
103 | + if (selected) { | ||
104 | + checkedKeys.value = [...checkedKeys.value, ...changeIds]; | ||
105 | + } else { | ||
106 | + checkedKeys.value = checkedKeys.value.filter((id) => { | ||
107 | + return !changeIds.includes(id); | ||
108 | + }); | ||
109 | + } | ||
110 | + } | ||
111 | + function handleEdit(record, e) { | ||
112 | + e?.stopPropagation(); | ||
113 | + return false; | ||
114 | + } | ||
115 | + | ||
116 | + function handleProfitModal() {} | ||
117 | + | ||
118 | + async function handleTrue(record) { | ||
119 | + await approveAuditApi({ status: 10, id: record.id }); | ||
120 | + reload(); | ||
121 | + } | ||
122 | + | ||
123 | + async function handleFalse(record) { | ||
124 | + await approveAuditApi({ status: 20, id: record.id }); | ||
125 | + reload(); | ||
126 | + } | ||
127 | + | ||
128 | + return { | ||
129 | + handleProfitModal, | ||
130 | + registerTable, | ||
131 | + checkedKeys, | ||
132 | + currentKey, | ||
133 | + onSelect, | ||
134 | + handleEdit, | ||
135 | + onSelectAll, | ||
136 | + handleTrue, | ||
137 | + handleFalse, | ||
138 | + }; | ||
139 | + }, | ||
140 | + }); | ||
141 | +</script> |
src/views/project/approve/ReportPanel.vue
0 → 100644
1 | +<template> | ||
2 | + <PageWrapper contentBackground> | ||
3 | + <BasicTable @register="registerTable"> | ||
4 | + <template #form-custom> custom-slot </template> | ||
5 | + <template #bodyCell="{ column, record }"> | ||
6 | + <template v-if="column.key === 'action'"> | ||
7 | + <TableAction | ||
8 | + :actions="[ | ||
9 | + { | ||
10 | + label: '通过', | ||
11 | + // icon: 'ic:outline-delete-outline', | ||
12 | + onClick: handleTrue.bind(null, record), | ||
13 | + }, | ||
14 | + { | ||
15 | + label: '拒绝', | ||
16 | + // icon: 'ic:outline-delete-outline', | ||
17 | + onClick: handleFalse.bind(null, record), | ||
18 | + }, | ||
19 | + ]" | ||
20 | + /> | ||
21 | + </template> | ||
22 | + </template> | ||
23 | + </BasicTable> | ||
24 | + </PageWrapper> | ||
25 | +</template> | ||
26 | +<script lang="ts"> | ||
27 | + import { defineComponent, ref } from 'vue'; | ||
28 | + import { BasicTable, useTable, TableAction } from '/@/components/Table'; | ||
29 | + import { Tabs } from 'ant-design-vue'; | ||
30 | + import { PageWrapper } from '/@/components/Page'; | ||
31 | + | ||
32 | + import { approveAuditApi, getWaitListApi, getApprovedListApi } from '/@/api/project/approve'; | ||
33 | + | ||
34 | + export default defineComponent({ | ||
35 | + components: { | ||
36 | + PageWrapper, | ||
37 | + BasicTable, | ||
38 | + TableAction, | ||
39 | + [Tabs.name]: Tabs, | ||
40 | + [Tabs.TabPane.name]: Tabs.TabPane, | ||
41 | + }, | ||
42 | + setup() { | ||
43 | + const checkedKeys = ref<Array<string | number>>([]); | ||
44 | + const currentKey = ref('1'); | ||
45 | + | ||
46 | + const [registerTable, { reload }] = useTable({ | ||
47 | + api: getWaitListApi, | ||
48 | + searchInfo: { type: 20 }, | ||
49 | + | ||
50 | + columns: [ | ||
51 | + { | ||
52 | + title: '申请人', | ||
53 | + dataIndex: 'createBy', | ||
54 | + width: 150, | ||
55 | + }, | ||
56 | + { | ||
57 | + title: '申请字段', | ||
58 | + dataIndex: 'fields', | ||
59 | + width: 600, | ||
60 | + }, | ||
61 | + { | ||
62 | + title: '订单号', | ||
63 | + dataIndex: 'no6', | ||
64 | + }, | ||
65 | + { | ||
66 | + title: '订单字段1', | ||
67 | + dataIndex: 'no5', | ||
68 | + }, | ||
69 | + { | ||
70 | + title: '订单字段2', | ||
71 | + dataIndex: 'no4', | ||
72 | + }, | ||
73 | + { | ||
74 | + title: '订单字段3', | ||
75 | + dataIndex: 'no3', | ||
76 | + }, | ||
77 | + | ||
78 | + { | ||
79 | + title: '订单字段5', | ||
80 | + dataIndex: 'no1', | ||
81 | + }, | ||
82 | + ], | ||
83 | + // useSearchForm: true, | ||
84 | + // formConfig: getFormConfig(), | ||
85 | + rowKey: 'id', | ||
86 | + actionColumn: { | ||
87 | + width: 160, | ||
88 | + title: 'Action', | ||
89 | + dataIndex: 'action', | ||
90 | + // slots: { customRender: 'action' }, | ||
91 | + }, | ||
92 | + }); | ||
93 | + | ||
94 | + function onSelect(record, selected) { | ||
95 | + if (selected) { | ||
96 | + checkedKeys.value = [...checkedKeys.value, record.id]; | ||
97 | + } else { | ||
98 | + checkedKeys.value = checkedKeys.value.filter((id) => id !== record.id); | ||
99 | + } | ||
100 | + } | ||
101 | + function onSelectAll(selected, selectedRows, changeRows) { | ||
102 | + const changeIds = changeRows.map((item) => item.id); | ||
103 | + if (selected) { | ||
104 | + checkedKeys.value = [...checkedKeys.value, ...changeIds]; | ||
105 | + } else { | ||
106 | + checkedKeys.value = checkedKeys.value.filter((id) => { | ||
107 | + return !changeIds.includes(id); | ||
108 | + }); | ||
109 | + } | ||
110 | + } | ||
111 | + function handleEdit(record, e) { | ||
112 | + e?.stopPropagation(); | ||
113 | + return false; | ||
114 | + } | ||
115 | + | ||
116 | + function handleProfitModal() {} | ||
117 | + | ||
118 | + async function handleTrue(record) { | ||
119 | + await approveAuditApi({ status: 10, id: record.id }); | ||
120 | + reload(); | ||
121 | + } | ||
122 | + | ||
123 | + async function handleFalse(record) { | ||
124 | + await approveAuditApi({ status: 20, id: record.id }); | ||
125 | + reload(); | ||
126 | + } | ||
127 | + | ||
128 | + return { | ||
129 | + handleProfitModal, | ||
130 | + registerTable, | ||
131 | + checkedKeys, | ||
132 | + currentKey, | ||
133 | + onSelect, | ||
134 | + handleEdit, | ||
135 | + onSelectAll, | ||
136 | + handleTrue, | ||
137 | + handleFalse, | ||
138 | + }; | ||
139 | + }, | ||
140 | + }); | ||
141 | +</script> |
src/views/project/approve/index.vue
@@ -27,6 +27,12 @@ | @@ -27,6 +27,12 @@ | ||
27 | <a-tab-pane key="2" tab="已审核列表"> | 27 | <a-tab-pane key="2" tab="已审核列表"> |
28 | <BasicTable @register="registerTable2" /> | 28 | <BasicTable @register="registerTable2" /> |
29 | </a-tab-pane> | 29 | </a-tab-pane> |
30 | + <a-tab-pane key="3" tab="利润分析申请"> | ||
31 | + <ProfitPanel /> | ||
32 | + </a-tab-pane> | ||
33 | + <a-tab-pane key="4" tab="项目报告书申请"> | ||
34 | + <ReportPanel /> | ||
35 | + </a-tab-pane> | ||
30 | </a-tabs> | 36 | </a-tabs> |
31 | </template> | 37 | </template> |
32 | </PageWrapper> | 38 | </PageWrapper> |
@@ -36,7 +42,8 @@ | @@ -36,7 +42,8 @@ | ||
36 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; | 42 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
37 | import { Tabs } from 'ant-design-vue'; | 43 | import { Tabs } from 'ant-design-vue'; |
38 | import { PageWrapper } from '/@/components/Page'; | 44 | import { PageWrapper } from '/@/components/Page'; |
39 | - | 45 | + import ReportPanel from './ReportPanel.vue'; |
46 | + import ProfitPanel from './ProfitPanel.vue'; | ||
40 | import { approveAuditApi, getWaitListApi, getApprovedListApi } from '/@/api/project/approve'; | 47 | import { approveAuditApi, getWaitListApi, getApprovedListApi } from '/@/api/project/approve'; |
41 | 48 | ||
42 | export default defineComponent({ | 49 | export default defineComponent({ |
@@ -46,6 +53,8 @@ | @@ -46,6 +53,8 @@ | ||
46 | TableAction, | 53 | TableAction, |
47 | [Tabs.name]: Tabs, | 54 | [Tabs.name]: Tabs, |
48 | [Tabs.TabPane.name]: Tabs.TabPane, | 55 | [Tabs.TabPane.name]: Tabs.TabPane, |
56 | + ReportPanel, | ||
57 | + ProfitPanel, | ||
49 | }, | 58 | }, |
50 | setup() { | 59 | setup() { |
51 | const checkedKeys = ref<Array<string | number>>([]); | 60 | const checkedKeys = ref<Array<string | number>>([]); |
src/views/project/order/CheckDetail.vue
@@ -15,29 +15,34 @@ | @@ -15,29 +15,34 @@ | ||
15 | <BasicForm @register="registerForm" /> | 15 | <BasicForm @register="registerForm" /> |
16 | <h3>利润分析</h3> | 16 | <h3>利润分析</h3> |
17 | <BasicForm @register="registerProfitForm" /> | 17 | <BasicForm @register="registerProfitForm" /> |
18 | + <h3>项目报告书</h3> | ||
19 | + <BasicForm @register="registerReportForm" /> | ||
18 | </div> | 20 | </div> |
19 | <!-- <template #titleToolbar> <a-button type="primary"> 申请编辑权限 </a-button></template> --> | 21 | <!-- <template #titleToolbar> <a-button type="primary"> 申请编辑权限 </a-button></template> --> |
20 | 22 | ||
21 | - <template #appendFooter> | 23 | + <!-- <template #appendFooter> |
22 | <a-button type="primary" @click="onGoFormDetail"> 返回编辑</a-button> | 24 | <a-button type="primary" @click="onGoFormDetail"> 返回编辑</a-button> |
23 | - </template> | 25 | + </template> --> |
24 | </BasicDrawer> | 26 | </BasicDrawer> |
25 | </template> | 27 | </template> |
26 | <script lang="ts"> | 28 | <script lang="ts"> |
27 | import { defineComponent, reactive, ref } from 'vue'; | 29 | import { defineComponent, reactive, ref } from 'vue'; |
28 | - import { BasicForm, FormSchema, useForm } from '/@/components/Form/index'; | 30 | + import { BasicForm, useForm } from '/@/components/Form/index'; |
29 | import { orderAuth } from '/@/api/project/order'; | 31 | import { orderAuth } from '/@/api/project/order'; |
30 | 32 | ||
31 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; | 33 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
32 | - import { FIELDS_BASE_INFO, FIELDS_PROFIT_INFO } from './tableData'; | ||
33 | - import { cloneDeep, isEmpty, mapValues, mergeWith } from 'lodash-es'; | 34 | + import { FIELDS_BASE_INFO, FIELDS_PROFIT_INFO, FIELDS_REPORT_INFO } from './tableData'; |
34 | 35 | ||
35 | - const getSchema = (fields, base) => | 36 | + const getSchema = (fields) => |
36 | fields.map((item) => ({ | 37 | fields.map((item) => ({ |
37 | - field: `${base}.${item.field}`, | ||
38 | - dataIndex: `${base}.${item.field}`, | 38 | + field: `${item.field}`, |
39 | + dataIndex: `${item.field}`, | ||
39 | label: item.label, | 40 | label: item.label, |
40 | component: 'Switch', | 41 | component: 'Switch', |
42 | + componentProps: { | ||
43 | + checkedValue: 'UN_LOCKED', | ||
44 | + unCheckedValue: 'LOCKED', | ||
45 | + }, | ||
41 | colProps: { | 46 | colProps: { |
42 | span: 6, | 47 | span: 6, |
43 | }, | 48 | }, |
@@ -52,8 +57,9 @@ | @@ -52,8 +57,9 @@ | ||
52 | }, | 57 | }, |
53 | setup() { | 58 | setup() { |
54 | const id = ref(''); | 59 | const id = ref(''); |
55 | - const schemas = getSchema(FIELDS_BASE_INFO, 'baseFields'); | ||
56 | - const profitSchemas = getSchema(FIELDS_PROFIT_INFO, 'profitAnalysisFields'); | 60 | + const schemas = getSchema(FIELDS_BASE_INFO); |
61 | + const profitSchemas = getSchema(FIELDS_PROFIT_INFO); | ||
62 | + const reportSchemas = getSchema(FIELDS_REPORT_INFO); | ||
57 | const [registerForm, { getFieldsValue }] = useForm({ | 63 | const [registerForm, { getFieldsValue }] = useForm({ |
58 | labelWidth: 120, | 64 | labelWidth: 120, |
59 | schemas, | 65 | schemas, |
@@ -70,45 +76,83 @@ | @@ -70,45 +76,83 @@ | ||
70 | span: 24, | 76 | span: 24, |
71 | }, | 77 | }, |
72 | }); | 78 | }); |
79 | + const [registerReportForm, { getFieldsValue: getReportFieldsValue }] = useForm({ | ||
80 | + labelWidth: 120, | ||
81 | + schemas: reportSchemas, | ||
82 | + showActionButtonGroup: false, | ||
83 | + actionColOptions: { | ||
84 | + span: 24, | ||
85 | + }, | ||
86 | + }); | ||
73 | const lockFields = reactive({}); | 87 | const lockFields = reactive({}); |
74 | const [register, { closeDrawer }] = useDrawerInner((data) => { | 88 | const [register, { closeDrawer }] = useDrawerInner((data) => { |
75 | Object.assign(lockFields, data.lockFields); | 89 | Object.assign(lockFields, data.lockFields); |
76 | id.value = data.id; | 90 | id.value = data.id; |
77 | }); | 91 | }); |
78 | 92 | ||
79 | - function customizer(objValue, srcValue, key) { | ||
80 | - // 检查是否在 baseFields 内以及值是否为 true | ||
81 | - if (srcValue === true) { | ||
82 | - return 'UN_LOCKED'; | ||
83 | - } | ||
84 | - return objValue; // 如果不需要改变,返回原值 | ||
85 | - } | ||
86 | const handleSubmit = async () => { | 93 | const handleSubmit = async () => { |
87 | const baseFieldValues = getFieldsValue(); | 94 | const baseFieldValues = getFieldsValue(); |
88 | const profitFieldValues = getProfitFieldsValue(); | 95 | const profitFieldValues = getProfitFieldsValue(); |
96 | + const reportFieldValues = getReportFieldsValue(); | ||
89 | 97 | ||
90 | - !isEmpty(baseFieldValues) && | ||
91 | - Object.keys(baseFieldValues.baseFields)?.map((key) => { | ||
92 | - baseFieldValues.baseFields[key] = baseFieldValues.baseFields[key] | ||
93 | - ? 'UN_LOCKED' | ||
94 | - : 'LOCKED'; | ||
95 | - }); | 98 | + FIELDS_BASE_INFO.map( |
99 | + ({ field }) => | ||
100 | + (baseFieldValues[field] = | ||
101 | + baseFieldValues[field] === 'UN_LOCKED' ? 'UN_LOCKED' : 'LOCKED'), | ||
102 | + ); | ||
96 | 103 | ||
97 | - !isEmpty(profitFieldValues) && | ||
98 | - Object.keys(profitFieldValues.profitAnalysisFields).map((key) => { | ||
99 | - profitFieldValues.profitAnalysisFields[key] = profitFieldValues.profitAnalysisFields[ | ||
100 | - key | ||
101 | - ] | ||
102 | - ? 'UN_LOCKED' | ||
103 | - : 'LOCKED'; | ||
104 | - }); | 104 | + FIELDS_REPORT_INFO.map( |
105 | + ({ field }) => | ||
106 | + (reportFieldValues[field] = | ||
107 | + reportFieldValues[field] === 'UN_LOCKED' ? 'UN_LOCKED' : 'LOCKED'), | ||
108 | + ); | ||
105 | 109 | ||
106 | - const values = Object.assign({ orderId: id.value }, baseFieldValues, profitFieldValues); | ||
107 | - console.log('%c [ values ]-103', 'font-size:13px; background:pink; color:#bf2c9f;', values); | 110 | + FIELDS_PROFIT_INFO.map( |
111 | + ({ field }) => | ||
112 | + (profitFieldValues[field] = | ||
113 | + profitFieldValues[field] === 'UN_LOCKED' ? 'UN_LOCKED' : 'LOCKED'), | ||
114 | + ); | ||
115 | + | ||
116 | + // !isEmpty(baseFieldValues) && | ||
117 | + // Object.keys(baseFieldValues.baseFields)?.map((key) => { | ||
118 | + // baseFieldValues.baseFields[key] = baseFieldValues.baseFields[key] | ||
119 | + // ? 'UN_LOCKED' | ||
120 | + // : 'LOCKED'; | ||
121 | + // }); | ||
122 | + | ||
123 | + // !isEmpty(profitFieldValues) && | ||
124 | + // Object.keys(profitFieldValues.profitAnalysisFields).map((key) => { | ||
125 | + // profitFieldValues.profitAnalysisFields[key] = profitFieldValues.profitAnalysisFields[ | ||
126 | + // key | ||
127 | + // ] | ||
128 | + // ? 'UN_LOCKED' | ||
129 | + // : 'LOCKED'; | ||
130 | + // }); | ||
131 | + | ||
132 | + // !isEmpty(reportFieldValues) && | ||
133 | + // Object.keys(reportFieldValues.reportFields).map((key) => { | ||
134 | + // reportFieldValues.reportFields[key] = reportFieldValues.reportFields[key] | ||
135 | + // ? 'UN_LOCKED' | ||
136 | + // : 'LOCKED'; | ||
137 | + // }); | ||
138 | + | ||
139 | + const values = Object.assign( | ||
140 | + { orderId: id.value }, | ||
141 | + { baseFields: baseFieldValues }, | ||
142 | + { profitAnalysisFields: profitFieldValues }, | ||
143 | + { reportFields: reportFieldValues }, | ||
144 | + ); | ||
108 | await orderAuth(values); | 145 | await orderAuth(values); |
109 | closeDrawer(); | 146 | closeDrawer(); |
110 | }; | 147 | }; |
111 | - return { register, schemas, registerForm, registerProfitForm, handleSubmit }; | 148 | + return { |
149 | + register, | ||
150 | + schemas, | ||
151 | + registerForm, | ||
152 | + registerProfitForm, | ||
153 | + registerReportForm, | ||
154 | + handleSubmit, | ||
155 | + }; | ||
112 | }, | 156 | }, |
113 | }); | 157 | }); |
114 | </script> | 158 | </script> |
src/views/project/order/FormDetail.vue
@@ -21,13 +21,13 @@ | @@ -21,13 +21,13 @@ | ||
21 | <ProfitFormPanel ref="profitFormPanelRef" :id="id" /> | 21 | <ProfitFormPanel ref="profitFormPanelRef" :id="id" /> |
22 | </TabPanel> | 22 | </TabPanel> |
23 | <TabPanel key="3" tab="项目报告书" :forceRender="true"> | 23 | <TabPanel key="3" tab="项目报告书" :forceRender="true"> |
24 | - <ReportFormPanel ref="ReportFormPanelRef" /> | 24 | + <ReportFormPanel ref="reportFormPanelRef" :id="id" /> |
25 | </TabPanel> | 25 | </TabPanel> |
26 | <TabPanel key="4" tab="跟单信息" :forceRender="true"> | 26 | <TabPanel key="4" tab="跟单信息" :forceRender="true"> |
27 | - <TrackFormPanel ref="TrackFormPanelRef" /> | 27 | + <TrackFormPanel ref="trackFormPanelRef" :id="id" /> |
28 | </TabPanel> | 28 | </TabPanel> |
29 | <TabPanel key="5" tab="质检信息" :forceRender="true"> | 29 | <TabPanel key="5" tab="质检信息" :forceRender="true"> |
30 | - <InspectionFormPanel ref="InspectionFormRef" /> | 30 | + <InspectionFormPanel ref="inspectionFormRef" :id="id" /> |
31 | </TabPanel> | 31 | </TabPanel> |
32 | </Tabs> | 32 | </Tabs> |
33 | <!-- <BasicForm @register="registerForm" /> | 33 | <!-- <BasicForm @register="registerForm" /> |
@@ -41,14 +41,14 @@ | @@ -41,14 +41,14 @@ | ||
41 | </BasicDrawer> | 41 | </BasicDrawer> |
42 | </template> | 42 | </template> |
43 | <script lang="ts"> | 43 | <script lang="ts"> |
44 | - import { computed, defineComponent, reactive, ref, toRaw, watch, watchEffect } from 'vue'; | 44 | + import { computed, defineComponent, reactive, ref, toRaw, watch, toRefs } from 'vue'; |
45 | import { BasicForm, FormActionType, FormSchema, useForm } from '/@/components/Form/index'; | 45 | import { BasicForm, FormActionType, FormSchema, useForm } from '/@/components/Form/index'; |
46 | import { orderCreate, orderUpdate, uploadImg } from '/@/api/project/order'; | 46 | import { orderCreate, orderUpdate, uploadImg } from '/@/api/project/order'; |
47 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; | 47 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
48 | import { useOrderStoreWithOut } from '/@/store/modules/order'; | 48 | import { useOrderStoreWithOut } from '/@/store/modules/order'; |
49 | import { useOrderInfo } from '/@/hooks/component/order'; | 49 | import { useOrderInfo } from '/@/hooks/component/order'; |
50 | import { dateUtil } from '/@/utils/dateUtil'; | 50 | import { dateUtil } from '/@/utils/dateUtil'; |
51 | - import { FIELDS_REPORT_INFO } from './tableData'; | 51 | + import {} from './tableData'; |
52 | import ProfitFormPanel from './component/ProfitFormPanel.vue'; | 52 | import ProfitFormPanel from './component/ProfitFormPanel.vue'; |
53 | import ReportFormPanel from './component/ReportFormPanel.vue'; | 53 | import ReportFormPanel from './component/ReportFormPanel.vue'; |
54 | import TrackFormPanel from './component/TrackFormPanel.vue'; | 54 | import TrackFormPanel from './component/TrackFormPanel.vue'; |
@@ -82,10 +82,10 @@ | @@ -82,10 +82,10 @@ | ||
82 | setup(_, { emit }) { | 82 | setup(_, { emit }) { |
83 | const orderStore = useOrderStoreWithOut(); | 83 | const orderStore = useOrderStoreWithOut(); |
84 | const activeKey = ref('1'); | 84 | const activeKey = ref('1'); |
85 | - const profitFormPanelRef = ref(null); | ||
86 | - const ReportFormPanelRef = ref(null); | ||
87 | - const TrackFormPanelRef = ref(null); | ||
88 | - const InspectionFormPanelRef = ref(null); | 85 | + const profitFormPanelRef = ref(); |
86 | + const reportFormPanelRef = ref(); | ||
87 | + const trackFormPanelRef = ref(null); | ||
88 | + const inspectionFormPanelRef = ref(null); | ||
89 | 89 | ||
90 | const { | 90 | const { |
91 | customerCode, | 91 | customerCode, |
@@ -119,6 +119,12 @@ | @@ -119,6 +119,12 @@ | ||
119 | }; | 119 | }; |
120 | 120 | ||
121 | const schemas = computed(() => { | 121 | const schemas = computed(() => { |
122 | + console.log( | ||
123 | + '%c [ fields?.baseFields ]-134', | ||
124 | + 'font-size:13px; background:pink; color:#bf2c9f;', | ||
125 | + fields?.baseFields, | ||
126 | + ); | ||
127 | + | ||
122 | return [ | 128 | return [ |
123 | { | 129 | { |
124 | field: 'baseInfo.customerCode', | 130 | field: 'baseInfo.customerCode', |
@@ -356,24 +362,7 @@ | @@ -356,24 +362,7 @@ | ||
356 | }, | 362 | }, |
357 | ]; | 363 | ]; |
358 | }); | 364 | }); |
359 | - const reportSchemas = computed(() => { | ||
360 | - return FIELDS_REPORT_INFO.map((item) => { | ||
361 | - return { | ||
362 | - field: `reportInfo.${item.field}`, | ||
363 | - component: item.component, | ||
364 | - label: item.label, | ||
365 | - rules: [{ required: true }], | ||
366 | - colProps: { | ||
367 | - span: 24, | ||
368 | - }, | ||
369 | - componentProps: { | ||
370 | - disabled: getDisable(fields?.baseFields.customerCode), | ||
371 | - }, | ||
372 | - }; | ||
373 | - }); | ||
374 | - }); | ||
375 | - | ||
376 | - const [registerForm, { setFieldsValue, getFieldsValue, reload }] = useForm({ | 365 | + const [registerForm, { setFieldsValue, getFieldsValue, resetFields }] = useForm({ |
377 | labelWidth: 120, | 366 | labelWidth: 120, |
378 | schemas, | 367 | schemas, |
379 | showActionButtonGroup: false, | 368 | showActionButtonGroup: false, |
@@ -383,6 +372,18 @@ | @@ -383,6 +372,18 @@ | ||
383 | }); | 372 | }); |
384 | 373 | ||
385 | const [register, { closeDrawer }] = useDrawerInner((data) => { | 374 | const [register, { closeDrawer }] = useDrawerInner((data) => { |
375 | + if (!data.id) { | ||
376 | + id.value = ''; | ||
377 | + picUrl.value = ''; | ||
378 | + // 新建 | ||
379 | + resetFields(); | ||
380 | + profitFormPanelRef?.value?.resetFields(); | ||
381 | + reportFormPanelRef?.value?.resetFields(); | ||
382 | + trackFormPanelRef?.value?.resetFields(); | ||
383 | + inspectionFormPanelRef?.value?.resetFields(); | ||
384 | + | ||
385 | + return; | ||
386 | + } | ||
386 | id.value = data.id; | 387 | id.value = data.id; |
387 | 388 | ||
388 | // 方式1 | 389 | // 方式1 |
@@ -402,12 +403,15 @@ | @@ -402,12 +403,15 @@ | ||
402 | baseInfo: { ...toRaw(data) }, | 403 | baseInfo: { ...toRaw(data) }, |
403 | }); | 404 | }); |
404 | 405 | ||
405 | - profitFormPanelRef.value.fields.profitAnalysisInfo = | ||
406 | - { ...data.lockFields?.profitAnalysisFields } || {}; | 406 | + profitFormPanelRef.value.fields = { ...data.lockFields?.profitAnalysisFields } || {}; |
407 | 407 | ||
408 | profitFormPanelRef?.value?.setFieldsValue({ | 408 | profitFormPanelRef?.value?.setFieldsValue({ |
409 | ...toRaw(data.profitAnalysisInfo), | 409 | ...toRaw(data.profitAnalysisInfo), |
410 | - profitAnalysisInfo: { ...toRaw(data.profitAnalysisInfo) }, | 410 | + }); |
411 | + | ||
412 | + reportFormPanelRef.value.fields = { ...data.lockFields?.reportFields } || {}; | ||
413 | + reportFormPanelRef?.value?.setFieldsValue({ | ||
414 | + ...toRaw(data.reportInfo), | ||
411 | }); | 415 | }); |
412 | } else { | 416 | } else { |
413 | setFieldsValue({}); | 417 | setFieldsValue({}); |
@@ -422,30 +426,39 @@ | @@ -422,30 +426,39 @@ | ||
422 | picUrl: picUrl?.value || '', | 426 | picUrl: picUrl?.value || '', |
423 | }; | 427 | }; |
424 | if (id.value) { | 428 | if (id.value) { |
425 | - values.orderId = id.value; | 429 | + const forms = { orderId: id.value } as any; |
430 | + if (activeKey.value === '1') { | ||
431 | + forms.baseInfo = { ...values.baseInfo }; | ||
432 | + } else if (activeKey.value === '2') { | ||
433 | + const v = profitFormPanelRef?.value?.getFieldsValue() || {}; | ||
434 | + forms.profitAnalysisInfo = { ...v }; | ||
435 | + } else if (activeKey.value === '3') { | ||
436 | + const v = reportFormPanelRef?.value?.getFieldsValue() || {}; | ||
437 | + forms.reportInfo = { ...v }; | ||
438 | + } | ||
426 | 439 | ||
427 | - await orderUpdate(values); | 440 | + await orderUpdate(forms); |
428 | } else { | 441 | } else { |
429 | - const v2 = profitFormPanelRef?.value?.getFieldsValue() || { profitAnalysisInfo: {} }; | ||
430 | - const v3 = ReportFormPanelRef?.value?.getFieldsValue() || { reportInfo: {} }; | ||
431 | - const v4 = TrackFormPanelRef?.value?.getFieldsValue() || { trackStageInfo: {} }; | ||
432 | - const v5 = InspectionFormPanelRef?.value?.getFieldsValue() || { inspectionStageInfo: {} }; | 442 | + const v2 = profitFormPanelRef?.value?.getFieldsValue() || {}; |
443 | + const v3 = reportFormPanelRef?.value?.getFieldsValue() || {}; | ||
444 | + const v4 = trackFormPanelRef?.value?.getFieldsValue() || {}; | ||
445 | + const v5 = inspectionFormPanelRef?.value?.getFieldsValue() || {}; | ||
433 | 446 | ||
434 | - values.profitAnalysisInfo = { ...v2.profitAnalysisInfo }; | ||
435 | - values.reportInfo = { ...v3.reportInfo }; | ||
436 | - values.trackStageInfo = { ...v4.trackStageInfo }; | ||
437 | - values.inspectionStageInfo = { ...v5.inspectionStageInfo }; | 447 | + values.profitAnalysisInfo = { ...v2 }; |
448 | + values.reportInfo = { ...v3 }; | ||
449 | + values.trackStageInfo = { ...v4 }; | ||
450 | + values.inspectionStageInfo = { ...v5 }; | ||
438 | await orderCreate(values); | 451 | await orderCreate(values); |
439 | } | 452 | } |
440 | closeDrawer(); | 453 | closeDrawer(); |
441 | - emit('success', {}); | 454 | + // emit('success', {}); |
442 | }; | 455 | }; |
443 | return { | 456 | return { |
444 | id, | 457 | id, |
445 | profitFormPanelRef, | 458 | profitFormPanelRef, |
446 | - ReportFormPanelRef, | ||
447 | - TrackFormPanelRef, | ||
448 | - InspectionFormPanelRef, | 459 | + reportFormPanelRef, |
460 | + trackFormPanelRef, | ||
461 | + inspectionFormPanelRef, | ||
449 | activeKey, | 462 | activeKey, |
450 | formRef, | 463 | formRef, |
451 | schemas, | 464 | schemas, |
src/views/project/order/component/ProfitFormPanel.vue
@@ -3,8 +3,7 @@ | @@ -3,8 +3,7 @@ | ||
3 | </template> | 3 | </template> |
4 | <script lang="ts"> | 4 | <script lang="ts"> |
5 | import { computed, defineComponent, reactive, ref, toRaw } from 'vue'; | 5 | import { computed, defineComponent, reactive, ref, toRaw } from 'vue'; |
6 | - import { BasicForm, FormActionType, useForm } from '/@/components/Form/index'; | ||
7 | - import { orderCreate, orderUpdate } from '/@/api/project/order'; | 6 | + import { BasicForm, useForm } from '/@/components/Form/index'; |
8 | import { dateUtil } from '/@/utils/dateUtil'; | 7 | import { dateUtil } from '/@/utils/dateUtil'; |
9 | import { FIELDS_PROFIT_INFO } from '../tableData'; | 8 | import { FIELDS_PROFIT_INFO } from '../tableData'; |
10 | import { getDisable } from '/@/utils/project'; | 9 | import { getDisable } from '/@/utils/project'; |
@@ -26,22 +25,16 @@ | @@ -26,22 +25,16 @@ | ||
26 | }, | 25 | }, |
27 | emits: ['success'], | 26 | emits: ['success'], |
28 | setup(props, { emit }) { | 27 | setup(props, { emit }) { |
29 | - console.log('%c [ props ]-29', 'font-size:13px; background:pink; color:#bf2c9f;', props); | ||
30 | - let fields = reactive({ profitAnalysisInfo: {} }); | 28 | + let fields = ref({}); |
31 | 29 | ||
32 | const schemas = computed(() => { | 30 | const schemas = computed(() => { |
33 | return FIELDS_PROFIT_INFO.map((item) => { | 31 | return FIELDS_PROFIT_INFO.map((item) => { |
34 | - console.log( | ||
35 | - '%c [ ]-31', | ||
36 | - 'font-size:13px; background:pink; color:#bf2c9f;', | ||
37 | - get(fields, `${item.field}`), | ||
38 | - getDisable(get(fields, `${item.field}`), props.id), | ||
39 | - ); | ||
40 | return { | 32 | return { |
41 | ...item, | 33 | ...item, |
34 | + field: `${item.field}`, | ||
42 | componentProps: { | 35 | componentProps: { |
43 | ...item.componentProps, | 36 | ...item.componentProps, |
44 | - disabled: getDisable(get(fields, `${item.field}`), props.id), | 37 | + disabled: getDisable(get(fields.value, `${item.field}`), props.id), |
45 | }, | 38 | }, |
46 | colProps: { | 39 | colProps: { |
47 | span: 24, | 40 | span: 24, |
@@ -50,7 +43,7 @@ | @@ -50,7 +43,7 @@ | ||
50 | }); | 43 | }); |
51 | }); | 44 | }); |
52 | 45 | ||
53 | - const [registerForm, { setFieldsValue, getFieldsValue, reload }] = useForm({ | 46 | + const [registerForm, { setFieldsValue, getFieldsValue }] = useForm({ |
54 | labelWidth: 120, | 47 | labelWidth: 120, |
55 | schemas, | 48 | schemas, |
56 | showActionButtonGroup: false, | 49 | showActionButtonGroup: false, |
src/views/project/order/component/ReportFormPanel.vue
@@ -2,13 +2,11 @@ | @@ -2,13 +2,11 @@ | ||
2 | <BasicForm @register="registerForm" /> | 2 | <BasicForm @register="registerForm" /> |
3 | </template> | 3 | </template> |
4 | <script lang="ts"> | 4 | <script lang="ts"> |
5 | - import { computed, defineComponent, reactive, ref, toRaw } from 'vue'; | ||
6 | - import { BasicForm, FormActionType, useForm } from '/@/components/Form/index'; | ||
7 | - import { dateUtil } from '/@/utils/dateUtil'; | 5 | + import { computed, defineComponent, ref } from 'vue'; |
6 | + import { BasicForm, useForm } from '/@/components/Form/index'; | ||
8 | import { FIELDS_REPORT_INFO } from '../tableData'; | 7 | import { FIELDS_REPORT_INFO } from '../tableData'; |
9 | import { getDisable } from '/@/utils/project'; | 8 | import { getDisable } from '/@/utils/project'; |
10 | import { useOrderStoreWithOut } from '/@/store/modules/order'; | 9 | import { useOrderStoreWithOut } from '/@/store/modules/order'; |
11 | - import { useDrawerInner } from '/@/components/Drawer'; | ||
12 | 10 | ||
13 | import { useOrderInfo } from '/@/hooks/component/order'; | 11 | import { useOrderInfo } from '/@/hooks/component/order'; |
14 | 12 | ||
@@ -22,10 +20,13 @@ | @@ -22,10 +20,13 @@ | ||
22 | onGoCheckDetail: { | 20 | onGoCheckDetail: { |
23 | type: Function, | 21 | type: Function, |
24 | }, | 22 | }, |
23 | + id: { | ||
24 | + type: String, | ||
25 | + }, | ||
25 | }, | 26 | }, |
26 | emits: ['success'], | 27 | emits: ['success'], |
27 | - setup(_, { emit }) { | ||
28 | - let fields = reactive({ baseFields: {}, profitAnalysisInfo: {} }); | 28 | + setup(props) { |
29 | + let fields = ref({}); | ||
29 | const orderStore = useOrderStoreWithOut(); | 30 | const orderStore = useOrderStoreWithOut(); |
30 | 31 | ||
31 | const { ideaSource, manualPreform } = useOrderInfo(orderStore); | 32 | const { ideaSource, manualPreform } = useOrderInfo(orderStore); |
@@ -35,19 +36,24 @@ | @@ -35,19 +36,24 @@ | ||
35 | ideaSource, | 36 | ideaSource, |
36 | manualPreform, | 37 | manualPreform, |
37 | }; | 38 | }; |
38 | - return FIELDS_REPORT_INFO.map((item) => ({ | ||
39 | - ...item, | ||
40 | - componentProps: { | ||
41 | - ...(item.component === 'Select' && { options: options[item.optionField] }), | ||
42 | - disabled: getDisable(`fields.${item.field}`), | ||
43 | - }, | ||
44 | - colProps: { | ||
45 | - span: 24, | ||
46 | - }, | ||
47 | - })); | 39 | + |
40 | + const res = FIELDS_REPORT_INFO.map((item) => { | ||
41 | + return { | ||
42 | + ...item, | ||
43 | + field: `${item.field}`, | ||
44 | + componentProps: { | ||
45 | + ...(item.component === 'Select' && { options: options[item.optionField] }), | ||
46 | + disabled: getDisable(fields.value[item.field], props.id), | ||
47 | + }, | ||
48 | + colProps: { | ||
49 | + span: 24, | ||
50 | + }, | ||
51 | + }; | ||
52 | + }); | ||
53 | + return res; | ||
48 | }); | 54 | }); |
49 | 55 | ||
50 | - const [registerForm, { setFieldsValue, getFieldsValue, reload }] = useForm({ | 56 | + const [registerForm, { setFieldsValue, getFieldsValue }] = useForm({ |
51 | labelWidth: 120, | 57 | labelWidth: 120, |
52 | schemas, | 58 | schemas, |
53 | showActionButtonGroup: false, | 59 | showActionButtonGroup: false, |
@@ -56,29 +62,7 @@ | @@ -56,29 +62,7 @@ | ||
56 | }, | 62 | }, |
57 | }); | 63 | }); |
58 | 64 | ||
59 | - const [register, { closeDrawer }] = useDrawerInner((data) => { | ||
60 | - // 方式1 | ||
61 | - data.orderHodTime = data.orderHodTime ? dateUtil(data.orderHodTime) : null; | ||
62 | - data.productionDepartmentConsignTime = data.productionDepartmentConsignTime | ||
63 | - ? dateUtil(data.productionDepartmentConsignTime) | ||
64 | - : null; | ||
65 | - | ||
66 | - fields.baseFields = { | ||
67 | - ...fields.baseFields, | ||
68 | - ...data.lockFields.baseFields, | ||
69 | - }; | ||
70 | - | ||
71 | - if (id.value) { | ||
72 | - setFieldsValue({ | ||
73 | - ...toRaw(data), | ||
74 | - baseInfo: { ...toRaw(data) }, | ||
75 | - }); | ||
76 | - } else { | ||
77 | - setFieldsValue({}); | ||
78 | - } | ||
79 | - }); | ||
80 | - | ||
81 | - return { register, schemas, registerForm, getFieldsValue }; | 65 | + return { fields, schemas, registerForm, getFieldsValue, setFieldsValue }; |
82 | }, | 66 | }, |
83 | }); | 67 | }); |
84 | </script> | 68 | </script> |
src/views/project/order/index.vue
@@ -201,7 +201,7 @@ | @@ -201,7 +201,7 @@ | ||
201 | } | 201 | } |
202 | 202 | ||
203 | function handleAdd() { | 203 | function handleAdd() { |
204 | - openFormDetailDrawer(true); | 204 | + openFormDetailDrawer(true, {}); |
205 | } | 205 | } |
206 | 206 | ||
207 | function handleCheck(record, e) { | 207 | function handleCheck(record, e) { |
@@ -254,6 +254,8 @@ | @@ -254,6 +254,8 @@ | ||
254 | }; | 254 | }; |
255 | 255 | ||
256 | return { | 256 | return { |
257 | + SELECT_FIELD_COLUMNS, | ||
258 | + | ||
257 | fieldDetailRegister, | 259 | fieldDetailRegister, |
258 | profitModalRegister, | 260 | profitModalRegister, |
259 | historyDetailRegister, | 261 | historyDetailRegister, |
@@ -274,7 +276,6 @@ | @@ -274,7 +276,6 @@ | ||
274 | handleGoFormDetail, | 276 | handleGoFormDetail, |
275 | handleHistory, | 277 | handleHistory, |
276 | handleAdd, | 278 | handleAdd, |
277 | - SELECT_FIELD_COLUMNS, | ||
278 | createImgPreview, | 279 | createImgPreview, |
279 | handleExport, | 280 | handleExport, |
280 | handlePreview, | 281 | handlePreview, |
src/views/project/order/tableData.tsx
@@ -112,21 +112,34 @@ export function getOrderColumns() { | @@ -112,21 +112,34 @@ export function getOrderColumns() { | ||
112 | { | 112 | { |
113 | title: '项目完成报告信息', | 113 | title: '项目完成报告信息', |
114 | width: 150, | 114 | width: 150, |
115 | + dataIndex: 'reportInfo', | ||
115 | children: [ | 116 | children: [ |
116 | { | 117 | { |
117 | title: '想法来源', | 118 | title: '想法来源', |
118 | width: 150, | 119 | width: 150, |
119 | - dataIndex: 'ideaSource', | 120 | + dataIndex: 'reportInfo.ideaSource', |
121 | + customRender: (column) => { | ||
122 | + const { record } = column || {}; | ||
123 | + return record?.reportInfo?.ideaSource; | ||
124 | + }, | ||
120 | }, | 125 | }, |
121 | { | 126 | { |
122 | title: '手工初型', | 127 | title: '手工初型', |
123 | width: 150, | 128 | width: 150, |
124 | - dataIndex: 'manualPreform', | 129 | + dataIndex: 'reportInfo.manualPreform', |
130 | + customRender: (column) => { | ||
131 | + const { record } = column || {}; | ||
132 | + return record?.reportInfo?.manualPreform; | ||
133 | + }, | ||
125 | }, | 134 | }, |
126 | { | 135 | { |
127 | title: '想法和手工比例分配', | 136 | title: '想法和手工比例分配', |
128 | width: 150, | 137 | width: 150, |
129 | - dataIndex: 'ideaManualRate', | 138 | + dataIndex: 'reportInfo.ideaManualRate', |
139 | + customRender: (column) => { | ||
140 | + const { record } = column || {}; | ||
141 | + return record?.reportInfo?.ideaManualRate; | ||
142 | + }, | ||
130 | }, | 143 | }, |
131 | ], | 144 | ], |
132 | }, | 145 | }, |
@@ -466,21 +479,21 @@ export const FIELDS_BASE_INFO = [ | @@ -466,21 +479,21 @@ export const FIELDS_BASE_INFO = [ | ||
466 | //项目完成报告信息 | 479 | //项目完成报告信息 |
467 | export const FIELDS_REPORT_INFO = [ | 480 | export const FIELDS_REPORT_INFO = [ |
468 | { | 481 | { |
469 | - field: 'reportInfo.ideaSource', | 482 | + field: 'ideaSource', |
470 | component: 'Select', | 483 | component: 'Select', |
471 | optionField: 'ideaSource', | 484 | optionField: 'ideaSource', |
472 | label: '想法来源', | 485 | label: '想法来源', |
473 | rules: [{ required: true }], | 486 | rules: [{ required: true }], |
474 | }, | 487 | }, |
475 | { | 488 | { |
476 | - field: 'reportInfo.manualPreform', | 489 | + field: 'manualPreform', |
477 | component: 'Select', | 490 | component: 'Select', |
478 | optionField: 'manualPreform', | 491 | optionField: 'manualPreform', |
479 | label: '手工初型', | 492 | label: '手工初型', |
480 | rules: [{ required: true }], | 493 | rules: [{ required: true }], |
481 | }, | 494 | }, |
482 | { | 495 | { |
483 | - field: 'reportInfo.ideaManualRate', | 496 | + field: 'ideaManualRate', |
484 | component: 'Input', | 497 | component: 'Input', |
485 | label: '想法和手工比例分配', | 498 | label: '想法和手工比例分配', |
486 | rules: [{ required: true }], | 499 | rules: [{ required: true }], |
@@ -615,13 +628,13 @@ export const FIELDS_TRACK_STAGE_INFO = [ | @@ -615,13 +628,13 @@ export const FIELDS_TRACK_STAGE_INFO = [ | ||
615 | // 利润分析 | 628 | // 利润分析 |
616 | export const FIELDS_PROFIT_INFO = [ | 629 | export const FIELDS_PROFIT_INFO = [ |
617 | { | 630 | { |
618 | - field: 'profitAnalysisInfo.customerPrice', | 631 | + field: 'customerPrice', |
619 | component: 'InputNumber', | 632 | component: 'InputNumber', |
620 | label: '客户单价', | 633 | label: '客户单价', |
621 | rules: [{ required: true }], | 634 | rules: [{ required: true }], |
622 | }, | 635 | }, |
623 | { | 636 | { |
624 | - field: 'profitAnalysisInfo.customerCurrency', | 637 | + field: 'customerCurrency', |
625 | component: 'Select', | 638 | component: 'Select', |
626 | label: '客户单价单位', | 639 | label: '客户单价单位', |
627 | rules: [{ required: true }], | 640 | rules: [{ required: true }], |
@@ -633,13 +646,13 @@ export const FIELDS_PROFIT_INFO = [ | @@ -633,13 +646,13 @@ export const FIELDS_PROFIT_INFO = [ | ||
633 | }, | 646 | }, |
634 | }, | 647 | }, |
635 | { | 648 | { |
636 | - field: 'profitAnalysisInfo.customerTotalPrice', | 649 | + field: 'customerTotalPrice', |
637 | component: 'InputNumber', | 650 | component: 'InputNumber', |
638 | label: '客户总价', | 651 | label: '客户总价', |
639 | rules: [{ required: true }], | 652 | rules: [{ required: true }], |
640 | }, | 653 | }, |
641 | { | 654 | { |
642 | - field: 'profitAnalysisInfo.customerTotalCurrency', | 655 | + field: 'customerTotalCurrency', |
643 | component: 'Select', | 656 | component: 'Select', |
644 | label: '客户总价单位', | 657 | label: '客户总价单位', |
645 | rules: [{ required: true }], | 658 | rules: [{ required: true }], |
@@ -651,7 +664,7 @@ export const FIELDS_PROFIT_INFO = [ | @@ -651,7 +664,7 @@ export const FIELDS_PROFIT_INFO = [ | ||
651 | }, | 664 | }, |
652 | }, | 665 | }, |
653 | { | 666 | { |
654 | - field: 'profitAnalysisInfo.productionDepartmentPrice', | 667 | + field: 'productionDepartmentPrice', |
655 | component: 'InputNumber', | 668 | component: 'InputNumber', |
656 | label: '生成科单价¥', | 669 | label: '生成科单价¥', |
657 | rules: [{ required: true }], | 670 | rules: [{ required: true }], |
@@ -671,13 +684,13 @@ export const FIELDS_PROFIT_INFO = [ | @@ -671,13 +684,13 @@ export const FIELDS_PROFIT_INFO = [ | ||
671 | { | 684 | { |
672 | label: '包装费用合计$', | 685 | label: '包装费用合计$', |
673 | component: 'InputNumber', | 686 | component: 'InputNumber', |
674 | - field: 'profitAnalysisInfo.packetTotalPrice', | 687 | + field: 'packetTotalPrice', |
675 | rules: [{ required: true }], | 688 | rules: [{ required: true }], |
676 | }, | 689 | }, |
677 | { | 690 | { |
678 | label: '包装费用合计单位', | 691 | label: '包装费用合计单位', |
679 | component: 'Select', | 692 | component: 'Select', |
680 | - field: 'profitAnalysisInfo.packetCurrency', | 693 | + field: 'packetCurrency', |
681 | rules: [{ required: true }], | 694 | rules: [{ required: true }], |
682 | componentProps: { | 695 | componentProps: { |
683 | options: [ | 696 | options: [ |
@@ -689,7 +702,7 @@ export const FIELDS_PROFIT_INFO = [ | @@ -689,7 +702,7 @@ export const FIELDS_PROFIT_INFO = [ | ||
689 | { | 702 | { |
690 | label: '汇率', | 703 | label: '汇率', |
691 | component: 'InputNumber', | 704 | component: 'InputNumber', |
692 | - field: 'profitAnalysisInfo.exchangeRate', | 705 | + field: 'exchangeRate', |
693 | rules: [{ required: true }], | 706 | rules: [{ required: true }], |
694 | }, | 707 | }, |
695 | // { | 708 | // { |