diff --git a/src/api/clue/sign.js b/src/api/clue/sign.js index 2dc80f2..4f87227 100644 --- a/src/api/clue/sign.js +++ b/src/api/clue/sign.js @@ -29,3 +29,21 @@ export const signAddPay = async (data) => { export const getSignExtraPayList = async (params) => { return await request.get({ url: '/admin-api/crm/sign/extra-pay/get', params }) } + +// 安装状态修改 +export const updateInstallStatus = (signIdList, installStatus) => { + const data = { + signIdList, + installStatus + } + return request.post({ url: '/admin-api/crm/sign/install-status/batchSave', data: data }) +} + +// 修改生产状态 +export const updateProduceStatus = (data) => { + return request.put({ url: '/admin-api/crm/sign-prodcut/update', data: data }) +} + +export const updateProduceSort = (data) => { + return request.post({ url: '/admin-api/crm/sign-prodcut/adjust/sort', data: data }) +} diff --git a/src/components/SSTable/index.vue b/src/components/SSTable/index.vue index 209638c..c76db0e 100644 --- a/src/components/SSTable/index.vue +++ b/src/components/SSTable/index.vue @@ -3,6 +3,8 @@
({ tableList: [] }) }, - tableColumns: { type: Array, default: () => [] } + tableColumns: { type: Array, default: () => [] }, + rowkey: { type: String, default: 'id' }, + expandRowKeys: { type: Array, default: () => [] } }) const emit = defineEmits(['update:tableObject', 'getList', 'getCheckedColumns', 'selection-change']) diff --git a/src/views/Clue/Order/Comp/MallOrderList.vue b/src/views/Clue/Order/Comp/MallOrderList.vue index 5098fa6..5482072 100644 --- a/src/views/Clue/Order/Comp/MallOrderList.vue +++ b/src/views/Clue/Order/Comp/MallOrderList.vue @@ -52,6 +52,13 @@
@@ -61,58 +68,88 @@ class="mt-10px" v-model:tableObject="tableObject" :tableColumns="allSchemas.tableColumns" + rowkey="signId" + :expandRowKeys="expendRows" @get-list="getTableList" @get-checked-columns="getCheckedColumns" + @selection-change="handleSelectionChange" > + @@ -217,6 +254,8 @@ import DialogDelivery from './DialogDelivery.vue' import { removeNullField } from '@/utils' import { formatDate } from '@/utils/formatTime' +import { ElMessageBox, ElOption, ElSelect } from 'element-plus' +import { VueDraggable } from 'vue-draggable-plus' const userOptions = ref([]) const allUserOptions = ref([]) @@ -362,6 +401,96 @@ const deliveryDialog = ref() function handleDelivery(row) { deliveryDialog.value.open(row) } + +const batchIds = ref([]) +function handleSelectionChange(val) { + batchIds.value = val.map((it) => it.signId) +} + +const selectedValue = ref(undefined) +const installOptions = [ + { label: '待安装', value: 1 }, + { label: '已安装', value: 2 }, + { label: '无需安装', value: 3 } +] + +const select = () => + h( + ElSelect, + { + modelValue: selectedValue.value, + placeholder: '新状态', + 'onUpdate:modelValue': (val) => { + selectedValue.value = val + } + }, + () => + installOptions.map((item) => { + return h(ElOption, { label: item.label, value: item.value }) + }) + ) + +function handleBatchUpdateInstall() { + if (batchIds.value.length) { + ElMessageBox({ + title: '是否确认修改安装状态?', + message: select, + showCancelButton: true, + confirmButtonText: '确定', + cancelButtonText: '取消' + }).then(async (action) => { + // 处理用户点击确定或取消按钮后的逻辑 + if (action == 'confirm') { + try { + // 发起修改状态 + await SignApi.updateInstallStatus(batchIds.value, selectedValue.value) + message.success('修改成功') + // 刷新列表 + await getTableList() + } catch (err) { + // 取消后,进行恢复按钮 + console.log(err) + } + } + }) + } else { + message.info('请选择表格行') + } +} + +async function handleChangeProdoce(row) { + try { + // 修改状态的二次确认 + await message.confirm('确认要修改生产状态吗?') + // 发起修改状态 + await SignApi.updateProduceStatus({ + signId: row.signId, + id: row.id, + isProduced: row.isProduced + }) + message.success('修改成功') + // 刷新列表 + getTableList() + } catch { + // 取消后,进行恢复按钮 + row.isProduced = !row.isProduced + } +} + +const expendRows = ref([]) +async function onDragEnd(ev) { + try { + expendRows.value = [ev.data.signId] + const list = tableObject.value.tableList.find((it) => it.signId == ev.data.signId).signProducts + await SignApi.updateProduceSort(list.map((it) => it.id)) + message.success('修改成功') + // 刷新列表 + getTableList() + } catch (error) { + console.log(error) + getTableList() + } +} diff --git a/src/views/Clue/Order/Comp/MallSettle.vue b/src/views/Clue/Order/Comp/MallSettle.vue index 26c7928..5acd2c1 100644 --- a/src/views/Clue/Order/Comp/MallSettle.vue +++ b/src/views/Clue/Order/Comp/MallSettle.vue @@ -2,22 +2,44 @@
- + - + - + - + - + + + + @@ -44,6 +79,7 @@ filterable clearable @change="searchForm.signSpecs = undefined" + style="width: 150px" > - + + @@ -199,6 +248,7 @@ const searchForm = ref({ phone: undefined, signUser: undefined, dealDate: [], + createDate: [], signProduct: undefined, signSpecs: undefined, signId: undefined, @@ -215,6 +265,7 @@ function handleReset() { phone: undefined, signUser: undefined, dealDate: [], + createDate: [], signProduct: undefined, signSpecs: undefined, signId: undefined, diff --git a/src/views/Clue/Order/Comp/SchoolSettle.vue b/src/views/Clue/Order/Comp/SchoolSettle.vue index 22ec5d9..08cd1f4 100644 --- a/src/views/Clue/Order/Comp/SchoolSettle.vue +++ b/src/views/Clue/Order/Comp/SchoolSettle.vue @@ -2,22 +2,44 @@
- + - + - + - + - + + + + @@ -44,6 +79,7 @@ filterable clearable @change="changeSchool" + style="width: 120px" > + @@ -206,6 +250,7 @@ const searchForm = ref({ phone: undefined, signUser: undefined, dealDate: [], + createDate: [], signSchool: undefined, signPlace: undefined, signClass: undefined, @@ -222,6 +267,7 @@ function handleReset() { phone: undefined, signUser: undefined, dealDate: [], + createDate: [], signSchool: undefined, signPlace: undefined, signClass: undefined, diff --git a/src/views/Clue/Pool/Comp/DialogSuccess.vue b/src/views/Clue/Pool/Comp/DialogSuccess.vue index f057e58..2ce06f5 100644 --- a/src/views/Clue/Pool/Comp/DialogSuccess.vue +++ b/src/views/Clue/Pool/Comp/DialogSuccess.vue @@ -118,18 +118,31 @@ - - - - - - - + +