From c1f88801880d3496a9a86e2d048ed8e2141203e3 Mon Sep 17 00:00:00 2001 From: quantulr <35954003+quantulr@users.noreply.github.com> Date: Fri, 17 Nov 2023 17:26:24 +0800 Subject: [PATCH] update --- src/api/sales/person.js | 55 +++--- src/components/TableSelect/index.vue | 9 +- src/views/sales/contract/index.vue | 240 +++++++++++++++------------ src/views/sales/team/team.vue | 34 +++- 4 files changed, 203 insertions(+), 135 deletions(-) diff --git a/src/api/sales/person.js b/src/api/sales/person.js index b2c201b..cce3e38 100644 --- a/src/api/sales/person.js +++ b/src/api/sales/person.js @@ -2,43 +2,52 @@ import request from "@/utils/request"; export function listPerson(query) { - return request({ - url: "/sales/person/list", - method: "get", - params: query, - }); + return request({ + url: "/sales/person/list", + method: "get", + params: query, + }); } // 查询person详细 export function getPerson(personId) { - return request({ - url: "/sales/person/" + personId, - method: "get", - }); + return request({ + url: "/sales/person/" + personId, + method: "get", + }); } // 新增person export function addPerson(data) { - return request({ - url: "/sales/person", - method: "post", - data: data, - }); + return request({ + url: "/sales/person", + method: "post", + data: data, + }); } // 修改person export function updatePerson(data) { - return request({ - url: "/sales/person", - method: "put", - data: data, - }); + return request({ + url: "/sales/person", + method: "put", + data: data, + }); } // 删除person export function delPerson(personId) { - return request({ - url: "/sales/person/" + personId, - method: "delete", - }); + return request({ + url: "/sales/person/" + personId, + method: "delete", + }); +} + + +export function setAsManager(teamId, personId) { + return request.post("/sales/person/as-manager", {teamId, personId}) +} + +export function setAsSeller(teamId, personIds) { + return request.post("/sales/person/as-seller", {teamId, personIds}) } diff --git a/src/components/TableSelect/index.vue b/src/components/TableSelect/index.vue index 22c236a..7d22413 100644 --- a/src/components/TableSelect/index.vue +++ b/src/components/TableSelect/index.vue @@ -10,7 +10,7 @@ const props = defineProps({ }, multiple: { type: Boolean, - default: true, + default: false, }, filter: { type: Object, @@ -71,7 +71,10 @@ const cancel = () => { }; const submit = () => { - emits("selected", ids.value); + console.log(ids.value.map(el => el)) + emits("selected", { + data: ids.value + }); handleClose(); }; @@ -100,7 +103,7 @@ const submit = () => { /> diff --git a/src/views/sales/contract/index.vue b/src/views/sales/contract/index.vue index 92eee15..9276324 100644 --- a/src/views/sales/contract/index.vue +++ b/src/views/sales/contract/index.vue @@ -1,41 +1,41 @@ @@ -188,8 +199,10 @@ import { addContract, updateContract, } from "@/api/sales/contract"; +import TableSelect from '@/components/TableSelect' +import {getPerson, listPerson} from "@/api/sales/person"; -const { proxy } = getCurrentInstance(); +const {proxy} = getCurrentInstance(); const contractList = ref([]); const open = ref(false); @@ -200,6 +213,7 @@ const single = ref(true); const multiple = ref(true); const total = ref(0); const title = ref(""); +const showPersonSelect = ref() const data = reactive({ form: {}, @@ -216,22 +230,22 @@ const data = reactive({ createUser: null, }, rules: { - contractId: [{ required: true, message: "不能为空", trigger: "blur" }], - location: [{ required: true, message: "地点不能为空", trigger: "blur" }], - customer: [{ required: true, message: "客户不能为空", trigger: "blur" }], - amount: [{ required: true, message: "总额不能为空", trigger: "blur" }], - taxPoint: [{ required: true, message: "税点不能为空", trigger: "blur" }], - date: [{ required: true, message: "时间不能为空", trigger: "blur" }], + contractId: [{required: true, message: "不能为空", trigger: "blur"}], + location: [{required: true, message: "地点不能为空", trigger: "blur"}], + customer: [{required: true, message: "客户不能为空", trigger: "blur"}], + amount: [{required: true, message: "总额不能为空", trigger: "blur"}], + taxPoint: [{required: true, message: "税点不能为空", trigger: "blur"}], + date: [{required: true, message: "时间不能为空", trigger: "blur"}], createDate: [ - { required: true, message: "创建时间不能为空", trigger: "blur" }, + {required: true, message: "创建时间不能为空", trigger: "blur"}, ], createUser: [ - { required: true, message: "创建人不能为空", trigger: "blur" }, + {required: true, message: "创建人不能为空", trigger: "blur"}, ], }, }); -const { queryParams, form, rules } = toRefs(data); +const {queryParams, form, rules} = toRefs(data); /** 查询contract列表 */ function getList() { @@ -293,6 +307,7 @@ function handleAdd() { function handleUpdate(row) { reset(); const _contractId = row.contractId || ids.value; + console.log(row) getContract(_contractId).then((response) => { form.value = response.data; open.value = true; @@ -325,15 +340,30 @@ function submitForm() { function handleDelete(row) { const _contractIds = row.contractId || ids.value; proxy.$modal - .confirm('是否确认删除contract编号为"' + _contractIds + '"的数据项?') - .then(function () { - return delContract(_contractIds); - }) - .then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }) - .catch(() => {}); + .confirm('是否确认删除contract编号为"' + _contractIds + '"的数据项?') + .then(function () { + return delContract(_contractIds); + }) + .then(() => { + getList(); + proxy.$modal.msgSuccess("删除成功"); + }) + .catch(() => { + }); +} + +const handleSetSeller = () => { + showPersonSelect.value = true +} + +const handleConfirmSelectPerson = ({data}) => { + const personId = data[0] + getPerson(personId).then(resp => { + const name = resp.data.name + const personId = resp.data.personId + form.value.salesPerson = name + form.value.salesPersonId = personId + }) } getList(); diff --git a/src/views/sales/team/team.vue b/src/views/sales/team/team.vue index 7998237..f0d2f9d 100644 --- a/src/views/sales/team/team.vue +++ b/src/views/sales/team/team.vue @@ -102,7 +102,7 @@ @click="handleAddSeller(record.teamId)" >添加销售 - 设置主管 @@ -140,10 +140,12 @@ key: 'name', }, ]" + :multiple="!!selectPersonType" row-key="personId" :fetcher="listPerson" :filter="filter" v-model:show="showPersonSelector" + @selected="handleConfirmSelect" /> @@ -158,9 +160,10 @@ import { import {getCurrentInstance, reactive, ref, toRefs} from "vue"; import {Table as ATable} from "ant-design-vue"; import TableSelect from "@/components/TableSelect"; -import {listPerson} from "@/api/sales/person"; +import {listPerson, setAsManager, setAsSeller} from "@/api/sales/person"; import DictTag from "@/components/DictTag/index.vue"; import {sales_person_dict} from "@/constant/dict"; +import modal from "@/plugins/modal"; const {proxy} = getCurrentInstance(); @@ -172,7 +175,6 @@ const ids = ref([]); const single = ref(true); const multiple = ref(true); const total = ref(0); -const personTotal = ref(0); const title = ref(""); const showPersonSelector = ref(false); const data = reactive({ @@ -330,7 +332,11 @@ function handleDelete(row) { }); } +const selectPersonType = ref(0) // 0 manager, 1 seller +const currentTeamId = ref() const handleAddSeller = (teamId) => { + selectPersonType.value = 1 + currentTeamId.value = teamId filter.canBeManagerOf = null filter.canBeSellerOf = teamId showPersonSelector.value = true @@ -338,8 +344,28 @@ const handleAddSeller = (teamId) => { /** * 设置主管 */ -const setManager = () => { +const handleSetManager = (teamId) => { + selectPersonType.value = 0 + currentTeamId.value = teamId + filter.canBeManagerOf = teamId + filter.canBeSellerOf = null + showPersonSelector.value = true }; +const handleConfirmSelect = ({data}) => { + if (selectPersonType.value === 0) { + setAsManager(currentTeamId.value, data[0]).then(() => { + modal.msgSuccess("已设置为主管") + getList() + showPersonSelector.value = false + }) + } else if (selectPersonType.value === 1) { + setAsSeller(currentTeamId.value, data) + modal.msgSuccess("成功添加销售") + getList() + showPersonSelector.value = false + } +} + getList();