| | |
| | | import { TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; |
| | | import { |
| | | createBusinessStatus, |
| | | DEFAULT_STATUSES, |
| | | getBusinessStatus, |
| | | updateBusinessStatus, |
| | | } from '#/api/crm/business/status'; |
| | |
| | | try { |
| | | if (formData.value?.statuses && formData.value.statuses.length > 0) { |
| | | data.statuses = formData.value.statuses; |
| | | data.statuses.splice(-3, 3); |
| | | } |
| | | await (formData.value?.id |
| | | ? updateBusinessStatus(data) |
| | |
| | | // 设置到 values |
| | | await formApi.setValues(formData.value as any); |
| | | await gridApi.grid.reloadData( |
| | | (formData.value!.statuses = |
| | | formData.value?.statuses?.concat(DEFAULT_STATUSES)) as any, |
| | | (formData.value!.statuses) as any, |
| | | ); |
| | | } finally { |
| | | modalApi.unlock(); |
| | |
| | | |
| | | /** 添加状态 */ |
| | | async function handleAddStatus() { |
| | | formData.value!.statuses!.splice(-3, 0, { |
| | | formData.value!.statuses!.push({ |
| | | name: '', |
| | | percent: undefined, |
| | | }); |
| | |
| | | mode: 'cell', |
| | | }, |
| | | columns: useFormColumns(), |
| | | data: formData.value?.statuses?.concat(DEFAULT_STATUSES), |
| | | data: formData.value?.statuses, |
| | | border: true, |
| | | showOverflow: true, |
| | | autoResize: true, |
| | |
| | | <Form class="mx-4"> |
| | | <template #statuses> |
| | | <Grid class="w-full"> |
| | | <template #endStatus="{ row, rowIndex }"> |
| | | <span> |
| | | {{ row.endStatus ? '结束' : `阶段${rowIndex + 1}` }} |
| | | </span> |
| | | </template> |
| | | <template #name="{ row }"> |
| | | <Input |
| | | v-if="!row.endStatus" |
| | | v-model:value="row.name" |
| | | placeholder="请输入状态名" |
| | | /> |
| | | <span v-else>{{ row.name }}</span> |
| | | </template> |
| | | <template #percent="{ row }"> |
| | | <InputNumber |
| | | v-if="!row.endStatus" |
| | | v-model:value="row.percent" |
| | | :min="0" |
| | | :max="100" |
| | | :precision="2" |
| | | placeholder="请输入赢单率" |
| | | /> |
| | | <span v-else>{{ row.percent }}</span> |
| | | </template> |
| | | <template #actions="{ row, rowIndex }"> |
| | | <TableAction |
| | |
| | | { |
| | | label: $t('ui.actionTitle.create'), |
| | | type: 'link', |
| | | ifShow: () => !row.endStatus, |
| | | onClick: handleAddStatus, |
| | | }, |
| | | { |
| | | label: $t('common.delete'), |
| | | type: 'link', |
| | | danger: true, |
| | | ifShow: () => !row.endStatus, |
| | | popConfirm: { |
| | | title: $t('ui.actionMessage.deleteConfirm', [row.name]), |
| | | confirm: deleteStatusArea.bind(null, row, rowIndex), |