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";
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})
}

View File

@ -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 = () => {
/>
<template #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>
</div>
</template>

View File

@ -1,41 +1,41 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
:inline="true"
v-show="showSearch"
label-width="68px"
:model="queryParams"
ref="queryRef"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="客户" prop="customer">
<el-input
v-model="queryParams.customer"
placeholder="请输入客户"
clearable
@keyup.enter="handleQuery"
v-model="queryParams.customer"
placeholder="请输入客户"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="税点" prop="taxPoint">
<el-input
v-model="queryParams.taxPoint"
placeholder="请输入税点"
clearable
@keyup.enter="handleQuery"
v-model="queryParams.taxPoint"
placeholder="请输入税点"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="时间" prop="date">
<el-date-picker
clearable
v-model="queryParams.date"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择时间"
clearable
v-model="queryParams.date"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择时间"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"
>搜索
>搜索
</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
@ -44,131 +44,136 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['sales:contract:add']"
>新增
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['sales:contract:add']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['sales:contract:edit']"
>修改
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['sales:contract:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['sales:contract:remove']"
>删除
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['sales:contract:remove']"
>删除
</el-button>
</el-col>
<right-toolbar
v-model:showSearch="showSearch"
@queryTable="getList"
v-model:showSearch="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="contractList"
@selection-change="handleSelectionChange"
v-loading="loading"
:data="contractList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="客户" align="center" prop="customer" />
<el-table-column label="总额" align="center" prop="amount" />
<el-table-column label="税点" align="center" prop="taxPoint" />
<el-table-column label="地点" align="center" prop="location" />
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="客户" align="center" prop="customer"/>
<el-table-column label="总额" align="center" prop="amount"/>
<el-table-column label="税点" align="center" prop="taxPoint"/>
<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">
<template #default="{ row }">
<span>{{ row.date }}</span>
</template>
</el-table-column>
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
label="创建时间"
align="center"
prop="createTime"
width="180"
>
<template #default="{ row }">
<span>{{ row.createTime }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<el-button
link
type="primary"
icon="Edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['sales:contract:edit']"
>修改
link
type="primary"
icon="Edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['sales:contract:edit']"
>修改
</el-button>
<el-button
link
type="primary"
icon="Delete"
@click="handleDelete(scope.row)"
v-hasPermi="['sales:contract:remove']"
>删除
link
type="primary"
icon="Delete"
@click="handleDelete(scope.row)"
v-hasPermi="['sales:contract:remove']"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改contract对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form
ref="contractRef"
:model="form"
:rules="rules"
label-width="80px"
ref="contractRef"
:model="form"
:rules="rules"
label-width="80px"
>
<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 label="客户" prop="customer">
<el-input v-model="form.customer" placeholder="请输入客户" />
<el-input v-model="form.customer" placeholder="请输入客户"/>
</el-form-item>
<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 label="税点" prop="taxPoint">
<el-input v-model="form.taxPoint" placeholder="请输入税点" />
<el-input v-model="form.taxPoint" placeholder="请输入税点"/>
</el-form-item>
<el-form-item label="时间" prop="date">
<el-date-picker
clearable
v-model="form.date"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择时间"
clearable
v-model="form.date"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择时间"
>
</el-date-picker>
</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>
<template #footer>
<div class="dialog-footer">
@ -177,6 +182,12 @@
</div>
</template>
</el-dialog>
<table-select v-model:show="showPersonSelect" row-key="personId" :fetcher="listPerson" :columns="[{
title: '名称',
dataIndex: 'name',
key: 'name',
}]" @selected="handleConfirmSelectPerson"/>
</div>
</template>
@ -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();

View File

@ -102,7 +102,7 @@
@click="handleAddSeller(record.teamId)"
>添加销售
</el-button>
<el-button link type="primary" icon="plus" @click="setManager"
<el-button link type="primary" icon="plus" @click="handleSetManager(record.teamId)"
>设置主管
</el-button>
</template>
@ -140,10 +140,12 @@
key: 'name',
},
]"
:multiple="!!selectPersonType"
row-key="personId"
:fetcher="listPerson"
:filter="filter"
v-model:show="showPersonSelector"
@selected="handleConfirmSelect"
/>
</template>
@ -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();
</script>