feat: 增加相关方黑名单功能

This commit is contained in:
caoqianming 2023-04-07 15:07:06 +08:00
parent bdad640645
commit 4a48e69248
5 changed files with 371 additions and 5 deletions

View File

@ -47,6 +47,43 @@ export default {
}
,
},
// 黑名单
blacklist: {
list: {
name: "获取",
req: async function (data) {
return await http.get(
`${config.API_URL}/rpm/blacklist/`,
data
);
}
},
update: {
name: "更新",
req: async function (id, data) {
return await http.put(
`${config.API_URL}/rpm/blacklist/${id}/`,
data);
}
},
create: {
name: "创建",
req: async function (data) {
return await http.post(
`${config.API_URL}/rpm/blacklist/`,
data);
}
},
delete: {
name: "删除",
req: async function (id) {
return await http.delete(
`${config.API_URL}/rpm/blacklist/${id}/`);
}
}
,
},
/*相关方人员 */
remployee: {

View File

@ -344,6 +344,16 @@ const routes = [
},
"component": "rpm/rparty"
},
{
"name": "blacklist",
"path": "/rpm/blacklist",
"meta": {
"title": "黑名单",
"icon": "el-icon-box",
"perms": ["blacklist"]
},
"component": "rpm/blacklist"
},
{
"name": "remployee",
"path": "/rpm/remployee",

168
src/views/rpm/blacklist.vue Normal file
View File

@ -0,0 +1,168 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-button
type="primary"
icon="el-icon-plus"
@click="add"
v-auth="'blacklist.create'"
></el-button>
</div>
<div class="right-panel">
<div class="right-panel-search">
<el-input
v-model="query.search"
placeholder="名称/信用号码"
clearable
@keyup.enter="handleQuery"
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
</div>
</div>
</el-header>
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe>
<el-table-column label="#" type="index" width="50"></el-table-column>
<el-table-column
label="企业名称"
prop="name"
width="240"
:show-overflow-tooltip="true"
></el-table-column>
<el-table-column label="信用代码" prop="number" width="180">
</el-table-column>
<el-table-column
label="原因"
:show-overflow-tooltip="true"
prop="reason"
>
</el-table-column>
<el-table-column label="最后操作人" width="200">
<template #default="scope">
<span v-if="scope.row.update_by_"
>{{ scope.row.update_by_.name }}-{{ scope.row.update_time }}</span
>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="left" width="200">
<template #default="scope">
<el-button
link
type="primary"
size="small"
@click="table_show(scope.row, scope.$index)"
>查看</el-button
>
<el-button
link
type="warning"
size="small"
@click="table_edit(scope.row, scope.$index)"
v-auth="'blacklist.update'"
>编辑</el-button
>
<el-popconfirm
title="确定删除吗?"
@confirm="table_del(scope.row, scope.$index)"
>
<template #reference>
<el-button
link
type="danger"
size="small"
v-auth="'blacklist.delete'"
>删除</el-button
>
</template>
</el-popconfirm>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
@success="handleSaveSuccess"
@closed="dialog.save = false"
></save-dialog>
</template>
<script>
import saveDialog from "./blacklist_form.vue";
export default {
name: "rparty",
components: {
saveDialog,
},
data() {
return {
dialog: {
save: false,
},
apiObj: this.$API.rpm.blacklist.list,
query: {},
selection: [],
search: {
keyword: null,
},
};
},
methods: {
//
add() {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("add");
});
},
//
table_edit(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("edit").setData(row);
});
},
//
table_show(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("show").setData(row);
});
},
//
async table_del(row) {
this.$API.rpm.blacklist.delete
.req(row.id)
.then((res) => {
this.$message.success("删除成功");
return res;
})
.catch((err) => {
return err;
});
},
//
handleSaveSuccess(data, mode) {
if (mode == "add") {
this.$refs.table.refresh();
} else if (mode == "edit") {
this.$refs.table.refresh();
}
},
handleQuery() {
this.$refs.table.queryData(this.query);
},
resetQuery() {
this.query = {};
},
},
};
</script>

View File

@ -0,0 +1,146 @@
<template>
<el-drawer
:title="titleMap[mode]"
v-model="visible"
:size="1000"
destroy-on-close
@closed="$emit('closed')"
>
<el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px">
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
:disabled="mode == 'show'"
label-width="80px"
>
<el-row>
<el-col :md="8" :sm="12" :xs="24">
<el-form-item label="公司名称" prop="name">
<el-input
v-model="form.name"
type="text"
clearable
:disabled="mode != 'add'"
></el-input>
</el-form-item>
</el-col>
<el-col :md="8" :sm="12" :xs="24">
<el-form-item label="信用代码" prop="number">
<el-input
v-model="form.number"
type="text"
clearable
:disabled="mode != 'add'"
></el-input>
</el-form-item>
</el-col>
<el-col :md="24" :sm="24" :xs="24">
<el-form-item label="原因" prop="reason">
<el-input
v-model="form.reason"
type="textarea"
:rows="10"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-main>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit"
>保存</el-button
>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-container>
</el-drawer>
</template>
<script>
export default {
emits: ["success", "closed"],
data() {
return {
loading: false,
mode: "add",
titleMap: {
add: "新增",
edit: "编辑",
show: "查看",
},
form: {},
rules: {
name: [{ required: true, message: "请输入" }],
number: [{ required: true, message: "请输入" }],
reason: [{ required: true, message: "请输入" }],
},
visible: false,
isSaveing: false,
selectionFilters: [],
setFiltersVisible: false,
belong_dept_options: []
};
},
mounted() {
},
methods: {
//
open(mode = "add") {
this.mode = mode;
this.visible = true;
return this;
},
//
submit() {
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
this.isSaveing = true;
try {
var res;
if (this.mode == "add") {
res = await this.$API.rpm.blacklist.create.req(this.form);
} else if (this.mode == "edit") {
res = await this.$API.rpm.blacklist.update.req(
this.form.id,
this.form
);
}
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
return res;
} catch (err) {
//
this.isSaveing = false;
return err;
}
}
});
},
//
setData(data) {
// this.loading = true
// const params = {
// id: data.id
// }
// setTimeout(async ()=>{
// var res = await this.$API.system.table.info.get(params)
// this.loading = false
// this.form = res.data
// },400)
Object.assign(this.form, data);
},
//
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
},
};
</script>
<style>
</style>

View File

@ -17,7 +17,7 @@
>
<el-row>
<el-col :md="8" :sm="12" :xs="24">
<el-form-item label="公司名称">
<el-form-item label="公司名称" prop="name">
<el-input
v-model="form.name"
type="text"
@ -27,7 +27,7 @@
</el-form-item>
</el-col>
<el-col :md="8" :sm="12" :xs="24">
<el-form-item label="信用代码">
<el-form-item label="信用代码" prop="number">
<el-input
v-model="form.number"
type="text"
@ -41,7 +41,7 @@
</el-form-item>
</el-col>
<el-col :md="8" :sm="12" :xs="24">
<el-form-item label="联系人">
<el-form-item label="联系人" prop="contacter">
<el-input
v-model="form.contacter"
type="text"
@ -50,7 +50,7 @@
</el-form-item>
</el-col>
<el-col :md="8" :sm="12" :xs="24">
<el-form-item label="联系电话">
<el-form-item label="联系电话" prop="phone">
<el-input v-model="form.phone" type="text" clearable></el-input>
</el-form-item>
</el-col>
@ -118,7 +118,12 @@ export default {
show: "查看",
},
form: {},
rules: {},
rules: {
name: [{ required: true, message: "请输入" }],
number: [{ required: true, message: "请输入" }],
contacter: [{ required: true, message: "请输入" }],
phone: [{ required: true, message: "请输入" }],
},
visible: false,
isSaveing: false,
selectionFilters: [],