zhanbo.xu

feat: 开发监管场所

......@@ -32,3 +32,13 @@ export function updateOperatorPlace(data) {
data: data,
});
}
// GET
// ​/portInfo​/getPortCodeList
// 获取口岸列表作用于条件查询的下拉框
export function getPortCodeList() {
return request({
url: "/bus-customer/portInfo/getPortCodeList",
method: "get",
});
}
......
......@@ -12,7 +12,6 @@
>
<div class="modelItem">
<el-form
v-if="type != 'menuChange'"
class="fedexFormStyle"
ref="formData"
:model="formData"
......@@ -57,17 +56,25 @@
</el-col>
<el-col :span="8">
<Formitem label="所属口岸" prop="portCode" type="edit">
<el-input
<el-select
type="text"
class="inputShadow"
id="inputInner-edit-portCode"
resize="none"
id="inputInner--portCode"
v-model="formData.portCode"
clearable
filterable
placeholder=""
></el-input>
>
<el-option
v-for="item in portCodeList"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="8">
<Formitem label="监管场所代码" prop="loctNo" type="edit">
<el-input
......@@ -113,20 +120,6 @@
</el-col>
</el-row>
</el-form>
<el-tree
ref="tree"
class="menuTree"
v-else
:data="treeData"
show-checkbox
default-expand-all
node-key="id"
:default-expanded-keys="expandedKeys"
:default-checked-keys="checkedKeys"
:props="defaultProps"
@check="treeCheckChange"
>
</el-tree>
</div>
<div class="dialogOption entrySave">
<el-button
......@@ -147,12 +140,9 @@
<script>
import {
addRoleData,
updateRoleData,
updateRoleMenuData,
getMenuByRoleId,
} from "@/api/system/user.js";
import { getRouters } from "@/api/menu";
addOperatorPlace,
updateOperatorPlace,
} from "@/api/supervisePlaceManage-api.js";
export default {
props: {
outerVisible: {
......@@ -161,7 +151,7 @@ export default {
},
title: {
type: String,
default: "新增角色",
default: "监管场所管理新增",
},
type: {
type: String,
......@@ -171,6 +161,12 @@ export default {
type: Object,
default: null,
},
portCodeList: {
type: Array,
default: () => {
return [];
},
},
},
watch: {
outerVisible(val) {
......@@ -178,10 +174,6 @@ export default {
this.loadings.dialogLoading = false;
if (this.type == "update") {
this.formData = this.active;
} else if (this.type == "menuChange") {
this.formData = this.active;
this.searchTreeData();
this.loadCheckedKeys(); //加载已绑定的菜单
}
}
},
......@@ -196,23 +188,23 @@ export default {
operatorPersonInCharge: "",
contactNumber: "",
},
treeData: [],
treeCheckData: [],
expandedKeys: [],
checkedKeys: [],
rules: {
roleName: [
operatorCode: [
{
required: true,
trigger: "blur",
message: "角色名称不能为空!",
message: "监管场所代码不能为空!",
},
],
operatorName: [
{
required: true,
trigger: "blur",
message: "监管场所负责人不能为空!",
},
],
},
defaultProps: {
children: "children",
label: "label",
},
searchForm: {},
loadings: {
dialogLoading: false,
......@@ -223,69 +215,15 @@ export default {
};
},
methods: {
//查询菜单数据
searchTreeData() {
this.loadings.dialogLoading = true;
getRouters()
.then((res) => {
if (res.code === "200") {
let arr = [];
res.data.forEach((item) => {
let status = true;
if (item.parentMenuId == 0) {
let obj = {
id: item.menuId,
label: item.menuName,
children: [],
};
arr.forEach((menuItem) => {
if (menuItem.id == item.menuId) {
status = false;
menuItem.label = item.menuName;
}
});
if (status) {
arr.push(obj);
}
} else {
let obj = {
id: item.menuId,
label: item.menuName,
};
arr.forEach((menuItem) => {
if (menuItem.id == item.parentMenuId) {
status = false;
menuItem.children.push(obj);
}
});
if (status) {
arr.push({
id: item.parentMenuId,
label: "",
children: [obj],
});
}
}
});
this.treeData = arr;
} else {
this.alertWarningMsg(res.message);
}
this.loadings.dialogLoading = false;
})
.catch((err) => {
console.log(err);
this.loadings.dialogLoading = false;
});
},
//数据保存
submit() {
this.loadings.dialogLoading = true;
let obj = {};
let obj = {
...this.formData,
};
if (this.type == "add") {
this.$refs.formData.validate((valid) => {
if (valid) {
obj.roleName = this.formData.roleName;
this.addapi(obj);
} else {
this.loadings.dialogLoading = false;
......@@ -294,22 +232,17 @@ export default {
} else if (this.type == "update") {
this.$refs.formData.validate((valid) => {
if (valid) {
obj.roleId = this.formData.roleId;
obj.roleName = this.formData.roleName;
obj.id = this.active.id;
this.updateapi(obj);
} else {
this.loadings.dialogLoading = false;
}
});
} else if (this.type == "menuChange") {
obj.menuId = this.treeCheckData; // 使用合并后的选中节点
obj.roleId = this.formData.roleId;
this.menuChangeapi(obj);
}
},
//新增
addapi(val) {
addRoleData(val)
addOperatorPlace(val)
.then((res) => {
if (res.code === "200") {
this.msgSuccess(res.message);
......@@ -326,7 +259,7 @@ export default {
},
//修改
updateapi(val) {
updateRoleData(val)
updateOperatorPlace(val)
.then((res) => {
if (res.code === "200") {
this.msgSuccess(res.message);
......@@ -343,7 +276,7 @@ export default {
},
//菜单权限修改
menuChangeapi(val) {
updateRoleMenuData(val)
updateOperatorPlace(val)
.then((res) => {
if (res.code === "200") {
this.msgSuccess(res.message);
......@@ -359,49 +292,18 @@ export default {
this.loadings.dialogLoading = false;
});
},
treeCheckChange(data, checked) {
console.log(data, checked);
let arr = [];
arr = checked.checkedKeys.concat(checked.halfCheckedKeys);
this.treeCheckData = arr;
},
close() {
this.formData = {
roleName: "",
operatorCode: "",
operatorName: "",
portCode: "",
loctNo: "",
operatorPersonInCharge: "",
contactNumber: "",
};
this.checkedKeys = [];
this.$emit("close");
},
// 加载已绑定的菜单
loadCheckedKeys() {
if (this.formData.roleId) {
getMenuByRoleId(this.formData.roleId)
.then((res) => {
if (res.code === "200") {
this.checkedKeys = res.data
.filter((item) => item.isBinding && item.parentMenuId != 0)
.map((item) => item.menuId);
//console.log('初始 checkedKeys:', this.checkedKeys);
this.$nextTick(() => {
this.$refs.tree.setCheckedKeys(this.checkedKeys);
this.updateTreeCheckData();
});
} else {
this.alertWarningMsg(res.message);
}
})
.catch((err) => {
console.log(err);
});
}
},
//加载选中的节点及半选中的父节点
updateTreeCheckData() {
const checkedKeys = this.$refs.tree.getCheckedKeys();
const halfCheckedKeys = this.$refs.tree.getHalfCheckedKeys();
this.treeCheckData = checkedKeys.concat(halfCheckedKeys);
//console.log('合并后的 treeCheckData:', this.treeCheckData);
},
},
};
</script>
......
......@@ -37,15 +37,21 @@
</el-col>
<el-col :span="5">
<Formitem label="所属口岸" prop="portCode">
<el-input
<el-select
type="text"
class="inputShadow"
id="inputInner--portCode"
resize="none"
v-model="sreachFormData.portCode"
clearable
filterable
placeholder=""
></el-input>
>
<el-option
v-for="item in portCodeList"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
</Formitem>
</el-col>
<el-col :span="2">
......@@ -106,12 +112,7 @@
<template slot="optionColumn">
<el-table-column align="left" label="操作">
<template slot-scope="scope">
<el-button type="text" @click="update(scope.row)">
角色修改
</el-button>
<el-button type="text" @click="muenChange(scope.row)">
权限绑定
</el-button>
<el-button type="text" @click="update(scope.row)"> 修改 </el-button>
</template>
</el-table-column>
</template>
......@@ -122,12 +123,16 @@
:type="editType"
:active="activeData"
@close="dialogClose"
:portCodeList="portCodeList"
/>
</div>
</template>
<script>
import { getOperatorPlaceList } from "@/api/supervisePlaceManage-api.js";
import {
getOperatorPlaceList,
getPortCodeList,
} from "@/api/supervisePlaceManage-api.js";
import DialogVue from "./dialog.vue";
export default {
name: "SupervisePlaceManage",
......@@ -193,6 +198,7 @@ export default {
outerVisible: false,
dialogTitle: "",
editType: "",
portCodeList: [],
};
},
created() {
......@@ -200,8 +206,22 @@ export default {
},
mounted() {
this.tableMaxheight = window.innerHeight - 300;
this.fetchPortCodeList();
},
methods: {
// 获取所属口岸
fetchPortCodeList() {
getPortCodeList()
.then((res) => {
if (res.code === "200") {
this.portCodeList = res.data;
} else {
}
})
.catch((err) => {
console.log(err);
});
},
clear() {
this.$refs.sreachForm.resetFields();
},
......@@ -233,22 +253,17 @@ export default {
});
},
addRole() {
this.dialogTitle = "新增角色";
this.dialogTitle = "监管场所管理新增";
this.editType = "add";
this.outerVisible = true;
},
update(val) {
this.dialogTitle = "修改角色";
this.dialogTitle = "监管场所管理修改";
this.editType = "update";
this.outerVisible = true;
this.activeData = val;
},
muenChange(val) {
this.dialogTitle = "绑定权限";
this.editType = "menuChange";
this.outerVisible = true;
this.activeData = val;
this.activeData = JSON.parse(JSON.stringify(val));
},
dialogClose() {
this.outerVisible = false;
this.activeData = null;
......