Commit 796aea5ffee54b1bb2afffb103a4980a0d5a1d9e
1 parent
95d5c63d
第三版测试修改
Showing
15 changed files
with
510 additions
and
295 deletions
src/router/routes/modules/project/finance.ts
... | ... | @@ -43,106 +43,106 @@ const finance: AppRouteModule = { |
43 | 43 | }, |
44 | 44 | component: () => import('/@/views/project/finance/financeList/index.vue'), |
45 | 45 | }, |
46 | - // { | |
47 | - // path: 'financeProfit', | |
48 | - // name: 'FinanceProfit', | |
49 | - // meta: { | |
50 | - // title: '净利润分析', | |
51 | - // ignoreKeepAlive: true, | |
52 | - // roles: [ | |
53 | - // RoleEnum.ADMIN, | |
54 | - // RoleEnum.FINANCE, | |
55 | - // // RoleEnum.TRACKER, | |
56 | - // // RoleEnum.BUSINESS, | |
57 | - // // RoleEnum.PRODUCE, | |
58 | - // // RoleEnum.DATA_REPORT_USER, | |
59 | - // ], | |
60 | - // }, | |
61 | - // children: [ | |
62 | - // // { | |
63 | - // // path: '', | |
64 | - // // name: 'Receive', | |
65 | - // // meta: { | |
66 | - // // title: '财务管理', | |
67 | - // // roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
68 | - // // ignoreKeepAlive: false, | |
69 | - // // }, | |
70 | - // // // component: () => import('/@/views/project/finance/index.vue'), | |
71 | - // // }, | |
72 | - // { | |
73 | - // path: 'serviceProfit', | |
74 | - // name: 'ServiceProfit', | |
75 | - // meta: { | |
76 | - // title: '业务研发净利润分析', | |
77 | - // roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
78 | - // ignoreKeepAlive: false, | |
79 | - // }, | |
80 | - // children: [ | |
81 | - // { | |
82 | - // path: 'ServiceProfit', | |
83 | - // name: 'ServiceProfit', | |
84 | - // meta: { | |
85 | - // title: '业务研发净利润分析表', | |
86 | - // roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
87 | - // ignoreKeepAlive: false, | |
88 | - // }, | |
89 | - // component: () => | |
90 | - // import( | |
91 | - // '/@/views/project/finance/financeProfit/ServiceProfit/ServiceProfit/index.vue' | |
92 | - // ), | |
93 | - // }, | |
94 | - // { | |
95 | - // path: 'PackageProfit', | |
96 | - // name: 'PackageProfit', | |
97 | - // meta: { | |
98 | - // title: '包装费用明细表', | |
99 | - // roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
100 | - // ignoreKeepAlive: false, | |
101 | - // }, | |
102 | - // component: () => | |
103 | - // import( | |
104 | - // '/@/views/project/finance/financeProfit/ServiceProfit/PackageProfit/index.vue' | |
105 | - // ), | |
106 | - // }, | |
107 | - // ], | |
108 | - // }, | |
109 | - // { | |
110 | - // path: 'ProductProfit', | |
111 | - // name: 'ProductProfit', | |
112 | - // meta: { | |
113 | - // title: '内部生产净利润分析', | |
114 | - // roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
115 | - // ignoreKeepAlive: false, | |
116 | - // }, | |
117 | - // children: [ | |
118 | - // { | |
119 | - // path: 'InnerData', | |
120 | - // name: 'InnerData', | |
121 | - // meta: { | |
122 | - // title: '内部生产净利润分析表', | |
123 | - // roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
124 | - // ignoreKeepAlive: false, | |
125 | - // }, | |
126 | - // component: () => | |
127 | - // import( | |
128 | - // '/@/views/project/finance/financeProfit/ProductProfit/InnerProduce/index.vue' | |
129 | - // ), | |
130 | - // }, | |
131 | - // { | |
132 | - // path: 'InnerProduce', | |
133 | - // name: 'InnerProduce', | |
134 | - // meta: { | |
135 | - // title: '内部生产明细表', | |
136 | - // roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
137 | - // ignoreKeepAlive: false, | |
138 | - // }, | |
139 | - // component: () => | |
140 | - // import('/@/views/project/finance/financeProfit/ProductProfit/InnerData/index.vue'), | |
141 | - // }, | |
142 | - // ], | |
143 | - // }, | |
144 | - // ], | |
145 | - // }, | |
46 | + { | |
47 | + path: 'financeProfit', | |
48 | + name: 'FinanceProfit', | |
49 | + meta: { | |
50 | + title: '净利润分析', | |
51 | + ignoreKeepAlive: true, | |
52 | + roles: [ | |
53 | + RoleEnum.ADMIN, | |
54 | + RoleEnum.FINANCE, | |
55 | + // RoleEnum.TRACKER, | |
56 | + // RoleEnum.BUSINESS, | |
57 | + // RoleEnum.PRODUCE, | |
58 | + // RoleEnum.DATA_REPORT_USER, | |
59 | + ], | |
60 | + }, | |
61 | + children: [ | |
62 | + // { | |
63 | + // path: '', | |
64 | + // name: 'Receive', | |
65 | + // meta: { | |
66 | + // title: '财务管理', | |
67 | + // roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
68 | + // ignoreKeepAlive: false, | |
69 | + // }, | |
70 | + // // component: () => import('/@/views/project/finance/index.vue'), | |
71 | + // }, | |
72 | + { | |
73 | + path: 'serviceProfit', | |
74 | + name: 'ServiceProfit', | |
75 | + meta: { | |
76 | + title: '业务研发净利润分析', | |
77 | + roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
78 | + ignoreKeepAlive: false, | |
79 | + }, | |
80 | + children: [ | |
81 | + { | |
82 | + path: 'ServiceProfit', | |
83 | + name: 'ServiceProfit', | |
84 | + meta: { | |
85 | + title: '业务研发净利润分析表', | |
86 | + roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
87 | + ignoreKeepAlive: false, | |
88 | + }, | |
89 | + component: () => | |
90 | + import( | |
91 | + '/@/views/project/finance/financeProfit/ServiceProfit/ServiceProfit/index.vue' | |
92 | + ), | |
93 | + }, | |
94 | + { | |
95 | + path: 'PackageProfit', | |
96 | + name: 'PackageProfit', | |
97 | + meta: { | |
98 | + title: '包装费用明细表', | |
99 | + roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
100 | + ignoreKeepAlive: false, | |
101 | + }, | |
102 | + component: () => | |
103 | + import( | |
104 | + '/@/views/project/finance/financeProfit/ServiceProfit/PackageProfit/index.vue' | |
105 | + ), | |
106 | + }, | |
107 | + ], | |
108 | + }, | |
109 | + { | |
110 | + path: 'ProductProfit', | |
111 | + name: 'ProductProfit', | |
112 | + meta: { | |
113 | + title: '内部生产净利润分析', | |
114 | + roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
115 | + ignoreKeepAlive: false, | |
116 | + }, | |
117 | + children: [ | |
118 | + { | |
119 | + path: 'InnerData', | |
120 | + name: 'InnerData', | |
121 | + meta: { | |
122 | + title: '内部生产净利润分析表', | |
123 | + roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
124 | + ignoreKeepAlive: false, | |
125 | + }, | |
126 | + component: () => | |
127 | + import( | |
128 | + '/@/views/project/finance/financeProfit/ProductProfit/InnerProduce/index.vue' | |
129 | + ), | |
130 | + }, | |
131 | + { | |
132 | + path: 'InnerProduce', | |
133 | + name: 'InnerProduce', | |
134 | + meta: { | |
135 | + title: '内部生产明细表', | |
136 | + roles: [RoleEnum.ADMIN, RoleEnum.FINANCE, RoleEnum.TRACKER, RoleEnum.BUSINESS], | |
137 | + ignoreKeepAlive: false, | |
138 | + }, | |
139 | + component: () => | |
140 | + import('/@/views/project/finance/financeProfit/ProductProfit/InnerData/index.vue'), | |
141 | + }, | |
142 | + ], | |
143 | + }, | |
144 | + ], | |
145 | + }, | |
146 | 146 | ], |
147 | 147 | }; |
148 | 148 | ... | ... |
src/views/project/config/data.tsx
src/views/project/finance/financeProfit/ProductProfit/InnerData/FinanceEdit.vue
... | ... | @@ -9,6 +9,7 @@ |
9 | 9 | @ok="handleSubmit" |
10 | 10 | :showDetailBack="false" |
11 | 11 | okText="保存" |
12 | + @visible-change="handleShow" | |
12 | 13 | showFooter |
13 | 14 | :destroyOnClose="true" |
14 | 15 | > |
... | ... | @@ -19,7 +20,7 @@ |
19 | 20 | <a-input |
20 | 21 | v-model:value="input1" |
21 | 22 | placeholder="请输入" |
22 | - :disabled="status1 === 'LOCKED'" | |
23 | + :disabled="status1 == 'LOCKED'" | |
23 | 24 | auto-size |
24 | 25 | /> |
25 | 26 | <div style="margin: 16px 0"></div> |
... | ... | @@ -27,7 +28,7 @@ |
27 | 28 | <a-input |
28 | 29 | v-model:value="input2" |
29 | 30 | placeholder="请输入" |
30 | - :disabled="status2 === 'LOCKED'" | |
31 | + :disabled="status2 == 'LOCKED'" | |
31 | 32 | auto-size |
32 | 33 | /> |
33 | 34 | <div style="margin: 16px 0"></div> |
... | ... | @@ -131,9 +132,9 @@ |
131 | 132 | const id = ref(); |
132 | 133 | const [register, { setDrawerProps, closeDrawer }] = useDrawerInner((data) => { |
133 | 134 | // 方式1 |
134 | - if (data.data.lockFields) { | |
135 | - status1.value = data.data?.productionDepartmentPredictPrice; | |
136 | - status2.value = data.data?.productionActualPrice; | |
135 | + if (data.data?.lockFields) { | |
136 | + status1.value = data.data?.lockFields?.productionDepartmentPredictPrice; | |
137 | + status2.value = data.data?.lockFields?.productionActualPrice; | |
137 | 138 | } |
138 | 139 | |
139 | 140 | id.value = data.data.orderId; |
... | ... | @@ -141,9 +142,9 @@ |
141 | 142 | input2.value = data.data?.productionActualPrice.toFixed(2); |
142 | 143 | resetFields(); |
143 | 144 | setDrawerProps({ confirmLoading: false }); |
144 | - setFieldsValue({ | |
145 | - ...toRaw(data.data), | |
146 | - }); | |
145 | + // setFieldsValue({ | |
146 | + // ...toRaw(data.data), | |
147 | + // }); | |
147 | 148 | update.value = data; |
148 | 149 | }); |
149 | 150 | //完成编辑 |
... | ... | @@ -166,4 +167,10 @@ |
166 | 167 | closeDrawer(); |
167 | 168 | } |
168 | 169 | } |
170 | + function handleShow(visible: boolean) { | |
171 | + if (!visible) { | |
172 | + input1.value = ''; | |
173 | + input2.value = ''; | |
174 | + } | |
175 | + } | |
169 | 176 | </script> | ... | ... |
src/views/project/finance/financeProfit/ProductProfit/InnerData/data.tsx
... | ... | @@ -158,7 +158,7 @@ export const COLUMNS = [ |
158 | 158 | width: 120, |
159 | 159 | customRender: (column) => { |
160 | 160 | if (column.record?.predictRatio) { |
161 | - return column.record?.predictRatio?.toFixed(2) + '%'; | |
161 | + return (column.record?.predictRatio * 100).toFixed(2) + '%'; | |
162 | 162 | } |
163 | 163 | return column.record?.predictRatio?.toFixed(2); |
164 | 164 | }, |
... | ... | @@ -169,7 +169,7 @@ export const COLUMNS = [ |
169 | 169 | width: 120, |
170 | 170 | customRender: (column) => { |
171 | 171 | if (column.record?.predictAndActualRatio) { |
172 | - return column.record?.predictAndActualRatio?.toFixed(2) + '%'; | |
172 | + return (column.record?.predictAndActualRatio * 100).toFixed(2) + '%'; | |
173 | 173 | } |
174 | 174 | return column.record?.predictAndActualRatio?.toFixed(2); |
175 | 175 | }, |
... | ... | @@ -188,7 +188,7 @@ export const COLUMNS = [ |
188 | 188 | width: 120, |
189 | 189 | customRender: (column) => { |
190 | 190 | if (column.record?.beforeGrossProfitRate) { |
191 | - return column.record?.beforeGrossProfitRate?.toFixed(2) + '%'; | |
191 | + return (column.record?.beforeGrossProfitRate * 100).toFixed(2) + '%'; | |
192 | 192 | } |
193 | 193 | return column.record?.beforeGrossProfitRate?.toFixed(2); |
194 | 194 | }, |
... | ... | @@ -207,7 +207,7 @@ export const COLUMNS = [ |
207 | 207 | width: 120, |
208 | 208 | customRender: (column) => { |
209 | 209 | if (column.record?.grossProfitRate) { |
210 | - return column.record?.grossProfitRate?.toFixed(2) + '%'; | |
210 | + return (column.record?.grossProfitRate * 100).toFixed(2) + '%'; | |
211 | 211 | } |
212 | 212 | return column.record?.grossProfitRate?.toFixed(2); |
213 | 213 | }, | ... | ... |
src/views/project/finance/financeProfit/ProductProfit/InnerProduce/ApproveReason.vue
0 → 100644
1 | +<template> | |
2 | + <BasicModal | |
3 | + v-bind="$attrs" | |
4 | + destroyOnClose | |
5 | + @register="register" | |
6 | + title="申请原因" | |
7 | + :helpMessage="['提示1', '提示2']" | |
8 | + @open-change="handleShow" | |
9 | + :bodyStyle="{ height: '200px' }" | |
10 | + @ok="handleOk" | |
11 | + z-index="9999" | |
12 | + > | |
13 | + <a-textarea v-model:value="input" :rows="7" /> | |
14 | + </BasicModal> | |
15 | +</template> | |
16 | +<script lang="ts" setup> | |
17 | + import { ref, watch } from 'vue'; | |
18 | + import { BasicModal, useModalInner } from '@/components/Modal'; | |
19 | + import { orderAuth } from '/@/api/project/order'; | |
20 | + import { getServiceApplyEdit } from '/@/api/project/invoice'; | |
21 | + | |
22 | + const emit = defineEmits(['success']); | |
23 | + const input = ref(''); | |
24 | + const baseFieldValues = ref(); | |
25 | + const [register, { setModalProps, redoModalHeight, closeModal }] = useModalInner(async (data) => { | |
26 | + baseFieldValues.value = data.data; | |
27 | + baseFieldValues.value.projectNoPrefix = data.id; | |
28 | + console.log(data, '5656appr'); | |
29 | + }); | |
30 | + async function handleOk() { | |
31 | + baseFieldValues.value.applyRemark = input.value; | |
32 | + await getServiceApplyEdit({ | |
33 | + projectNoPrefix: baseFieldValues.value.projectNoPrefix, | |
34 | + projectInnerProfitInfoEndTime: baseFieldValues.value.projectInnerProfitInfoEndTime, | |
35 | + projectInnerProfitInfoStartTime: baseFieldValues.value.projectInnerProfitInfoStartTime, | |
36 | + type: 'INNER_PROFIT_FIELD_EDIT_APPLY', | |
37 | + }); | |
38 | + emit('success'); | |
39 | + setTimeout(() => { | |
40 | + closeModal(); | |
41 | + }, 50); | |
42 | + } | |
43 | + function handleShow() { | |
44 | + input.value = ''; | |
45 | + closeModal(); | |
46 | + } | |
47 | +</script> | ... | ... |
src/views/project/finance/financeProfit/ProductProfit/InnerProduce/CheckDetail.vue
0 → 100644
1 | +<template> | |
2 | + <div class="container"> | |
3 | + <BasicDrawer | |
4 | + @register="register" | |
5 | + v-bind="$attrs" | |
6 | + showFooter | |
7 | + title="字段编辑权限申请" | |
8 | + width="60%" | |
9 | + :destroyOnClose="true" | |
10 | + :isDetail="true" | |
11 | + @ok="handleSubmit" | |
12 | + :showDetailBack="false" | |
13 | + okText="申请" | |
14 | + ><input /> | |
15 | + <div> | |
16 | + <template v-if="role === ROLE.ADMIN || role === ROLE.FINANCE"> | |
17 | + <BasicForm @register="registerForm" /> | |
18 | + </template> | |
19 | + </div> | |
20 | + <!-- <template #titleToolbar> <a-button type="primary"> 申请编辑权限 </a-button></template> --> | |
21 | + | |
22 | + <!-- <template #appendFooter> | |
23 | + <a-button type="primary" @click="onGoFormDetail"> 返回编辑</a-button> | |
24 | + </template> --> | |
25 | + </BasicDrawer> | |
26 | + <ApproveReason @register="approveReasonRegister" @success="handleCloseModal" /> | |
27 | + </div> | |
28 | +</template> | |
29 | +<script lang="ts"> | |
30 | + import { computed, defineComponent, reactive, ref } from 'vue'; | |
31 | + import { BasicForm, useForm } from '/@/components/Form/index'; | |
32 | + import { getPackageApplyEdit } from '/@/api/project/invoice'; | |
33 | + import { ROLE } from '../../../financeList/type.d'; | |
34 | + import { useModal } from '/@/components/Modal'; | |
35 | + import ApproveReason from './ApproveReason.vue'; | |
36 | + import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; | |
37 | + import { FIELDS_BASE_INFO } from './tableData'; | |
38 | + import { useUserStoreWithOut } from '/@/store/modules/user'; | |
39 | + | |
40 | + const userStore = useUserStoreWithOut(); | |
41 | + const getSchema = (fields) => | |
42 | + fields.map((item) => ({ | |
43 | + field: `${item.field}`, | |
44 | + dataIndex: `${item.field}`, | |
45 | + label: item.label, | |
46 | + component: 'Switch', | |
47 | + componentProps: { | |
48 | + checkedValue: 'UN_LOCKED', | |
49 | + unCheckedValue: 'LOCKED', | |
50 | + }, | |
51 | + colProps: { | |
52 | + span: 8, | |
53 | + }, | |
54 | + })); | |
55 | + | |
56 | + export default defineComponent({ | |
57 | + components: { BasicDrawer, BasicForm, ApproveReason }, | |
58 | + props: { | |
59 | + onGoFormDetail: { | |
60 | + type: Function, | |
61 | + }, | |
62 | + }, | |
63 | + setup() { | |
64 | + const id = ref(''); | |
65 | + const schemas = getSchema(FIELDS_BASE_INFO); | |
66 | + const [registerForm, { getFieldsValue }] = useForm({ | |
67 | + labelWidth: 180, | |
68 | + schemas, | |
69 | + showActionButtonGroup: false, | |
70 | + actionColOptions: { | |
71 | + span: 24, | |
72 | + }, | |
73 | + }); | |
74 | + const [approveReasonRegister, { openModal: openApproveReasonDrawer }] = useModal(); | |
75 | + | |
76 | + const lockFields = reactive({}); | |
77 | + const [register, { closeDrawer }] = useDrawerInner((data) => { | |
78 | + Object.assign(lockFields, data.lockFields); | |
79 | + id.value = data.projectNoPrefix; | |
80 | + console.log(data, '5656checkdetail'); | |
81 | + }); | |
82 | + function handleCloseModal() { | |
83 | + closeDrawer(); | |
84 | + } | |
85 | + | |
86 | + const role = computed(() => { | |
87 | + return userStore.getUserInfo?.roleSmallVO?.code; | |
88 | + }); | |
89 | + | |
90 | + const handleSubmit = async () => { | |
91 | + const baseFieldValues = getFieldsValue(); | |
92 | + openApproveReasonDrawer(true, { | |
93 | + data: baseFieldValues, | |
94 | + id: id.value, | |
95 | + }); | |
96 | + }; | |
97 | + | |
98 | + return { | |
99 | + register, | |
100 | + schemas, | |
101 | + registerForm, | |
102 | + handleSubmit, | |
103 | + handleCloseModal, | |
104 | + approveReasonRegister, | |
105 | + openApproveReasonDrawer, | |
106 | + ROLE, | |
107 | + role, | |
108 | + }; | |
109 | + }, | |
110 | + }); | |
111 | +</script> | |
112 | +<style> | |
113 | + .container { | |
114 | + position: fixed; /* 或 absolute, fixed */ | |
115 | + z-index: 10; | |
116 | + } | |
117 | +</style> | ... | ... |
src/views/project/finance/financeProfit/ProductProfit/InnerProduce/FinanceEdit.vue
... | ... | @@ -3,31 +3,57 @@ |
3 | 3 | <BasicDrawer |
4 | 4 | @register="register" |
5 | 5 | v-bind="$attrs" |
6 | - title="收入款单" | |
6 | + title="编辑" | |
7 | 7 | width="30%" |
8 | 8 | :isDetail="true" |
9 | 9 | @ok="handleSubmit" |
10 | 10 | :showDetailBack="false" |
11 | 11 | okText="保存" |
12 | + @visible-change="handleShow" | |
12 | 13 | showFooter |
13 | 14 | :destroyOnClose="true" |
14 | 15 | > |
15 | 16 | <!-- <div> |
16 | 17 | <BasicForm @register="registerForm" /> |
17 | 18 | </div> --> |
18 | - <div style="font-size: 15px">实际收款金额1$</div> | |
19 | - <a-input v-model:value="input1" placeholder="请输入" :disabled="status === 10" auto-size /> | |
20 | - <div style="margin: 16px 0"></div> | |
21 | - <div style="font-size: 15px">实际收款金额2$</div> | |
22 | - <a-input v-model:value="input2" placeholder="请输入" :disabled="status === 10" auto-size /> | |
19 | + <!-- <div style="font-size: 15px">研发复制费合计¥</div> | |
20 | + <a-input | |
21 | + v-model:value="input1" | |
22 | + placeholder="请输入" | |
23 | + :disabled="status1 === 'LOCKED'" | |
24 | + auto-size | |
25 | + /> --> | |
23 | 26 | <div style="margin: 16px 0"></div> |
24 | 27 | <div style="font-size: 15px">项目开始时间</div> |
25 | - <a-date-picker v-model:value="input3" :disabled="status === 10" auto-size /> | |
28 | + <a-date-picker v-model:value="input3" :disabled="status3 === 'LOCKED'" auto-size /> | |
26 | 29 | <div style="margin: 16px 0"></div> |
27 | 30 | <div style="font-size: 15px">项目结束时间</div> |
28 | - <a-date-picker v-model:value="input4" :disabled="status === 10" auto-size /> | |
31 | + <a-date-picker v-model:value="input4" :disabled="status4 === 'LOCKED'" auto-size /> | |
32 | + <!-- <div style="margin: 16px 0"></div> | |
33 | + <div style="font-size: 15px">西班牙已发提成¥</div> | |
34 | + <a-input | |
35 | + v-model:value="input2" | |
36 | + placeholder="请输入" | |
37 | + :disabled="status2 === 'LOCKED'" | |
38 | + auto-size | |
39 | + /> | |
40 | + <div style="margin: 16px 0"></div> | |
41 | + <div style="font-size: 15px">中国团队已发提成¥</div> | |
42 | + <a-input | |
43 | + v-model:value="input5" | |
44 | + placeholder="请输入" | |
45 | + :disabled="status5 === 'LOCKED'" | |
46 | + auto-size | |
47 | + /> | |
48 | + <div style="margin: 16px 0"></div> | |
49 | + <div style="font-size: 15px">实际汇率¥</div> | |
50 | + <a-input | |
51 | + v-model:value="input6" | |
52 | + placeholder="请输入" | |
53 | + :disabled="status6 === 'LOCKED'" | |
54 | + auto-size | |
55 | + /> --> | |
29 | 56 | <div style="margin: 16px 0"></div> |
30 | - | |
31 | 57 | <!-- <template #titleToolbar> <a-button type="primary"> 申请编辑权限 </a-button></template> --> |
32 | 58 | <template #appendFooter> |
33 | 59 | <!-- <a-button type="primary" @click="onGoCheckDetail"> 申请权限</a-button> --> |
... | ... | @@ -39,10 +65,11 @@ |
39 | 65 | import { BasicDrawer, useDrawerInner } from '@/components/Drawer'; |
40 | 66 | import { BasicForm, FormSchema, useForm } from '@/components/Form'; |
41 | 67 | import { defineComponent, ref, computed, unref, toRaw, reactive } from 'vue'; |
42 | - import { getEmailList } from '/@/api/sys/config'; | |
43 | - import { updateAmount } from '@/api/project/invoice'; | |
68 | + import { getServiceEdit } from '@/api/project/invoice'; | |
44 | 69 | import { useMessage } from '/@/hooks/web/useMessage'; |
45 | 70 | import { ROLE } from './type.d'; |
71 | + import type { Dayjs } from 'dayjs'; | |
72 | + import dayjs from 'dayjs'; | |
46 | 73 | |
47 | 74 | const emit = defineEmits(['success']); |
48 | 75 | const role = computed(() => { |
... | ... | @@ -59,16 +86,16 @@ |
59 | 86 | // label: '实际应收金额', |
60 | 87 | // }, |
61 | 88 | { |
62 | - field: 'actualPayedAmount1', | |
89 | + field: 'developmentCopyRmbTotalPrice', | |
63 | 90 | component: 'InputNumber', |
64 | 91 | labelWidth: 250, |
65 | 92 | colProps: { |
66 | 93 | span: 23, |
67 | 94 | }, |
68 | - componentProps: () => ({ | |
69 | - disabled: status.value === 10, | |
70 | - }), | |
71 | - label: '实际应收金额1$', | |
95 | + // componentProps: () => ({ | |
96 | + // disabled: status.value === 10, | |
97 | + // }), | |
98 | + label: '研发复制费合计¥', | |
72 | 99 | }, |
73 | 100 | { |
74 | 101 | field: 'actualPayedAmount2', |
... | ... | @@ -77,9 +104,7 @@ |
77 | 104 | colProps: { |
78 | 105 | span: 23, |
79 | 106 | }, |
80 | - componentProps: () => ({ | |
81 | - disabled: status.value === 10, | |
82 | - }), | |
107 | + | |
83 | 108 | label: '实际应收金额2$', |
84 | 109 | }, |
85 | 110 | { |
... | ... | @@ -89,9 +114,7 @@ |
89 | 114 | colProps: { |
90 | 115 | span: 23, |
91 | 116 | }, |
92 | - componentProps: () => ({ | |
93 | - disabled: status.value === 10, | |
94 | - }), | |
117 | + | |
95 | 118 | label: '实际应收金额3$', |
96 | 119 | }, |
97 | 120 | { |
... | ... | @@ -101,9 +124,7 @@ |
101 | 124 | colProps: { |
102 | 125 | span: 23, |
103 | 126 | }, |
104 | - componentProps: () => ({ | |
105 | - disabled: status.value === 10, | |
106 | - }), | |
127 | + | |
107 | 128 | label: '其他费用金额$', |
108 | 129 | }, |
109 | 130 | ]; |
... | ... | @@ -120,21 +141,61 @@ |
120 | 141 | const { error } = createMessage; |
121 | 142 | |
122 | 143 | const update = ref(); |
123 | - const status = ref(); | |
144 | + const status1 = ref(); | |
145 | + const status2 = ref(); | |
146 | + const status3 = ref(); | |
147 | + const status4 = ref(); | |
148 | + const status5 = ref(); | |
149 | + const status6 = ref(); | |
124 | 150 | |
125 | 151 | const input1 = ref(); |
126 | 152 | const input2 = ref(); |
127 | 153 | const input3 = ref(); |
128 | 154 | const input4 = ref(); |
155 | + | |
156 | + const input5 = ref(); | |
157 | + const input6 = ref(); | |
129 | 158 | const id = ref(); |
159 | + // function formatDate(dateStr: string): string { | |
160 | + // const date = new Date(dateStr); | |
161 | + // const year = date.getFullYear(); | |
162 | + // const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,+1 | |
163 | + // const day = String(date.getDate()).padStart(2, '0'); | |
164 | + // const hours = String(date.getHours()).padStart(2, '0'); | |
165 | + // const minutes = String(date.getMinutes()).padStart(2, '0'); | |
166 | + // const seconds = String(date.getSeconds()).padStart(2, '0'); | |
167 | + | |
168 | + // // 返回格式化后的字符串:'YYYY-MM-DD HH:mm:ss' | |
169 | + // return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; | |
170 | + // } | |
171 | + function formatDateToDateOnly(dateStr: string): string { | |
172 | + const date = new Date(dateStr); | |
173 | + const year = date.getFullYear(); | |
174 | + const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,+1 | |
175 | + const day = String(date.getDate()).padStart(2, '0'); | |
176 | + | |
177 | + // 返回格式化后的日期字符串:'YYYY-MM-DD' | |
178 | + return `${year}-${month}-${day}`; | |
179 | + } | |
130 | 180 | const [register, { setDrawerProps, closeDrawer }] = useDrawerInner((data) => { |
131 | 181 | // 方式1 |
132 | - status.value = data.data.invoiceStatus; | |
133 | - id.value = data.data.invoiceId; | |
134 | - input1.value = data.data.invoiceActualPayedAmount1; | |
135 | - input2.value = data.data.invoiceActualPayedAmount2; | |
136 | - input3.value = data.data.invoiceActualPayedAmount3; | |
137 | - input4.value = data.data.invoiceOtherAmount; | |
182 | + if (data.data.lockFields) { | |
183 | + status1.value = data?.data?.lockFields?.developmentCopyRmbTotalPrice; | |
184 | + status2.value = data?.data?.lockFields?.spainPaidRmbCommission; | |
185 | + status3.value = data?.data?.lockFields?.projectInnerProfitInfoStartTime; | |
186 | + status4.value = data?.data?.lockFields?.projectInnerProfitInfoEndTime; | |
187 | + status5.value = data?.data?.lockFields?.paidRmbCommission; | |
188 | + status6.value = data?.data?.lockFields?.actualExchangeRate; | |
189 | + } | |
190 | + id.value = data?.data?.projectNoPrefix; | |
191 | + console.log(data.data, '5656datafff'); | |
192 | + input1.value = data?.data?.developmentCopyRmbTotalPrice?.toFixed(2); | |
193 | + input2.value = data?.data?.spainPaidRmbCommission?.toFixed(2); | |
194 | + input3.value = dayjs(formatDateToDateOnly(data?.data?.produceStartTime)); | |
195 | + input4.value = dayjs(formatDateToDateOnly(data?.data?.produceEndTime)); | |
196 | + input5.value = data?.data?.paidRmbCommission?.toFixed(2); | |
197 | + input6.value = data?.data?.actualExchangeRate?.toFixed(2); | |
198 | + | |
138 | 199 | resetFields(); |
139 | 200 | setDrawerProps({ confirmLoading: false }); |
140 | 201 | setFieldsValue({ |
... | ... | @@ -153,15 +214,27 @@ |
153 | 214 | if (!input1.value || !input2.value || !input3.value || !input4.value) { |
154 | 215 | error('选项不能为空'); |
155 | 216 | } else { |
156 | - await updateAmount({ | |
157 | - id: id.value, | |
158 | - actualPayedAmount1: input1.value, | |
159 | - actualPayedAmount2: input2.value, | |
160 | - actualPayedAmount3: input3.value, | |
161 | - otherAmount: input4.value, | |
217 | + await getServiceEdit({ | |
218 | + projectNoPrefix: id.value, | |
219 | + developmentCopyRmbTotalPrice: input1.value, | |
220 | + spainPaidRmbCommission: input2.value, | |
221 | + projectStartTime: input3.value, | |
222 | + projectEndTime: input4.value, | |
223 | + paidRmbCommission: input5.value, | |
224 | + actualExchangeRate: input6.value, | |
162 | 225 | }); |
163 | 226 | emit('success'); |
164 | 227 | closeDrawer(); |
165 | 228 | } |
166 | 229 | } |
230 | + function handleShow(visible: boolean) { | |
231 | + if (!visible) { | |
232 | + input1.value = ''; | |
233 | + input2.value = ''; | |
234 | + input3.value = ''; | |
235 | + input4.value = ''; | |
236 | + input5.value = ''; | |
237 | + input6.value = ''; | |
238 | + } | |
239 | + } | |
167 | 240 | </script> | ... | ... |
src/views/project/finance/financeProfit/ProductProfit/InnerProduce/data.tsx
... | ... | @@ -113,14 +113,14 @@ export const COLUMNS = [ |
113 | 113 | dataIndex: 'orderCount', |
114 | 114 | width: 100, |
115 | 115 | }, |
116 | - { | |
117 | - title: '生产科单价¥', | |
118 | - dataIndex: 'productionDepartmentPrice', | |
119 | - width: 120, | |
120 | - customRender: (column) => { | |
121 | - return column.record?.productionDepartmentPrice?.toFixed(2); | |
122 | - }, | |
123 | - }, | |
116 | + // { | |
117 | + // title: '生产科单价¥', | |
118 | + // dataIndex: 'productionDepartmentPrice', | |
119 | + // width: 120, | |
120 | + // customRender: (column) => { | |
121 | + // return column.record?.productionDepartmentPrice?.toFixed(2); | |
122 | + // }, | |
123 | + // }, | |
124 | 124 | { |
125 | 125 | title: '生产科总价¥', |
126 | 126 | dataIndex: 'productionDepartmentTotalPrice', |
... | ... | @@ -151,7 +151,7 @@ export const COLUMNS = [ |
151 | 151 | width: 120, |
152 | 152 | customRender: (column) => { |
153 | 153 | if (column.record?.predictRatio) { |
154 | - return column.record?.predictRatio?.toFixed(2) + '%'; | |
154 | + return (column.record?.predictRatio * 100).toFixed(2) + '%'; | |
155 | 155 | } |
156 | 156 | return column.record?.predictRatio?.toFixed(2); |
157 | 157 | }, |
... | ... | @@ -162,7 +162,7 @@ export const COLUMNS = [ |
162 | 162 | width: 190, |
163 | 163 | customRender: (column) => { |
164 | 164 | if (column.record?.predictAndActualRatio) { |
165 | - return column.record?.predictAndActualRatio?.toFixed(2) + '%'; | |
165 | + return (column.record?.predictAndActualRatio * 100).toFixed(2) + '%'; | |
166 | 166 | } |
167 | 167 | return column.record?.predictAndActualRatio?.toFixed(2); |
168 | 168 | }, |
... | ... | @@ -181,7 +181,7 @@ export const COLUMNS = [ |
181 | 181 | width: 120, |
182 | 182 | customRender: (column) => { |
183 | 183 | if (column.record?.beforeGrossProfitRate) { |
184 | - return column.record?.beforeGrossProfitRate?.toFixed(2) + '%'; | |
184 | + return (column.record?.beforeGrossProfitRate * 100).toFixed(2) + '%'; | |
185 | 185 | } |
186 | 186 | return column.record?.beforeGrossProfitRate?.toFixed(2); |
187 | 187 | }, |
... | ... | @@ -200,7 +200,7 @@ export const COLUMNS = [ |
200 | 200 | width: 120, |
201 | 201 | customRender: (column) => { |
202 | 202 | if (column.record?.grossProfitRate) { |
203 | - return column.record?.grossProfitRate?.toFixed(2) + '%'; | |
203 | + return (column.record?.grossProfitRate * 100).toFixed(2) + '%'; | |
204 | 204 | } |
205 | 205 | return column.record?.grossProfitRate?.toFixed(2); |
206 | 206 | }, |
... | ... | @@ -235,7 +235,7 @@ export const COLUMNS = [ |
235 | 235 | width: 150, |
236 | 236 | customRender: (column) => { |
237 | 237 | if (column.record?.innerProductionProfitRate) { |
238 | - return column.record?.innerProductionProfitRate?.toFixed(2) + '%'; | |
238 | + return (column.record?.innerProductionProfitRate * 100).toFixed(2) + '%'; | |
239 | 239 | } |
240 | 240 | return column.record?.innerProductionProfitRate?.toFixed(2); |
241 | 241 | }, | ... | ... |
src/views/project/finance/financeProfit/ProductProfit/InnerProduce/index.vue
... | ... | @@ -5,9 +5,9 @@ |
5 | 5 | <template v-if="column.key === 'picUrl'"> |
6 | 6 | <img :z-index="100000" :width="50" :height="50" :src="record?.picUrl" /> |
7 | 7 | </template> |
8 | - <!-- <template v-if="column.key === 'action'"> | |
8 | + <template v-if="column.key === 'action'"> | |
9 | 9 | <TableAction :actions="createActions(record)" /> |
10 | - </template> --> | |
10 | + </template> | |
11 | 11 | <!-- <template v-if="column.key === 'relationValue'"> |
12 | 12 | <a-input |
13 | 13 | v-if="record.settingValue === 'A01'" |
... | ... | @@ -32,6 +32,7 @@ |
32 | 32 | <a-textarea :rows="6" placeholder="请输入拒绝原因" v-model:value="message" /> |
33 | 33 | </div> |
34 | 34 | </BasicModal> --> |
35 | + <CheckDetail @register="checkModalRegister" /> | |
35 | 36 | <FinanceEdit @register="registerFinanceEdit" @success="handleSuccess" /> |
36 | 37 | </div> |
37 | 38 | </template> |
... | ... | @@ -44,12 +45,14 @@ |
44 | 45 | import { onMounted, ref } from 'vue'; |
45 | 46 | import { useDrawer } from '/@/components/Drawer'; |
46 | 47 | import FinanceEdit from './FinanceEdit.vue'; |
48 | + import CheckDetail from './CheckDetail.vue'; | |
47 | 49 | import { useOrderStoreWithOut } from '/@/store/modules/order'; |
48 | 50 | |
49 | 51 | const { createMessage } = useMessage(); |
50 | 52 | const { error } = createMessage; |
51 | 53 | const message = ref(); |
52 | 54 | const orderStore = useOrderStoreWithOut(); |
55 | + const [checkModalRegister, { openDrawer: openCheckDetailDrawer }] = useDrawer(); | |
53 | 56 | const [registerFinanceEdit, { openDrawer: openFinanceEdit }] = useDrawer(); |
54 | 57 | const handleOk = (record) => { |
55 | 58 | // 修改父组件的状态 |
... | ... | @@ -77,65 +80,72 @@ |
77 | 80 | tableSetting: { |
78 | 81 | setting: false, |
79 | 82 | }, |
83 | + actionColumn: { | |
84 | + width: 240, | |
85 | + title: 'Action', | |
86 | + dataIndex: 'action', | |
87 | + }, | |
80 | 88 | }); |
81 | 89 | |
82 | - // function createActions(record: any): any[] { | |
83 | - // if (!record.editable) { | |
84 | - // return [ | |
85 | - // // { | |
86 | - // // label: '财务编辑', | |
87 | - // // onClick: handleFinanceEdit.bind(null, record), | |
88 | - // // }, | |
89 | - // // { | |
90 | - // // label: '编辑', | |
91 | - // // onClick: handleEdit.bind(null, record), | |
92 | - // // }, | |
93 | - // // { | |
94 | - // // label: '删除', | |
95 | - // // popConfirm: { | |
96 | - // // title: '确认删除?', | |
97 | - // // confirm: handleDelete.bind(null, record), | |
98 | - // // }, | |
99 | - // // }, | |
100 | - // // { | |
101 | - // // label: '申请权限', | |
102 | - // // // popConfirm: { | |
103 | - // // // title: '确认申请?', | |
104 | - // // // confirm: handleFalse.bind(null, record), | |
105 | - // // // }, | |
106 | - // // onClick: handleFalse.bind(null, record), | |
107 | - // // }, | |
108 | - // ]; | |
109 | - // } | |
110 | - // return [ | |
111 | - // { | |
112 | - // label: '保存', | |
113 | - // onClick: handleSave.bind(null, record), | |
114 | - // }, | |
115 | - // { | |
116 | - // label: '取消', | |
117 | - // popConfirm: { | |
118 | - // title: '是否取消编辑', | |
119 | - // confirm: handleCancel.bind(null, record), | |
120 | - // }, | |
121 | - // }, | |
122 | - // ]; | |
123 | - // } | |
90 | + function createActions(record: any): any[] { | |
91 | + if (!record.editable) { | |
92 | + return [ | |
93 | + { | |
94 | + label: '财务编辑', | |
95 | + onClick: handleFinanceEdit.bind(null, record), | |
96 | + }, | |
97 | + // { | |
98 | + // label: '编辑', | |
99 | + // onClick: handleEdit.bind(null, record), | |
100 | + // }, | |
101 | + // { | |
102 | + // label: '删除', | |
103 | + // popConfirm: { | |
104 | + // title: '确认删除?', | |
105 | + // confirm: handleDelete.bind(null, record), | |
106 | + // }, | |
107 | + // }, | |
108 | + { | |
109 | + label: '申请权限', | |
110 | + // popConfirm: { | |
111 | + // title: '确认申请?', | |
112 | + // confirm: handleFalse.bind(null, record), | |
113 | + // }, | |
114 | + onClick: handleFalse.bind(null, record), | |
115 | + }, | |
116 | + ]; | |
117 | + } | |
118 | + return [ | |
119 | + { | |
120 | + label: '保存', | |
121 | + onClick: handleSave.bind(null, record), | |
122 | + }, | |
123 | + { | |
124 | + label: '取消', | |
125 | + popConfirm: { | |
126 | + title: '是否取消编辑', | |
127 | + confirm: handleCancel.bind(null, record), | |
128 | + }, | |
129 | + }, | |
130 | + ]; | |
131 | + } | |
124 | 132 | |
125 | 133 | onMounted(async () => { |
126 | 134 | await orderStore.getDict(); |
127 | 135 | }); |
128 | 136 | |
129 | 137 | function handleFinanceEdit(record) { |
138 | + console.log(record, '565656ddd'); | |
130 | 139 | openFinanceEdit(true, { |
131 | 140 | data: record, |
132 | 141 | }); |
133 | 142 | } |
134 | 143 | |
135 | - // async function handleFalse(record: any) { | |
136 | - // console.log(record); | |
137 | - // // openModal(true, { record }); | |
138 | - // } | |
144 | + function handleFalse(record, e) { | |
145 | + openCheckDetailDrawer(true, record); | |
146 | + e?.stopPropagation(); | |
147 | + return false; | |
148 | + } | |
139 | 149 | |
140 | 150 | async function handleSave(record) { |
141 | 151 | await saveConfig({ id: record.id, relationValue: record.relationValue }); |
... | ... | @@ -154,9 +164,14 @@ |
154 | 164 | record.onEdit?.(false, false); |
155 | 165 | } |
156 | 166 | |
157 | - async function handleDelete(record) { | |
158 | - await deleteConfig({ ids: [record.id] }); | |
159 | - reload(); | |
167 | + // async function handleDelete(record) { | |
168 | + // await deleteConfig({ ids: [record.id] }); | |
169 | + // reload(); | |
170 | + // } | |
171 | + function handleSuccess() { | |
172 | + setTimeout(() => { | |
173 | + reload(); | |
174 | + }, 50); | |
160 | 175 | } |
161 | 176 | </script> |
162 | 177 | <style></style> | ... | ... |
src/views/project/finance/financeProfit/ProductProfit/InnerProduce/tableData.tsx
... | ... | @@ -21,74 +21,18 @@ const orderStore = useOrderStoreWithOut(); |
21 | 21 | // 基本信息 |
22 | 22 | export const FIELDS_BASE_INFO = [ |
23 | 23 | { |
24 | - field: 'customerCode', | |
24 | + field: 'projectInnerProfitInfoStartTime', | |
25 | 25 | component: 'Select', |
26 | 26 | labelWidth: 150, |
27 | - label: '客户编码', | |
27 | + label: '项目开始时间', | |
28 | 28 | rules: [{ required: true }], |
29 | 29 | }, |
30 | 30 | { |
31 | - field: 'projectNo', | |
32 | - component: 'Input', | |
33 | - labelWidth: 150, | |
34 | - label: '项目号', | |
35 | - rules: [{ required: true }], | |
36 | - }, | |
37 | - { | |
38 | - field: 'productionDepartment', | |
31 | + field: 'projectInnerProfitInfoEndTime', | |
39 | 32 | component: 'Select', |
40 | - // componentProps: { | |
41 | - // options: productionDepartmentOptions, | |
42 | - // }, | |
43 | 33 | labelWidth: 150, |
44 | - label: '生产科', | |
34 | + label: '项目结束时间', | |
45 | 35 | rules: [{ required: true }], |
46 | 36 | }, |
47 | - | |
48 | - { | |
49 | - field: 'innerNo', | |
50 | - component: 'Input', | |
51 | - labelWidth: 150, | |
52 | - label: '内部编号', | |
53 | - rules: [ | |
54 | - { required: true }, | |
55 | - { | |
56 | - validator: async (rule, value) => { | |
57 | - if (value.includes(' ')) { | |
58 | - return Promise.reject(); | |
59 | - } | |
60 | - return Promise.resolve(); | |
61 | - }, | |
62 | - message: '内容存在空格,请检查', | |
63 | - trigger: ['change', 'blur'], | |
64 | - }, | |
65 | - ], | |
66 | - }, | |
67 | - { | |
68 | - field: 'customerPo', | |
69 | - component: 'Input', | |
70 | - labelWidth: 150, | |
71 | - label: '客户po号', | |
72 | - rules: [{ required: true }], | |
73 | - }, | |
74 | - { | |
75 | - field: 'customerStyle', | |
76 | - component: 'Input', | |
77 | - labelWidth: 150, | |
78 | - label: '客户STYLE', | |
79 | - rules: [ | |
80 | - { required: true }, | |
81 | - { | |
82 | - validator: async (rule, value) => { | |
83 | - if (value.includes(' ')) { | |
84 | - return Promise.reject(); | |
85 | - } | |
86 | - return Promise.resolve(); | |
87 | - }, | |
88 | - message: '内容存在空格,请检查', | |
89 | - trigger: ['change', 'blur'], | |
90 | - }, | |
91 | - ], | |
92 | - }, | |
93 | 37 | ]; |
94 | 38 | ... | ... |
src/views/project/finance/financeProfit/ServiceProfit/PackageProfit/data.tsx
... | ... | @@ -182,7 +182,7 @@ export const COLUMNS = [ |
182 | 182 | width: 140, |
183 | 183 | customRender: (column) => { |
184 | 184 | if (column.record?.packetProfitRate) { |
185 | - return column.record?.packetProfitRate?.toFixed(2) + '%'; | |
185 | + return (column.record?.packetProfitRate * 100).toFixed(2) + '%'; | |
186 | 186 | } |
187 | 187 | return column.record?.packetProfitRate?.toFixed(2); |
188 | 188 | }, | ... | ... |
src/views/project/finance/financeProfit/ServiceProfit/ServiceProfit/ApproveReason.vue
... | ... | @@ -37,6 +37,7 @@ |
37 | 37 | projectEndTime: baseFieldValues.value.projectEndTime, |
38 | 38 | spainPaidRmbCommission: baseFieldValues.value.spainPaidRmbCommission, |
39 | 39 | applyRemark: baseFieldValues.value.applyRemark, |
40 | + type: 'FIELD_EDIT_APPLY', | |
40 | 41 | }); |
41 | 42 | emit('success'); |
42 | 43 | setTimeout(() => { | ... | ... |
src/views/project/finance/financeProfit/ServiceProfit/ServiceProfit/FinanceEdit.vue
... | ... | @@ -9,6 +9,7 @@ |
9 | 9 | @ok="handleSubmit" |
10 | 10 | :showDetailBack="false" |
11 | 11 | okText="保存" |
12 | + @visible-change="handleShow" | |
12 | 13 | showFooter |
13 | 14 | :destroyOnClose="true" |
14 | 15 | > |
... | ... | @@ -150,8 +151,7 @@ |
150 | 151 | const input1 = ref(); |
151 | 152 | const input2 = ref(); |
152 | 153 | const input3 = ref(); |
153 | - // const input4 = ref(); | |
154 | - const input4 = ref(dayjs('2013-12-01')); | |
154 | + const input4 = ref(); | |
155 | 155 | |
156 | 156 | const input5 = ref(); |
157 | 157 | const input6 = ref(); |
... | ... | @@ -187,7 +187,6 @@ |
187 | 187 | status5.value = data?.data?.lockFields?.paidRmbCommission; |
188 | 188 | status6.value = data?.data?.lockFields?.actualExchangeRate; |
189 | 189 | } |
190 | - console.log(data.data.lockFields, '5656vdata.data.lockFields'); | |
191 | 190 | id.value = data?.data?.projectNoPrefix; |
192 | 191 | input1.value = data?.data?.developmentCopyRmbTotalPrice.toFixed(2); |
193 | 192 | input2.value = data?.data?.spainPaidRmbCommission.toFixed(2); |
... | ... | @@ -195,6 +194,7 @@ |
195 | 194 | input4.value = dayjs(formatDateToDateOnly(data?.data?.projectEndTime)); |
196 | 195 | input5.value = data?.data?.paidRmbCommission.toFixed(2); |
197 | 196 | input6.value = data?.data?.actualExchangeRate.toFixed(2); |
197 | + | |
198 | 198 | resetFields(); |
199 | 199 | setDrawerProps({ confirmLoading: false }); |
200 | 200 | setFieldsValue({ |
... | ... | @@ -226,4 +226,14 @@ |
226 | 226 | closeDrawer(); |
227 | 227 | } |
228 | 228 | } |
229 | + function handleShow(visible: boolean) { | |
230 | + if (!visible) { | |
231 | + input1.value = ''; | |
232 | + input2.value = ''; | |
233 | + input3.value = ''; | |
234 | + input4.value = ''; | |
235 | + input5.value = ''; | |
236 | + input6.value = ''; | |
237 | + } | |
238 | + } | |
229 | 239 | </script> | ... | ... |
src/views/project/finance/financeProfit/ServiceProfit/ServiceProfit/data.tsx
... | ... | @@ -132,7 +132,8 @@ export const COLUMNS = [ |
132 | 132 | dataIndex: 'packetTotalPrice', |
133 | 133 | width: 150, |
134 | 134 | customRender: (column) => { |
135 | - return column.record?.packetTotalPrice?.toFixed(2); | |
135 | + console.log(column, '5656666666'); | |
136 | + return column.record?.packetRmbTotalPrice?.toFixed(2); | |
136 | 137 | }, |
137 | 138 | }, |
138 | 139 | { |
... | ... | @@ -229,7 +230,7 @@ export const COLUMNS = [ |
229 | 230 | width: 120, |
230 | 231 | customRender: (column) => { |
231 | 232 | if (column.record?.profitRate) { |
232 | - return column.record?.profitRate?.toFixed(2) + '%'; | |
233 | + return (column.record?.profitRate * 100).toFixed(2) + '%'; | |
233 | 234 | } |
234 | 235 | return column.record?.profitRate?.toFixed(2); |
235 | 236 | }, |
... | ... | @@ -248,7 +249,7 @@ export const COLUMNS = [ |
248 | 249 | width: 120, |
249 | 250 | customRender: (column) => { |
250 | 251 | if (column.record?.developmentProfitRate) { |
251 | - return column.record?.developmentProfitRate?.toFixed(2) + '%'; | |
252 | + return (column.record?.developmentProfitRate * 100).toFixed(2) + '%'; | |
252 | 253 | } |
253 | 254 | return column.record?.developmentProfitRate?.toFixed(2); |
254 | 255 | }, | ... | ... |
vite.config.ts
... | ... | @@ -30,7 +30,18 @@ export default defineApplicationConfig({ |
30 | 30 | }, |
31 | 31 | }, |
32 | 32 | '/basic-api/order': { |
33 | - target: 'http://47.104.8.35:8000', | |
33 | + target: 'http://47.104.8.35:18000', | |
34 | + // target: 'http://localhost:18000', | |
35 | + // target: 'http://39.108.227.113:8000', | |
36 | + // target: 'http://localhost:8000', | |
37 | + // target: 'http://39.108.227.113:3000/mock/35', | |
38 | + // http://39.108.227.113:8000/order/erp/captcha/get_img_captcha_code | |
39 | + changeOrigin: true, | |
40 | + ws: true, | |
41 | + rewrite: (path) => path.replace(new RegExp(`^/basic-api`), ''), | |
42 | + }, | |
43 | + '/basic-api/project': { | |
44 | + target: 'http://47.104.8.35:18000', | |
34 | 45 | // target: 'http://localhost:18000', |
35 | 46 | // target: 'http://39.108.227.113:8000', |
36 | 47 | // target: 'http://localhost:8000', |
... | ... | @@ -40,19 +51,8 @@ export default defineApplicationConfig({ |
40 | 51 | ws: true, |
41 | 52 | rewrite: (path) => path.replace(new RegExp(`^/basic-api`), ''), |
42 | 53 | }, |
43 | - // '/basic-api/project': { | |
44 | - // target: 'http://47.104.8.35:8000', | |
45 | - // // target: 'http://localhost:18000', | |
46 | - // // target: 'http://39.108.227.113:8000', | |
47 | - // // target: 'http://localhost:8000', | |
48 | - // // target: 'http://39.108.227.113:3000/mock/35', | |
49 | - // // http://39.108.227.113:8000/order/erp/captcha/get_img_captcha_code | |
50 | - // changeOrigin: true, | |
51 | - // ws: true, | |
52 | - // rewrite: (path) => path.replace(new RegExp(`^/basic-api`), ''), | |
53 | - // }, | |
54 | 54 | '/api/localStorage/upload': { |
55 | - target: 'http://47.104.8.35:8000', | |
55 | + target: 'http://47.104.8.35:18000', | |
56 | 56 | // target: 'http://localhost:18000', |
57 | 57 | // target: 'http://39.108.227.113:8000', |
58 | 58 | // target: '192.168.31.250:18000', | ... | ... |