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

@ -2,43 +2,52 @@
import request from "@/utils/request"; import request from "@/utils/request";
export function listPerson(query) { export function listPerson(query) {
return request({ return request({
url: "/sales/person/list", url: "/sales/person/list",
method: "get", method: "get",
params: query, params: query,
}); });
} }
// 查询person详细 // 查询person详细
export function getPerson(personId) { export function getPerson(personId) {
return request({ return request({
url: "/sales/person/" + personId, url: "/sales/person/" + personId,
method: "get", method: "get",
}); });
} }
// 新增person // 新增person
export function addPerson(data) { export function addPerson(data) {
return request({ return request({
url: "/sales/person", url: "/sales/person",
method: "post", method: "post",
data: data, data: data,
}); });
} }
// 修改person // 修改person
export function updatePerson(data) { export function updatePerson(data) {
return request({ return request({
url: "/sales/person", url: "/sales/person",
method: "put", method: "put",
data: data, data: data,
}); });
} }
// 删除person // 删除person
export function delPerson(personId) { export function delPerson(personId) {
return request({ return request({
url: "/sales/person/" + personId, url: "/sales/person/" + 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

@ -1,41 +1,41 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form <el-form
:model="queryParams" :model="queryParams"
ref="queryRef" ref="queryRef"
:inline="true" :inline="true"
v-show="showSearch" v-show="showSearch"
label-width="68px" label-width="68px"
> >
<el-form-item label="客户" prop="customer"> <el-form-item label="客户" prop="customer">
<el-input <el-input
v-model="queryParams.customer" v-model="queryParams.customer"
placeholder="请输入客户" placeholder="请输入客户"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="税点" prop="taxPoint"> <el-form-item label="税点" prop="taxPoint">
<el-input <el-input
v-model="queryParams.taxPoint" v-model="queryParams.taxPoint"
placeholder="请输入税点" placeholder="请输入税点"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="时间" prop="date"> <el-form-item label="时间" prop="date">
<el-date-picker <el-date-picker
clearable clearable
v-model="queryParams.date" v-model="queryParams.date"
type="date" type="date"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
placeholder="请选择时间" placeholder="请选择时间"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery" <el-button type="primary" icon="Search" @click="handleQuery"
>搜索 >搜索
</el-button> </el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
@ -44,131 +44,136 @@
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="primary" type="primary"
plain plain
icon="Plus" icon="Plus"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['sales:contract:add']" v-hasPermi="['sales:contract:add']"
>新增 >新增
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="success" type="success"
plain plain
icon="Edit" icon="Edit"
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleUpdate"
v-hasPermi="['sales:contract:edit']" v-hasPermi="['sales:contract:edit']"
>修改 >修改
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="danger" type="danger"
plain plain
icon="Delete" icon="Delete"
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['sales:contract:remove']" v-hasPermi="['sales:contract:remove']"
>删除 >删除
</el-button> </el-button>
</el-col> </el-col>
<right-toolbar <right-toolbar
v-model:showSearch="showSearch" v-model:showSearch="showSearch"
@queryTable="getList" @queryTable="getList"
></right-toolbar> ></right-toolbar>
</el-row> </el-row>
<el-table <el-table
v-loading="loading" v-loading="loading"
: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>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="创建时间" label="创建时间"
align="center" align="center"
prop="createTime" prop="createTime"
width="180" width="180"
> >
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.createTime }}</span> <span>{{ row.createTime }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="操作" label="操作"
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
> >
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
type="primary" type="primary"
icon="Edit" icon="Edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['sales:contract:edit']" v-hasPermi="['sales:contract:edit']"
>修改 >修改
</el-button> </el-button>
<el-button <el-button
link link
type="primary" type="primary"
icon="Delete" icon="Delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['sales:contract:remove']" v-hasPermi="['sales:contract:remove']"
>删除 >删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total > 0" v-show="total > 0"
:total="total" :total="total"
v-model:page="queryParams.pageNum" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改contract对话框 --> <!-- 添加或修改contract对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form <el-form
ref="contractRef" ref="contractRef"
:model="form" :model="form"
:rules="rules" :rules="rules"
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
clearable clearable
v-model="form.date" v-model="form.date"
type="date" type="date"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
placeholder="请选择时间" placeholder="请选择时间"
> >
</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;
@ -325,15 +340,30 @@ function submitForm() {
function handleDelete(row) { function handleDelete(row) {
const _contractIds = row.contractId || ids.value; const _contractIds = row.contractId || ids.value;
proxy.$modal proxy.$modal
.confirm('是否确认删除contract编号为"' + _contractIds + '"的数据项?') .confirm('是否确认删除contract编号为"' + _contractIds + '"的数据项?')
.then(function () { .then(function () {
return delContract(_contractIds); return delContract(_contractIds);
}) })
.then(() => { .then(() => {
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>