This commit is contained in:
quantulr
2023-11-17 17:26:24 +08:00
parent ad9dd06944
commit c1f8880188
4 changed files with 203 additions and 135 deletions

View File

@ -42,3 +42,12 @@ export function delPerson(personId) {
method: "delete", 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})
}

View File

@ -10,7 +10,7 @@ const props = defineProps({
}, },
multiple: { multiple: {
type: Boolean, type: Boolean,
default: true, default: false,
}, },
filter: { filter: {
type: Object, type: Object,
@ -71,7 +71,10 @@ const cancel = () => {
}; };
const submit = () => { const submit = () => {
emits("selected", ids.value); console.log(ids.value.map(el => el))
emits("selected", {
data: ids.value
});
handleClose(); handleClose();
}; };
@ -100,7 +103,7 @@ const submit = () => {
/> />
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" @click="submit"> </el-button> <el-button type="primary" @click="submit" :disabled="!ids.length"> </el-button>
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</template> </template>

View File

@ -85,11 +85,12 @@
:data="contractList" :data="contractList"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="客户" align="center" prop="customer" /> <el-table-column label="客户" align="center" prop="customer"/>
<el-table-column label="总额" align="center" prop="amount" /> <el-table-column label="总额" align="center" prop="amount"/>
<el-table-column label="税点" align="center" prop="taxPoint" /> <el-table-column label="税点" align="center" prop="taxPoint"/>
<el-table-column label="地点" align="center" prop="location" /> <el-table-column label="地点" align="center" prop="location"/>
<el-table-column label="销售员" align="center" prop="salesPerson"/>
<el-table-column label="时间" align="center" prop="date" width="180"> <el-table-column label="时间" align="center" prop="date" width="180">
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.date }}</span> <span>{{ row.date }}</span>
@ -148,16 +149,16 @@
label-width="80px" label-width="80px"
> >
<el-form-item label="地点" prop="location"> <el-form-item label="地点" prop="location">
<el-input v-model="form.location" placeholder="请输入地点" /> <el-input v-model="form.location" placeholder="请输入地点"/>
</el-form-item> </el-form-item>
<el-form-item label="客户" prop="customer"> <el-form-item label="客户" prop="customer">
<el-input v-model="form.customer" placeholder="请输入客户" /> <el-input v-model="form.customer" placeholder="请输入客户"/>
</el-form-item> </el-form-item>
<el-form-item label="总额" prop="amount"> <el-form-item label="总额" prop="amount">
<el-input v-model="form.amount" placeholder="请输入总额" /> <el-input v-model="form.amount" placeholder="请输入总额"/>
</el-form-item> </el-form-item>
<el-form-item label="税点" prop="taxPoint"> <el-form-item label="税点" prop="taxPoint">
<el-input v-model="form.taxPoint" placeholder="请输入税点" /> <el-input v-model="form.taxPoint" placeholder="请输入税点"/>
</el-form-item> </el-form-item>
<el-form-item label="时间" prop="date"> <el-form-item label="时间" prop="date">
<el-date-picker <el-date-picker
@ -169,6 +170,10 @@
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="销售员" prop="salesPersonId">
<el-tag v-if="form.salesPerson">{{ form.salesPerson }}</el-tag>
<el-button v-else size="small" plain type="primary" @click="handleSetSeller">选择</el-button>
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
@ -177,6 +182,12 @@
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
<table-select v-model:show="showPersonSelect" row-key="personId" :fetcher="listPerson" :columns="[{
title: '名称',
dataIndex: 'name',
key: 'name',
}]" @selected="handleConfirmSelectPerson"/>
</div> </div>
</template> </template>
@ -188,8 +199,10 @@ import {
addContract, addContract,
updateContract, updateContract,
} from "@/api/sales/contract"; } 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 contractList = ref([]);
const open = ref(false); const open = ref(false);
@ -200,6 +213,7 @@ const single = ref(true);
const multiple = ref(true); const multiple = ref(true);
const total = ref(0); const total = ref(0);
const title = ref(""); const title = ref("");
const showPersonSelect = ref()
const data = reactive({ const data = reactive({
form: {}, form: {},
@ -216,22 +230,22 @@ const data = reactive({
createUser: null, createUser: null,
}, },
rules: { rules: {
contractId: [{ required: true, message: "不能为空", trigger: "blur" }], contractId: [{required: true, message: "不能为空", trigger: "blur"}],
location: [{ required: true, message: "地点不能为空", trigger: "blur" }], location: [{required: true, message: "地点不能为空", trigger: "blur"}],
customer: [{ required: true, message: "客户不能为空", trigger: "blur" }], customer: [{required: true, message: "客户不能为空", trigger: "blur"}],
amount: [{ required: true, message: "总额不能为空", trigger: "blur" }], amount: [{required: true, message: "总额不能为空", trigger: "blur"}],
taxPoint: [{ required: true, message: "税点不能为空", trigger: "blur" }], taxPoint: [{required: true, message: "税点不能为空", trigger: "blur"}],
date: [{ required: true, message: "时间不能为空", trigger: "blur" }], date: [{required: true, message: "时间不能为空", trigger: "blur"}],
createDate: [ createDate: [
{ required: true, message: "创建时间不能为空", trigger: "blur" }, {required: true, message: "创建时间不能为空", trigger: "blur"},
], ],
createUser: [ createUser: [
{ required: true, message: "创建人不能为空", trigger: "blur" }, {required: true, message: "创建人不能为空", trigger: "blur"},
], ],
}, },
}); });
const { queryParams, form, rules } = toRefs(data); const {queryParams, form, rules} = toRefs(data);
/** 查询contract列表 */ /** 查询contract列表 */
function getList() { function getList() {
@ -293,6 +307,7 @@ function handleAdd() {
function handleUpdate(row) { function handleUpdate(row) {
reset(); reset();
const _contractId = row.contractId || ids.value; const _contractId = row.contractId || ids.value;
console.log(row)
getContract(_contractId).then((response) => { getContract(_contractId).then((response) => {
form.value = response.data; form.value = response.data;
open.value = true; open.value = true;
@ -333,7 +348,22 @@ function handleDelete(row) {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
}) })
.catch(() => {}); .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(); getList();

View File

@ -102,7 +102,7 @@
@click="handleAddSeller(record.teamId)" @click="handleAddSeller(record.teamId)"
>添加销售 >添加销售
</el-button> </el-button>
<el-button link type="primary" icon="plus" @click="setManager" <el-button link type="primary" icon="plus" @click="handleSetManager(record.teamId)"
>设置主管 >设置主管
</el-button> </el-button>
</template> </template>
@ -140,10 +140,12 @@
key: 'name', key: 'name',
}, },
]" ]"
:multiple="!!selectPersonType"
row-key="personId" row-key="personId"
:fetcher="listPerson" :fetcher="listPerson"
:filter="filter" :filter="filter"
v-model:show="showPersonSelector" v-model:show="showPersonSelector"
@selected="handleConfirmSelect"
/> />
</template> </template>
@ -158,9 +160,10 @@ import {
import {getCurrentInstance, reactive, ref, toRefs} from "vue"; import {getCurrentInstance, reactive, ref, toRefs} from "vue";
import {Table as ATable} from "ant-design-vue"; import {Table as ATable} from "ant-design-vue";
import TableSelect from "@/components/TableSelect"; 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 DictTag from "@/components/DictTag/index.vue";
import {sales_person_dict} from "@/constant/dict"; import {sales_person_dict} from "@/constant/dict";
import modal from "@/plugins/modal";
const {proxy} = getCurrentInstance(); const {proxy} = getCurrentInstance();
@ -172,7 +175,6 @@ const ids = ref([]);
const single = ref(true); const single = ref(true);
const multiple = ref(true); const multiple = ref(true);
const total = ref(0); const total = ref(0);
const personTotal = ref(0);
const title = ref(""); const title = ref("");
const showPersonSelector = ref(false); const showPersonSelector = ref(false);
const data = reactive({ const data = reactive({
@ -330,7 +332,11 @@ function handleDelete(row) {
}); });
} }
const selectPersonType = ref(0) // 0 manager, 1 seller
const currentTeamId = ref()
const handleAddSeller = (teamId) => { const handleAddSeller = (teamId) => {
selectPersonType.value = 1
currentTeamId.value = teamId
filter.canBeManagerOf = null filter.canBeManagerOf = null
filter.canBeSellerOf = teamId filter.canBeSellerOf = teamId
showPersonSelector.value = true 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(); getList();
</script> </script>