xingru.liu

Bug修复

import request from '@/utils/request'
// 获取路由
// 获取路由所有路由
export const getRouters = () => {
return request({
url: '/bus-customer/menu/selectMenu',
......@@ -8,3 +8,10 @@ export const getRouters = () => {
})
}
//获取用户可访问的路由
export const getUserRouters = () => {
return request({
url: '/bus-customer/obtainUserRights',
method: 'post'
})
}
......
import request from '@/utils/request'
import axios from "axios";
const baseUrl = process.env.VUE_APP_BASE_API; //接口地址
// 查询客户数据
/**
......@@ -56,15 +59,62 @@ export function addCustomerData(data) {
//上传证书
export function uploadCertificate(ecomEntCode, certificate) {
const formData = new FormData();
formData.append('certificate', certificate.multipartFile);
formData.append('certificate', certificate);
formData.append('ecomEntCode', ecomEntCode);
return request({
url: '/bus-customer/customers/uploadCertificate?ecomEntCode=' + ecomEntCode,
url: '/bus-customer/customers/uploadCertificate',
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data'
}
});
}
//删除证书
export function delCertificate(id, certificate) {
return request({
url: '/bus-customer/customers/deleteCertificate',
method: 'post',
params: {id:id,certificate:certificate},
});
}
//下载证书
export function downloadCertificate(id,filename) {
// return request({
// url: '/bus-customer/customers/getCertificate/' + id,
// method: 'get',
// responseType: 'blob', // 确保响应类型为 blob
// // data: formData,
// });
console.log("fileName"+filename);
return new Promise((resolve, reject) => {
// axios({
// method: "get",
// url: '/bus-customer/customers/getCertificate/' + id,
// responseType: "blob",
// })
var url = baseUrl + '/bus-customer/customers/getCertificate/'+id;
request({
url: url,
method: 'get',
responseType: 'blob', // 确保响应类型为 blob
params: id,
})
.then((res) => {
console.log("aaaaaa"+res);
const aLink = document.createElement("a");
aLink.href = URL.createObjectURL(res);
aLink.setAttribute("download", filename); // 设置下载文件名称
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink);
resolve(res);
})
.catch((err) => {
reject(err);
});
});
}
......@@ -98,7 +148,7 @@ export function updateCustomerData(data) {
// formData.append("qingdaoUserId", data.qingdaoUserId);
return request({
url: '/bus-customer/customers/update',
method: 'post',
method: 'put',
data: data
})
}
\ No newline at end of file
......
......@@ -51,3 +51,15 @@ export function updatePortData(data) {
data: data
})
}
// 获取口岸字典
/**
* @param
*/
export function getPortCodeList() {
return request({
url: '/bus-customer/portInfo/getPortCodeList',
method: 'get',
// params: data
})
}
\ No newline at end of file
......
......@@ -119,13 +119,13 @@ export function updateUserData(data) {
*/
export function updateUserRoleChange(data) {
return request({
url: '/bus-customer/user/updateUser',
url: '/bus-customer/user/roleEditing',
method: 'put',
data: data
})
}
// 获取口岸字典
// 获取用户口岸字典
/**
* @param
*/
......@@ -160,3 +160,15 @@ export function getUserRoleType(data) {
params: data
})
}
/**
* 获取role已绑定的Menue
* @param {} roleId
* @returns
*/
export function getMenuByRoleId(roleId) {
return request({
url: '/bus-customer/role/selectMenu?roleId='+roleId,
method: 'get',
// params: data
})
}
......
......@@ -72,6 +72,13 @@ export const constantRoutes = [
// name: '首页',
// meta: { title: '首页', icon: 'dashboard' }
// },
// {
// path: '/customerConfig',
// component: (resolve) => require(['@/views/customerConfig/index'], resolve),
// hidden: false,
// name: 'CustomerConfig',
// meta: { title: '客户管理', icon: '' }
// },
// ]
// },
{
......@@ -86,7 +93,8 @@ export const constantRoutes = [
hidden: false,
name: 'ReportingData',
meta: { title: '申报数据管理', icon: 'upload' }
}
},
]
},
{
......@@ -95,13 +103,13 @@ export const constantRoutes = [
hidden: false,
meta: { title: '查询管理', icon: 'fedexExportIcon' },
children: [
{
path: '/exportBillQuery',
component: (resolve) => require(['@/views/exportBillQuery/index'], resolve),
hidden: false,
name: 'ExportBillQuery',
meta: { title: '出口订单查询', icon: '' },
},
// {
// path: '/exportBillQuery',
// component: (resolve) => require(['@/views/exportBillQuery/index'], resolve),
// hidden: false,
// name: 'ExportBillQuery',
// meta: { title: '出口订单查询', icon: '' },
// },
{
path: '/exportBillDetail',
component: (resolve) => require(['@/views/exportBillDetail/index'], resolve),
......@@ -123,27 +131,27 @@ export const constantRoutes = [
name: 'ExportListDetail',
meta: { title: '出口清单详情', icon: '' },
},
{
path: '/exportTransportBillQuery',
component: (resolve) => require(['@/views/exportTransportBillQuery/index'], resolve),
hidden: false,
name: 'ExportTransportBillQuery',
meta: { title: '出口运单查询', icon: '' },
},
{
path: '/exportListQuery',
component: (resolve) => require(['@/views/exportListQuery/index'], resolve),
name: '首页',
name: 'ExportListQuery',
meta: { title: '出口清单查询', icon: '' }
},
{
path: '/listBranchQuery',
component: (resolve) => require(['@/views/listBranchQuery/index'], resolve),
name: 'ListBranchQuery',
hidden: false,
meta: { title: '清单总分单查询', icon: '' }
},
// {
// path: '/exportTransportBillQuery',
// component: (resolve) => require(['@/views/exportTransportBillQuery/index'], resolve),
// hidden: false,
// name: 'ExportTransportBillQuery',
// meta: { title: '出口运单查询', icon: '' },
// },
// {
// path: '/exportListQuery',
// component: (resolve) => require(['@/views/exportListQuery/index'], resolve),
// name: '首页',
// name: 'ExportListQuery',
// meta: { title: '出口清单查询', icon: '' }
// },
// {
// path: '/listBranchQuery',
// component: (resolve) => require(['@/views/listBranchQuery/index'], resolve),
// name: 'ListBranchQuery',
// hidden: false,
// meta: { title: '清单总分单查询', icon: '' }
// },
{
path: '/listBranchDetail',
component: (resolve) => require(['@/views/listBranchDetail/index'], resolve),
......@@ -158,85 +166,85 @@ export const constantRoutes = [
hidden: true,
meta: { title: '物流离境单详情', icon: '' }
},
{
path: '/logisticsExitQuery',
component: (resolve) => require(['@/views/logisticsExitQuery/index'], resolve),
name: 'LogisticsExitQuery',
meta: { title: '物流离境单查询', icon: '' }
},
{
path: 'exportRevokeBillQuery',
component: (resolve) => require(['@/views/exportRevokeBillQuery/index'], resolve),
name: 'ExportRevokeBillQuery',
meta: { title: '出口撤销单查询', icon: '' }
}
]
},
{
path: '/summary',
component: Layout,
hidden: false,
meta: { title: '汇总申报', icon: 'fedexSummary' },
children: [
{
path: '/summary',
component: (resolve) => require(['@/views/summaryEdit/index'], resolve),
hidden: false,
name: 'Summary',
meta: { title: '汇总申报', icon: '' }
},
{
path: '/summaryDataSearch',
component: (resolve) => require(['@/views/summaryDataSearch/index'], resolve),
hidden: false,
name: 'SummaryDataSearch',
meta: { title: '汇总申请单查询', icon: '' }
}
]
},
{
path: '/system',
component: Layout,
hidden: false,
meta: { title: '系统管理', icon: 'fedexQueue' },
children: [
{
path: '/portConfig',
component: (resolve) => require(['@/views/portConfig/index'], resolve),
hidden: false,
name: 'PortConfig',
meta: { title: '口岸信息管理', icon: '' }
},
{
path: '/customerConfig',
component: (resolve) => require(['@/views/customerConfig/index'], resolve),
hidden: false,
name: 'CustomerConfig',
meta: { title: '客户管理', icon: '' }
},
{
path: '/cipherMachineConfig',
component: (resolve) => require(['@/views/cipherMachineConfig/index'], resolve),
hidden: false,
name: 'CipherMachineConfig',
meta: { title: '密码机管理', icon: '' }
},
{
path: '/userRoleConfig',
component: (resolve) => require(['@/views/userRoleConfig/index'], resolve),
hidden: false,
name: 'UserRoleConfig',
meta: { title: '用户管理权限', icon: '' }
},
{
path: '/roleConfig',
component: (resolve) => require(['@/views/roleConfig/index'], resolve),
hidden: false,
name: 'RoleConfig',
meta: { title: '角色管理权限', icon: '' }
},
// {
// path: '/logisticsExitQuery',
// component: (resolve) => require(['@/views/logisticsExitQuery/index'], resolve),
// name: 'LogisticsExitQuery',
// meta: { title: '物流离境单查询', icon: '' }
// },
// {
// path: 'exportRevokeBillQuery',
// component: (resolve) => require(['@/views/exportRevokeBillQuery/index'], resolve),
// name: 'ExportRevokeBillQuery',
// meta: { title: '出口撤销单查询', icon: '' }
// }
]
},
// {
// path: '/summary',
// component: Layout,
// hidden: false,
// meta: { title: '汇总申报', icon: 'fedexSummary' },
// children: [
// {
// path: '/summary',
// component: (resolve) => require(['@/views/summaryEdit/index'], resolve),
// hidden: false,
// name: 'Summary',
// meta: { title: '汇总申报', icon: '' }
// },
// {
// path: '/summaryDataSearch',
// component: (resolve) => require(['@/views/summaryDataSearch/index'], resolve),
// hidden: false,
// name: 'SummaryDataSearch',
// meta: { title: '汇总申请单查询', icon: '' }
// }
// ]
// },
// {
// path: '/system',
// component: Layout,
// hidden: false,
// meta: { title: '系统管理', icon: 'fedexQueue' },
// children: [
// {
// path: '/portConfig',
// component: (resolve) => require(['@/views/portConfig/index'], resolve),
// hidden: false,
// name: 'PortConfig',
// meta: { title: '口岸信息管理', icon: '' }
// },
// {
// path: '/customerConfig',
// component: (resolve) => require(['@/views/customerConfig/index'], resolve),
// hidden: false,
// name: 'CustomerConfig',
// meta: { title: '客户管理', icon: '' }
// },
// {
// path: '/cipherMachineConfig',
// component: (resolve) => require(['@/views/cipherMachineConfig/index'], resolve),
// hidden: false,
// name: 'CipherMachineConfig',
// meta: { title: '密码机管理', icon: '' }
// },
// {
// path: '/userRoleConfig',
// component: (resolve) => require(['@/views/userRoleConfig/index'], resolve),
// hidden: false,
// name: 'UserRoleConfig',
// meta: { title: '用户管理权限', icon: '' }
// },
// {
// path: '/roleConfig',
// component: (resolve) => require(['@/views/roleConfig/index'], resolve),
// hidden: false,
// name: 'RoleConfig',
// meta: { title: '角色管理权限', icon: '' }
// },
// ]
// },
]
export default new Router({
......
import { constantRoutes } from '@/router'
import { getRouters } from '@/api/menu'
import { getRouters,getUserRouters } from '@/api/menu'
import Layout from '@/layout/index'
import ParentView from '@/components/ParentView';
import { titleCase } from '@/utils/index.js'
......@@ -16,7 +16,7 @@ const permission = {
mutations: {
SET_ROUTES: (state, routes) => {
state.addRoutes = routes
// state.routes = constantRoutes.concat(routes)
state.routes = constantRoutes.concat(routes)
},
SET_DEFAULT_ROUTES: (state, routes) => {
state.defaultRoutes = constantRoutes.concat(routes)
......@@ -38,9 +38,9 @@ const permission = {
async GenerateRoutes({ commit }) {
return new Promise(resolve => {
// 向后端请求路由数据
getRouters().then(res => {
const sdata = constantRoutes
const rdata = constantRoutes
getUserRouters().then(res => {
const sdata = JSON.parse(JSON.stringify(routeItemInfo(res.data)))
const rdata = JSON.parse(JSON.stringify(routeItemInfo(res.data)))
const sidebarRoutes = filterAsyncRouter(sdata)
const rewriteRoutes = filterAsyncRouter(rdata, false, true)
rewriteRoutes.push({ path: '*', redirect: '/reportingData', hidden: true })
......@@ -137,47 +137,76 @@ function setRoute(route, childrens) {
return route
}
//针对出口数据结构特殊处理
function routeItemInfo(val) {
let arr = val
let router = []
let childrens = []
let url = location.origin + '/Emp/#login?token=' + getToken()
arr.forEach(item => {
let obj = {}
if (item.xtype != 'Emp') {
obj = {
children: [],
component: item.id == '999999' ? 'Layout' : `/${item.xtype}`,
hidden: item.id == '999999' ? true : false,
id: Number(item.number),
meta: {
title: item.text,
icon: item.icon,
function routeItemInfo(data) {
const routes = [
{
path: '/redirect',
component: Layout,
hidden: true,
children: [
{
path: '/redirect/:path(.*)',
component: (resolve) => require(['@/views/redirect'], resolve)
}
]
},
name: item.xtype != null && item.xtype != '' ? item.xtype.indexOf('/') >= 0 ? titleCase(item.xtype.split('/')[1]) : titleCase(item.xtype) : '',
parentId: !item.parentId ? 0 : Number(item.parentId),
path: item.id == '999999' ? '' : !item.parentId ? `/${item.id}` : `${item.id}`,
// title: item.text,
// icon: item.icon
}
if (obj.path == 'system_appSystemConfigCenter_env' || obj.path == 'system_appSystemConfigCenter_detail') {
obj.hidden = true
}
} else {
obj = {
component: 'Link',
path: url,
meta: {
title: item.text,
icon: item.icon,
{
path: '/404',
component: (resolve) => require(['@/views/error/404'], resolve),
hidden: true
},
{
path: '/401',
component: (resolve) => require(['@/views/error/401'], resolve),
hidden: true
},
{
path: '/login',
component: (resolve) => require(['@/views/login'], resolve),
hidden: true,
meta: { noCache: true }
},
{
path: '/relogin',
component: (resolve) => require(['@/views/redjrectLogin'], resolve),
hidden: true,
meta: { noCache: true, breadcrumb: false }
}
}
item.parentId ? childrens.push(obj) :
router.push(obj)
})
return setRoute(router, childrens)
];
data.forEach(item => {
const isParent=item.parentId==0 && item.children.length==0;
const route = {
path: item.path,
component: "Layout",
alwaysShow: true,
hidden: false,
meta: { title: item.name, icon: item.icon },
children: !isParent ? item.children.map(child => ({
path: child.path,
component: `${child.path}`,
hidden: false,
name: child.name,
meta: { title: child.name, icon: child.icon || '' }
}))
:
[
{
path: item.path,
component: `${item.path}`,
hidden: false,
name: item.name,
meta: { title: item.name, icon: item.icon || '' }
}
]
};
routes.push(route);
});
console.log(routes);
return routes;
}
export const loadView = (view) => { // 路由懒加载
......
......@@ -48,6 +48,19 @@
></el-button>
</el-form-item>
</el-col>
<el-col :span="2">
<!-- 清空查询条件-->
<el-form-item class="textLeft textCenter">
<el-button
type="text"
size="small"
icon="el-icon-refresh"
@click="clear"
>
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="optionButton">
......@@ -191,8 +204,8 @@ export default {
obj.endCreationTime = "";
obj.startCreationTime = "";
if (obj.creationTime.length > 0) {
obj.endCreationTime = obj.creationTime[0];
obj.startCreationTime = obj.creationTime[1];
obj.endCreationTime = obj.creationTime[1];
obj.startCreationTime = obj.creationTime[0];
}
getCipherMachineList(obj)
.then((res) => {
......@@ -247,6 +260,12 @@ export default {
});
}
},
clear() {
this.sreachFormData={
cipherMachineNumber: "",
creationTime: [],
};
}
},
};
</script>
......
This diff is collapsed. Click to expand it.
......@@ -144,7 +144,7 @@
<template slot="optionColumn">
<el-table-column align="left" label="操作" width="150">
<template slot-scope="scope">
<el-button type="text" @click="downloadFile(scope.row)">
<el-button type="text" @click="downloadFile(scope.row)" :disabled="!scope.row.certificare">
下载证书
</el-button>
<el-button type="text" @click="update(scope.row)"> 修改 </el-button>
......@@ -157,14 +157,13 @@
:title="dialogTitle"
:type="editType"
:active="activeData"
:dict="dict"
@close="dialogClose"
/>
</div>
</template>
<script>
import { getCustomerList } from "@/api/system/customer-ai.js";
import { getCustomerList,downloadCertificate } from "@/api/system/customer-ai.js";
import { getPortList } from "@/api/system/user.js";
import DialogVue from "./dialog.vue";
export default {
......@@ -244,12 +243,12 @@ export default {
align: "left",
},
],
dict: {
orderRequester: [
{ name: "企业", code: "ENTERPRISE_DECLARATION", value: "1" },
{ name: "FEDEX", code: "FEDEX_DECLARATION", value: "2" },
],
},
// dict: {
// orderRequester: [
// { name: "企业", code: "ENTERPRISE_DECLARATION", value: "1" },
// { name: "FEDEX", code: "FEDEX_DECLARATION", value: "2" },
// ],
// },
loadings: {
searchLoading: false,
},
......@@ -319,17 +318,28 @@ export default {
};
},
//下载证书
downloadFile(val) {},
downloadFile(val) {
downloadCertificate(val.id,val.certificare).then((res)=>{
}).catch((err)=>{
console.log(err);
this.alertErrorMsg("证书下载失败,请联系管理员!");
})
},
addCustomer() {
this.dialogTitle = "新增客户";
this.editType = "add";
this.outerVisible = true;
},
update(val) {
let data={
...val,
file:null
}
this.dialogTitle = "修改客户";
this.editType = "update";
this.outerVisible = true;
this.activeData = val;
this.activeData = data;
console.log(this.activeData);
},
dialogClose() {
......
......@@ -46,7 +46,7 @@
v-for="(item, index) in $store.getters.dict.RECEIPT_STATUS"
:key="index"
:label="item.itemChineseName"
:value="item.itemCode"
:value="item.itemValue"
></el-option>
</el-select>
</Formitem>
......
......@@ -661,13 +661,13 @@
</el-col>
<!-- 申报时间 -->
<el-col :span="3">
<Formitem label="报送时间" prop="appTimeStr">
<Formitem label="报送时间" prop="appTime">
<el-input
type="text"
class="inputShadow"
id="inputInner--appTimeStr"
id="inputInner--appTime"
resize="none"
v-model="formData.appTimeStr"
v-model="formData.appTime"
clearable
placeholder=""
></el-input>
......
......@@ -125,7 +125,7 @@
v-for="(item, index) in $store.getters.dict.RECEIPT_STATUS"
:key="index"
:label="item.itemChineseName"
:value="item.itemCode"
:value="item.itemValue"
></el-option>
</el-select>
</Formitem>
......
......@@ -41,7 +41,7 @@
v-for="(item, index) in $store.getters.dict.RECEIPT_STATUS"
:key="index"
:label="item.itemChineseName"
:value="item.itemCode"
:value="item.itemValue"
></el-option>
</el-select>
</Formitem>
......@@ -171,7 +171,7 @@ export default {
},
{
name: "创建时间",
value: "createTimeStr",
value: "createTime",
width: "",
align: "left",
},
......
......@@ -46,7 +46,7 @@
v-for="(item, index) in $store.getters.dict.RECEIPT_STATUS"
:key="index"
:label="item.itemChineseName"
:value="item.itemCode"
:value="item.itemValue"
></el-option>
</el-select>
</Formitem>
......@@ -207,7 +207,7 @@ export default {
},
{
name: "创建时间",
value: "createTimeStr",
value: "createTime",
width: "",
align: "left",
},
......
......@@ -210,13 +210,13 @@
</Formitem>
</el-col> -->
<el-col :span="3">
<Formitem label="报送时间" prop="createTimeStr">
<Formitem label="报送时间" prop="createTime">
<el-input
type="text"
class="inputShadow"
id="inputInner--createTimeStr"
id="inputInner--createTime"
resize="none"
v-model="formData.createTimeStr"
v-model="formData.createTime"
clearable
placeholder=""
></el-input>
......
......@@ -41,7 +41,7 @@
v-for="(item, index) in $store.getters.dict.RECEIPT_STATUS"
:key="index"
:label="item.itemChineseName"
:value="item.itemCode"
:value="item.itemValue"
></el-option>
</el-select>
</Formitem>
......
......@@ -41,7 +41,7 @@
v-for="(item, index) in $store.getters.dict.RECEIPT_STATUS"
:key="index"
:label="item.itemChineseName"
:value="item.itemCode"
:value="item.itemValue"
></el-option>
</el-select>
</Formitem>
......
......@@ -128,8 +128,8 @@
</template>
<script>
import { getPortConfigList } from "@/api/system/port-api.js";
import { getPortList } from "@/api/system/user.js";
import { getPortConfigList,getPortCodeList } from "@/api/system/port-api.js";
// import { getPortList } from "@/api/system/user.js";
import DialogVue from "./dialog.vue";
export default {
name: "PortConfig",
......@@ -236,7 +236,7 @@ export default {
},
//获取口岸子字典
searchPortDictData() {
getPortList()
getPortCodeList()
.then((res) => {
if (res.code === "200") {
this.dict.port = res.data;
......
......@@ -102,7 +102,7 @@
v-for="(item, index) in $store.getters.dict.RECEIPT_STATUS"
:key="index"
:label="item.itemChineseName"
:value="item.itemCode"
:value="item.itemValue"
></el-option>
</el-select>
</Formitem>
......@@ -186,7 +186,7 @@
ref="entryTable"
:data="tableData"
:headerData="headerData"
:maxHeight="tableMaxheight"
:height="430"
:border="true"
:pagination="true"
:order="false"
......@@ -349,7 +349,7 @@ export default {
},
{
name: "电商企业",
value: "ebccode",
value: "ecomEntName",
width: "",
align: "left",
},
......
......@@ -6,6 +6,7 @@
:show-close="false"
width="25%"
:close-on-click-modal="false"
:destroy-on-close="true"
v-loading="loadings.dialogLoading"
@close="close"
>
......@@ -67,6 +68,7 @@ import {
addRoleData,
updateRoleData,
updateRoleMenuData,
getMenuByRoleId,
} from "@/api/system/user.js";
import { getRouters } from "@/api/menu";
export default {
......@@ -134,6 +136,7 @@ export default {
} else if (this.type == "menuChange") {
this.formData = this.active;
this.searchTreeData();
this.loadCheckedKeys();//加载已绑定的菜单
}
}
},
......@@ -284,8 +287,27 @@ export default {
this.formData = {
roleName: "",
};
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(this.checkedKeys);
} else {
this.alertWarningMsg(res.message);
}
})
.catch((err) => {
console.log(err);
});
}
},
},
};
</script>
......
......@@ -270,7 +270,7 @@ export default {
getRoleDict()
.then((res) => {
if (res.code === "200") {
this.dict.roleList = res.data.value;
this.dict.roleList = res.data;
}
})
.catch((err) => {
......