Commit bf93cc5f7f517bac6d05aa76fdc49ea4edf247fd

Authored by sanmu
1 parent 718c52c3

feat: update

.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 // {