jinhui.wang

version:1.2.0,货物查询增加释放仓位功能,航班信息查询增加cutoff字段,bug修复

import request from '@/utils/request'
//航班预审模板下载
/**
* @param
*/
export function downLoadTemplate(template) {
return request({
url:'/caPreReviewImport/downLoadTemplate?template=' + template,
......@@ -8,6 +12,11 @@ export function downLoadTemplate(template) {
})
}
//预审回执导入
/**
* @param file 文件 *
* @param type 状态 *
*/
export function importcaPreReview(file, type){
let formData = new FormData();
formData.append("file", file);
......
import request from '@/utils/request'
// 货物查询查询条件数据
//货物查询查询条件数据
/**
* @param
*/
export function findConditionData(data) {
return request({
url: '/cargo/findConditionData',
......@@ -10,6 +13,9 @@ export function findConditionData(data) {
}
//货物查询
/**
* @param
*/
export function findCargoData(data) {
return request({
url: '/cargo/findCargoData',
......@@ -53,3 +59,12 @@ export function downloadExcel(data) {
responseType: 'blob',
})
}
//释放仓位
export function releaseCargo(data) {
return request({
url: '/cargo/releaseCargo',
method: 'post',
data: data,
})
}
\ No newline at end of file
......
......@@ -27,11 +27,13 @@ export function findFltById(data) {
})
}
//删除航班
/**
* @param data id List *
*/
export function delFlight(data) {
return request({
url: '/FlightPreserveController/delFlight/'+ data,
url: '/FlightPreserveController/delFlight/' + data,
method: 'post'
})
}
//新增修改
......@@ -54,10 +56,19 @@ export function findFltCommonConf(data) {
})
}
export function updateStatusBatch(data){
export function updateStatusBatch(data) {
return request({
url: '/FlightPreserveController/updateStatusBatch',
method: 'post',
data: data
})
}
//自动推送开关
export function updateAutoPushBatch(data) {
return request({
url: '/FlightPreserveController/updateAutoPushBatch',
method: 'post',
data: data
})
}
......
import request from '@/utils/request'
// DM数据查询
/**
* @param createTime 创建时间 *
* @param fltNo 航班号
* @param fltDate 航班日期
* @param status 状态
* @param portName 口岸名称
* @param page 页数 *
* @param size 数据长度
*/
export function getDmDataList(data) {
return request({
url: '/dmDataLog/getDmDataList',
method: 'post',
data: data
})
}
\ No newline at end of file
......@@ -93,6 +93,13 @@ import { praseStrEmpty } from "@/utils/FedEx";
// }
// 查询用户列表
/**
* @param page 页码 *
* @param size 数据长度 *
* @param isValid 用户状态
* @param username 用户名
* @param phone 手机号码
*/
export function listUser(data) {
return request({
url: '/sysUser/getUserList',
......@@ -102,6 +109,9 @@ export function listUser(data) {
}
// 查询用户详细
/**
* @param id 用户id *
*/
export function detailUser(userId) {
return request({
url: '/sysUser/detailUser?id=' + praseStrEmpty(userId),
......@@ -110,6 +120,15 @@ export function detailUser(userId) {
}
// 新增用户
/**
* @param loginName 员工号 *
* @param username 用户姓名 *
* @param phone 手机号
* @param email 电子邮箱
* @param portName 所属口岸 *
* @param roleIds 所属角色 *
* @param remark 备注
*/
export function addOrUpdateUser(data) {
return request({
url: '/sysUser/addOrUpdateUser',
......@@ -119,6 +138,16 @@ export function addOrUpdateUser(data) {
}
// 修改用户状态
/**
* @param id 用户id *
* @param loginName 员工号 *
* @param username 用户姓名 *
* @param phone 手机号
* @param email 电子邮箱
* @param portName 所属口岸 *
* @param roleIds 所属角色 *
* @param remark 备注
*/
export function updateUserStatus(data) {
return request({
url: '/sysUser/updateUserStatus',
......@@ -128,6 +157,9 @@ export function updateUserStatus(data) {
}
//菜单信息
/**
* @param
*/
export function getAllAuth() {
return request({
url: '/sysMenu/getAllAuth',
......@@ -136,6 +168,10 @@ export function getAllAuth() {
}
//菜单开启关闭
/**
* @param id 菜单id *
* @param status 菜单状态 *
*/
export function updateStatus(data) {
return request({
url: '/sysMenu/updateStatus',
......@@ -145,6 +181,14 @@ export function updateStatus(data) {
}
//角色列表
/**
* @param name 角色名称
* @param size 数据长度 *
* @param page 页码 *
* @param createStart 创建开始时间
* @param createEnd 创建结束时间
* @param valid 角色状态
*/
export function getRoleList(data) {
return request({
url: '/role/getRoleList',
......@@ -154,6 +198,9 @@ export function getRoleList(data) {
}
//角色详情
/**
* @param id 角色id *
*/
export function detailRole(id) {
return request({
url: '/role/detailRole?id=' + id,
......@@ -162,6 +209,13 @@ export function detailRole(id) {
}
//新增修改角色
/**
* @param id 角色id *
* @param name 角色名 *
* @param remark 角色描述
* @param menuIds 角色权限
* @param valid 角色状态
*/
export function addOrUpdateRole(data) {
return request({
url: '/role/addOrUpdateRole',
......@@ -171,6 +225,10 @@ export function addOrUpdateRole(data) {
}
//角色状态修改
/**
* @param id 角色id *
* @param valid 角色状态 *
*/
export function updateRoleStatus(data) {
return request({
url: '/role/updateRoleStatus',
......@@ -180,6 +238,9 @@ export function updateRoleStatus(data) {
}
//口岸列表
/**
* @param
*/
export function portNameList() {
return request({
url: '/dictionary/port',
......@@ -188,6 +249,9 @@ export function portNameList() {
}
//口岸变更
/**
* @param
*/
export function changeCurrentPort(data) {
return request({
url: '/sysUser/changeCurrentPort',
......
let ductLabels = {
"cargoRulesStatus": {
"1": "手动",
"2": "自动"
"cargo": {//货物查询
"cargoRulesStatus": {
"1": "手动",
"2": "自动"
},
"releasing": {
"1": "正在释放"
},
"cargoAllocationDataStatus": {
"已推送": "已推送",
"不推送": "不推送",
"已配": " ",
"待推送": "待推送",
"手动配舱": ' ',
"已释放": ' ',
"原航班配舱": ' ',
"顺位配舱": ' ',
},
},
"menuType": {
"M": "菜单",
"C": "菜单",
"B": "按钮"
"menu": {//菜单设置
"menuType": {
"M": "菜单",
"C": "菜单",
"B": "按钮"
},
"status": {
"1": "启用",
"2": "停用",
},
},
"status": {
"1": "启用",
"2": "停用",
"role": {//角色设置
"valid": {
"1": "启用",
"2": "关闭",
},
},
"valid": {
"1": "启用",
"2": "关闭",
"user": {//用户设置
"isValid": {
"1": "启用",
"2": "关闭",
},
},
"isValid": {
"1": "启用",
"2": "关闭",
"FlightInformation": {//航班信息维护
"ticketToPiece": {
"1": "是",
"0": "否",
},
"needRequired": {
"1": "是",
"0": "否",
},
"highLowPriceFlg": {
"1": "开启",
"0": "未开启",
},
"pushDateSwitch": {
"1": "是",
"2": "否",
},
},
"ticketToPiece": {
"1": "是",
"0": "否",
},
"needRequired": {
"1": "是",
"0": "否",
},
"highLowPriceFlg": {
"1": "启用",
"0": "未开启",
"logDmData": {//DM数据
"status": {
"0": "未处理",
"1": "已处理",
"2": "无需处理",
"3": "处理失败",
"4": "校验不通过",
"5": "数据不能被多次处理",
"9": "处理中",
},
}
}
export default ductLabels;
\ No newline at end of file
......
......@@ -4,241 +4,276 @@
*/
/** 基础通用 **/
.pt5 {
padding-top: 5px;
}
.pr5 {
padding-right: 5px;
}
.pb5 {
padding-bottom: 5px;
}
.mt5 {
margin-top: 5px;
}
.mr5 {
margin-right: 5px;
}
.mb5 {
margin-bottom: 5px;
}
.mb8 {
margin-bottom: 8px;
}
.ml5 {
margin-left: 5px;
}
.mt10 {
margin-top: 10px;
}
.mr10 {
margin-right: 10px;
}
.mb10 {
margin-bottom: 10px;
}
.ml0 {
margin-left: 10px;
}
.mt20 {
margin-top: 20px;
}
.mr20 {
margin-right: 20px;
}
.mb20 {
margin-bottom: 20px;
}
.m20 {
margin-left: 20px;
}
.el-dialog:not(.is-fullscreen){
margin-top: 6vh !important;
}
.el-table {
.el-table__header-wrapper, .el-table__fixed-header-wrapper {
th {
word-break: break-word;
background-color: #f8f8f9;
color: #515a6e;
height: 40px;
font-size: 13px;
}
}
.el-table__body-wrapper {
.el-button [class*="el-icon-"] + span {
margin-left: 1px;
}
}
}
/** 表单布局 **/
.form-header {
font-size:15px;
color:#6379bb;
border-bottom:1px solid #ddd;
margin:8px 10px 25px 10px;
padding-top:15px;
padding-bottom:5px;
.formItem {
width: 100%;
// max-width: 310px;
}
}
/** 表格布局 **/
.pagination-container {
position: relative;
height: 25px;
margin-bottom: 10px;
margin-top: 15px;
padding: 10px 20px !important;
}
/* tree border */
.tree-border {
margin-top: 5px;
border: 1px solid #e5e6e7;
background: #FFFFFF none;
border-radius:4px;
}
.pagination-container .el-pagination {
right: 0;
position: absolute;
}
.el-table .fixed-width .el-button--mini {
padding-left: 0;
padding-right: 0;
width: inherit;
}
.el-tree-node__content > .el-checkbox {
margin-right: 8px;
}
.list-group-striped > .list-group-item {
border-left: 0;
border-right: 0;
border-radius: 0;
padding-left: 0;
padding-right: 0;
}
.list-group {
padding-left: 0px;
list-style: none;
}
.list-group-item {
border-bottom: 1px solid #e7eaec;
border-top: 1px solid #e7eaec;
margin-bottom: -1px;
padding: 11px 0px;
font-size: 13px;
}
.pull-right {
float: right !important;
}
.el-card__header {
padding: 14px 15px 7px;
min-height: 40px;
}
.el-card__body {
padding: 15px 20px 20px 20px;
}
.card-box {
padding-right: 15px;
padding-left: 15px;
margin-bottom: 10px;
}
/* button color */
.el-button--cyan.is-active,
.el-button--cyan:active {
background: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
}
.el-button--cyan:focus,
.el-button--cyan:hover {
background: #48D1CC;
border-color: #48D1CC;
color: #FFFFFF;
}
.el-button--cyan {
background-color: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
}
/* text color */
.text-navy {
color: #1ab394;
}
.text-primary {
color: inherit;
}
.text-success {
color: #1c84c6;
}
.text-info {
color: #23c6c8;
}
.text-warning {
color: #f8ac59;
}
.text-danger {
color: #ed5565;
}
.text-muted {
color: #888888;
}
/* image */
.img-circle {
border-radius: 50%;
}
.img-lg {
width: 120px;
height: 120px;
}
.avatar-upload-preview {
position: absolute;
top: 50%;
transform: translate(50%, -50%);
width: 200px;
height: 200px;
border-radius: 50%;
box-shadow: 0 0 4px #ccc;
overflow: hidden;
}
/* 拖拽列样式 */
.sortable-ghost{
opacity: .8;
color: #fff!important;
background: #42b983!important;
}
.top-right-btn {
position: relative;
float: right;
}
.wid100 {
width: 100% !important;
}
.wid90 {
width: 90% !important;
}
.wid80 {
width: 80% !important;
}
.pt5 {
padding-top: 5px;
}
.pr5 {
padding-right: 5px;
}
.pb5 {
padding-bottom: 5px;
}
.mt5 {
margin-top: 5px;
}
.mr5 {
margin-right: 5px;
}
.mb5 {
margin-bottom: 5px;
}
.mb8 {
margin-bottom: 8px;
}
.ml5 {
margin-left: 5px;
}
.mt10 {
margin-top: 10px;
}
.mr10 {
margin-right: 10px;
}
.mb10 {
margin-bottom: 10px;
}
.ml0 {
margin-left: 10px;
}
.mt20 {
margin-top: 20px;
}
.mr20 {
margin-right: 20px;
}
.mb20 {
margin-bottom: 20px;
}
.m20 {
margin-left: 20px;
}
.el-dialog:not(.is-fullscreen) {
margin-top: 6vh !important;
}
.el-table {
.el-table__header-wrapper,
.el-table__fixed-header-wrapper {
th {
word-break: break-word;
background-color: #f8f8f9;
color: #515a6e;
height: 40px;
font-size: 13px;
}
}
.el-table__body-wrapper {
.el-button [class*="el-icon-"]+span {
margin-left: 1px;
}
}
}
/** 表单布局 **/
.form-header {
font-size: 15px;
color: #6379bb;
border-bottom: 1px solid #ddd;
margin: 8px 10px 25px 10px;
padding-top: 15px;
padding-bottom: 5px;
.formItem {
width: 90%;
// max-width: 300px;
}
}
/** 表格布局 **/
.pagination-container {
position: relative;
height: 25px;
margin-bottom: 10px;
margin-top: 15px;
padding: 10px 20px !important;
}
/* tree border */
.tree-border {
margin-top: 5px;
border: 1px solid #e5e6e7;
background: #FFFFFF none;
border-radius: 4px;
}
.pagination-container .el-pagination {
right: 0;
position: absolute;
}
.el-table .fixed-width .el-button--mini {
padding-left: 0;
padding-right: 0;
width: inherit;
}
.el-tree-node__content>.el-checkbox {
margin-right: 8px;
}
.list-group-striped>.list-group-item {
border-left: 0;
border-right: 0;
border-radius: 0;
padding-left: 0;
padding-right: 0;
}
.list-group {
padding-left: 0px;
list-style: none;
}
.list-group-item {
border-bottom: 1px solid #e7eaec;
border-top: 1px solid #e7eaec;
margin-bottom: -1px;
padding: 11px 0px;
font-size: 13px;
}
.pull-right {
float: right !important;
}
.el-card__header {
padding: 14px 15px 7px;
min-height: 40px;
}
.el-card__body {
padding: 15px 20px 20px 20px;
}
.card-box {
padding-right: 15px;
padding-left: 15px;
margin-bottom: 10px;
}
/* button color */
.el-button--cyan.is-active,
.el-button--cyan:active {
background: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
}
.el-button--cyan:focus,
.el-button--cyan:hover {
background: #48D1CC;
border-color: #48D1CC;
color: #FFFFFF;
}
.el-button--cyan {
background-color: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
}
/* text color */
.text-navy {
color: #1ab394;
}
.text-primary {
color: inherit;
}
.text-success {
color: #1c84c6;
}
.text-info {
color: #23c6c8;
}
.text-warning {
color: #f8ac59;
}
.text-danger {
color: #ed5565;
}
.text-muted {
color: #888888;
}
/* image */
.img-circle {
border-radius: 50%;
}
.img-lg {
width: 120px;
height: 120px;
}
.avatar-upload-preview {
position: absolute;
top: 50%;
transform: translate(50%, -50%);
width: 200px;
height: 200px;
border-radius: 50%;
box-shadow: 0 0 4px #ccc;
overflow: hidden;
}
/* 拖拽列样式 */
.sortable-ghost {
opacity: .8;
color: #fff !important;
background: #42b983 !important;
}
.top-right-btn {
position: relative;
float: right;
}
.dialogColumn .el-tooltip {
white-space: pre-line !important;
}
\ No newline at end of file
......
......@@ -189,3 +189,51 @@ aside {
.multiselect--active {
z-index: 1000 !important;
}
.el-table__body-wrapper {
&::-webkit-scrollbar {
height: 10px;
width: 10px;
}
&::-webkit-scrollbar-track {
background-color: #fff;
}
&::-webkit-scrollbar-thumb {
background-color: #ccc;
}
&::-webkit-scrollbar-thumb:hover {
background-color: #409eff;
}
}
// 解决表格固定列问题
.el-table__fixed,
.el-table__fixed-right {
height: calc(100% - 7px) !important;
box-shadow: -5px -2px 10px rgba(0, 0, 0, .12) !important;
.el-table__fixed-body-wrapper {
height: calc(100% - 36px) !important;
}
}
// 当表格没有滚动条时
.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right {
height: 100% !important;
bottom: 0 !important;
box-shadow: none !important;
}
// 当表格有纵向滚动条时
.el-table--scrollable-y .el-table__fixed-right {
right: 7px !important;
}
// 当表格只有横向滚动条,没有纵向滚动条时
.el-table--scrollable-x:not(.el-table--scrollable-y) .el-table__fixed-right {
right: 0 !important;
}
\ No newline at end of file
......
This diff is collapsed. Click to expand it.
<template>
<div class="navbar">
<hamburger
id="hamburger-container"
:is-active="sidebar.opened"
class="hamburger-container"
@toggleClick="toggleSideBar"
/>
<breadcrumb
id="breadcrumb-container"
class="breadcrumb-container"
v-if="!topNav"
/>
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container"
@toggleClick="toggleSideBar" />
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav" />
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav" />
<div class="right-menu">
<template v-if="device !== 'mobile'"> </template>
<el-select
v-model="portName"
size="mini"
style="width: 120px; top: -17px; right: 7px"
placeholder="选择口岸"
>
<el-option
v-for="item in portNameList"
:label="item"
:value="item"
:key="item"
>
<el-select v-model="portName" size="mini" style="width: 120px; top: -17px; right: 7px" placeholder="选择口岸">
<el-option v-for="item in portNameList" :label="item" :value="item" :key="item">
</el-option>
</el-select>
<el-dropdown
class="avatar-container right-menu-item hover-effect"
trigger="click"
>
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="userName-wrapper">
<!-- <img :src="avatar" class="user-avatar" /> -->
<span><i class="el-icon-user-solid" style="color:#1890ff"></i>欢迎!{{userName}}</span>
<span><i class="el-icon-user-solid" style="color:#1890ff"></i>欢迎!{{ userName }}</span>
</div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="logout">
......@@ -57,11 +36,12 @@
</template>
<script>
import { mapGetters } from "vuex";
import Breadcrumb from "@/components/Breadcrumb";
import TopNav from "@/components/TopNav";
import Hamburger from "@/components/Hamburger";
import { mapGetters } from "vuex"
import Breadcrumb from "@/components/Breadcrumb"
import TopNav from "@/components/TopNav"
import Hamburger from "@/components/Hamburger"
import { removeToken } from '@/utils/auth'
import settings from "@/settings"
export default {
components: {
......@@ -71,7 +51,7 @@ export default {
},
data() {
return {
userName:"",
userName: "",
portNameList: [],
locale: "zh",
};
......@@ -111,20 +91,20 @@ export default {
this.$store.dispatch('tagsView/delAllCachedViews')
this.$store.dispatch('tagsView/delAllVisitedViews')
// location.reload();
if(this.$route.path != '/index'){
if (this.$route.path != '/index') {
this.$router.push('/index')
}
} else {
this.$confirm(res.msg, "提示", {
type: "warning",
}).then(()=>{
}).then(() => {
// location.reload();
if(this.$route.path != '/index'){
if (this.$route.path != '/index') {
this.$router.push('/index')
}
}).catch(()=>{
}).catch(() => {
// location.reload();
if(this.$route.path != '/index'){
if (this.$route.path != '/index') {
this.$router.push('/index')
}
});
......@@ -148,7 +128,7 @@ export default {
}).then(() => {
this.$store.dispatch("LogOut").then(() => {
removeToken()
window.location.href = "https://test-myapps.secure.fedex.com/purpleid/signout/";//wsso系统跳转
window.location.href = settings.logoutURL;//wsso系统跳转
});
});
},
......@@ -225,16 +205,19 @@ export default {
text-align: center;
margin-right: 15px;
font-weight: 700;
i{
i {
display: inline-block;
height: 50px;
margin-right:5px;
margin-right: 5px;
font-size: 24px;
line-height: 50px;
}
.userName-wrapper {
position: relative;
font-size:14px;
font-size: 14px;
.user-avatar {
cursor: pointer;
width: 40px;
......
......@@ -2,6 +2,7 @@ import router from './router'
import store from './store'
import { Message } from 'element-ui'
import { getToken, setToken, removeToken } from '@/utils/auth'
import settings from "@/settings"
const whiteList = ['/login', '/auth-redirect', '/bind', '/register']
......@@ -24,7 +25,7 @@ router.beforeEach((to, from, next) => {
Message.error(err)
store.dispatch('LogOut').then(() => {
// next({ path: '/' })
window.location.href = "https://test-myapps.secure.fedex.com/purpleid/signout/";//wsso系统跳转
window.location.href = settings.logoutURL;//wsso系统跳转
})
})
} else {
......@@ -44,7 +45,7 @@ router.beforeEach((to, from, next) => {
// 在免登录白名单,直接进入
next()
} else {
window.location.href = "https://test-myapps.secure.fedex.com/purpleid/signout/";//wsso系统跳转
window.location.href = settings.logoutURL;//wsso系统跳转
}
}
......
import Vue from 'vue'
import Router from 'vue-router'
import settings from "@/settings"
Vue.use(Router)
......@@ -92,5 +93,5 @@ export default new Router({
mode: 'history', // 去掉url中的#
scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes,
base: '/imacuat'
base: settings.routerBase
})
\ No newline at end of file
......
......@@ -39,8 +39,24 @@ module.exports = {
*/
errorLog: 'production',
/**
/**
* logout
*/
logoutURL: 'https://test-myapps.secure.fedex.com/purpleid/signout/',
/**
* 后端接口
*/
baseURL: `https://imacuat.zmd.apac.fedex.com/iMAC`,
downLoadURL: `https://imacuat.zmd.apac.fedex.com/iMAC`,//下载、导出地址
/**
* 项目存放地址
*/
routerBase: '/imacuat',
/**
* 版本号
*/
version:'version:1.1.0'
version: 'version:1.3.0'
}
......
//import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token'
const TokenKey = 'iMac-Token'
export function getToken() {
//return Cookies.get(TokenKey)
......
import axios from 'axios'
import { Message,MessageBox } from 'element-ui'
import { Message, MessageBox } from 'element-ui'
import store from '@/store'
import { getToken,setToken } from '@/utils/auth'
import { getToken, setToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode'
import settings from "@/settings"
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
//baseURL: process.env.VUE_APP_BASE_API,
// baseURL: `http://47.103.140.98:7001/iMAC`,
baseURL: 'https://imacuat.zmd.apac.fedex.com/iMAC',
// baseURL: 'http://192.168.1.133:7001/iMAC',
// baseURL: 'http://192.168.1.133:7001/iMAC',//生产
baseURL: settings.baseURL,
// 超时
timeout: 30000,
......@@ -54,7 +51,7 @@ service.interceptors.request.use(config => {
// 响应拦截器
service.interceptors.response.use(res => {
if(res.headers['token']){
if (res.headers['token']) {
setToken(decodeURIComponent(res.headers['token']))
}
// 未设置状态码则默认成功状态
......@@ -69,8 +66,7 @@ service.interceptors.response.use(res => {
).then(() => {
store.dispatch('LogOut').then(() => {
// location.href = '/';
window.location.href = "https://test-myapps.secure.fedex.com/purpleid/signout/";//wsso系统跳转
// testsso.ute.apac.fedex.com/iMAC
window.location.href = settings.logoutURL;//wsso系统跳转
})
});
} else if (code === 403) {
......@@ -83,7 +79,7 @@ service.interceptors.response.use(res => {
type: 'error'
})
return Promise.reject(new Error(msg))
} else if (code !== 200 && code !== 201 && code !== 202 && code !== 603) {
} else if (code !== 200 && code !== 201 && code !== 202 && code !== 603) {
Message({
message: msg,
type: 'error'
......
import axios from 'axios'
import { getToken } from '@/utils/auth'
import settings from "@/settings"
const mimeMap = {
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
zip: 'application/zip'
}
const baseUrl = 'https://imacuat.zmd.apac.fedex.com/iMAC' //uat服务器
// const baseUrl = 'http://47.103.140.98:7001/iMAC' //阿里云服务器
// const baseUrl = 'http://192.168.1.133:7001/iMAC' //测试服务器
// const baseUrl = 'http://192.168.1.133:7001/iMAC' //生产
const baseUrl = settings.downLoadURL //uat服务器
export function downLoadZip(str, filename) {
var url = baseUrl + str
......@@ -27,7 +25,7 @@ export function downLoadZip(str, filename) {
* @param {*} res blob响应内容
* @param {String} mimeType MIME类型
*/
export function resolveBlob(res, mimeType) {
export function resolveBlob(res, mimeType) {
const aLink = document.createElement('a')
var blob = new Blob([res], { type: mimeType })
// //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
......@@ -44,33 +42,33 @@ export function downLoadZip(str, filename) {
}
// excel导出请求
export function downLoadXlsx(str, data,fileName) {
export function downLoadXlsx(str, data, fileName) {
var url = baseUrl + str
return new Promise((resolve,reject)=>{
return new Promise((resolve, reject) => {
axios({
method: 'post',
url: url,
data: data,
timeout:500000,
timeout: 500000,
responseType: 'blob',
headers: { 'Authorization': decodeURIComponent(getToken()) }
// headers: { 'Authorization': decodeURIComponent(getToken()) }
//uat环境token需要做url解码处理
}).then(res => {
if (res.status === 200) {
downLoadExcal(res,fileName)
downLoadExcal(res, fileName)
}
resolve(res)
}).catch((err)=>{
}).catch((err) => {
reject(err)
})
})
}
//excel导出下载
export function downLoadExcal(val,filename) {
export function downLoadExcal(val, filename) {
const aLink = document.createElement('a')
const fileName = filename+".xlsx"
const fileName = filename + ".xlsx"
aLink.href = URL.createObjectURL(val.data)
aLink.setAttribute('download', fileName) // 设置下载文件名称
document.body.appendChild(aLink)
......@@ -81,7 +79,7 @@ export function downLoadExcal(val,filename) {
//航班预审导出
export function cargoXlsxPre(str, data) {
var url = baseUrl + str
return new Promise((resolve,reject)=>{
return new Promise((resolve, reject) => {
axios({
method: 'post',
url: url,
......@@ -93,7 +91,7 @@ export function cargoXlsxPre(str, data) {
cargoTableXlsxPre(res)
}
resolve()
}).catch((err)=>{
}).catch((err) => {
reject(err)
})
})
......@@ -101,11 +99,11 @@ export function cargoXlsxPre(str, data) {
//航班预审导出
export function cargoTableXlsxPre(val) {
const aLink = document.createElement('a')
const fileName = "航班预审表.xlsx"
aLink.href = URL.createObjectURL(val.data)
aLink.setAttribute('download', fileName) // 设置下载文件名称
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink);
const aLink = document.createElement('a')
const fileName = "航班预审表.xlsx"
aLink.href = URL.createObjectURL(val.data)
aLink.setAttribute('download', fileName) // 设置下载文件名称
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink);
}
......
<template>
<div>
<el-form
:inline="true"
:model="queryParams"
class="form-header"
size="medium"
label-position="right"
label-width="auto"
>
<el-form :inline="true" :model="queryParams" class="form-header" size="medium" label-position="right"
label-width="auto">
<el-form-item label="航班号">
<el-input
v-model.trim="purposeOfFlightNo"
placeholder="航班号"
@keyup.enter.native="getList"
clearable
></el-input>
<el-input v-model.trim="purposeOfFlightNo" placeholder="航班号" @keyup.enter.native="getList" clearable></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="queryParams.status" placeholder="状态" clearable>
......@@ -23,45 +12,21 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
@click="getList"
size="mini"
>查询</el-button
>
<el-button type="primary" icon="el-icon-search" @click="getList" size="mini">查询</el-button>
</el-form-item>
<div>
<el-button
style="margin-bottom: 20px"
type="primary"
icon="el-icon-plus"
size="mini"
v-hasPermi="['allocation:alloc:add']"
@click="
<el-button style="margin-bottom: 20px" type="primary" icon="el-icon-plus" size="mini"
v-hasPermi="['allocation:alloc:add']" @click="
$router.push({
name: 'FlightAllocConfigAdd',
params: { handle: 'add' },
})
"
>添加</el-button
>
">添加</el-button>
</div>
</el-form>
<el-table
:data="flyList"
v-loading="loading"
size="small"
highlight-current-row
border
stripe
>
<el-table-column
prop="purposeOfFlightNo"
label="航班号"
align="center"
></el-table-column>
<el-table :data="flyList" v-loading="loading" size="small" highlight-current-row border stripe>
<el-table-column prop="purposeOfFlightNo" label="航班号" align="center"></el-table-column>
<el-table-column prop="status" label="状态" align="center">
<template slot-scope="scope">
......@@ -80,62 +45,22 @@
<el-table-column label="操作" prop="id" align="center">
<template slot-scope="scope">
<el-button
type="text"
size="mini"
icon="el-icon-view"
@click="handleClick(scope.row.id, 'detail')"
>查看</el-button
>
<el-button
type="text"
size="mini"
icon="el-icon-edit"
v-hasPermi="['allocation:alloc:update']"
@click="handleClick(scope.row.id, 'update')"
>修改</el-button
>
<el-button
type="text"
size="mini"
icon="el-icon-delete"
v-hasPermi="['allocation:alloc:delete']"
@click="del(scope.row.id, scope.row.status)"
>删除</el-button
>
<el-button
type="text"
size="mini"
icon="el-icon-video-pause"
v-hasPermi="['allocation:alloc:openClose']"
@click="changeStatus(scope.row.id, 3)"
v-if="scope.row.status == '1'"
>停用</el-button
>
<el-button
type="text"
size="mini"
icon="el-icon-video-play"
v-hasPermi="['allocation:alloc:openClose']"
@click="changeStatus(scope.row.id, 1)"
v-else
>启用</el-button
>
<el-button type="text" size="mini" icon="el-icon-view" @click="handleClick(scope.row.id, 'detail')">查看
</el-button>
<el-button type="text" size="mini" icon="el-icon-edit" v-hasPermi="['allocation:alloc:update']"
@click="handleClick(scope.row.id, 'update')">修改</el-button>
<el-button type="text" size="mini" icon="el-icon-delete" v-hasPermi="['allocation:alloc:delete']"
@click="del(scope.row.id, scope.row.status)">删除</el-button>
<el-button type="text" size="mini" icon="el-icon-video-pause" v-hasPermi="['allocation:alloc:openClose']"
@click="changeStatus(scope.row.id, 3)" v-if="scope.row.status == '1'">停用</el-button>
<el-button type="text" size="mini" icon="el-icon-video-play" v-hasPermi="['allocation:alloc:openClose']"
@click="changeStatus(scope.row.id, 1)" v-else>启用</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="getList"
@current-change="getList"
:current-page.sync="curPage"
:page-sizes="[10, 20, 30, 40]"
:page-size.sync="limit"
layout="prev, pager, next, jumper, sizes, total"
:total="total"
background
:hide-on-single-page="true"
style="margin-top: 40px; text-align: right"
>
<el-pagination @size-change="getList" @current-change="getList" :current-page.sync="curPage"
:page-sizes="[10, 20, 30, 40]" :page-size.sync="limit" layout="prev, pager, next, jumper, sizes, total"
:total="total" background :hide-on-single-page="true" style="margin-top: 40px; text-align: right">
</el-pagination>
</div>
</template>
......@@ -165,14 +90,14 @@ export default {
};
},
created() {
if(this.$store.state.tagsView.cachedViews.length == 0){
if (this.$store.state.tagsView.cachedViews.length == 0) {
this.getList();
}
},
activated(){
activated() {
this.getList()
},
deactivated(){
deactivated() {
this.flyList = []
},
methods: {
......@@ -228,7 +153,7 @@ export default {
});
this.getList();
})
.catch(() => {});
.catch(() => { });
});
}
},
......@@ -249,7 +174,7 @@ export default {
this.msgSuccess(tip + "成功");
}
})
.catch(() => {});
.catch(() => { });
});
},
},
......
<template>
<div class="app-container">
<el-form
class="form-header"
:model="queryParams"
label-position="right"
label-width="auto"
size="medium"
>
<div>
<el-form class="form-header" :model="queryParams" label-position="right" label-width="auto" size="medium">
<el-row>
<el-col :span="6">
<el-form-item label="航班日期从" prop="fltDateStart">
<el-date-picker
value-format="yyyy-MM-dd"
class="formItem"
v-model="queryParams.fltDateStart"
type="date"
placeholder="选择日期"
>
<el-date-picker value-format="yyyy-MM-dd" class="formItem" v-model="queryParams.fltDateStart" type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="到" prop="fltDateEnd">
<el-date-picker
value-format="yyyy-MM-dd"
class="formItem"
v-model="queryParams.fltDateEnd"
type="date"
placeholder="选择日期"
>
<el-date-picker value-format="yyyy-MM-dd" class="formItem" v-model="queryParams.fltDateEnd" type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="航班号">
<el-input
type="textarea"
v-model="fltNo"
clearable
class="formItem"
placeholder="AC001;AC002"
rows="1"
>
<el-input type="textarea" v-model="fltNo" clearable class="formItem" placeholder="AC001;AC002" :rows="1">
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运单号">
<el-input
clearable
type="textarea"
v-model="queryParams.waybillNo"
class="formItem"
placeholder="请输入运单号(回车间隔)"
rows="1"
></el-input>
<el-input clearable type="textarea" v-model="queryParams.waybillNo" class="formItem"
placeholder="请输入运单号(回车间隔)" :rows="1"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="站点">
<el-input
type="textarea"
v-model="siteName"
class="formItem"
placeholder="PVG;PEK"
clearable
rows="1"
>
<el-input type="textarea" v-model="siteName" class="formItem" placeholder="PVG;PEK" clearable :rows="1">
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="URSA">
<el-input
clearable
type="textarea"
v-model="ursa"
class="formItem"
placeholder="S_;P_;E2"
rows="1"
>
<el-input clearable type="textarea" v-model="ursa" class="formItem" placeholder="S_;P_;E2" :rows="1">
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-switch
v-model="queryParams.reExport"
active-color="#13ce66"
active-text="重新导出"
style="padding-left: 35px"
>
</el-switch>
</el-col>
</el-row>
<div style="margin-top: 25px">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button
type="warning"
:disabled="tableData.length == 0"
@click="xlse()"
:loading="downLoadingTip.downloading"
icon="el-icon-download"
size="mini"
v-hasPermi="['base:caExport:export']"
>{{
downLoadingTip.downloading ? downLoadingTip.tip : "导出"
}}</el-button
>
<el-switch v-model="queryParams.reExport" active-color="#13ce66" active-text="重新导出" style="padding-left: 35px">
</el-switch>
<div style="margin-top:25px">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button type="warning" :disabled="tableData.length == 0" v-hasPermi="['base:caExport:export']"
@click="xlse()" :loading="downLoadingTip.downloading" icon="el-icon-download" size="mini">{{
downLoadingTip.downloading ? downLoadingTip.tip : "导出"
}}</el-button>
</div>
</el-form>
<el-table
max-height="500"
highlight-current-row
border
stripe
v-loading="loading"
:data="tableData"
>
<el-table-column
label="运单号"
align="center"
prop="waybillNo"
width="150"
/>
<el-table-column
:show-overflow-tooltip="true"
label="品牌描述"
align="center"
prop="nameDescription"
width="150"
/>
<el-table-column
label="航班日期"
align="center"
prop="fltDate"
width="150"
/>
<el-table-column label="航班号" align="center" prop="fltNo" />
<el-table-column
label="航班路线"
align="center"
prop="route"
width="150"
/>
<el-table-column
label="配置航班类型"
align="center"
prop="kindName"
width="130"
/>
<el-table-column label="尺寸" align="center" prop="sizeStr" />
<el-table-column label="件数" align="center" prop="qty" />
<el-table-column label="实际重量" align="center" prop="actualWeight" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
/>
<el-table max-height="500" highlight-current-row border stripe v-loading="loading" :data="tableData">
<el-table-column label="运单号" align="center" prop="waybillNo" />
<el-table-column :show-overflow-tooltip="true" label="品牌描述" align="center" prop="nameDescription" />
<el-table-column label="航班日期" align="center" prop="fltDate" />
<el-table-column label="航班号" align="center" prop="fltNo" width="100" />
<el-table-column label="航班路线" align="center" prop="route" />
<el-table-column label="配置航班类型" align="center" prop="kindName" width="130" />
<el-table-column label="尺寸" align="center" prop="sizeStr" width="70" />
<el-table-column label="件数" align="center" prop="qty" width="70" />
<el-table-column label="实际重量" align="center" prop="actualWeight" width="100" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
layout=" prev, pager, next, jumper, sizes,total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.limitSize"
@pagination="findAllFltData"
/>
<pagination v-show="total > 0" :total="total" layout=" prev, pager, next, jumper, sizes,total"
:page.sync="queryParams.pageNum" :limit.sync="queryParams.limitSize" @pagination="findAllFltData" />
</div>
</template>
......@@ -221,7 +115,6 @@ export default {
rules: {},
};
},
created() {},
methods: {
// 导出表格
xlse() {
......@@ -233,8 +126,9 @@ export default {
);
cargoXlse.cargoExportPreQueryDto.limitStart = 0;
cargoXlse.cargoExportPreQueryDto.limitSize = -1;
downLoadXlsx("/cargo/excelPre", cargoXlse,'航班预审表')
downLoadXlsx("/cargo/excelPre", cargoXlse, '航班预审表')
.then(() => {
this.downLoadingTip.downloading = false;
this.downLoadingTip.tip = "";
this.progress = 100;
......@@ -244,7 +138,6 @@ export default {
this.downLoadingTip.tip = "";
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
......@@ -265,6 +158,12 @@ export default {
this.tableData = response.data.list;
this.total = response.data.totalCount;
this.loading = false;
if (response.data.list.length == 0) {
this.$message({
message: "未查询到数据",
type: "warning",
});
}
} else {
this.msgError(response.msg);
}
......
......@@ -15,7 +15,8 @@
<div style="font-size: 12px; font-weight: 700">
提示:<span style="color: #1890ff">以下为所提交的数据或出错信息</span>
</div>
<el-table ref="filterTable" :data="tableData" v-loading="loading" style="width: 100%; margin-top: 20px" size="small" border>
<el-table ref="filterTable" :data="tableData" v-loading="loading" style="width: 100%; margin-top: 20px" size="small"
border>
<el-table-column label="行号" prop="line" fixed width="50" align="center">
</el-table-column>
<el-table-column label="错误信息" prop="errorMessage" fixed width="300">
......@@ -31,103 +32,100 @@
<el-table-column v-if="tableData.length > 0" label="航班日期" align="center" prop="C" />
<el-table-column v-if="tableData.length > 0" label="航班号" align="center" prop="D" />
<el-table-column v-if="tableData.length > 0" label="预审意见" align="center" prop="E" />
<!-- <el-table-column v-for="(value, key) in this.tableData[0]" :key="key"
<!-- <el-table-column v-for="(value, key) in this.tableData[0]" :key="key"
v-if="key != 'errorMessage' && key != 'line'" :label="key" :prop="key" width="120"></el-table-column>-->
</el-table>
</div>
</template>
<script>
import {
downLoadTemplate,
importcaPreReview,
} from "@/api/caPreReviewImport";
export default {
name:"CAPreReviewImport",
data() {
return {
// 遮罩层
loading: false,
flightType: [],
form: {
type: "",
region: "",
},
fileList: [],
tableData: [],
};
},
methods: {
downloadTempleate() {
import {
downLoadTemplate,
importcaPreReview,
} from "@/api/caPreReviewImport";
export default {
name: "CAPreReviewImport",
data() {
return {
// 遮罩层
loading: false,
flightType: [],
form: {
type: "",
region: "",
},
fileList: [],
tableData: [],
};
},
methods: {
downloadTempleate() {
let fileName = "航班预审导入模板.xlsx";
downLoadTemplate().then((res) => {
if (res) {
const blob = new Blob([res]);
const link = document.createElement("a"); //创建a标签
link.download = fileName; //a标签添加属性
link.style.display = "none";
link.href = URL.createObjectURL(blob);
document.body.appendChild(link);
link.click(); //执行下载
URL.revokeObjectURL(link.href); //释放url
document.body.removeChild(link); //释放标签
} else {
this.$message.error("下载失败");
}
});
let fileName = "航班预审导入模板.xlsx";
downLoadTemplate().then((res) => {
if (res) {
const blob = new Blob([res]);
const link = document.createElement("a"); //创建a标签
link.download = fileName; //a标签添加属性
link.style.display = "none";
link.href = URL.createObjectURL(blob);
document.body.appendChild(link);
link.click(); //执行下载
URL.revokeObjectURL(link.href); //释放url
document.body.removeChild(link); //释放标签
} else {
this.$message.error("下载失败");
}
});
},
uploadExcel(option) {
//上传excel
const file = option.file;
this.loading=true;
importcaPreReview(file, this.form.type).then((res) => {
this.loading=false;
if (res.code != 200) {
if (res.code == 603) {
this.$alert(res.msg, "提示", {
confirmButtonText: "确定",
type: "warning",
});
} else {
this.$message.error(res.msg);
this.tableData = res.data;
}
},
uploadExcel(option) {
//上传excel
const file = option.file;
this.loading = true;
importcaPreReview(file, this.form.type).then((res) => {
this.loading = false;
if (res.code != 200) {
if (res.code == 603) {
this.$alert(res.msg, "提示", {
confirmButtonText: "确定",
type: "warning",
});
} else {
this.$message.success(res.msg);
this.$message.error(res.msg);
this.tableData = res.data;
}
});
},
handleRemove(file, fileList) {
//清掉上传的文件
this.tableData = [];
this.fileList = [];
},
handleExceed(files) {
//重复上传文件
let file = {};
file.file = files[0];
file.name = files[0].name;
this.fileList = [];
this.fileList.push(file);
this.uploadExcel(file);
},
} else {
this.$message.success(res.msg);
this.tableData = res.data;
}
});
},
created() {
handleRemove(file, fileList) {
//清掉上传的文件
this.tableData = [];
this.fileList = [];
},
handleExceed(files) {
//重复上传文件
let file = {};
file.file = files[0];
file.name = files[0].name;
this.fileList = [];
this.fileList.push(file);
this.uploadExcel(file);
},
};
},
};
</script>
<style rel="stylesheet/scss" lang="scss">
.upload-demo {
float: right;
}
.upload-demo {
float: right;
}
.el-upload-list {
display: inline-block;
margin-left: 10px;
vertical-align: top;
}
.el-upload-list {
display: inline-block;
margin-left: 10px;
vertical-align: top;
}
</style>
......
......@@ -3,47 +3,27 @@
<el-form :inline="true" :model="form" class="demo-form-inline" size="small">
<el-form-item label="航班种类">
<el-select v-model="form.type" placeholder="航班种类">
<el-option
v-for="item in flightType"
:key="item.id"
:label="item.englishName"
:value="item.code"
>{{ item.englishName }}</el-option
>
<el-option v-for="item in flightType" :key="item.id" :label="item.englishName" :value="item.code">{{
item.englishName
}}</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-upload
action="/flightInfoImport/importFlight"
name="file"
:http-request="uploadExcel"
:on-remove="handleRemove"
:limit="1"
:on-exceed="handleExceed"
:file-list="fileList"
accept=".xlsx"
class="upload-demo"
v-hasPermi="['base:flightImport:importFlight']"
>
<el-upload action="/flightInfoImport/importFlight" name="file" :http-request="uploadExcel"
:on-remove="handleRemove" :limit="1" :on-exceed="handleExceed" :file-list="fileList" accept=".xlsx"
class="upload-demo" v-hasPermi="['base:flightImport:importFlight']">
<el-button type="primary">点击上传</el-button>
</el-upload>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="downloadTempleate" v-hasPermi="['base:flightImport:exportExcel']"
>下载模板</el-button
>
<el-button type="primary" @click="downloadTempleate" v-hasPermi="['base:flightImport:exportExcel']">下载模板
</el-button>
</el-form-item>
</el-form>
<div style="font-size: 12px; font-weight: 700">
提示:<span style="color: #1890ff">以下为所提交的数据或出错信息</span>
</div>
<el-table
ref="filterTable"
:data="tableData"
style="width: 100%; margin-top: 20px"
size="small"
border
>
<el-table ref="filterTable" :data="tableData" style="margin-top: 20px" size="small" border>
<el-table-column label="行号" prop="line" fixed width="50" align="center">
</el-table-column>
<el-table-column label="错误信息" prop="errorMessage" fixed width="200">
......@@ -54,14 +34,8 @@
</template>
</el-table-column>
<el-table-column v-if="tableData.length == 0"></el-table-column>
<el-table-column
v-for="(value, key) in this.tableData[0]"
:key="key"
v-if="key != 'errorMessage' && key != 'line'"
:label="key"
:prop="key"
width="120"
></el-table-column>
<el-table-column v-for="(value, key) in this.tableData[0]" :key="key"
v-if="key != 'errorMessage' && key != 'line'" :label="key" :prop="key"></el-table-column>
</el-table>
</div>
</template>
......@@ -172,11 +146,11 @@ export default {
},
};
</script>
<style rel="stylesheet/scss" lang="scss">
.upload-demo {
float: right;
}
.el-upload-list {
display: inline-block;
margin-left: 10px;
......
<template>
<div class="menuDrawer">
<el-dialog
:title="drawerTitle"
width="50%"
:visible.sync="dialogVisible"
:close-on-click-modal="false"
:append-to-body="true"
>
<el-form
ref="userForm"
:model="menuForm"
:disabled="menuFormDisabled"
:rules="rules"
label-width="auto"
style="margin: 10px"
>
<el-dialog :title="drawerTitle" width="50%" :visible.sync="dialogVisible" :close-on-click-modal="false"
:append-to-body="true">
<el-form ref="userForm" :model="menuForm" :disabled="menuFormDisabled" :rules="rules" label-width="auto"
style="margin: 10px">
<el-row>
<el-col :span="12">
<el-form-item label="菜单名称" prop="">
......@@ -48,12 +37,8 @@
</el-col>
<el-col :span="24">
<el-form-item label="菜单状态" prop="">
<el-switch
v-model="menuData.menuStatus"
active-color="#13ce66"
inactive-color="#ff4949"
:disabled="menuFormDisabled"
></el-switch>
<el-switch v-model="menuData.menuStatus" active-color="#13ce66" inactive-color="#ff4949"
:disabled="menuFormDisabled"></el-switch>
</el-form-item>
</el-col>
<el-col :span="24">
......@@ -114,15 +99,15 @@ export default {
data() {
return {
menuForm: {},
rules:{}
rules: {}
};
},
updated() {
this.menuForm = this.menuData;
},
watch:{
dialogVisible(val,oldVal){
if(val){
watch: {
dialogVisible(val, oldVal) {
if (val) {
this.menuForm = this.menuData;
}
}
......@@ -134,7 +119,7 @@ export default {
selected(val) {
console.log(val);
},
submit() {},
submit() { },
},
};
</script>
......
......@@ -8,78 +8,34 @@
>新增菜单</el-button
>
</div> -->
<el-table
:data="data"
row-key="id"
fit
border
stripe
highlightCurrentRow
v-loading="loading"
default-expand-all
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table :data="data" row-key="id" fit border stripe highlightCurrentRow v-loading="loading" default-expand-all
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
<template v-for="(item, index) in tableHeader">
<el-table-column
v-if="item.value === 'menuType'"
:prop="item.value"
:label="item.name"
:key="index"
:align="item.align"
header-align="center"
showOverflowTooltip
:width="item.width"
:formatter="formatter"
>
<el-table-column v-if="item.value === 'menuType'" :prop="item.value" :label="item.name" :key="index"
:align="item.align" header-align="center" showOverflowTooltip :width="item.width" :formatter="formatter">
<template slot-scope="scope">
<el-tag
:type="scope.row.menuType === 'B' ? '' : 'success'"
disable-transitions
>{{ scope.row.menuType === "B" ? "按钮" : "菜单" }}</el-tag
>
<el-tag :type="scope.row.menuType === 'B' ? '' : 'success'" disable-transitions>{{ scope.row.menuType ===
"B" ? "按钮" : "菜单"
}}</el-tag>
</template>
</el-table-column>
<el-table-column
v-else
:prop="item.value"
:label="item.name"
:key="index"
:align="item.align"
header-align="center"
showOverflowTooltip
:width="item.width"
:formatter="formatter"
>
<el-table-column v-else :prop="item.value" :label="item.name" :key="index" :align="item.align"
header-align="center" showOverflowTooltip :width="item.width" :formatter="formatter">
</el-table-column>
</template>
<el-table-column
header-align="center"
align="center"
label="操作"
width="auto"
>
<el-table-column header-align="center" align="center" label="操作" width="auto">
<template slot-scope="scope">
<!-- <el-button type="success" size="mini" @click="buttonClick(scope)">修改</el-button>
<el-button type="primary" size="mini" @click="buttonClick(scope)"
>查看</el-button
> -->
<el-button
:type="scope.row.status == 1 ? 'warning' : 'primary'"
v-hasPermi="['system:menu:openClose']"
size="mini"
@click="menuStatus(scope)"
v-if="scope.row.menuType == 'C'"
>{{ scope.row.status == 1 ? "停用菜单" : "启用菜单" }}</el-button
>
<el-button
type="danger"
size="mini"
v-hasPermi="['system:menu:delete']"
@click="removeMenu(scope)"
v-if="scope.row.menuType == 'C'"
>删除菜单</el-button
>
<el-button :type="scope.row.status == 1 ? 'warning' : 'primary'" v-hasPermi="['system:menu:openClose']"
size="mini" @click="menuStatus(scope)" v-if="scope.row.menuType == 'C'">{{ scope.row.status == 1 ? "停用菜单" :
"启用菜单"
}}</el-button>
<el-button type="danger" size="mini" v-hasPermi="['system:menu:delete']" @click="removeMenu(scope)"
v-if="scope.row.menuType == 'C'">删除菜单</el-button>
</template>
</el-table-column>
</el-table>
......@@ -144,7 +100,7 @@ export default {
{
name: "菜单名",
value: "title",
width: "200",
width: "",
align: "left",
sorTable: false,
},
......@@ -220,9 +176,9 @@ export default {
res.data.length > 0
? (this.data = res.data)
: this.$message({
message: "数据为空",
type: "warning",
});
message: "数据为空",
type: "warning",
});
} else {
this.$message({
message: res.msg,
......@@ -275,7 +231,7 @@ export default {
data.status = row.row.status == 1 ? "2" : "1";
this.statusUpdate(data);
})
.catch(() => {});
.catch(() => { });
},
//菜单删除
......@@ -291,13 +247,13 @@ export default {
data.status = "0";
this.statusUpdate(data);
})
.catch(() => {});
.catch(() => { });
},
formatter(row, column, cellValue, index) {
if (dictLabels[column.property]) {
if (dictLabels[column.property][cellValue]) {
return dictLabels[column.property][cellValue];
if (dictLabels["menu"][column.property]) {
if (dictLabels["menu"][column.property][cellValue]) {
return dictLabels["menu"][column.property][cellValue];
}
}
return cellValue;
......
<template>
<div class="roleDrawer">
<el-drawer
:title="drawerTitle"
:visible.sync="drawer"
direction="rtl"
size="40%"
destroy-on-close
:close-on-click-modal="false"
:wrapperClosable="false"
:show-close="false"
>
<el-form
ref="roleForm"
:model="roleForm"
label-width="auto"
:rules="rules"
size="mini"
style="margin: 10px"
>
<el-drawer :title="drawerTitle" :visible.sync="drawer" direction="rtl" size="40%" destroy-on-close
:close-on-click-modal="false" :wrapperClosable="false" :show-close="false">
<el-form ref="roleForm" :model="roleForm" label-width="auto" :rules="rules" size="mini" style="margin: 10px">
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="角色名:" prop="name">
<el-input
placeholder="请输入角色名"
v-model.trim="roleForm.name"
:disabled="roleFormDisabled"
v-if="!roleFormDisabled"
clearable
></el-input>
<el-input placeholder="请输入角色名" v-model.trim="roleForm.name" :disabled="roleFormDisabled"
v-if="!roleFormDisabled" clearable></el-input>
<div v-else>{{ roleData.name }}</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="角色描述:" prop="remark">
<el-input
v-model="roleForm.remark"
type="textarea"
placeholder="请输入角色描述"
:disabled="roleFormDisabled"
v-if="!roleFormDisabled"
clearable
></el-input>
<el-input v-model="roleForm.remark" type="textarea" placeholder="请输入角色描述" :disabled="roleFormDisabled"
v-if="!roleFormDisabled" clearable></el-input>
<div v-else>{{ roleData.remark }}</div>
</el-form-item>
</el-col>
......@@ -58,31 +32,16 @@
</el-col> -->
<el-col :span="24">
<el-form-item label="角色权限:" prop="menuIdList">
<el-tree
ref="tree"
:data="treeData"
node-key="id"
:props="defaultProps"
:show-checkbox="true"
:default-checked-keys="roleData.menuIds"
accordion
>
<el-tree ref="tree" :data="treeData" node-key="id" :props="defaultProps" :show-checkbox="true"
:default-checked-keys="roleData.menuIds" accordion>
</el-tree>
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button
type="primary"
v-if="!roleFormDisabled"
size="mini"
:loading="loading"
@click="submit"
>提交</el-button
>
<el-button type="primary" size="mini" @click="handleClose"
>取消</el-button
>
<el-button type="primary" v-if="!roleFormDisabled" size="mini" :loading="loading" @click="submit">提交
</el-button>
<el-button type="primary" size="mini" @click="handleClose">取消</el-button>
</el-form-item>
</el-form>
</el-drawer>
......@@ -173,7 +132,7 @@ export default {
let formData = {};
this.loading = true;
let arr = [];
arr = this.$refs.tree.getCheckedKeys().filter((item,index)=>{
arr = this.$refs.tree.getCheckedKeys().filter((item, index) => {
return this.$refs.tree.getCheckedKeys().indexOf(item) == index
})
formData.menuIdList = arr;
......@@ -186,7 +145,7 @@ export default {
this.loading = false;
if (res.code === 200) {
this.$message({
message: "操作成功",
message: "操作成功,新增权限需重新登陆后刷新。",
type: "success",
});
this.$emit("handleClose", false);
......@@ -224,7 +183,7 @@ export default {
data.push(menuItem)
if (item.children && item.children.length) {
menuItem.children = this.treeDataInfo(item.children);
menuItem.children.unshift({id:item.id,title:`${item.title}(菜单)`})
menuItem.children.unshift({ id: item.id, title: `${item.title}(菜单)` })
}
});
return data;
......
......@@ -4,24 +4,13 @@
<el-row :gutter="50">
<el-col :span="6">
<el-form-item label="角色名称">
<el-input
v-model="formData.name"
placeholder="请输入角色名称"
clearable
></el-input>
<el-input v-model="formData.name" placeholder="请输入角色名称" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="创建时间">
<el-date-picker
v-model="createTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
clearable
>
<el-date-picker v-model="createTime" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyy-MM-dd" clearable>
</el-date-picker>
</el-form-item>
</el-col>
......@@ -36,61 +25,31 @@
</el-row>
</el-form>
<div style="margin:20px">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
:loading="tableLoading"
@click="selectRoleList(0)"
>搜索</el-button
>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="addRole" v-hasPermi="['system:role:add']"
>新增角色</el-button
>
<el-button type="primary" icon="el-icon-search" size="mini" :loading="tableLoading" @click="selectRoleList(0)">搜索
</el-button>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="addRole" v-hasPermi="['system:role:add']">新增角色
</el-button>
</div>
<Tables
:data="data"
:headerData="tableHeader"
:infoData="tableHeader"
:totalCount="total"
:limitSize="formData.size"
:page="formData.page"
:pageSizes="[20,30,40,50]"
:loading="tableLoading"
height="600"
@sizeChange="sizeChange"
@currentChange="currentChange"
>
<template>
<Tables ductName="role" :data="data" :headerData="tableHeader" :infoData="tableHeader" :totalCount="total"
:limitSize="formData.size" :page="formData.page" :pageSizes="[20, 30, 40, 50]" :loading="tableLoading"
height="600" @sizeChange="sizeChange" @currentChange="currentChange">
<template slot="optionColumn">
<el-table-column header-align="center" align="center" label="操作">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="buttonClick(scope, 0)"
>查看</el-button
>
<el-button type="primary" size="mini" @click="buttonClick(scope, 1)" v-hasPermi="['system:role:update']"
>修改</el-button
>
<el-button
:type="scope.row.valid == 1 ? 'warning' : 'primary'"
size="mini"
v-hasPermi="['system:role:openClose']"
@click="roleStatus(scope)"
>{{ scope.row.valid == 1 ? "停用" : "启用" }}</el-button
>
<el-button type="danger" size="mini" @click="removeRole(scope)" v-hasPermi="['system:role:delete']"
>删除角色</el-button
>
<el-button type="primary" size="mini" @click="buttonClick(scope, 0)">查看</el-button>
<el-button type="primary" size="mini" @click="buttonClick(scope, 1)" v-hasPermi="['system:role:update']">修改
</el-button>
<el-button :type="scope.row.valid == 1 ? 'warning' : 'primary'" size="mini"
v-hasPermi="['system:role:openClose']" @click="roleStatus(scope)">{{ scope.row.valid == 1 ? "停用" : "启用" }}
</el-button>
<el-button type="danger" size="mini" @click="removeRole(scope)" v-hasPermi="['system:role:delete']">删除角色
</el-button>
</template>
</el-table-column>
</template>
</Tables>
<Drawer
:drawer="drawer"
:drawerTitle="drawerTitle"
:roleFormDisabled="roleFormDisabled"
:roleData="roleData"
@handleClose="handleClose"
></Drawer>
<Drawer :drawer="drawer" :drawerTitle="drawerTitle" :roleFormDisabled="roleFormDisabled" :roleData="roleData"
@handleClose="handleClose"></Drawer>
</div>
</template>
......@@ -103,7 +62,7 @@ import {
updateRoleStatus,
} from "@/api/system/user.js";
export default {
name:"RoleConfig",
name: "RoleConfig",
components: {
Drawer,
},
......@@ -120,67 +79,52 @@ export default {
data: [], //表格数据
tableHeader: [
{
type: "index",
name: "",
value: "",
width: "",
align: "center",
sorTable: false,
disabled:true
},
{
type: "",
name: "角色名称",
value: "name",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
{
type: "",
name: "角色状态",
value: "valid",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
{
type: "",
name: "创建人",
value: "createUserName",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
{
type: "",
name: "创建时间",
value: "createTime",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
{
type: "",
name: "修改时间",
value: "updateTime",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
{
type: "",
name: "备注",
value: "remark",
width: "400px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
], //表头数据
roleData: {}, //角色详情
......@@ -193,20 +137,20 @@ export default {
};
},
created() {
if(this.$store.state.tagsView.cachedViews.length == 0){
if (this.$store.state.tagsView.cachedViews.length == 0) {
this.selectRoleList();
}
},
activated(){
activated() {
this.selectRoleList();
},
deactivated(){
deactivated() {
this.data = []
},
methods: {
//角色列表
selectRoleList(val) {
if(val == 0){
if (val == 0) {
this.formData.page = 1
}
this.tableLoading = true;
......@@ -341,7 +285,7 @@ export default {
}
});
})
.catch(() => {});
.catch(() => { });
} else {
this.$message({
message: res.msg,
......@@ -360,7 +304,7 @@ export default {
this.formData.page = val.page;
this.selectRoleList();
},
sizeChange(val){
sizeChange(val) {
this.formData.size = val;
this.selectRoleList()
}
......
......@@ -4,20 +4,12 @@
<el-row :gutter="50">
<el-col :span="6">
<el-form-item label="用户姓名">
<el-input
placeholder="请输入用户名称"
v-model="formData.username"
clearable
></el-input>
<el-input placeholder="请输入用户名称" v-model="formData.username" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="手机号码">
<el-input
placeholder="请输入手机号码"
v-model="formData.phone"
clearable
></el-input>
<el-input placeholder="请输入手机号码" v-model="formData.phone" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
......@@ -31,68 +23,34 @@
</el-row>
</el-form>
<div style="margin:20px">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
:loading="loading"
@click="selectUser(0)"
>搜索</el-button
>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="addUser" v-hasPermi="['system:user:add']"
>新增用户</el-button
>
<el-button type="primary" icon="el-icon-search" size="mini" :loading="loading" @click="selectUser(0)">搜索
</el-button>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="addUser" v-hasPermi="['system:user:add']">新增用户
</el-button>
</div>
<Tables
:data="data"
:headerData="tableHeader"
:limitSize="formData.size"
:totalCount="total"
:loading="loading"
:page="formData.page"
:pageSizes="[20,30,40,50]"
height="600"
@sizeChange="sizeChange"
@currentChange="currentChange"
>
<template>
<el-table-column
header-align="center"
align="center"
width="auto"
label="操作"
>
<Tables ductName="user" :data="data" :headerData="tableHeader" :limitSize="formData.size" :totalCount="total"
:loading="loading" :page="formData.page" :pageSizes="[20, 30, 40, 50]" height="600" @sizeChange="sizeChange"
@currentChange="currentChange">
<template slot="optionColumn">
<el-table-column header-align="center" align="center" width="auto" label="操作">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="buttonClick(scope, 0)"
>查看</el-button
>
<el-button type="primary" size="mini" @click="buttonClick(scope, 1)" v-hasPermi="['system:user:update']"
>修改</el-button
>
<el-button type="primary" size="mini" @click="buttonClick(scope, 0)">查看</el-button>
<el-button type="primary" size="mini" @click="buttonClick(scope, 1)" v-hasPermi="['system:user:update']">修改
</el-button>
<!-- <el-button type="primary" size="mini" @click="passwordShow = !passwordShow"
>修改密码</el-button
> -->
<el-button
:type="scope.row.isValid == 1 ? 'warning' : 'primary'"
size="mini"
v-hasPermi="['system:user:openClose']"
@click="userStatus(scope)"
>{{ scope.row.isValid == 1 ? "停用" : "启用" }}</el-button
>
<el-button type="danger" size="mini" @click="removeUser(scope)" v-hasPermi="['system:user:delete']"
>删除用户</el-button
>
<el-button :type="scope.row.isValid == 1 ? 'warning' : 'primary'" size="mini"
v-hasPermi="['system:user:openClose']" @click="userStatus(scope)">{{ scope.row.isValid == 1 ? "停用" : "启用"
}}</el-button>
<el-button type="danger" size="mini" @click="removeUser(scope)" v-hasPermi="['system:user:delete']">删除用户
</el-button>
</template>
</el-table-column>
</template>
</Tables>
<Drawer
:drawer="drawer"
:drawerTitle="drawerTitle"
:userFormDisabled="userFormDisabled"
:userData="userData"
@handleClose="handleClose"
></Drawer>
<Drawer :drawer="drawer" :drawerTitle="drawerTitle" :userFormDisabled="userFormDisabled" :userData="userData"
@handleClose="handleClose"></Drawer>
<!-- <el-dialog
title="修改密码"
:visible.sync="passwordShow"
......@@ -147,85 +105,68 @@ export default {
}, //查询条件
tableHeader: [
{
type: "index",
name: "",
value: "",
width: "",
align: "center",
sorTable: false,
disabled:true
},
{
type: "",
name: "员工号",
value: "loginName",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
{
type: "",
name: "用户姓名",
value: "username",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
{
type: "",
name: "所属口岸",
value: "portName",
width: "150px",
align: "center",
sortable: false,
disabled:true
disabled: true
},
{
type: "",
name: "所属角色",
value: "roleNames",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
{
type: "",
name: "电子邮箱",
value: "email",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
{
type: "",
name: "用户状态",
value: "isValid",
width: "100px",
align: "center",
sorTable: false,
disabled:true
disabled: true,
},
{
type: "",
name: "修改时间",
value: "updateTime",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
{
type: "",
name: "备注",
value: "remark",
width: "150px",
align: "center",
sorTable: false,
disabled:true
disabled: true
},
], //表头数据
userData: {}, //用户详情
......@@ -239,20 +180,20 @@ export default {
};
},
created() {
if(this.$store.state.tagsView.cachedViews.length == 0){
if (this.$store.state.tagsView.cachedViews.length == 0) {
this.selectUser();
}
},
activated(){
activated() {
this.selectUser();
},
deactivated(){
deactivated() {
this.data = []
},
methods: {
//用户列表
selectUser(val) {
if(val == 0){
if (val == 0) {
this.formData.page = 1
}
this.loading = true;
......@@ -285,7 +226,7 @@ export default {
if (res.code === 200) {
this.userData = res.data;
this.userData.portName
?this.userData.portName=this.userData.portName.split(",")
? this.userData.portName = this.userData.portName.split(",")
: '';
} else {
this.$message({
......@@ -391,7 +332,7 @@ export default {
this.selectUser();
},
sizeChange(val){
sizeChange(val) {
this.formData.size = val;
this.selectUser()
}
......
......@@ -17,7 +17,7 @@ module.exports = {
// 部署生产环境和开发环境下的URL。
// 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.FedEx.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.FedEx.vip/admin/,则设置 baseUrl 为 /admin/。
publicPath: process.env.NODE_ENV === "production" ? "/imacuat/" : "/",
publicPath: process.env.NODE_ENV === "production" ? defaultSettings.routerBase : "/",
// 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
outputDir: 'dist',
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
......@@ -34,10 +34,7 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `https://imacuat.zmd.apac.fedex.com/iMAC`,
// target: `http://47.103.140.98:7001/iMAC`,
// target: `http://192.168.1.134:18080`,
// target: `http://47.103.140.98:7001/IMAC2`, //生产
target: defaultSettings.baseURL,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
......