作者 朱兆平

入库业务录入部分完善

import http from './http'
let base = '/cloud-user-center/crm';
// let baseUrl = '/cloud-kako-user-center/role'
export const getList = (params,pageNum,pageSize) => { return http.post(`${base}/list?pageNum=${pageNum}&pageSize=${pageSize}`,params); };
... ...
... ... @@ -5,6 +5,7 @@ import HomeNew from './views/HomeNew.vue'
import Main from './views/dashboard/index'
// import Table from './views/nav1/Table.vue'
import Role from './views/nav1/role.vue'
import CRM from './views/nav1/crm.vue'
import Perm from './views/nav1/perm.vue'
import LOG from './views/nav1/Log.vue'
import PreManifest from './views/agent/PreManifest.vue'
... ... @@ -263,6 +264,7 @@ let routes = [
children: [
{ path: '/user', component: User, name: '用户管理' },
{ path: '/role', component: Role, name: '组织机构' },
{ path: '/crm', component: CRM, name: '组织机构' },
{ path: '/perm', component: Perm, name: '权限管理' },
{ path: '/log', component: LOG, name: '系统日志' },
{ path: '/department', component: Department, name: '部门管理' },
... ... @@ -533,7 +535,7 @@ let routes = [
{path:'/locations',component:locations,name:'库位管理'},
{path:'/inventroy',component:inventroy,name:'库存管理'},
{path:'/area',component:area,name:'库区管理'},
{path:'/houserecord',component:houseRecord,name:'入库'},
{path:'/houserecord',component:houseRecord,name:'仓库入库'},
]
},
{
... ...
... ... @@ -2,7 +2,7 @@
<el-row>
<el-card style="background-color: #F5F7FA">
<el-row class="toolbar" style="height:auto">
<el-form :model="addForm" :rules="rules" ref="addForm">
<el-form :model="addForm" :rules="rules" ref="addForm" :inline="true">
<el-divider content-position="left"><i class="el-icon-document"></i> 货物信息</el-divider>
<el-row>
<el-col :span="6">
... ... @@ -64,41 +64,81 @@
</el-row>
<el-divider content-position="left"><i class="el-icon-s-home"></i> 入库相关</el-divider>
<el-row>
<el-col :span="7">
<el-col :span="6">
<el-form-item label="" :label-width="formLabelWidth" prop="area">
<el-input v-model="addForm.area" autocomplete="off" style="width: 300px">
<el-autocomplete
v-model="addForm.area"
:fetch-suggestions="areaQuerySearch"
placeholder="请输入库区编号"
:trigger-on-focus="false"
value-key = "areano"
clearable
highlight-first-item
style="width: 100%"
>
<template slot="prepend">库&emsp;&emsp;区</template>
</el-input>
<template slot-scope="{ item }">
<div class="name" style="float: left">{{ item.areano }}</div>
<div class="addr" style="float: right">{{ item.areaname }}</div>
</template>
</el-autocomplete>
</el-form-item>
</el-col>
<el-col :span="7">
<el-col :span="6">
<el-form-item label="" :label-width="formLabelWidth" prop="location">
<el-input v-model="addForm.location" autocomplete="off" style="width: 300px">
<el-autocomplete
v-model="addForm.location"
:fetch-suggestions="locationQuerySearch"
placeholder="请输入库位编号"
:trigger-on-focus="false"
value-key = "locationno"
clearable
highlight-first-item
style="width: 100%"
>
<template slot="prepend">库&emsp;&emsp;位</template>
</el-input>
<template slot-scope="{ item }">
<div class="name" style="float: left">{{ item.locationno }}</div>
<div class="addr" style="float: right">{{ item.locationname }}</div>
</template>
</el-autocomplete>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="" :label-width="formLabelWidth" prop="transcar">
<el-input v-model="addForm.transcar" autocomplete="off" style="width: 300px">
<el-input v-model="addForm.transcar" autocomplete="off">
<template slot="prepend">运输车辆</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="" :label-width="formLabelWidth" prop="opter">
<el-input v-model="addForm.opter" autocomplete="off" style="width: 300px" disabled>
<template slot="prepend">经&nbsp;办&nbsp;人</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="" :label-width="formLabelWidth" prop="customername">
<el-input v-model="addForm.customername" autocomplete="off" style="width: 300px">
<el-autocomplete
v-model="addForm.customername"
:fetch-suggestions="crmQuerySearch"
placeholder="请输入货主名称"
:trigger-on-focus="false"
value-key = "roleName"
clearable
highlight-first-item
style="width: 100%"
>
<template slot="prepend">货主名称</template>
<template slot-scope="{ item }">
<div class="name" style="float: left">{{ item.departmentid }}</div>
<div class="addr" style="float: right">{{ item.roleName }}</div>
</template>
</el-autocomplete>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="" :label-width="formLabelWidth" prop="opter">
<el-input v-model="addForm.opter" autocomplete="off" disabled>
<template slot="prepend">经&nbsp;办&nbsp;人</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<!-- <el-row>
<el-col :span="7">
... ... @@ -373,10 +413,18 @@
</template>
<script>
import {selectInventroyrecords,delInventoryrecord,addInventoryrecord,ediInventroyrecord} from '../../api/consigner/station';
import {
selectInventroyrecords,
delInventoryrecord,
addInventoryrecord,
ediInventroyrecord,
selectAreas, selectLocations
} from '../../api/consigner/station';
import dateUtil from "@/utils/index"
import jsutil from "@/common/js/util";
import {mapActions, mapGetters} from 'vuex'
import { getList as getCRMList } from '@/api/crm_api';
export default {
name: "inventroyrecord",
... ... @@ -391,6 +439,9 @@
},
total: 0,
tableData:[],
areaData:[],
locationData:[],
roles:[],
dialogMap: {
update: '编辑',
create: '新增'
... ... @@ -610,10 +661,125 @@
let serialDate= new Date();
let serialCode = serialDate.format("yyyyMMddhhmmssS")
return serialCode
}
},
getAreaList() {
const _this = this
let para = {
// 当前页数
pageNum: 1,
// 每页大小
pageSize: 1000,
}
let ld = this.$loading({
text:"库区数加载中..."
})
selectAreas(para).then((response) => {
const res = response.data
if (res.code !== '200') {
return _this.$message.error('获取库区记录,失败!')
}
// 获取列表数据
_this.areaData = res.data.list
_this.$message.success('获取库区记录,成功!')
}).catch(error => {
// 关闭加载
_this.$message.error(error.toString())
}).finally(()=>{
ld.close()
})
},
areaQuerySearch(queryString, cb) {
var restaurants = this.areaData;
var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
// 调用 callback 返回建议列表的数据
cb(results);
},
createFilter(queryString) {
return (restaurant) => {
return (restaurant.areano.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};
},
getLocationList() {
const _this = this
let para = {
// 当前页数
pageNum: 1,
// 每页大小
pageSize: 1000,
}
let ld = this.$loading({
text:"库位数加载中..."
})
selectLocations(para).then((response) => {
const res = response.data
if (res.code !== '200') {
return _this.$message.error('获取库位记录,失败!')
}
// 获取列表数据
_this.locationData = res.data.list
_this.$message.success('获取库位记录,成功!')
}).catch(error => {
// 关闭加载
_this.$message.error(error.toString())
}).finally(()=>{
ld.close()
})
},
locationQuerySearch(queryString, cb){
var restaurants = this.locationData;
var results = queryString ? restaurants.filter(this.locationFilter(queryString)) : restaurants;
// 调用 callback 返回建议列表的数据
cb(results);
},
locationFilter(queryString) {
return (restaurant) => {
return (restaurant.locationno.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};
},
getRoles() {
let _this= this;
let ld = this.$loading({
text:"客户数据加载中..."
})
getCRMList({},1,2000).then((response) => {
const res = response.data
if (res.code !== '200') {
return _this.$message.error('获取库位记录,失败!')
}
// 获取列表数据
_this.roles = res.data.list
_this.$message.success('获取客户数据,成功!')
}).catch((error) => {
if(null!= error.response && error.response!==undefined){
let status= error.response.status;
let msg = error.response.statusText;
return _this.$message.error(status+msg)
}else {
return _this.$message.error(error.toString())
}
}).finally(()=>{
ld.close()
});
},
crmQuerySearch(queryString, cb){
var restaurants = this.roles;
var results = queryString ? restaurants.filter(this.crmFilter(queryString)) : restaurants;
// 调用 callback 返回建议列表的数据
cb(results);
},
crmFilter(queryString) {
return (restaurant) => {
if (restaurant.departmentid){
return (restaurant.departmentid.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
}
};
},
},
mounted() {
// this.getList();
this.getAreaList();
this.getLocationList();
this.getRoles();
this.addForm.serialnumber = this.serialNumber()
if (!jsutil.checkNull(this.getUserInfoStore) && !jsutil.checkNull(this.getUserInfoStore.username)){
this.$message.error("获取用户信息出错")
... ...
<template>
<section>
<!--工具条-->
<el-form :inline="true" :model="filters">
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
<el-form-item>
<el-input v-model="filters.roleName" placeholder="客户名称" clearable>
<template slot="prepend">客户名称</template>
</el-input>
</el-form-item>
<el-form-item>
<div class="my-text-area">
<div class="el-input-group__prepend prepand">业务类型</div>
<el-select
v-model="filters.orgtype"
filterable
allow-create
clearable
default-first-option
placeholder="业务类型">
<el-option
v-for="item in orgtypeOption"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</el-form-item>
<el-form-item>
<el-input v-model="filters.departmentid" placeholder="客户简码" clearable>
<template slot="prepend">简&emsp;&emsp;码</template>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" v-on:click="getRoles()" icon="el-icon-search">查&emsp;&emsp;询</el-button>
</el-form-item>
<el-form-item>
<el-button type="success" @click="handleAdd" icon="el-icon-document">新&emsp;&emsp;增</el-button>
</el-form-item>
<el-form-item>
<el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0" icon="el-icon-delete">批量删除</el-button>
</el-form-item>
<el-form-item>
<el-button type="warning" @click="toggleRowExpansion" icon="el-icon-sort" size="mini">
全部{{ isExpansion ? "折叠" : "展开" }}
</el-button>
</el-form-item>
</el-col>
</el-form>
<el-col :gutter="0" class="toolbar toobar_analysis" style="padding-top:0">
<el-col :span="7">
<div class="analysis_title">机构数量:</div>
<div class="analysis_text">{{total}}</div>
</el-col>
<el-col :span="1">
<el-divider direction="vertical"></el-divider>
</el-col>
<el-col :span="7">
<div class="analysis_title">公司数量:</div>
<div class="analysis_text">{{total}}</div>
</el-col>
<el-col :span="1">
<el-divider direction="vertical"></el-divider>
</el-col>
<el-col :span="8">
<div class="analysis_title">数据量共:</div>
<div class="analysis_text">150</div>
</el-col>
</el-col>
<!--列表-->
<el-table :data="roles" highlight-current-row v-loading="listLoading" @selection-change="selsChange"
default-expand-all
ref="dataTreeList"
row-key="roleId"
border
tooltip-effect="dark"
style="border-radius: 10px 10px 0px 0px;line-height: 25px;min-height: 500px"
:header-cell-style="{background:'#6F8294',color:'#FFFFFF'}" size="small"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column type="selection" width="55">
</el-table-column>
<!--<el-table-column type="index" width="60">-->
<!--</el-table-column>-->
<el-table-column prop="roleId" label="ID" width="120">
</el-table-column>
<el-table-column prop="roleName" label="岗位/角色名称" min-width="200" sortable>
</el-table-column>
<!--<el-table-column prop="departmentName" label="部门名称" min-width="200" sortable>-->
<!--</el-table-column>-->
<el-table-column prop="description" label="描述" min-width="160" >
</el-table-column>
<el-table-column prop="type" label="类型" min-width="80" sortable>
</el-table-column>
<el-table-column prop="businessLicense" label="工商代码" min-width="180" >
</el-table-column>
<el-table-column prop="orgtype" label="业务类型" min-width="150" >
<template slot-scope="scope">
<el-tag type="" v-if="scope.row.orgtype==='M'">{{busnessType[scope.row.orgtype]}}</el-tag>
<el-tag type="success" v-if="scope.row.orgtype==='C'">{{busnessType[scope.row.orgtype]}}</el-tag>
<el-tag type="warning" v-if="scope.row.orgtype==='S'">{{busnessType[scope.row.orgtype]}}</el-tag>
</template>
</el-table-column>
<el-table-column prop="departmentid" label="简码" min-width="150" >
</el-table-column>
<el-table-column label="操作" min-width="260" fixed="right">
<template slot-scope="scope">
<!-- <el-row>-->
<!-- <el-button type="success" @click="handleAdd(scope.$index, scope.row)">新增下级</el-button>-->
<!-- <el-button @click="setPerm(scope.$index, scope.row)">设置权限</el-button>-->
<!-- </el-row>-->
<el-row>
<el-button @click="handleEdit(scope.$index, scope.row)">编&emsp;&emsp;辑</el-button>
<el-button type="danger" @click="handleDel(scope.$index, scope.row)">删&emsp;&emsp;除</el-button>
</el-row>
</template>
</el-table-column>
</el-table>
<!--工具条-->
<el-col :span="24" class="toolbar">
<el-pagination layout="total, prev, pager, next" @current-change="handleCurrentChange" :page-size="pageSize" :total="total" style="float:right;">
</el-pagination>
</el-col>
<!--新增界面-->
<el-dialog :title="dialogMap[dialogStatus]" :visible.sync="addFormVisible" :close-on-click-modal="false">
<el-form :model="addForm" label-width="120px" :rules="addFormRules" ref="addForm">
<el-form-item label="上级组织机构">
<span>{{addForm.parentName}}</span>
</el-form-item>
<el-form-item label=" " prop="type">
<el-select
v-model="addForm.type"
filterable
allow-create
default-first-option
placeholder="组织机构类型">
<el-option
v-for="item in companyOption"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label=" " prop="roleName">
<el-input v-model="addForm.roleName" auto-complete="off" placeholder="请输入组织机构名称:例如:公司名称">
<template slot="prepend">组织机构名称</template>
</el-input>
</el-form-item>
<el-form-item label=" " prop="description">
<el-input v-model="addForm.description" auto-complete="off" placeholder="组织机构描述:例如:组织机构简介">
<template slot="prepend">组织机构描述</template>
</el-input>
</el-form-item>
<el-form-item label=" " prop="businessLicense">
<el-input v-model="addForm.businessLicense" auto-complete="off" placeholder="社会信用代码或者组织机构代码">
<template slot="prepend">企业信用代码</template>
</el-input>
</el-form-item>
<el-form-item label=" " prop="customsRegCode">
<el-input v-model="addForm.customsRegCode" auto-complete="off" placeholder="海关备案后返回的备案代码">
<template slot="prepend">海关备案代码</template>
</el-input>
</el-form-item>
<el-form-item label=" " prop="mqcode">
<el-input v-model="addForm.mqcode" auto-complete="off" placeholder="海关通道编号">
<template slot="prepend">海关通道编号</template>
</el-input>
</el-form-item>
<el-form-item label=" " prop="departmentid">
<el-input v-model="addForm.departmentid" auto-complete="off" placeholder="航司承运人代码,组织机构为航司时必填">
<template slot="prepend"> 承运人代码&nbsp;&nbsp;&nbsp; </template>
</el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="addFormVisible = false">取消</el-button>
<el-button type="primary" @click="dialogStatus==='create'?addSubmit():editSubmit()" :loading="addLoading" >提交</el-button>
</div>
</el-dialog>
<!--权限设置界面-->
<el-dialog title="岗位的权限设置"
:visible.sync="PermFormVisible"
:close-on-click-modal="false"
top="5vh"
>
<el-row>
<el-col :span="4" >
<el-button type="primary" @click.native="treeMerge(false)">合并节点</el-button>
</el-col>
<el-col :span="4">
<el-button type="success" @click.native="treeMerge(true)">展开节点</el-button>
</el-col>
</el-row>
<el-divider></el-divider>
<el-form :model="permForm" label-width="80px" ref="permForm">
<el-tree :data="permissons" :props="treeDefaultProps"
@check="clickDeal"
:default-expand-all = "treeExpand"
show-checkbox highlight-current check-on-click-node check-strictly
node-key="permissionId" ref="tree">
</el-tree>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="PermFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="setPermSubmit" :loading="addLoading">提交</el-button>
</div>
</el-dialog>
</section>
</template>
<script>
import util from '../../common/js/util'
import NProgress from 'nprogress'
import { getList, remove, batchRemove, edit, add, updateRolePerm } from '../../api/role_api';
import { getList as getCRMList } from '@/api/crm_api';
import { getList as getDepartmentList} from '../../api/department';
import { getList as permList } from '../../api/perm_api';
import moment from 'moment'
export default {
name:'Role',
data() {
return {
filters: {
roleName: '',
orgtype:'',
departmentid:''
},
companyOption: [
{
label: "集团",
value: "集团",
},
{
label: "公司",
value: "公司"
},
{
label: "部门",
value: "部门"
},
{
label: "航司",
value: "航司"
},
{
label: "货代",
value: "货代"
},
{
label: "货主",
value: "货主"
}
],
treeDefaultProps: {
children: 'children',
label: 'name',
},
treeExpand: false,
departmentNameList:[],
roles: [],
permissons: [],
permIds: [],
total: 0,
pageNum: 1,
pageSize: 10,
listLoading: false,
sels: [],//列表选中列
dialogMap: {
update: '编辑',
create: '新增',
},
dialogStatus: 'create',
//新增界面是否显示
addFormVisible: false,
//设置权限界面是否显示
PermFormVisible: false,
addLoading: false,
addFormRules: {
roleName: [
{ required: true, message: '请输入岗位/角色名称', trigger: 'blur' }
],
type: [
{ required: true, message: '请选择组织机构类型', trigger: 'blur' }
]
},
//新增界面数据
addForm: {
description: '',
roleName: '',
roleSign: 1,
departmentid:'',
type: '',
businessLicense: '',
customsRegCode: '',
parentName: '',
mqcode: ''
},
isExpansion:true,
permForm: {
roleId: 1,
description: '',
roleName: '',
roleSign: 1,
permissions: []
},
busnessType: {
'M':'自身',
'C':'客户',
'S':'供应商'
},
orgtypeOption:[
{
label: "客户",
value: "C",
},
{
label: "供应商",
value: "S",
},
{
label: "自身",
value: "M",
}
]
}
},
methods: {
toggleRowExpansion() {
this.isExpansion = !this.isExpansion;
this.toggleRowExpansionAll(this.roles, this.isExpansion);
},
toggleRowExpansionAll(data, isExpansion) {
data.forEach((item) => {
this.$refs.dataTreeList.toggleRowExpansion(item, isExpansion);
if (item.children !== undefined && item.children !== null) {
this.toggleRowExpansionAll(item.children, isExpansion);
}
});
},
treeMerge: function (expand) {
this.treeExpand = expand;
for(var i=0;i<this.$refs.tree.store._getAllNodes().length;i++){
this.$refs.tree.store._getAllNodes()[i].expanded=this.treeExpand;
}
},
handleCurrentChange(val) {
this.pageNum = val;
this.getRoles();
},
//获取角色列表
getRoles() {
let _this= this;
this.listLoading = true;
getCRMList(this.filters,this.pageNum,this.pageSize).then((res) => {
this.total = res.data.data.total;
this.roles = res.data.data.list;
}).catch((error) => {
if(null!= error.response && error.response!==undefined){
let status= error.response.status;
let msg = error.response.statusText;
return _this.$message.error(status+msg)
}else {
return _this.$message.error(error.toString())
}
}).finally(()=>{
this.listLoading = false;
});
},
//获取部门列表
getdepartmentNames() {
this.listLoading = true;
//NProgress.start();
getDepartmentList().then((res) => {
this.total = res.data.total;
this.departmentNameList = res.data.list;
this.listLoading = false;
//NProgress.done();
}).catch((error) => {
this.listLoading = false;
if(null!= error.response && error.response!==undefined){
let status= error.response.status;
let msg = error.response.statusText;
alert(status+msg);
}else {
alert(error);
}
});
},
//获取权限列表
getPermList() {
let para = {
pageNum: 1,
pageSize: 700
};
NProgress.start();
permList(para).then((res) => {
this.permissons = res.data.list;
NProgress.done();
}).catch((error) => {
if(null!= error.response && error.response!==undefined){
let status= error.response.status;
let msg = error.response.statusText;
message({
// 饿了么的消息弹窗组件
message: status+msg,
type: "error"
});
}else {
alert(error);
}
});
},
//删除
handleDel: function (index, row) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.listLoading = true;
//NProgress.start();
let para = { roleId: row.roleId };
remove(para).then((res) => {
this.listLoading = false;
//NProgress.done();
this.$message({
message: '删除成功',
type: 'success'
});
this.getRoles();
}).catch((error) => {
this.listLoading = false;
alert(error);
});
}).catch();
},
/**
* 显示编辑界面
* @param index
* @param row 为这行的数据对象
*/
handleEdit: function (index, row) {
this.addFormVisible = true;
this.dialogStatus= 'update',
this.addForm = Object.assign({}, row);
// this.getdepartmentNames();
},
setPerm: function (index, row) {
this.PermFormVisible = true;
this.getPermList();
var _this = this;
this.permIds = [];
this.permForm = Object.assign({}, row);
let rolePerms = this.permForm.permissions;
if (util.checkNull(rolePerms)){
rolePerms.forEach(function (perm,v_index,v_arr) {
if(util.checkNull(perm)){
_this.permIds[v_index] = perm.permissionId;
}
});
}
this.$nextTick(() => {
//反向适配
this.$refs.tree.setCheckedKeys(this.permIds);
});
},
//显示新增界面,每次点开初始化数据
handleAdd: function (index,row) {
this.addFormVisible = true;
this.dialogStatus= 'create';
this.addForm = {
description: '',
roleName: '',
roleSign: 1,
departmentid:'',
type: '',
businessLicense: '',
customsRegCode: '',
mqcode: '',
parentid: 0,
};
//如果新增下级
if(util.checkNull(row)){
//传递上级ID
let parentRole = Object.assign({}, row);
this.addForm.parentid = parentRole.roleId;
this.addForm.parentName = parentRole.roleName;
}
// this.getdepartmentNames();
},
//编辑
editSubmit: function () {
this.$refs.addForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.addLoading = true;
//NProgress.start();
let para = Object.assign({}, this.addForm);
//不需要提交的 去掉,后端不好接收
para.authorities = null;
para.permissions = null;
para.roles = null;
para.children = null;
// para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
/*
查询之后格式this.filters.column.create_start_date中日期发生变化;
Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) 变成了 "2017-08-08T16:00:00.000Z";
所以使用 moment 日期格式化插件将时间转换成 [ Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) ] 格
式;
*/
/*moment 安装 npm install moment --save*/
// para.creattime = moment(para.creattime).format('YYYY-MM-DD HH:mm:ss');
this.addLoading = false;
edit(para).then((res) => {
//NProgress.done();
this.$message({
message: '提交成功',
type: 'success'
});
this.$refs['addForm'].resetFields();
this.addFormVisible = false;
this.getRoles();
}).catch(error => alert(error));
});
}
});
},
//新增
addSubmit: function () {
this.$refs.addForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.addLoading = true;
//NProgress.start();
let para = Object.assign({}, this.addForm);
add(para).then((res) => {
this.addLoading = false;
//NProgress.done();
this.$message({
message: '提交成功',
type: 'success'
});
this.$refs['addForm'].resetFields();
this.addFormVisible = false;
this.getRoles();
}).catch(error => alert(error));
});
}
});
},
//设置角色提交
setPermSubmit: function () {
this.$refs.permForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.addLoading = true;
//NProgress.start();
let role = Object.assign({}, this.permForm);
let roleId = role.roleId;
let permissionIds = this.$refs.tree.getCheckedKeys();
let para = {roleId,permissionIds};
updateRolePerm(para).then((res) => {
this.addLoading = false;
if (res.status ===200) {
this.$message({
message: '提交成功',
type: 'success'
});
this.$refs['permForm'].resetFields();
}
//NProgress.done();
this.PermFormVisible = false;
this.getRoles();
}).catch(error => alert(error))
.finally(()=>{
this.addLoading = false
});
});
}
});
},
selsChange: function (sels) {
this.sels = sels;
},
//批量删除
batchRemove: function () {
var ids = this.sels.map(item => item.roleId).toString();
this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.listLoading = true;
//NProgress.start();
let para = { ids: ids };
batchRemove(para).then((res) => {
this.listLoading = false;
//NProgress.done();
this.$message({
message: '删除成功',
type: 'success'
});
this.getRoles();
});
}).catch(() => {
});
},
treeHandleCheckChange: function (data, checked, indeterminate) {
if(checked) {
this.permIds.push(data.permissionId);
}else {
this.permIds.splice(this.permIds.contains(data.permissionId),1);
}
console.log(data, checked, indeterminate);
},
uniteParentSame(id,treeStatus){//当子节点全为未选中时父节点也变为未选中状态
let node = this.$refs.tree.getNode(permissionId);//获取当前节点的节点树
if (node.parent !== null && node.parent !== undefined) {
let parentNode = node.parent.data;//获取当前节点的父节点树
if (parentNode != undefined){//判断父节点是否存在
for (let i = 0; i < parentNode.children.length; i++) {
let checkedKeys = this.$refs.tree.getCheckedKeys();
let hafCheckedKeys = this.$refs.tree.getHalfCheckedKeys();
let selectNodes = checkedKeys.concat(hafCheckedKeys);//获取已选择树节点
let selected = selectNodes.indexOf(parentNode.children[i].permissionId); // -1当前节点的同级节点是否全部未选中
if (selected !== -1){
return;
}
}
}else {
return;
}
this.$refs.tree.setChecked(parentNode.permissionId, false);//修改节点为未选择
if(node.level>2){//判断是否是最上级节点
this.uniteParentSame(parentNode.permissionId,treeStatus)
}
}else {
return;
}
},
// 统一处理子节点为相同的勾选状态
uniteChildSame(treeList, isSelected){
this.$refs.tree.setChecked(treeList.permissionId, isSelected);
if (treeList.children !== undefined){
for (let i = 0; i < treeList.children.length; i++) {
this.uniteChildSame(treeList.children[i], isSelected)
}
}
},
// 统一处理父节点为选中
selectedParent(currentObj){
let currentNode = this.$refs.tree.getNode(currentObj);
if (currentNode.parent.key !== undefined) {
this.$refs.tree.setChecked(currentNode.parent, true);
this.selectedParent(currentNode.parent)
}
},
clickDeal: function (currentObj, treeStatus){
// 用于:父子节点严格互不关联时,父节点勾选变化时通知子节点同步变化,实现单向关联。
let selected = treeStatus.checkedKeys.indexOf(currentObj.permissionId); // -1未选中
// 选中
if (selected !== -1) {
// 子节点只要被选中父节点就被选中
// this.selectedParent(currentObj);
// 统一处理子节点为相同的勾选状态
this.uniteChildSame(currentObj, true)
} else {
// 未选中 处理子节点全部未选中
if (currentObj.children !== undefined){
if (currentObj.children.length !== 0) {
this.uniteChildSame(currentObj, false)
}
//放开时为当子节点全为未选中时父节点也变为未选中状态 注释后就是父节点不和子节点强制绑定
// this.uniteParentSame(currentObj.id,treeStatus)//当子节点全为未选中时父节点也变为未选中状态
}
// else {
// this.uniteParentSame(currentObj.id,treeStatus)
// }
}
}
},
mounted() {
this.getRoles();
let _this = this;
document.onkeydown = function (e) {
let key = window.event.keyCode;
if (key == 13) {
_this.getRoles();
}
};
this.isExpansion=true;
}
}
</script>
<style>
</style>
<style lang="scss">
.grid-content {
height: 36px;
line-height: 36px;
}
.toobar_analysis{
padding-top: 0;
.el-col{
margin-right: 0;
}
.analysis_title{
color: #a6b6c6;
font-size: 12px;
height: 34px;
line-height: 34px;
}
.analysis_text{
color: #5473E8;
font-size: 16px;
height: 16px;
line-height: 16px;
}
.el-divider--vertical{
height:2em;
}
}
</style>
<style scoped>
.my-text-area .prepand{
float: left;
width:89px;
height: 28px;
font-size: 12px;
line-height: 28px;
}
</style>
<style>
.my-text-area .el-input__inner{
min-height: 28px;
height: 28px;
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
</style>
... ...
... ... @@ -72,9 +72,9 @@
</el-table-column>
<el-table-column prop="businessLicense" label="工商代码" min-width="180" >
</el-table-column>
<el-table-column prop="customsRegCode" label="海关备案代码" min-width="150" >
<el-table-column prop="orgtype" label="业务类型" min-width="150" :formatter="formatState">
</el-table-column>
<el-table-column prop="mqcode" label="海关通道编号" min-width="150" >
<el-table-column prop="departmentid" label="简码" min-width="150" >
</el-table-column>
<el-table-column label="操作" min-width="260" fixed="right">
<template slot-scope="scope">
... ... @@ -277,6 +277,21 @@
}
},
methods: {
formatState: function (row, column) {
switch (row.orgtype) {
case "M":
return '自身'
break;
case "C":
return '客户'
break;
case "S":
return '供应商'
break;
default:
return ""
}
},
toggleRowExpansion() {
this.isExpansion = !this.isExpansion;
this.toggleRowExpansionAll(this.roles, this.isExpansion);
... ... @@ -301,6 +316,7 @@
},
//获取角色列表
getRoles() {
let _this= this;
let para = {
pageNum: this.pageNum,
pageSize: this.pageSize,
... ... @@ -311,19 +327,17 @@
getList(para).then((res) => {
this.total = res.data.total;
this.roles = res.data.list;
this.listLoading = false;
//NProgress.done();
}).catch((error) => {
this.listLoading = false;
if(null!= error.response && error.response!==undefined){
let status= error.response.status;
let msg = error.response.statusText;
alert(status+msg);
return _this.$message.error(status+msg)
}else {
alert(error);
return _this.$message.error(error.toString())
}
}).finally(()=>{
this.listLoading = false;
});
},
... ... @@ -542,7 +556,10 @@
//NProgress.done();
this.PermFormVisible = false;
this.getRoles();
}).catch(error => alert(error));
}).catch(error => alert(error))
.finally(()=>{
this.addLoading = false
});
});
}
});
... ...