jinhui.wang

ver:1.5.0,新增航班预审、数据字典虚拟航班页面,增加自定义表头,文本修正,样式修正

Showing 44 changed files with 1490 additions and 641 deletions
{
"name": "IMAC",
"version": "3.5.0",
"description": "IMAC管理系统",
"author": "IMAC",
"license": "MIT",
"scripts": {
"dev": "vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",
"lint": "eslint --ext .js,.vue src"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"src/**/*.{js,vue}": [
"eslint --fix",
"git add"
]
},
"keywords": [
"vue",
"admin",
"dashboard",
"element-ui",
"boilerplate",
"admin-template",
"management-system"
],
"repository": {
"type": "git",
"url": "https://gitee.com/y_project/RuoYi-Vue.git"
},
"dependencies": {
"@riophae/vue-treeselect": "0.4.0",
"axios": "0.21.1",
"clipboard": "2.0.8",
"core-js": "3.8.3",
"echarts": "4.9.0",
"element-ui": "2.15.3",
"file-saver": "2.0.5",
"fuse.js": "6.4.6",
"highlight.js": "9.18.5",
"js-beautify": "1.13.13",
"js-cookie": "2.2.1",
"jsencrypt": "3.0.3",
"nprogress": "0.2.0",
"quill": "1.3.7",
"screenfull": "5.0.2",
"sortablejs": "1.10.2",
"vue": "2.6.14",
"vue-count-to": "1.0.13",
"vue-cropper": "0.5.6",
"vue-router": "3.5.2",
"vuedraggable": "2.24.3",
"vuex": "3.6.2"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.5.13",
"@vue/cli-plugin-eslint": "4.5.13",
"@vue/cli-service": "4.5.13",
"babel-eslint": "10.1.0",
"chalk": "4.1.1",
"connect": "3.6.6",
"eslint": "7.30.0",
"eslint-plugin-vue": "7.12.1",
"lint-staged": "10.5.4",
"runjs": "4.4.2",
"sass": "1.35.1",
"sass-loader": "10.2.0",
"script-ext-html-webpack-plugin": "2.1.5",
"svg-sprite-loader": "5.2.1",
"vue-template-compiler": "2.6.14"
},
"engines": {
"node": ">=8.9",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions"
]
}
......@@ -7,3 +7,11 @@ export const getRouters = () => {
method: 'post'
})
}
// 获取tableHeader
export const getTableHeader = () => {
return request({
url: '/table/getTableHeader',
method: 'get'
})
}
\ No newline at end of file
......
import request from '@/utils/request'
//数据字典名称
/**
* @param
*/
export function getDictNameList() {
return request({
url: '/dictionary/queryMain',
method: 'get',
})
}
//字典表查询
/**
* @param dictCode 字典名 *
* @param chineseName 数据名称
* @param page 页数 null
* @param size 每页长度 null
*/
export function getDictionaryList(data) {
return request({
url: '/dictionary/query',
method: 'post',
data: data
})
}
//serviceCode字典表查询
/**
* @param
*/
export function getServiceCodeList() {
return request({
url: '/dictionary/queryServiceCode',
method: 'get',
})
}
//新增字典(单条)
/**
* @param chineseName 字典名称 *
* @param description 描述
* @param dictCode 字典表名称 *
*/
export function addDict(data) {
return request({
url: '/dictionary/addDict',
method: 'POST',
data: data
})
}
//新增字典(批量)
/**
* @param nameList 字典名称 * list
* @param dictCode 字典表名称 *
*/
export function addDictBatch(data) {
return request({
url: '/dictionary/addDictBatch',
method: 'POST',
data: data
})
}
//serviceCode子字典添加
/**
* @param array [{}]
* @param serviceCodeKey serviceCode父级key *
* @param serviceCodeValue 字典名称 *
*/
export function addServiceCodeBatch(data) {
return request({
url: '/dictionary/addServiceCodeBatch',
method: 'POST',
data: data
})
}
//serviceCode子字典删除
/**
* @param array []
* @param serviceCodeValue 字典名称 *
*/
export function delServiceCodeCihild(data) {
return request({
url: '/dictionary/delServiceCodeCihild',
method: 'POST',
data: data
})
}
//字典删除
/**
* @param array []
* @param id 字典ID *
*/
export function delDict(data) {
return request({
url: '/dictionary/delDict',
method: 'POST',
data: data
})
}
//虚拟航班查询
/**
* @param flightNo 航班名称
* @param page 页数 null *
* @param size 每页长度 null *
*/
export function flightType(data) {
return request({
url: '/dictionary/flightType',
method: 'post',
data: data
})
}
//虚拟航班新增
/**
* @param flightNo 航班名称 list *
*/
export function addFlight(data) {
return request({
url: '/dictionary/addFlight',
method: 'post',
data: data
})
}
//虚拟航班新增
/**
* @param flightNo 航班名称 list *
*/
export function delFlight(data) {
return request({
url: '/dictionary/delFlight',
method: 'post',
data: data
})
}
\ No newline at end of file
......@@ -17,3 +17,14 @@ export function getDmDataList(data) {
data: data
})
}
// 流水查询
/**
* @param accsId accsid *
*/
export function getDmFlowInformation(data) {
return request({
url: '/dmDataLog/getDmFlowInformation?' + data,
method: 'post',
})
}
......
import request from '@/utils/request'
//预审航班查询
/**
* @param fltNo 航班号
* @param suatus 状态
* @param page 页数
* @param size 每页条数
*/
export function getpreAudit(data) {
return request({
url: '/preAudit/query',
method: 'post',
data: data
})
}
//添加预审航班
/**
* @param 航班号 *
*/
export function addPreFlight(data) {
return request({
url: '/preAudit/addFlight',
method: 'post',
data: data
})
}
//添加预审航班
/**
* @param id 航班id *
* @param status 状态 * 0关闭 1开启 2删除
*/
export function updatePreStatus(data) {
return request({
url: '/preAudit/updateStatus',
method: 'post',
data: data
})
}
import request from '@/utils/request'
import { praseStrEmpty } from "@/utils/FedEx";
// // 修改用户
// export function updateUser(data) {
// return request({
// url: '/system/user',
// method: 'put',
// data: data
// })
// }
// // 导出用户
// export function exportUser(query) {
// return request({
// url: '/system/user/export',
// method: 'get',
// params: query
// })
// }
// // 用户密码重置
// export function resetUserPwd(userId, password) {
// const data = {
// userId,
// password
// }
// return request({
// url: '/system/user/resetPwd',
// method: 'put',
// data: data
// })
// }
// // 用户状态修改
// export function changeUserStatus(userId, status) {
// const data = {
// userId,
// status
// }
// return request({
// url: '/system/user/changeStatus',
// method: 'put',
// data: data
// })
// }
// // 查询用户个人信息
// export function getUserProfile() {
// return request({
// url: '/system/user/profile',
// method: 'get'
// })
// }
// // 修改用户个人信息
// export function updateUserProfile(data) {
// return request({
// url: '/system/user/profile',
// method: 'put',
// data: data
// })
// }
// // 用户密码重置
// export function updateUserPwd(oldPassword, newPassword) {
// const data = {
// oldPassword,
// newPassword
// }
// return request({
// url: '/system/user/profile/updatePwd',
// method: 'put',
// params: data
// })
// }
// // 用户头像上传
// export function uploadAvatar(data) {
// return request({
// url: '/system/user/profile/avatar',
// method: 'post',
// data: data
// })
// }
// // 下载用户导入模板
// export function importTemplate() {
// return request({
// url: '/system/user/importTemplate',
// method: 'get'
// })
// }
// 查询用户列表
/**
* @param page 页码 *
......@@ -259,3 +168,27 @@ export function changeCurrentPort(data) {
data: data
})
}
//获取用户设置表头
/**
* @param tableName 表名 *
*/
export function getHeaderOrder(data) {
return request({
url: '/table/getHeaderOrder?' + data,
method: 'get',
})
}
//保存用户设置表头
/**
* @param tableName 表名 *
* @param idList 显示表头集合 *
*/
export function saveTableHeader(data) {
return request({
url: '/table/saveTableHeader',
method: 'post',
data: data
})
}
\ No newline at end of file
......
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1650528704724" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2035" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
</style></defs><path d="M396.00128 892.68224c-130.6624-16.62976-247.6032-63.52896-247.6032-122.38336V692.8384c51.48672 38.62528 131.8912 66.23232 225.64864 79.33952 0.4096-20.84864 2.8672-41.21088 7.24992-60.87168-124.60032-18.14528-232.89856-63.7696-232.89856-120.34048v-77.45536c61.80864 46.36672 165.0688 77.08672 283.4432 85.44256a310.12864 310.12864 0 0 1 54.84544-58.61376c-161.792-2.176-338.28864-56.44288-338.28864-128.77824V354.05824C221.30688 408.69888 351.55968 442.04032 496.64 442.04032c145.03936 0 275.328-33.30048 348.24192-87.98208v57.50784c0 28.22144-27.02848 53.69856-69.4272 74.42432a307.38944 307.38944 0 0 1 65.29024 30.22848c1.26976-0.94208 2.8672-1.76128 4.1728-2.70336v5.24288a307.26144 307.26144 0 0 1 60.87168 50.5856V252.1088c0-108.25728-175.88224-189.89056-409.10848-189.89056s-409.1904 81.63328-409.1904 189.89056v518.18496c0 98.01728 144.26112 173.95712 344.55552 187.51488a306.62144 306.62144 0 0 1-36.0448-65.1264zM496.64 123.12576c164.40832 0 348.24192 55.17312 348.24192 128.98304S661.04832 381.09184 496.64 381.09184c-164.37248 0-348.20096-55.17312-348.20096-128.98304S332.26752 123.12576 496.64 123.12576z" p-id="2036"></path><path d="M731.4176 907.264l-95.0272-72.25344h-11.1872c-5.57056 0-5.57056 5.61152-5.57056 11.10016v38.87104c-39.15264-22.20032-67.09248-61.07136-72.65792-105.50784 0-11.10016-16.7936-22.24128-27.97568-22.24128-11.18208 0-22.36416 16.74752-22.36416 27.84768 5.61152 44.4416 27.97568 83.30752 55.9104 111.08352 22.36416 16.62976 44.72832 33.30048 67.09248 44.4416v44.44672c0 5.5296 0 5.5296 5.57056 5.5296 5.61664 5.61152 5.61664 5.61152 11.1872 5.61152l95.0272-72.25344s5.61664-5.5296 5.61664-11.10016c-0.00512-0.04608-0.00512-5.57568-5.62176-5.57568z m162.16064-183.25504l39.12192-22.24128c5.61152 0 5.61152-5.57056 5.61152-11.10016s0-5.5296-5.61152-11.10016l-111.8208-44.40064h-11.14112c-5.57056 0-5.57056 5.52448-5.57056 5.52448l-5.61664 122.22464c0 5.5296 0 5.5296 5.61664 5.5296h11.14112l33.54624-22.20032c0 44.4416-16.7936 88.84224-55.9104 116.65408-11.1872 11.10016-11.1872 22.20032-5.61664 33.30048 11.1872 11.10016 22.36928 11.10016 33.5104 0 55.95136-33.37728 83.97312-105.5488 72.73984-172.19072z m-234.7776-72.25344c0-5.5296 0-5.5296-5.61152-11.10016l-33.55136-16.62976c39.15776-22.20032 83.8912-27.77088 128.61952-11.10016 11.14112 5.61664 27.9296 0 33.50016-16.62976 5.61664-11.10016 0-27.77088-16.74752-33.30048-61.48096-22.20032-139.8016-5.57056-190.09536 33.30048l-44.72832-22.24128h-11.18208c0 5.61152-5.57056 5.61152 0 11.10016l11.18208 116.65408s0 5.57056 5.61664 5.57056h11.18208l111.8208-50.01216v-5.61152h-0.00512z" p-id="2037"></path></svg>
\ No newline at end of file
......@@ -7,16 +7,6 @@ let ductLabels = {
"releasing": {
"1": "正在释放"
},
"cargoAllocationDataStatus": {
"已推送": "已推送",
"不推送": "不推送",
"已配": " ",
"待推送": "待推送",
"手动配舱": ' ',
"已释放": ' ',
"原航班配舱": ' ',
"顺位配舱": ' ',
},
},
"menu": {//菜单设置
"menuType": {
......@@ -59,16 +49,78 @@ let ductLabels = {
"2": "否",
},
},
"flightRand": {//航班顺位设置
"status": {
"0": "执行中",
"1": "有效",
"3": "停用"
}
},
"FlightAlloc": {//航班配舱设置
"status": {
"0": "无效",
"1": "有效",
"2": "配置中",
"3": "停用"
}
},
"logDmData": {//DM数据
"statusDetailCode": {
"0": "未处理",
"1": "处理成功",
"2_1": "已处理(数据丢弃)",
"2_2": "已处理(数据丢弃)",
"2_3": "已处理(数据丢弃)",
"2_4": "已处理(数据丢弃)",
"3_1": "已处理(异常处理)",
"3_2": "处理失败(系统异常)",
"3_3": "处理失败(系统异常)",
"3_4": "处理失败(系统异常)",
"4_1": "处理失败(数据异常)",
"4_2": "处理失败(数据异常)",
"4_3": "处理失败(其他系统异常)",
// "5": "处理失败(系统异常)",
"9": "处理中",
},
"weatherGenerateWater": {
"1": "是",
"0": "否"
},
"sendLogSendResult": {
"0": "未推",
"1": "推送成功",
"2": "推送失败"
},
"status": {
"0": "未处理",
"1": "已处理",
"2": "无需处理",
"3": "处理失败",
"4": "校验不通过",
"5": "数据不能被多次处理",
"9": "处理中",
"9": "处理中"
}
},
"weatherTable": {
"highLowPriceFlg": {
"1": "开启",
"0": "关闭"
},
"operationSource": {
"1": "pre-MD cutoff",
"2": "航班迁转手动释放",
"3": "预审不通过定时任务",
"4": "自动配舱"
},
"weightMark": {
"1": "增加",
"-1": "减少"
}
},
"preFlight": {//航班预审
"status": {
"0": "关闭",
"1": "开启"
}
}
}
......
This diff is collapsed. Click to expand it.
......@@ -10,7 +10,7 @@
.wid95 {
width: 95% !important;
}
}
.wid90 {
width: 90% !important;
......@@ -80,13 +80,13 @@
margin-bottom: 20px;
}
.m20 {
.ml20 {
margin-left: 20px;
}
// .el-dialog:not(.is-fullscreen) {
// margin-top: 6vh !important;
// }
// .el-dialog:not(.is-fullscreen) {
// margin-top: 6vh !important;
// }
.el-table {
......@@ -113,7 +113,7 @@
font-size: 15px;
color: #6379bb;
// border-bottom: 1px solid #ddd;
margin: 8px 10px 25px 10px;
margin: 8px 10px 15px 10px;
padding-top: 15px;
padding-bottom: 5px;
......
......@@ -26,9 +26,9 @@ html {
height: 100%;
}
input {
background-color: #fff !important;
}
// input {
// background-color: #fff !important;
// }
*,
*:before,
......@@ -194,11 +194,12 @@ aside {
z-index: 1000 !important;
}
.el-table__body-wrapper {
.el-table__body-wrapper,
.el-textarea__inner,
body {
&::-webkit-scrollbar {
height: 7px;
width: 7px;
height: 7px;
}
&::-webkit-scrollbar-track {
......@@ -207,20 +208,33 @@ aside {
&::-webkit-scrollbar-thumb {
background-color: #ccc;
border-radius: 20px;
}
&::-webkit-scrollbar-thumb:hover {
background-color: #409eff;
}
&::-webkit-scrollbar-track-piece {
background: #F2F6FC;
}
}
.el-scrollbar__wrap {
&::-webkit-scrollbar {
height: 0px;
width: 0px;
.el-table__header-wrapper {
.has-gutter {
.gutter {
display: none !important;
}
}
}
// .el-scrollbar__wrap {
// &::-webkit-scrollbar {
// height: 7px;
// width: 7px;
// }
// }
// 解决表格固定列问题
.el-table__fixed,
.el-table__fixed-right {
......@@ -248,3 +262,34 @@ aside {
.el-table--scrollable-x:not(.el-table--scrollable-y) .el-table__fixed-right {
right: 0 !important;
}
.el-checkbox-group {
.el-checkbox {
width: 100%;
.el-checkbox__input {
top: -5px;
}
.el-checkbox__label {
width: 90%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
.el-transfer-panel__body {
.el-checkbox-group {
.el-checkbox {
.el-checkbox__input {
top: 6px !important;
}
}
}
}
.el-select-dropdown {
max-width: 300px;
}
\ No newline at end of file
......
<template>
<div>
<el-button v-if="buttonShow" class="mt5" size="mini" icon="el-icon-edit-outline" circle @click="visibleOpen">
</el-button>
<el-dialog title="表格显示设置" :visible.sync="open" width="40%" :close-on-click-modal="false" :show-close="false"
append-to-body center>
<div style="text-align: center">
<el-transfer style="text-align: left; display: inline-block" :data="transferData"
:right-default-checked="rightDefaultChecked" v-model="transferValue" :titles="transferTitle"
:props="props" v-loading="transferLoading" @change="change" @right-check-change="rightCheckChange">
<template slot="left-footer">
<div></div>
</template>
<template slot="right-footer">
<el-button style="margin-left:20px" type="primary" size="mini" icon="el-icon-top"
:disabled="updisabled" @click="up">
</el-button>
<el-button type="primary" size="mini" icon="el-icon-bottom" :disabled="downdisabled"
@click="down"></el-button>
</template>
</el-transfer>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" :loading="loading" @click="submit">确 定</el-button>
<el-button @click="close">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getHeaderOrder, saveTableHeader } from "@/api/system/user.js";
export default {
props: {
tableName: {
type: String,
default: ''
}
},
data() {
return {
transferData: [],//穿梭框数据
transferValue: [],//已选择数据key
rightDefaultChecked: [],//右侧复选框选中
transferTitle: ['未显示列', '已显示列'],
props: { key: 'id', label: 'columnChineseName' },
open: false,
loading: false,
updisabled: true,
downdisabled: true,
buttonShow: true,
transferLoading: false
}
},
created() {
if (this.$store.getters.tableHeader) {
this.buttonShow = true
} else {
this.buttonShow = false
}
},
watch: {
open(val, oldVal) {
if (val) {
this.transferData = this.$store.getters.tableHeader[this.tableName]
this.transferLoading = true
// 获取用户显示表头
getHeaderOrder(`tableName=${this.tableName}`).then(res => {
this.transferLoading = false
if (res.code == 200) {
this.transferValue = res.data
} else {
this.msgwarning(res.msg)
}
}).catch(err => {
this.transferLoading = false
console.log(err)
})
}
}
},
methods: {
// 确定
submit() {
this.loading = true
let obj = this.$store.getters.tableHeader
// 保存设置
saveTableHeader({ tableName: this.tableName, idList: this.transferValue }).then(res => {
if (res.code === 200) {
obj[this.tableName] = res.data
this.$store.dispatch('SavetableHeader', obj)
this.msgSuccess('操作成功')
this.close(1)
} else {
this.msgWarning(res.msg)
}
this.$nextTick(() => {
this.loading = false
})
}).catch(err => {
this.loading = false
console.log(err)
})
},
//dialog开启
visibleOpen() {
this.open = true
},
// transferChange
change(val) {
let arr = []
let status0 = []
this.transferValue = val
this.transferData.forEach((item, i) => {
if (!this.transferValue.includes(item.id)) {
status0.push(item)
} else {
this.transferValue.forEach((vals, index) => {
if (vals == item.id) {
arr.push(item)
}
})
}
})
this.transferData = arr.concat(status0)
this.rightDefaultChecked = []
this.updisabled = true
this.downdisabled = true
},
//右侧选中,上下移动按钮状态设置
rightCheckChange(val) {
this.rightDefaultChecked = val
if (val.length == 1) {
if (this.transferValue.length > 1) {
this.transferValue.forEach((item, index) => {
if (item === val[0]) {
if (index === 0) {
this.updisabled = true
this.downdisabled = false
} else if (index === this.transferValue.length - 1) {
this.updisabled = false
this.downdisabled = true
} else {
this.updisabled = false
this.downdisabled = false
}
}
})
}
} else {
this.updisabled = true
this.downdisabled = true
}
},
//当前数据整理
tableHeadersSort() {
let arr = []
let status0 = []
this.transferData.forEach((item, i) => {
if (!this.transferValue.includes(item.id)) {
status0.push(item)
} else {
this.transferValue.forEach((val, index) => {
if (val == item.id) {
arr[index] = item
}
})
}
})
arr = arr.concat(status0)
this.transferData = arr
},
//右侧单条数据上移
up() {
if (!this.updisabled) {
let str = ''
this.transferValue.forEach((item, index) => {
if (item == this.rightDefaultChecked[0]) {
str = item
this.transferValue[index] = this.transferValue[index - 1]
this.transferValue[index - 1] = str
return
}
})
this.tableHeadersSort()
this.rightCheckChange([str])
}
},
//右侧单条数据下移
down() {
if (!this.downdisabled) {
let str = ''
let int = 1
this.transferValue.forEach((item, index) => {
if (item == this.rightDefaultChecked[0] && int === 1) {
str = item
this.transferValue[index] = this.transferValue[index + 1]
this.transferValue[index + 1] = str
int++
return
}
})
this.tableHeadersSort()
this.rightCheckChange([str])
}
},
//dialog关闭
close(val) {
this.rightDefaultChecked = []
this.updisabled = true
this.downdisabled = true
this.open = false
this.$emit('close', val)
}
}
}
</script>
<style lang="scss">
.el-transfer-panel__body.is-with-footer {
padding-bottom: 0px;
margin-bottom: 40px
}
.el-transfer {
.el-transfer-panel {
width: 220px;
.el-transfer-panel__list {
overflow-x: hidden;
overflow-y: scroll;
}
.el-transfer-panel__list::-webkit-scrollbar {
width: 5px;
height: 5px;
}
.el-transfer-panel__list::-webkit-scrollbar-thumb {
border-radius: 10px;
-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
background: rgba(0, 0, 0, 0.2);
}
}
.el-transfer__buttons {
.el-button {
display: block;
padding: 9px 15px;
font-size: 12px;
border-radius: 3px;
}
.el-button+.el-button {
margin-left: 0px
}
}
}
</style>
\ No newline at end of file
This diff is collapsed. Click to expand it.
<template>
<div class="text-tooltip">
<el-tooltip class="item" effect="dark" :disabled="isShowTooltip" :content="content" :placement="placement">
<div class="over-flow" @mouseover="onMouseOver(refName)">
<span :ref="refName">{{ content }}</span>
</div>
</el-tooltip>
</div>
</template>
<script>
export default {
name: 'textTooltip',
props: {
// 显示的文字内容
content: {
type: String,
default: () => {
return ''
}
},
refName: {
type: String,
default: () => {
return ''
}
},
placement: {
type: String,
default: 'top'
}
},
data() {
return {
isShowTooltip: true
}
},
methods: {
onMouseOver(str) {
if (this.$refs[str]) {
const parentWidth = this.$refs[str].parentNode.offsetWidth;
const contentWidth = this.$refs[str].offsetWidth;
// 判断是否开启tooltip功能
if (contentWidth > parentWidth) {
this.isShowTooltip = false;
} else {
this.isShowTooltip = true;
}
}
}
}
}
</script>
<style scoped>
.over-flow {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
</style>
\ No newline at end of file
......@@ -11,16 +11,20 @@ import App from './App'
import store from './store'
import router from './router'
import permission from './directive/permission'
// import i18n from './i18n/index'
import './assets/icons' // icon
import './permission' // permission control
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, download, handleTree, upCase, nowDate } from "@/utils/FedEx";
import { isArray } from "@/utils/validate";
import Pagination from "@/components/Pagination";
// 自定义表格工具扩展
import RightToolbar from "@/components/RightToolbar"
import Table from "@/components/Table"
import Tooltip from "@/components/Tooltip"
import HeaderSetting from "@/components/HeaderSetting"
import tableHeaders from '@/assets/languages/tableHeaders'
import dictLabels from "@/assets/languages/dictLabels.js";
import settings from './settings.js'
// 全局方法挂载
Vue.prototype.parseTime = parseTime
......@@ -32,7 +36,10 @@ Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.upCase = upCase
Vue.prototype.nowDate = nowDate
Vue.prototype.isArray = isArray
Vue.prototype.tableHeaders = tableHeaders
Vue.prototype.dictLabels = dictLabels
Vue.prototype.settings = settings
Vue.prototype.msgSuccess = function (msg) {
this.$message({ showClose: true, message: msg, type: "success" });
......@@ -54,6 +61,8 @@ Vue.prototype.msgInfo = function (msg) {
Vue.component('Pagination', Pagination)
Vue.component('RightToolbar', RightToolbar)
Vue.component('Tables', Table)
Vue.component('Tooltips', Tooltip)
Vue.component('HeaderSetting', HeaderSetting)
Vue.use(permission)
/**
......@@ -65,6 +74,13 @@ Vue.use(permission)
* please remove it before going online! ! !
*/
window.addEventListener("keydown", (code) => {
if (code.keyCode === 13) {
return false
}
});
Vue.use(Element, {
//size: Cookies.get('size') || 'medium' // set element-ui default size
// size: localStorage.getItem('size') || 'medium' // set element-ui default size
......@@ -76,6 +92,5 @@ new Vue({
el: '#app',
router,
store,
// i18n,
render: h => h(App)
})
......
......@@ -16,11 +16,13 @@ router.beforeEach((to, from, next) => {
if (store.getters.roles.length === 0) {
// 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then(() => {
store.dispatch('GetTableHeaders').then(() => {
store.dispatch('GenerateRoutes').then(accessRoutes => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
})
})
}).catch(err => {
Message.error(err)
store.dispatch('LogOut').then(() => {
......@@ -48,7 +50,6 @@ router.beforeEach((to, from, next) => {
window.location.href = settings.logoutURL;//wsso系统跳转
}
}
}
})
......
......@@ -84,7 +84,13 @@ export const constantRoutes = [
component: (resolve) => require(['@/views/allocationConfig/flightAllocConfig/info'], resolve),
name: 'FlightAllocConfigAdd',
meta: { title: '添加航班配舱', icon: 'user', breadcrumb: false }
}
},
{
path: '/weatherTable',
component: (resolve) => require(['@/views/systemLog/dmLog/weatherTable'], resolve),
name: 'weatherTable',
meta: { title: '流水表', icon: 'user' }
},
]
}
]
......
......@@ -58,5 +58,5 @@ module.exports = {
/**
* 版本号
*/
version: 'version:1.3.0'
version: 'version:1.5.0'
}
......
......@@ -17,5 +17,6 @@ const getters = {
defaultRoutes: state => state.permission.defaultRoutes,
sidebarRouters: state => state.permission.sidebarRouters,
filghtAllData: state => state.permission.filghtAllData,
tableHeader: state => state.user.tableHeader
}
export default getters
......
import { login, logout, getInfo } from '@/api/login'
import { getTableHeader } from '@/api/menu'
import { changeCurrentPort } from "@/api/system/user.js";
import { getToken, setToken, removeToken } from '@/utils/auth'
import { Message } from 'element-ui'
......@@ -9,9 +10,10 @@ const user = {
name: '',
avatar: '',
activePortName: '',
portNames:[],
portNames: [],
roles: [],
permissions: []
permissions: [],
tableHeader: null
},
mutations: {
......@@ -28,7 +30,7 @@ const user = {
state.activePortName = activePortName
sessionStorage.setItem('portName', activePortName)
},
SET_PORTNAMES:(state,portNames)=>{
SET_PORTNAMES: (state, portNames) => {
state.portNames = portNames
},
SET_ROLES: (state, roles) => {
......@@ -36,7 +38,10 @@ const user = {
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
}
},
SAVE_TABLEHEADER: (state, table) => {
state.tableHeader = table
},
},
actions: {
......@@ -49,7 +54,7 @@ const user = {
return new Promise((resolve, reject) => {
login(username, password, rememberMe).then(res => {
if(res.code === 200){
if (res.code === 200) {
setToken(res.data)
commit('SET_TOKEN', res.data)
}
......@@ -60,6 +65,25 @@ const user = {
})
},
//获取表头
GetTableHeaders({ commit, state }) {
return new Promise((resolve, reject) => {
getTableHeader().then(res => {
if (res.code === 200) {
commit('SAVE_TABLEHEADER', res.data)
}
resolve(res)
}).catch(err => {
reject(err)
})
})
},
//保存表头
SavetableHeader({ commit, state }, data) {
commit('SAVE_TABLEHEADER', data)
},
// 获取用户信息
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
......@@ -67,16 +91,16 @@ const user = {
const user = res.data.user
const avatar = user.avatar == "" ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
let ports = [];
if(user.portName){
if (user.portName) {
ports = user.portName.split(',');
commit('SET_PORTNAMES',ports)
commit('SET_ACTIVEPORTNAME', sessionStorage.getItem('portName')?sessionStorage.getItem('portName'):state.portNames[0])
}else{
commit('SET_PORTNAMES', ports)
commit('SET_ACTIVEPORTNAME', sessionStorage.getItem('portName') ? sessionStorage.getItem('portName') : state.portNames[0])
} else {
Message({
message: "未找到口岸信息!请确认后再登录",
type: 'error'
})
this.LogOut().then(()=>{
this.LogOut().then(() => {
window.location.href = "https://test-myapps.secure.fedex.com/purpleid/signout/";//wsso系统跳转
})
}
......@@ -98,12 +122,12 @@ const user = {
//切换口岸
changePort({ commit }, portName) {
return new Promise((resolve, reject) => {
changeCurrentPort({ portName: portName }).then(res=>{
if(res.code === 200){
commit('SET_ACTIVEPORTNAME',portName)
changeCurrentPort({ portName: portName }).then(res => {
if (res.code === 200) {
commit('SET_ACTIVEPORTNAME', portName)
}
resolve(res)
}).catch(err=>{
}).catch(err => {
reject(err)
})
})
......
......@@ -177,7 +177,7 @@ export function handleTree(data, id, parentId, children) {
//字符串英文转大写,;转英文;
export function upCase(str) {
let newStr = str.replace(/;/g, ";").toUpperCase();
let newStr = str.replace(/;/g, ";").toUpperCase().trim();
return newStr;
}
......
......@@ -218,7 +218,7 @@ export function getTime(type) {
export function debounce(func, wait, immediate) {
let timeout, args, context, timestamp, result
const later = function() {
const later = function () {
// 据上一次触发时间间隔
const last = +new Date() - timestamp
......@@ -235,7 +235,7 @@ export function debounce(func, wait, immediate) {
}
}
return function(...args) {
return function (...args) {
context = this
timestamp = +new Date()
const callNow = immediate && !timeout
......
<template>
<div>
<el-dialog title="货物配舱" width="80%" :visible.sync="dialogVisible" :close-on-click-modal="false"
<el-dialog title="货物配舱" width="80%" :visible.sync="dialogVisible" :close-on-click-modal="false" :show-close="false"
:append-to-body="true">
<el-divider content-position="left">已选货物信息</el-divider>
<el-table :data="tableData" size="mini" height="200" max-height="200" border stripe highlight-current-row
......@@ -32,7 +32,7 @@
<script>
import { allocationFlight } from "@/api/cargoSelect";
import { MessageBox } from "element-ui";
export default {
props: {
dialogVisible: {
......@@ -109,14 +109,11 @@ export default {
this.loading = false;
//code 200 配舱成功 202 重量已满需要确认 其余code直接输出msg
if (res.code === 200) {
this.$message({
message: "货物配舱成功",
type: "success",
});
this.msgSuccess('货物配舱成功')
this.cleaerForm();
this.$emit("dialogBeforeClose", { close: false, reload: true });
} else if (res.code === 202) {
MessageBox.confirm(res.msg, "提示", {
this.$confirm(res.msg, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
......@@ -125,15 +122,9 @@ export default {
this.formData.overweight = true; //确定继续overweight变为true再次请求接口
allocationFlight(this.formData).then((res) => {
if (res.code === 200) {
this.$message({
message: "货物配舱成功",
type: "success",
});
this.msgSuccess('货物配舱成功')
} else {
this.$message({
message: res.msg,
type: "warning",
});
this.msgWarning(res.msg)
}
});
this.cleaerForm();
......@@ -141,10 +132,7 @@ export default {
})
.catch(() => {
//取消 取消当前配舱
this.$message({
message: "配舱已取消",
type: "success",
});
this.msgSuccess('配舱已取消')
this.cleaerForm();
this.$emit("dialogBeforeClose", {
close: false,
......@@ -153,20 +141,14 @@ export default {
});
} else {
this.loading = false;
this.$message({
message: res.msg,
type: "warning",
});
this.msgWarning(res.msg)
}
}).catch(() => {
this.loading = false;
});
} else {
this.loading = false;
this.$message({
message: "航班号或航班日期不能为空",
type: "warning",
});
this.msgWarning('航班号或航班日期不能为空')
}
},
dialogBeforeClose() {
......@@ -191,7 +173,7 @@ export default {
return this.formData.fltNo;
},
set: function (val) {
this.formData.fltNo = val.toUpperCase();
this.formData.fltNo = this.upCase(val);
},
},
},
......
<template>
<div>
<el-form :inline="true" :model="queryParams" class="form-header" size="medium" label-position="right"
label-width="auto">
<el-form ref="flightAllocForm" :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"></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="queryParams.status" placeholder="状态" clearable>
<el-select v-model="queryParams.status" placeholder="状态">
<el-option label="有效" value="1"></el-option>
<el-option label="停用" value="3"></el-option>
</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" :loading="loading" @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 class="mb20" type="primary" icon="el-icon-plus" size="mini" v-hasPermi="['allocation:alloc:add']"
@click="
$router.push({
name: 'FlightAllocConfigAdd',
params: { handle: 'add' },
......@@ -24,44 +24,27 @@
">添加</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-column prop="status" label="状态" align="center">
<template slot-scope="scope">
<span v-if="scope.row.status === '0'">无效</span>
<span v-if="scope.row.status === '1'">有效</span>
<span v-if="scope.row.status === '2'">配置中</span>
<span v-if="scope.row.status === '3'">停用</span>
</template>
</el-table-column>
<el-table-column prop="createUserName" label="操作人" align="center">
</el-table-column>
<el-table-column prop="createTime" label="更新时间" align="center">
</el-table-column>
<Tables ref="newTables" ductName="FlightAlloc" :data="flyList" :headerData="tableHeaders['flightAlloc']"
:order="true" :totalCount="total" :loading="loading" :limitSize="queryParams.limit"
:limitStart="queryParams.start" :page="curPage" :pageSizes="[20]" :height="tableHeight"
@currentChange="currentChange">
<template slot="optionColumn">
<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)" style="color:#ff4949">删除</el-button>
<el-button type="text" size="mini" icon="el-icon-delete" style="color:#ff4949"
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>
</template>
</Tables>
</div>
</template>
......@@ -80,12 +63,12 @@ export default {
purposeOfFlightNo: "",
status: "1",
start: 0,
limit: 10,
limit: 20,
},
flyList: [],
curPage: 1,
limit: 10,
total: 0,
tableHeight: null,
loading: false,
};
},
......@@ -94,6 +77,9 @@ export default {
this.getList();
}
},
mounted() {
this.tableHeight = window.innerHeight - this.$refs.flightAllocForm.$el.offsetHeight - 200
},
activated() {
this.getList()
},
......@@ -102,7 +88,6 @@ export default {
},
methods: {
getList() {
this.queryParams.limit = this.limit;
if (this.curPage > 1) {
this.queryParams.start = (this.curPage - 1) * this.queryParams.limit;
} else {
......@@ -111,11 +96,7 @@ export default {
this.loading = true;
findFlightNo(this.queryParams).then((response) => {
if (response.code != 200) {
this.$message({
showClose: true,
message: response.msg,
type: "error",
});
this.msgWarning(response.msg)
return;
}
this.flyList = response.data.list;
......@@ -147,11 +128,8 @@ export default {
}).then(() => {
delFlightId(id)
.then((res) => {
this.$message({
message: res.msg,
type: res.code === 200 ? "success" : "warning",
});
this.getList();
res.code === 200 ? this.msgSuccess(res.msg) : this.msgWarning(res.msg)
this.getList()
})
.catch(() => { });
});
......@@ -177,6 +155,12 @@ export default {
.catch(() => { });
});
},
//翻页
currentChange(val) {
this.curPage = val.page
this.queryParams.start = val.start;
this.getList();
}
},
computed: {
purposeOfFlightNo: {
......@@ -184,7 +168,7 @@ export default {
return this.queryParams.purposeOfFlightNo;
},
set: function (val) {
this.queryParams.purposeOfFlightNo = val.toUpperCase();
this.queryParams.purposeOfFlightNo = this.upCase(val);
},
},
},
......
<template>
<div style="margin:30px 20px 20px">
<el-form class="form-header" :model="pageOption" ref="queryForm" label-position="right" label-width="auto"
size="small">
<el-row>
<el-col :span="6">
<el-form-item label="航班号" prop="fltNo">
<el-input class="wid80" v-model="queryfltNo" placeholder="请输入航班号" maxlength="50" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="预审状态" prop="status">
<el-select class="wid80" v-model="pageOption.status" clearable placeholder="不限">
<el-option label="关闭" :value="0">
</el-option>
<el-option label="开启" :value="1">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="mb20" ref="preReviewOptions" style="font-size: 12px; font-weight: 700">
<el-button type="primary" icon="el-icon-search" size="small" :loading="tableLoading" @click="preQuery(1)">搜 索
</el-button>
<el-button type="primary" icon="el-icon-plus" size="small" @click="dialogVisible = true"
v-hasPermi="['allocation:preReview:add']">新增预审航班</el-button>
<el-button type="primary" size="small" icon="el-icon-check" :disabled="selectData.length == 0"
@click="preOption(1)" v-hasPermi="['allocation:preReview:open']">
预审开启</el-button>
<el-button type="primary" size="small" icon="el-icon-close" :disabled="selectData.length == 0"
@click="preOption(0)" v-hasPermi="['allocation:preReview:close']">
预审关闭</el-button>
<el-button type="danger" icon="el-icon-delete" size="small" :disabled="selectData.length == 0"
@click="preOption(2)" v-hasPermi="['allocation:preReview:delete']">删 除
</el-button>
</div>
<Tables ref="preFlight" ductName="preFlight" :selection="true" :selectFixed="false" :order='true'
:height="tableHeight" :data="flightData" :headerData="tableHeaders" :page="pageOption.page" :pageSizes="[20]"
:totalCount="total" :loading="tableLoading" @currentChange="currentChange"
layout="total,prev, pager, next, jumper, ->" @tableSelect="tableSelection" @tableSelectAll="tableSelectAll">
</Tables>
<el-dialog title="新增预审航班" width="20%" :visible.sync="dialogVisible" :close-on-click-modal="false"
:show-close="false" :append-to-body="true">
<el-form ref="addForm" :model="newPre" label-width="auto" label-position="left" size="small" :rules="rules"
@submit.native.prevent>
<el-form-item label="航班号" prop="addFlitNo">
<el-input type="textarea" v-model="fltNo" :rows="7" maxlength="255" show-word-limit placeholder="请输入航班号,用;分隔">
</el-input>
</el-form-item>
</el-form>
<div slot="footer">
<el-button type="primary" :loading="loading" @click="submit">确 定</el-button>
<el-button @click="close">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getpreAudit, addPreFlight, updatePreStatus } from '@/api/system/preReview.js'
export default {
name: "PreReviewFlight",
data() {
return {
pageOption: {
fltNo: undefined,
page: 1,
size: 20
},//查询条件
tableHeaders: [
{
columnChineseName: "航班号",
columnName: "fltNo",
columnWidth: "",
status: 1
},
{
columnChineseName: "预审状态",
columnName: "status",
columnWidth: "",
status: 1
},
],//表头
flightData: [],//表格数据
selectData: [],//选中数据
newPre: {
addFlitNo: '',
},//新增航班
rules: {
fltNo: [
{
required: true,
message: "航班号不能为空",
trigger: "blur",
}
]
},//表单规则
dialogVisible: false,
total: 0,
tableHeight: null,
loading: false,
tableLoading: false,
};
},
created() {
this.preQuery(1)
},
activated() {
if (this.flightData.length > 0) {
this.preQuery()
}
},
mounted() {
this.tableHeight = window.innerHeight - this.$refs.preReviewOptions.offsetHeight - 300
},
methods: {
//搜索
preQuery(val) {
this.tableLoading = true
this.selectData = []
if (val === 1) {
this.pageOption.page = 1
}
getpreAudit(this.pageOption).then(res => {
this.tableLoading = false
if (res.code === 200) {
this.flightData = res.data.list
this.total = res.data.total
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.tableLoading = false
console.log(err)
})
},
//保存
submit() {
this.$refs["addForm"].validate(val => {
if (val) {
this.loading = true
let fltList = []
this.newPre.addFlitNo.split(';').forEach(item => {
if (item != '') {
fltList.push(item)
}
})
addPreFlight(fltList).then(res => {
this.loading = false
if (res.code === 200) {
this.msgSuccess(res.msg)
this.close()
this.preQuery(1)
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.loading = false
console.log(err)
})
}
})
},
//预审状态修改
preOption(val) {
this.$confirm(val === 2 ? '是否要删除?' : val === 0 ? '是否要关闭预审' : '是否要开启预审', '系统提示', {
closeOnClickModal: false,
confirmButtonText: '确定',
cancelButtonText: "取消",
type: 'warning'
}).then(() => {
let idList = []
this.selectData.forEach(item => {
idList.push(item.id)
})
updatePreStatus({ ids: idList, status: val }).then(res => {
if (res.code === 200) {
this.msgSuccess(val === 2 ? '删除成功' : val === 0 ? '关闭成功' : '开启成功')
this.preQuery(1)
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
}).catch()
},
//关闭弹窗
close() {
this.dialogVisible = false
this.newPre.addFlitNo = ''
},
//翻页
currentChange(val) {
this.pageOption.page = val.page
this.preQuery()
},
//多选
tableSelection(val) {
this.selectData = val.selection
},
//全选
tableSelectAll(val) {
this.selectData = val
},
},
computed: {
queryfltNo: {
get: function () {
return this.pageOption.fltNo;
},
set: function (val) {
this.pageOption.fltNo = this.upCase(val);
},
},
fltNo: {
get: function () {
return this.newPre.addFlitNo;
},
set: function (val) {
let reg = /^([0-9A-Za-z]{0,50}(\;[0-9a-zA-Z]{0,50})*)$/
if (reg.test(val)) {
this.newPre.addFlitNo = this.upCase(val);
}
},
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
</style>
<template>
<div>
<el-form class="form-header" :model="queryParams" label-position="right" label-width="auto" size="medium">
<el-form class="form-header" :model="queryParams" label-position="right" label-width="auto" size="small">
<el-row>
<el-col :span="6">
<el-form-item label="航班日期从" prop="fltDateStart">
......@@ -23,25 +23,25 @@
</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" :maxlength="12000"></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>
</el-form-item>
</el-col>
</el-row>
<el-row>
<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>
</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="4"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-switch v-model="queryParams.reExport" active-color="#13ce66" active-text="重新导出" style="padding-left: 35px">
</el-switch>
......@@ -53,7 +53,6 @@
}}</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" />
<el-table-column :show-overflow-tooltip="true" label="品牌描述" align="center" prop="nameDescription" />
......@@ -159,10 +158,7 @@ export default {
this.total = response.data.totalCount;
this.loading = false;
if (response.data.list.length == 0) {
this.$message({
message: "未查询到数据",
type: "warning",
});
this.msgWarning('未查询到数据')
}
} else {
this.msgError(response.msg);
......@@ -176,7 +172,7 @@ export default {
return this.queryParams.fltNo;
},
set: function (val) {
this.queryParams.fltNo = val.toUpperCase();
this.queryParams.fltNo = this.upCase(val);
},
},
siteName: {
......@@ -184,7 +180,7 @@ export default {
return this.queryParams.siteName;
},
set: function (val) {
this.queryParams.siteName = val.toUpperCase();
this.queryParams.siteName = this.upCase(val);
},
},
ursa: {
......@@ -192,7 +188,7 @@ export default {
return this.queryParams.ursa;
},
set: function (val) {
this.queryParams.ursa = val.toUpperCase();
this.queryParams.ursa = this.upCase(val);
},
},
},
......
<template>
<div style="margin: 20px">
<el-form :inline="true" :model="form" class="demo-form-inline" size="small">
<el-form :inline="true" class="demo-form-inline" size="small">
<el-form-item>
<el-upload action="/caPreReviewImport/importFlight" name="file" :http-request="uploadExcel"
:on-remove="handleRemove" :limit="1" :on-exceed="handleExceed" :file-list="fileList" accept=".xlsx"
......@@ -15,7 +15,7 @@
<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"
<el-table ref="filterTable" class="mt20" :data="tableData" v-loading="loading" style="width: 100%" size="small"
border>
<el-table-column label="行号" prop="line" width="50" align="center">
</el-table-column>
......@@ -49,19 +49,13 @@ export default {
return {
// 遮罩层
loading: false,
flightType: [],
form: {
type: "",
region: "",
},
fileList: [],
tableData: [],
};
},
methods: {
downloadTempleate() {
let fileName = "航班预审导入模板.xlsx";
let fileName = "航班预审回执导入模板.xlsx";
downLoadTemplate().then((res) => {
if (res) {
const blob = new Blob([res]);
......@@ -83,7 +77,7 @@ export default {
//上传excel
const file = option.file;
this.loading = true;
importcaPreReview(file, this.form.type).then((res) => {
importcaPreReview(file, '').then((res) => {
this.loading = false;
if (res.code != 200) {
if (res.code == 603) {
......@@ -92,7 +86,7 @@ export default {
type: "warning",
});
} else {
this.$message.error(res.msg);
this.$message.warning(res.msg);
this.tableData = res.data;
}
} else {
......
......@@ -23,7 +23,7 @@
<div style="font-size: 12px; font-weight: 700">
提示:<span style="color: #1890ff">以下为所提交的数据或出错信息</span>
</div>
<el-table ref="filterTable" :data="tableData" style="margin-top: 20px" size="small" border>
<el-table ref="filterTable" class="mt20" :data="tableData" size="small" border>
<el-table-column label="行号" prop="line" width="50" align="center">
</el-table-column>
<el-table-column label="错误信息" prop="errorMessage" width="200">
......@@ -60,6 +60,15 @@ export default {
};
},
methods: {
typeData() {
filghtKindData().then((response) => {
if (response.code != 200) {
this.msgError(response.msg)
}
this.flightType = response.data;
this.form.type = response.data[0].code;
});
},
downloadTempleate() {
let downloadType = "";
let fileName = "";
......@@ -108,7 +117,7 @@ export default {
type: "warning",
});
} else {
this.$message.error(res.msg);
this.$message.warning(res.msg);
this.tableData = res.data;
}
} else {
......@@ -133,17 +142,11 @@ export default {
},
},
created() {
filghtKindData().then((response) => {
if (response.code != 200) {
this.$message({
message: response.msg,
type: "error",
});
}
this.flightType = response.data;
this.form.type = response.data[0].code;
});
this.typeData()
},
activated() {
this.typeData()
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
......
......@@ -47,7 +47,8 @@
</el-form-item>
</el-col>
</el-row>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button type="primary" icon="el-icon-search" size="mini" :loading="loading" @click="handleQuery">搜索
</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['base:flightInfo:add']">
新增</el-button>
......@@ -70,7 +71,7 @@
@sortChange="sortChange" @sizeChange="sizeChange">
<template slot="optionColumn">
<el-table-column v-if="findAllFltDatList.length > 0" label="操作" align="center"
class-name="small-padding fixed-width" fixed="right">
class-name="small-padding fixed-width" :fixed="tableHeader.length > 10 ? 'right' : false">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['base:flightInfo:update']">修改</el-button>
......@@ -109,7 +110,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="航班路线" prop="route">
<el-input class="wid80" v-model="form.route" placeholder="请输入航班路线(XXX-XXX字母大写)" />
<el-input class="wid80" v-model="form.route" placeholder="请输入航班路线(XXX-XXX字母大写,多组用;分割)" />
</el-form-item>
</el-col>
</el-row>
......@@ -157,20 +158,31 @@
v-model="form.extraWeightPercent"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="是否开启高低价" prop="highLowPriceFlg">
<el-switch class="wid80" @change="LowHighAvailable" v-model="form.highLowPriceFlg" :active-value="1"
:inactive-value="0" active-color="#13ce66">
</el-switch>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="该航班预审状态:">
<el-tag v-if="preAudit" :type="preAudit == '开启' ? 'success' : 'info'" effect="dark">{{ preAudit }}
</el-tag>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否预审" prop="isNeedRequired">
<el-switch class="wid80" :disabled="true" v-model="form.isNeedRequired" :active-value="1"
:inactive-value="0" active-color="#13ce66">
</el-switch>
<el-form-item label="今日航班预审状态" prop="isNeedRequired">
<el-select class="wid80" v-model="form.isNeedRequired" placeholder="">
<el-option label="未设置" :value="2">
</el-option>
<el-option label="开启" :value="1">
</el-option>
<el-option label="关闭" :value="0">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -250,6 +262,7 @@ import {
updateStatusBatch,
updateAutoPushBatch,
} from "@/api/findAllFltData";
import { getpreAudit } from '@/api/system/preReview.js'
export default {
name: "FlightInformationMaintenance",
......@@ -268,7 +281,9 @@ export default {
fltNo: undefined, //航班号,要大写
},
//表单参数
form: {},
form: {
isNeedRequired: 2
},
//表单校验
rules: {
fltNo: [
......@@ -306,7 +321,7 @@ export default {
// trigger: "blur",
// },
// {
// pattern: /^([A-Z]{3,4})(\-[A-Z]{3,4})+$/,
// pattern: /^(([\~A-Z]{3,4})(\-[A-Z]{3,4})+)(;{1,1}(([\~A-Z]{3,4})(\-[A-Z]{3,4})+)){0,}$/,
// message: "请输入正确得航班线路"
// }
// ]
......@@ -396,6 +411,8 @@ export default {
ids: [],
//目的航班数据
sourceFlightAndFlightDate: [],
//航班预审状态
preAudit: null,
//高价百分比是否打开
ishighPriceWeightPercent: true,
//遮罩层
......@@ -456,6 +473,7 @@ export default {
this.form.fltNo != ""
) {
this.form.fltNo = this.form.fltNo.toUpperCase();
this.perStatus(this.form.fltNo)
findFltCommonConf(this.form).then((response) => {
if (response.code == 200) {
//额外增重百分比:根据已存在的相同航班号对应的最新值进行设置,如果无相同航班号,按照默认设置为0,不可编辑
......@@ -486,15 +504,6 @@ export default {
//this.form.highLowPriceFlg = true;
}
//是否预审:根据已存在的相同航班号对应的最新值进行设置,如果无相同航班号,按照默认设置‘是否预审’ 为否,不可编辑;
if (
response.data != null &&
response.data.isNeedRequired != null &&
response.data.isNeedRequired != undefined
) {
this.form.isNeedRequired = response.data.isNeedRequired;
} else {
this.form.isNeedRequired = 0;
}
//高/低价百分比:根据已存在的相同航班号对应的最新值进行设置,如果无相同航班号,按照默认设置‘高价百分比’60%,‘低价百分比’40%,不可编辑
if (
response.data != null &&
......@@ -538,6 +547,18 @@ export default {
}
});
},
//获取航班预审状态
perStatus(val) {
getpreAudit({ fltNo: val, page: 1, size: 20 }).then(res => {
if (res.code === 200) {
this.preAudit = res.data.list.length == 0 ? '关闭' : res.data.list[0].status == 0 ? '关闭' : res.data.list[0].status == 1 ? '开启' : ''
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
},
/** 航班信息维护查询*/
findAllFltData() {
this.ids = [];
......@@ -569,6 +590,7 @@ export default {
handleAdd() {
this.reset();
this.findFltConditionData();
this.preAudit = null;
this.open = true;
this.title = "添加航班信息";
this.form.id = null;
......@@ -685,6 +707,7 @@ export default {
handleUpdate(row) {
this.reset();
this.findFltConditionData();
this.perStatus(row.fltNo)
this.open = true;
this.title = "修改航班信息";
//航班号
......@@ -789,7 +812,7 @@ export default {
},
//表单重置
reset() {
this.form = {};
this.form = { isNeedRequired: 2 };
this.resetForm("form");
},
//取消按钮
......@@ -896,6 +919,7 @@ export default {
//每页长度
sizeChange(val) {
this.queryParams.limitSize = val;
this.queryParams.pageNum = 1
this.findAllFltData();
},
setClose() {
......
<template>
<div class="login" :style="display">
<el-form
ref="loginForm"
:model="loginForm"
:rules="loginRules"
class="login-form"
>
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">IMAC后台管理系统</h3>
<el-form-item prop="username">
<el-input
v-model="loginForm.username"
type="text"
auto-complete="off"
placeholder="账号"
>
<svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
<el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
type="password"
auto-complete="off"
placeholder="密码"
@keyup.enter.native="handleLogin"
>
<svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
<el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码"
@keyup.enter.native="handleLogin">
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<!-- <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> -->
<el-form-item style="width: 100%; marginTop: 44px">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width: 100%"
@click.native.prevent="handleLogin"
>
<el-button :loading="loading" size="medium" type="primary" style="width: 100%"
@click.native.prevent="handleLogin">
<span v-if="!loading">登 录</span>
<span v-else>登 录 中...</span>
</el-button>
......@@ -83,12 +55,12 @@ export default {
},
loading: false,
redirect: undefined,
display: "display:none",
display: "display:flex",
};
},
watch: {
$route: {
handler: function(route) {
handler: function (route) {
this.redirect = route.query && route.query.redirect;
},
immediate: true
......@@ -130,7 +102,7 @@ export default {
this.$store
.dispatch("Login", this.loginForm)
.then(() => {
this.$router.push({ path: this.redirect || "/" }).catch(() => {});
this.$router.push({ path: this.redirect || "/" }).catch(() => { });
})
.catch(() => {
this.loading = false;
......@@ -145,13 +117,14 @@ export default {
<style rel="stylesheet/scss" lang="scss">
.login {
display: none;
display: flex;
justify-content: center;
align-items: center;
height: 100%;
background-image: url("../assets/images/login-background.jpg");
background-size: cover;
}
.title {
margin: 0px auto 30px auto;
text-align: center;
......@@ -163,32 +136,39 @@ export default {
background: #ffffff;
width: 400px;
padding: 25px 25px 5px 25px;
.el-input {
height: 38px;
input {
height: 38px;
}
}
.input-icon {
height: 39px;
width: 14px;
margin-left: 2px;
}
}
.login-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
}
.login-code {
width: 33%;
height: 38px;
float: right;
img {
cursor: pointer;
vertical-align: middle;
}
}
.el-login-footer {
height: 40px;
line-height: 40px;
......@@ -201,6 +181,7 @@ export default {
font-size: 12px;
letter-spacing: 1px;
}
.login-code-img {
height: 38px;
}
......
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
<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-row>
<el-col :span="12">
<el-form-item label="菜单名称" prop="">
<!-- <el-input
placeholder="请输入权限名"
:disabled="menuFormDisabled"
v-model="menuData.userName"
size="mini"
></el-input> -->
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="菜单路由" prop="">
<!-- <el-input
placeholder="请输入权限名"
:disabled="menuFormDisabled"
v-model="menuData.userName"
size="mini"
></el-input> -->
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="组件名称" prop="">
<!-- <el-input
placeholder="请输入权限名"
:disabled="menuFormDisabled"
v-model="menuData.userName"
size="mini"
></el-input> -->
</el-form-item>
</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-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="图标选择" prop="">
<iconSelect @selected="selected"></iconSelect>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="权限设置" prop="">
<el-col :span="6">
<el-radio label="页面" size="medium"></el-radio>
</el-col>
<el-col :span="6">
<el-radio label="按钮" size="medium"></el-radio>
</el-col>
<el-col :span="24">
<el-card shadow="never">
<el-input placeholder=""></el-input>
</el-card>
</el-col>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer">
<el-button @click="handleClose">取 消</el-button>
<el-button type="primary" @click="submit">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import iconSelect from "@/components/IconSelect";
export default {
components: {
iconSelect,
},
props: {
drawerTitle: {
type: String,
default: "",
},
menuFormDisabled: {
type: Boolean,
default: false,
},
dialogVisible: {
type: Boolean,
default: false,
},
menuData: {
type: Object,
default: null,
},
},
data() {
return {
menuForm: {},
rules: {}
};
},
updated() {
this.menuForm = this.menuData;
},
watch: {
dialogVisible(val, oldVal) {
if (val) {
this.menuForm = this.menuData;
}
}
},
methods: {
handleClose() {
this.$emit("handleClose", false);
},
selected(val) {
console.log(val);
},
submit() { },
},
};
</script>
<style>
</style>
\ No newline at end of file
......@@ -12,7 +12,7 @@
: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">
:align="item.align" header-align="center" :width="item.width" :formatter="formatter">
<template slot-scope="scope">
<el-tag :type="scope.row.menuType === 'B' ? '' : 'success'" disable-transitions>{{ scope.row.menuType ===
"B" ? "按钮" : "菜单"
......@@ -20,10 +20,9 @@
</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">
header-align="center" :width="item.width" :formatter="formatter">
</el-table-column>
</template>
<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>
......@@ -39,55 +38,15 @@
</template>
</el-table-column>
</el-table>
<!-- <Tables
ref="newTable"
:data="data"
:headerData="tableHeader"
size="medium"
rowKey="id"
:defaultExpandAll="true"
height="auto"
@tableSelect="tableSelect"
@tableSelectAll="tableSelectAll"
@SelectChange="SelectChange"
>
<el-table-column
header-align="center"
align="center"
label="操作"
width="auto"
>
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="menuStatus(scope)">{{
scope.menuStatus == 0 ? "停用" : "启用"
}}</el-button>
<el-button type="danger" size="mini" @click="removeMenu(scope)"
>删除菜单</el-button
>
</template>
</el-table-column>
</Tables> -->
<!-- <Drawer
:dialogVisible="drawer"
:drawerTitle="drawerTitle"
:menuFormDisabled="menuFormDisabled"
:menuData="menuData"
@handleClose="handleClose"
></Drawer> -->
</div>
</template>
<script>
import { getAllAuth, updateStatus } from "@/api/system/user.js";
import dictLabels from "@/assets/languages/dictLabels.js";
import Drawer from "./drawer.vue";
import { MessageBox } from "element-ui";
export default {
name: "MenuConfig",
components: {
Drawer,
},
data() {
return {
drawer: false,
......@@ -102,35 +61,30 @@ export default {
value: "title",
width: "",
align: "left",
sorTable: false,
},
{
name: "菜单类型",
value: "menuType",
width: "100",
align: "center",
sortable: false,
},
{
name: "权限标识",
value: "permissionKey",
width: "auto",
align: "left",
sortable: false,
},
{
name: "菜单状态",
value: "status",
width: "100",
align: "center",
sorTable: false,
},
{
name: "菜单路由",
value: "path",
width: "auto",
align: "left",
sorTable: false,
},
],
};
......@@ -153,19 +107,16 @@ export default {
this.drawerTitle = "新增菜单";
this.menuFormDisabled = false;
},
//关闭
handleClose(val) {
this.drawer = val;
},
buttonClick(row) {
this.menuData = row.row;
this.drawer = true;
this.drawerTitle = "查看/修改";
this.menuFormDisabled = true;
},
//表格数据
menuAll() {
this.loading = true;
......@@ -175,48 +126,34 @@ export default {
if (res.code === 200) {
res.data.length > 0
? (this.data = res.data)
: this.$message({
message: "数据为空",
type: "warning",
});
: this.msgWarning('数据为空')
} else {
this.$message({
message: res.msg,
type: "warning",
});
this.msgWarning(res.msg)
}
})
.catch(() => {
this.loading = false;
});
},
//菜单状态改变
statusUpdate(data) {
updateStatus(data)
.then((res) => {
if (res.code === 200) {
this.menuAll();
this.$message({
message: "操作成功",
type: "success",
});
this.msgSuccess('操作成功')
location.reload();
} else {
this.$message({
message: res.msg,
type: "warning",
});
this.msgWarning(res.msg)
}
})
.catch((err) => {
console.log(err);
});
},
//菜单开启关闭
menuStatus(row) {
MessageBox.confirm(
this.$confirm(
row.row.status == 1 ? "是否要关闭此菜单" : "是否要启用此菜单",
"提示",
{
......@@ -233,10 +170,9 @@ export default {
})
.catch(() => { });
},
//菜单删除
removeMenu(row) {
MessageBox.confirm("是否要删除此菜单", "提示", {
this.$confirm("是否要删除此菜单", "提示", {
confirmButtonText: "确定删除",
cancelButtonText: "取消",
type: "warning",
......@@ -249,7 +185,6 @@ export default {
})
.catch(() => { });
},
formatter(row, column, cellValue, index) {
if (dictLabels["menu"][column.property]) {
if (dictLabels["menu"][column.property][cellValue]) {
......
......@@ -2,7 +2,8 @@
<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-form ref="roleForm" :model="roleForm" label-width="auto" :rules="rules" size="mini" style="margin: 10px"
@submit.native.prevent>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="角色名:" prop="name">
......@@ -14,22 +15,10 @@
<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>
v-if="!roleFormDisabled" clearable maxlength="255" show-word-limit></el-input>
<div v-else>{{ roleData.remark }}</div>
</el-form-item>
</el-col>
<!-- <el-col :span="24">
<el-form-item label="角色状态:" prop="valid">
<el-switch
v-model="roleForm.valid"
:active-value="1"
:inactive-value="2"
active-color="#13ce66"
inactive-color="#ff4949"
:disabled="roleFormDisabled"
></el-switch>
</el-form-item>
</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"
......@@ -91,26 +80,13 @@ export default {
},
};
},
created() {
//权限列表
getAllAuth()
.then((res) => {
if (res.code === 200) {
this.treeData = this.treeDataInfo(res.data);
} else {
this.msgWarning(res.msg)
}
})
.catch((err) => {
console.log(err);
});
},
watch: {
roleFormDisabled() {
this.treeData = this.treeDisabled(this.treeData);
},
drawer(val, oldVal) {
if (val) {
this.allAuth()
this.roleForm = this.roleData;
} else {
this.loading = false;
......@@ -118,12 +94,25 @@ export default {
},
},
methods: {
//权限列表
allAuth() {
getAllAuth()
.then((res) => {
if (res.code === 200) {
this.treeData = this.treeDataInfo(res.data);
} else {
this.msgWarning(res.msg)
}
})
.catch((err) => {
console.log(err);
});
},
//关闭
handleClose() {
this.$refs["roleForm"].clearValidate();
this.$emit("handleClose", false);
},
//提交
submit() {
let formData = {};
......@@ -151,7 +140,6 @@ export default {
console.log(err);
});
},
//权限结构禁用
treeDisabled(val) {
let data = [];
......@@ -164,7 +152,7 @@ export default {
});
return data;
},
//权限结构数据整理
treeDataInfo(val) {
let data = [];
val.forEach((item) => {
......
<template>
<div class="roleConfig">
<el-form ref="selectionRoleForm" label-width="auto" style="margin: 20px">
<el-form ref="selectionRoleForm" label-width="auto" style="margin: 20px" @submit.native.prevent>
<el-row :gutter="50">
<el-col :span="6">
<el-form-item label="角色名称">
......
......@@ -2,7 +2,8 @@
<div class="userDrawer">
<el-drawer :title="drawerTitle" :visible.sync="drawer" direction="rtl" size="40%" :close-on-click-modal="false"
:wrapperClosable="false" :show-close="false">
<el-form ref="userForm" :model="userForm" label-width="auto" :rules="rules" style="margin: 10px">
<el-form ref="userForm" :model="userForm" label-width="auto" :rules="rules" style="margin: 10px"
@submit.native.prevent>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="员工号:" prop="loginName">
......@@ -63,6 +64,7 @@
style="width: 100%" multiple clearable>
<el-option v-for="item in portNameList" :label="item.englishName" :value="item.englishName"
:key="item.id">
<Tooltips :content="item.englishName" :refName="item.code"></Tooltips>
</el-option>
</el-select>
</el-form-item>
......@@ -70,14 +72,21 @@
<el-col :span="24">
<el-form-item label="所属角色:" prop="roleIds">
<el-checkbox-group v-model="roleid" :disabled="userFormDisabled" @change="change">
<el-checkbox v-for="item in roleList" :label="item.id" :key="item.id">{{ item.name }}</el-checkbox>
<el-row>
<el-col :span="4" v-for="item in roleList" :key="item.id">
<el-checkbox :label="item.id">
{{ item.name }}
<Tooltips :content="item.englishName" :refName="item.code"></Tooltips>
</el-checkbox>
</el-col>
</el-row>
</el-checkbox-group>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注:" prop="remark">
<el-input type="textarea" v-model="userForm.remark" placeholder="备注" :disabled="userFormDisabled"
v-if="!userFormDisabled" size="small" clearable></el-input>
v-if="!userFormDisabled" size="small" clearable maxlength="255" show-word-limit></el-input>
<div v-else>{{ userForm.remark }}</div>
</el-form-item>
</el-col>
......
<template>
<div>
<el-form ref="selectionUserForm" label-width="auto" style="margin: 20px">
<el-form ref="selectionUserForm" label-width="auto" style="margin: 20px" @submit.native.prevent>
<el-row :gutter="50">
<el-col :span="6">
<el-form-item label="用户姓名">
......
<template>
<div>
<el-form ref="dmLogForm" class="form-header" :model="selectForm" label-width="auto" size="small">
<el-row type="flex" style="flex-wrap: wrap !important">
<el-col :span="6">
<el-form-item label="ACCS原航班号">
<el-input v-model.trim="fltNo" class="formItem" placeholder="请输入航班号" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="数据接收日期" prop="createTime">
<el-date-picker v-model="selectForm.createTime" class="formItem" type="date" placeholder="选择日期"
:value-format="valueFormat" clearable>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运单号">
<el-input v-model="selectForm.awbNbr" class="formItem" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="处理状态级别">
<el-select v-model="selectForm.status" class="formItem" placeholder="不限" clearable>
<el-option label="未处理" value="0"></el-option>
<el-option label="处理成功" value="1"></el-option>
<el-option label="已处理" value="2"></el-option>
<el-option label="处理失败" value="3"></el-option>
<el-option label="处理中" value="9"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="ACCS原航班日期">
<el-date-picker v-model="selectForm.fltDate" class="formItem" type="date" placeholder="选择日期"
:value-format="valueFormat" clearable>
</el-date-picker>
</el-form-item>
</el-col>
<!-- <el-col :span="6">
<el-form-item label="口岸代码">
<el-select v-model="selectForm.portName" class="formItem" placeholder="不限" clearable>
<el-option v-for="item in portList" :label="item.englishName" :value="item.englishName" :key="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col> -->
<el-col :span="6">
<el-form-item label="回推ACCS结果">
<el-select v-model="selectForm.sendLogSendResult" class="formItem" placeholder="不限" clearable>
<el-option label="未推" value="0">
</el-option>
<el-option label="推送成功" value="1">
</el-option>
<el-option label="推送失败" value="2">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<div class="ml20" style="display: flex">
<el-button type="primary" size="small" icon="el-icon-search" :loading="loading" @click="selectDMData(0)">查询
</el-button>
</div>
</el-form>
<Tables ref="dmLogTables" ductName="logDmData" :order="true" :data="data" :headerData="tableHeader"
tableAlign="center" :showOverflowTooltip="false" :height="tableHeight" :page="selectForm.page"
:limitSize="selectForm.size" :pageSizes="[100]" :totalCount="total" :loading="loading"
@currentChange="currentChange" @sortChange="sortChange">
<template v-slot:awbNbr="scope">
<el-link type="primary" @click="gotoWeatherTable(scope.row)">
{{
scope.row.awbNbr
}}<i class="el-icon-link"></i> </el-link>
</template>
<template v-slot:flightFltNo="scope">
<el-link v-if="scope.row.allocDimId" type="primary"
@click="$router.push({ name: 'FlightAllocConfigInfo', params: { handle: 'DMdetail', id: scope.row.allocDimId } })">
{{
scope.row.flightFltNo
}}<i class="el-icon-link"></i> </el-link>
<span v-else>{{ scope.row.flightFltNo }}</span>
</template>
</Tables>
</div>
</template>
<script>
import dictLabels from "../../../assets/languages/dictLabels.js";
import { portNameList } from "@/api/system/user.js";
import { getDmDataList, getDmFlowInformation } from "@/api/system/logConfig.js";
export default {
name: "DmLog",
data() {
return {
selectForm: {
fltNo: undefined,
createTime: undefined,
page: 1,
size: 100,
},
data: [],
tableHeader: this.tableHeaders['DM'],
portList: [],
rules: {
createTime: [
{
required: true,
message: "创建日期不能为空",
trigger: "blur",
},
],
},
pickerOptions: {},
selectDate: null,
createTimes: [],
total: 0,
tableHeight: null,
loading: false,
valueFormat: "yyyy-MM-dd",
};
},
created() {
this.selectForm.createTime = this.nowDate();
this.getPort()
},
activated() {
this.selectDMData();
},
deactivated() {
this.data = [];
},
mounted() {
this.tableHeight =
window.innerHeight - this.$refs.dmLogForm.$el.offsetHeight - 130;
},
methods: {
//获取口岸
async getPort() {
portNameList().then((res) => {
if (res.code === 200) {
this.portList = res.data;
} else {
this.msgWarning('查询条件' + res.msg)
}
});
if (this.$store.state.tagsView.cachedViews.length == 0) {
this.selectDMData();
}
},
//数据查询
async selectDMData(val) {
this.data = [];
this.loading = true;
if (val === 0) {
this.selectForm.page = 1;
}
getDmDataList(this.selectForm).then((res) => {
this.loading = false;
if (res.code === 200) {
if (res.data.total === 0) {
this.msgWarning('未查询到数据')
} else {
this.data = res.data.list;
this.total = res.data.total;
}
} else {
this.msgWarning(res.msg)
}
});
},
//跳转流水
gotoWeatherTable(val) {
getDmFlowInformation('accsId=' + val.dmAccsId).then(res => {
if (res.code === 200) {
if (res.data.list.length > 0) {
this.$router.push({ name: 'weatherTable', params: { data: res.data.list } })
} else {
this.msgWarning('未查询到该条数据的流水')
}
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
},
//分页
currentChange(val) {
this.selectForm.page = val.page;
this.selectDMData();
},
//数据处理
statusData(val) {
if (dictLabels["logDmData"]["status"][val]) {
return dictLabels["logDmData"]["status"][val];
} else {
return val;
}
},
//排序
sortChange(val) {
let data = [];
let nullData = [];
this.data.forEach((item) => {
if (item[val.prop]) {
data.push(item);
} else {
nullData.push(item);
}
});
data = data.sort(this.$refs.dmLogTables.compare(val.prop, val.order));
if (val.order != "ascending") {
this.data = nullData.concat(data);
} else {
this.data = data.concat(nullData);
}
this.data.forEach((item, index = 0) => {
item.index = index;
});
},
},
computed: {
fltNo: {
get: function () {
return this.selectForm.fltNo;
},
set: function (val) {
this.selectForm.fltNo = this.upCase(val);
},
},
},
};
</script>
<style scoped>
.tags {
display: flex;
margin: 0 20px 0 auto;
color: black;
line-height: 32px;
}
.tagTip {
margin: 0 5px;
}
</style>
\ No newline at end of file
<template>
<div style="padding:10px">
<el-card header="流水信息">
<Tables ref="weatherTable" ductName="weatherTable" :order="true" :data="data" :headerData="tableHeader"
:showOverflowTooltip="false" :height="tableHeight" :page="selectData.page" :limitSize="selectData.size"
:pageSizes="[100]" :pagination="false" :loading="loading" @currentChange="currentChange">
</Tables>
<div class="ml20 mt20">
<el-button size="small" @click="close">返 回</el-button>
</div>
</el-card>
</div>
</template>
<script>
import { getDmFlowInformation } from "@/api/system/logConfig.js";
export default {
name: 'weatherTable',
data() {
return {
data: [],
tableHeader: this.tableHeaders['weatherTable'],
selectData: {
page: 1,
size: 100,
},
loading: false,
tableHeight: null
}
},
created() {
if (this.$route.params.data) {
this.data = this.$route.params.data
sessionStorage.setItem('accsid', this.data[0].accsId)
} else {
this.getWeatherTable()
}
},
activated() {
if (this.$route.params.data) {
this.data = this.$route.params.data
sessionStorage.setItem('accsid', this.data[0].accsId)
} else {
this.getWeatherTable()
}
},
methods: {
//accsid获取流水
getWeatherTable() {
this.loading = true
let accsid = ''
accsid = sessionStorage.getItem('accsid')
getDmFlowInformation('accsId=' + accsid).then(res => {
this.loading = false
if (res.code === 200) {
this.data = res.data.list
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.loading = false
console.log(err)
})
},
//返回
close() {
this.$store.state.tagsView.visitedViews.splice(
this.$store.state.tagsView.visitedViews.findIndex(
(item) => item.path === this.$route.path
),
);
sessionStorage.removeItem('accsid')
this.$router.push({ name: 'DmLog' })
},
//翻页
currentChange(val) { },
}
}
</script>
<style>
</style>
\ No newline at end of file