This commit is contained in:
quantulr
2023-11-16 17:26:32 +08:00
parent 7483153aaf
commit ad9dd06944
3 changed files with 331 additions and 162 deletions

View File

@ -0,0 +1,110 @@
<script setup>
import {reactive, ref, toRefs} from "vue";
import Pagination from "@/components/Pagination/index.vue";
import {Table as ATable} from "ant-design-vue";
const props = defineProps({
show: {
type: Boolean,
default: false,
},
multiple: {
type: Boolean,
default: true,
},
filter: {
type: Object,
default: {},
},
rowKey: {
type: String,
required: true,
},
columns: {
type: Array,
required: true,
},
fetcher: {
type: Function,
required: true,
},
});
const {filter} = toRefs(props);
const emits = defineEmits(["update:show", "selected"]);
const data = reactive({
queryParams: {
pageNum: 1,
pageSize: 10,
},
});
const {queryParams} = toRefs(data);
const dataList = ref([]);
const loading = ref(false);
const total = ref(0);
const ids = ref([]);
const handleClose = () => {
ids.value = [];
emits("update:show", false);
};
const getList = () => {
loading.value = true;
props
.fetcher({...queryParams.value, ...filter.value})
.then((resp) => {
dataList.value = resp.rows;
total.value = resp.total;
})
.finally(() => {
loading.value = false;
});
};
const handleSelectionChange = (keys) => {
ids.value = keys;
};
const cancel = () => {
emits("update:show", false);
};
const submit = () => {
emits("selected", ids.value);
handleClose();
};
</script>
<template>
<el-dialog :model-value="show" title="从表格中选择" @close="handleClose" @open="getList">
<a-table
:pagination="false"
:row-key="rowKey"
:data-source="dataList"
:columns="columns"
:row-selection="{
type: multiple ? 'checkbox' : 'radio',
selectedRowKeys: ids,
preserveSelectedRowKeys: true,
onChange: handleSelectionChange,
}"
></a-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submit"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style scoped lang="scss"></style>

View File

@ -1,8 +1,9 @@
<script setup> <script setup>
import {listPerson} from "@/api/sales/person"; import { addPerson, listPerson } from "@/api/sales/person";
import { reactive, ref, toRefs } from "vue"; import { reactive, ref, toRefs } from "vue";
import { Table as ATable } from "ant-design-vue"; import { Table as ATable } from "ant-design-vue";
import Pagination from "@/components/Pagination/index.vue"; import Pagination from "@/components/Pagination/index.vue";
import modal from "@/plugins/modal";
const columns = [ const columns = [
{ {
@ -13,20 +14,24 @@ const columns = [
]; ];
const total = ref(0); const total = ref(0);
const data = reactive({ const data = reactive({
form: {}, form: {
personId: undefined,
name: undefined,
},
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
teamId: null, teamId: null,
name: null, name: null,
}, },
rules: {},
}); });
const {form, queryParams} = toRefs(data); const { form, queryParams, rules } = toRefs(data);
const loading = ref(false); const loading = ref(false);
const showSearch = ref(false) const showSearch = ref(false);
const personList = ref([]); const personList = ref([]);
const title = ref("") const title = ref("");
const showDialog = ref(false) const showDialog = ref(false);
const getList = () => { const getList = () => {
loading.value = true; loading.value = true;
listPerson(queryParams.value) listPerson(queryParams.value)
@ -39,16 +44,37 @@ const getList = () => {
}); });
}; };
const handleQuery = () => { const handleQuery = () => {};
const resetQuery = () => {};
} const formRef = ref();
const resetQuery = () => {
}
const reset = () => { const reset = () => {
} form.value = {};
formRef.value?.resetFields();
};
const handleAdd = () => { const handleAdd = () => {
reset();
title.value = "添加销售人员";
showDialog.value = true;
};
const submitForm = async () => {
await formRef.value.validate();
if (form.personId) {
} else {
addPerson(form.value).then(() => {
modal.msgSuccess("新增成功");
reset();
showDialog.value = false;
getList();
});
} }
};
const cancel = () => {
reset();
showDialog.value = false;
};
getList(); getList();
</script> </script>
@ -77,7 +103,9 @@ getList();
</el-form> </el-form>
<el-row class="mb8"> <el-row class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" @click="handleAdd" plain>新增销售人员</el-button> <el-button type="primary" @click="handleAdd" plain
>新增销售人员</el-button
>
</el-col> </el-col>
</el-row> </el-row>
<a-table <a-table
@ -87,7 +115,19 @@ getList();
></a-table> ></a-table>
<pagination :total="total" /> <pagination :total="total" />
<el-dialog v-model="showDialog" :title="title"></el-dialog> <el-dialog v-model="showDialog" :title="title" width="500">
<el-form ref="formRef" :model="form" :rules="rules" label-width="80">
<el-form-item label="姓名">
<el-input v-model="form.name"></el-input>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</template> </template>
<style scoped lang="scss"></style> <style scoped lang="scss"></style>

View File

@ -95,10 +95,16 @@
<template <template
v-else-if="column.dataIndex === 'operation' && !record.personId" v-else-if="column.dataIndex === 'operation' && !record.personId"
> >
<el-button link type="primary" icon="plus">添加销售</el-button> <el-button
link
type="primary"
icon="plus"
@click="handleAddSeller(record.teamId)"
>添加销售
</el-button>
<el-button link type="primary" icon="plus" @click="setManager" <el-button link type="primary" icon="plus" @click="setManager"
>设置主管</el-button >设置主管
> </el-button>
</template> </template>
</template> </template>
</a-table> </a-table>
@ -125,6 +131,20 @@
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
<table-select
:columns="[
{
title: '名称',
dataIndex: 'name',
key: 'name',
},
]"
row-key="personId"
:fetcher="listPerson"
:filter="filter"
v-model:show="showPersonSelector"
/>
</template> </template>
<script setup name="Team"> <script setup name="Team">
@ -137,7 +157,7 @@ import {
} from "@/api/sales/team"; } from "@/api/sales/team";
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 { modelList } from "@/api/product/product"; import TableSelect from "@/components/TableSelect";
import {listPerson} from "@/api/sales/person"; import {listPerson} 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";
@ -154,7 +174,7 @@ const multiple = ref(true);
const total = ref(0); const total = ref(0);
const personTotal = ref(0); const personTotal = ref(0);
const title = ref(""); const title = ref("");
const showPersonSelector = ref(false);
const data = reactive({ const data = reactive({
form: {}, form: {},
queryParams: { queryParams: {
@ -179,8 +199,11 @@ const data = reactive({
}, },
}); });
const { queryParams, personQueryParams, form, rules } = toRefs(data); const {queryParams, form, rules} = toRefs(data);
const queryType = ref(0); const filter = reactive({
canBeSellerOf: null,
canBeManagerOf: null,
})
/** 查询销售团队列表 */ /** 查询销售团队列表 */
function getList() { function getList() {
@ -197,23 +220,12 @@ function getList() {
} }
const personList = ref([]); const personList = ref([]);
const getPersonList = () => {
loading.value = true;
listPerson(personQueryParams.value)
.then((resp) => {
personList.value = resp.rows;
personTotal.value = resp.total;
})
.finally(() => {
loading.value = false;
});
};
const loadChildren = (row) => { const loadChildren = (row) => {
if (row.teamId) { if (row.teamId) {
/*加载型号*/
listPerson({ listPerson({
teamId: row.teamId, sellerOf: row.teamId,
}).then(({rows}) => { }).then(({rows}) => {
row.children = rows.map((el) => ({ row.children = rows.map((el) => ({
...el, ...el,
@ -314,13 +326,20 @@ function handleDelete(row) {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
}) })
.catch(() => {}); .catch(() => {
});
} }
const handleAddSeller = (teamId) => {
filter.canBeManagerOf = null
filter.canBeSellerOf = teamId
showPersonSelector.value = true
}
/** /**
* 设置主管 * 设置主管
*/ */
const setManager = () => {}; const setManager = () => {
};
getList(); getList();
</script> </script>