Showing
22 changed files
with
304 additions
and
536 deletions
src/assets/icons/svg/plane.svg
0 → 100644
| 1 | +<?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="1640931184925" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5236" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M599.06048 831.309824l12.106752-193.404928 372.860928 184.430592L984.02816 710.206464 617.906176 367.33952 617.906176 151.638016c0-56.974336-46.188544-143.064064-103.158784-143.064064-56.974336 0-103.158784 86.089728-103.158784 143.064064L411.588608 367.33952 45.461504 710.206464l0 112.129024 366.660608-184.430592 14.999552 209.27488c0 5.05344 0.594944 9.892864 1.124352 14.749696l-66.591744 60.348416 0 66.587648 153.986048-50.879488 2.43712-0.80896 147.439616 51.688448 0-66.587648-68.758528-62.253056L599.06048 831.309824z" p-id="5237"></path></svg> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -13,7 +13,7 @@ | ... | @@ -13,7 +13,7 @@ |
| 13 | <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"> | 13 | <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"> |
| 14 | <div class="avatar-wrapper"> | 14 | <div class="avatar-wrapper"> |
| 15 | <img :src="avatar" class="user-avatar"> | 15 | <img :src="avatar" class="user-avatar"> |
| 16 | - <i class="el-icon-caret-bottom" /> | 16 | + <!-- <i class="el-icon-caret-bottom" /> --> |
| 17 | </div> | 17 | </div> |
| 18 | <el-dropdown-menu slot="dropdown"> | 18 | <el-dropdown-menu slot="dropdown"> |
| 19 | <router-link to="/user/profile"> | 19 | <router-link to="/user/profile"> | ... | ... |
| ... | @@ -225,7 +225,7 @@ export default { | ... | @@ -225,7 +225,7 @@ export default { |
| 225 | 225 | ||
| 226 | <style lang="scss" scoped> | 226 | <style lang="scss" scoped> |
| 227 | .tags-view-container { | 227 | .tags-view-container { |
| 228 | - height: 34px; | 228 | + height: 50px; |
| 229 | width: 100%; | 229 | width: 100%; |
| 230 | background: #fff; | 230 | background: #fff; |
| 231 | border-bottom: 1px solid #d8dce5; | 231 | border-bottom: 1px solid #d8dce5; |
| ... | @@ -268,6 +268,7 @@ export default { | ... | @@ -268,6 +268,7 @@ export default { |
| 268 | } | 268 | } |
| 269 | } | 269 | } |
| 270 | .contextmenu { | 270 | .contextmenu { |
| 271 | + // height: 0; | ||
| 271 | margin: 0; | 272 | margin: 0; |
| 272 | background: #fff; | 273 | background: #fff; |
| 273 | z-index: 3000; | 274 | z-index: 3000; | ... | ... |
| ... | @@ -74,7 +74,7 @@ export const constantRoutes = [ | ... | @@ -74,7 +74,7 @@ export const constantRoutes = [ |
| 74 | children: [ | 74 | children: [ |
| 75 | { | 75 | { |
| 76 | path: 'profile', | 76 | path: 'profile', |
| 77 | - component: (resolve) => require(['@/views/system/user/profile/index'], resolve), | 77 | + component: (resolve) => require(['@/views/systemConfig/userConfig/profile/index'], resolve), |
| 78 | name: 'Profile', | 78 | name: 'Profile', |
| 79 | meta: { title: '个人中心', icon: 'user' } | 79 | meta: { title: '个人中心', icon: 'user' } |
| 80 | } | 80 | } |
| ... | @@ -105,5 +105,6 @@ export const constantRoutes = [ | ... | @@ -105,5 +105,6 @@ export const constantRoutes = [ |
| 105 | export default new Router({ | 105 | export default new Router({ |
| 106 | mode: 'history', // 去掉url中的# | 106 | mode: 'history', // 去掉url中的# |
| 107 | scrollBehavior: () => ({ y: 0 }), | 107 | scrollBehavior: () => ({ y: 0 }), |
| 108 | - routes: constantRoutes | 108 | + routes: constantRoutes, |
| 109 | + base: '/iMac' | ||
| 109 | }) | 110 | }) |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -4,15 +4,18 @@ const TokenKey = 'Admin-Token' | ... | @@ -4,15 +4,18 @@ const TokenKey = 'Admin-Token' |
| 4 | 4 | ||
| 5 | export function getToken() { | 5 | export function getToken() { |
| 6 | //return Cookies.get(TokenKey) | 6 | //return Cookies.get(TokenKey) |
| 7 | - return localStorage.getItem(TokenKey) | 7 | + // return localStorage.getItem(TokenKey) |
| 8 | + return sessionStorage.getItem(TokenKey) | ||
| 8 | } | 9 | } |
| 9 | 10 | ||
| 10 | export function setToken(token) { | 11 | export function setToken(token) { |
| 11 | //return Cookies.set(TokenKey, token) | 12 | //return Cookies.set(TokenKey, token) |
| 12 | - return localStorage.setItem(TokenKey, token) | 13 | + // return localStorage.setItem(TokenKey, token) |
| 14 | + return sessionStorage.setItem(TokenKey, token) | ||
| 13 | } | 15 | } |
| 14 | 16 | ||
| 15 | export function removeToken() { | 17 | export function removeToken() { |
| 16 | //return Cookies.remove(TokenKey) | 18 | //return Cookies.remove(TokenKey) |
| 17 | - return localStorage.removeItem(TokenKey) | 19 | + // return localStorage.removeItem(TokenKey) |
| 20 | + return sessionStorage.removeItem(TokenKey) | ||
| 18 | } | 21 | } | ... | ... |
| 1 | import axios from 'axios' | 1 | import axios from 'axios' |
| 2 | -import { Notification, MessageBox, Message } from 'element-ui' | 2 | +import { Message } from 'element-ui' |
| 3 | import store from '@/store' | 3 | import store from '@/store' |
| 4 | import { getToken } from '@/utils/auth' | 4 | import { getToken } from '@/utils/auth' |
| 5 | import errorCode from '@/utils/errorCode' | 5 | import errorCode from '@/utils/errorCode' |
| ... | @@ -10,17 +10,19 @@ const service = axios.create({ | ... | @@ -10,17 +10,19 @@ const service = axios.create({ |
| 10 | // axios中请求配置有baseURL选项,表示请求URL公共部分 | 10 | // axios中请求配置有baseURL选项,表示请求URL公共部分 |
| 11 | //baseURL: process.env.VUE_APP_BASE_API, | 11 | //baseURL: process.env.VUE_APP_BASE_API, |
| 12 | //baseURL: 'http://192.168.1.45:8080', | 12 | //baseURL: 'http://192.168.1.45:8080', |
| 13 | - baseURL: 'http://192.168.1.134:18080', | 13 | + // baseURL: `http://47.103.140.98:9002`,s |
| 14 | + // baseURL: 'https://imacuat.zmd.apac.fedex.com:9002/IMAC2', | ||
| 15 | + baseURL: 'http://192.168.1.134:18080', | ||
| 14 | 16 | ||
| 15 | // 超时 | 17 | // 超时 |
| 16 | - timeout: 10000 | 18 | + timeout: 30000 |
| 17 | }) | 19 | }) |
| 18 | // request拦截器 | 20 | // request拦截器 |
| 19 | service.interceptors.request.use(config => { | 21 | service.interceptors.request.use(config => { |
| 20 | // 是否需要设置 token | 22 | // 是否需要设置 token |
| 21 | const isToken = (config.headers || {}).isToken === false | 23 | const isToken = (config.headers || {}).isToken === false |
| 22 | if (getToken() && !isToken) { | 24 | if (getToken() && !isToken) { |
| 23 | - config.headers['Authorization'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 | 25 | + config.headers['Authorization'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 |
| 24 | } | 26 | } |
| 25 | // get请求映射params参数 | 27 | // get请求映射params参数 |
| 26 | if (config.method === 'get' && config.params) { | 28 | if (config.method === 'get' && config.params) { |
| ... | @@ -46,50 +48,51 @@ service.interceptors.request.use(config => { | ... | @@ -46,50 +48,51 @@ service.interceptors.request.use(config => { |
| 46 | } | 48 | } |
| 47 | return config | 49 | return config |
| 48 | }, error => { | 50 | }, error => { |
| 49 | - console.log(error) | 51 | + console.log(error) |
| 50 | - Promise.reject(error) | 52 | + Promise.reject(error) |
| 51 | }) | 53 | }) |
| 52 | 54 | ||
| 53 | // 响应拦截器 | 55 | // 响应拦截器 |
| 54 | service.interceptors.response.use(res => { | 56 | service.interceptors.response.use(res => { |
| 55 | - // 未设置状态码则默认成功状态 | 57 | + // 未设置状态码则默认成功状态 |
| 56 | - const code = res.data.code || 200; | 58 | + const code = res.data.code || 200; |
| 57 | - // 获取错误信息 | 59 | + // 获取错误信息 |
| 58 | - const msg = errorCode[code] || res.data.msg || errorCode['default'] | 60 | + const msg = errorCode[code] || res.data.msg || errorCode['default'] |
| 59 | - if (code === 401) { | 61 | + if (code === 301) { |
| 60 | - MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { | 62 | + this.$alert('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { |
| 61 | - confirmButtonText: '重新登录', | 63 | + confirmButtonText: '重新登录', |
| 62 | - cancelButtonText: '取消', | 64 | + cancelButtonText: '取消', |
| 63 | - type: 'warning' | 65 | + type: 'warning', |
| 64 | - } | 66 | + }).then(() => { |
| 65 | - ).then(() => { | 67 | + store.dispatch('FedLogOut').then(() => { |
| 66 | - store.dispatch('LogOut').then(() => { | 68 | + location.href = '/index'; |
| 67 | - location.href = '/index'; | ||
| 68 | - }) | ||
| 69 | - }) | ||
| 70 | - } else if (code === 403) { | ||
| 71 | - //无权限页面 | ||
| 72 | - location.href = '/401'; | ||
| 73 | - }else if (code === 500) { | ||
| 74 | - Message({ | ||
| 75 | - message: msg, | ||
| 76 | - type: 'error' | ||
| 77 | - }) | ||
| 78 | - return Promise.reject(new Error(msg)) | ||
| 79 | - } else if (code !== 200 &&code!=400) { | ||
| 80 | - Notification.error({ | ||
| 81 | - title: msg | ||
| 82 | }) | 69 | }) |
| 83 | - return Promise.reject('error') | 70 | + }); |
| 84 | - } else { | 71 | + } else if (code === 403) { |
| 85 | - return res.data | 72 | + //无权限页面 |
| 86 | - } | 73 | + location.href = '/401'; |
| 87 | - }, | 74 | + } |
| 75 | + else if (code === 500) { | ||
| 76 | + Message({ | ||
| 77 | + message: msg, | ||
| 78 | + type: 'error' | ||
| 79 | + }) | ||
| 80 | + return Promise.reject(new Error(msg)) | ||
| 81 | + } else if (code !== 200 && code !== 201) { | ||
| 82 | + Message({ | ||
| 83 | + message: msg, | ||
| 84 | + type: 'error' | ||
| 85 | + }) | ||
| 86 | + return Promise.reject('error') | ||
| 87 | + } else { | ||
| 88 | + return res.data | ||
| 89 | + } | ||
| 90 | +}, | ||
| 88 | error => { | 91 | error => { |
| 89 | console.log('err' + error) | 92 | console.log('err' + error) |
| 90 | let { message } = error; | 93 | let { message } = error; |
| 91 | if (message == "Network Error") { | 94 | if (message == "Network Error") { |
| 92 | - message = "后端接口连接异常"; | 95 | + message = "网络连接异常"; |
| 93 | } | 96 | } |
| 94 | else if (message.includes("timeout")) { | 97 | else if (message.includes("timeout")) { |
| 95 | message = "系统接口请求超时"; | 98 | message = "系统接口请求超时"; | ... | ... |
| ... | @@ -5,8 +5,9 @@ const mimeMap = { | ... | @@ -5,8 +5,9 @@ const mimeMap = { |
| 5 | xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', | 5 | xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', |
| 6 | zip: 'application/zip' | 6 | zip: 'application/zip' |
| 7 | } | 7 | } |
| 8 | - | 8 | +// const baseURL = 'https://imacuat.zmd.apac.fedex.com:9002/IMAC2' |
| 9 | -const baseUrl = process.env.VUE_APP_BASE_API | 9 | +// const baseUrl = 'http://47.103.140.98:9002' |
| 10 | +const baseUrl = 'http://192.168.1.134:18080' | ||
| 10 | export function downLoadZip(str, filename) { | 11 | export function downLoadZip(str, filename) { |
| 11 | var url = baseUrl + str | 12 | var url = baseUrl + str |
| 12 | axios({ | 13 | axios({ |
| ... | @@ -18,6 +19,20 @@ export function downLoadZip(str, filename) { | ... | @@ -18,6 +19,20 @@ export function downLoadZip(str, filename) { |
| 18 | resolveBlob(res, mimeMap.zip) | 19 | resolveBlob(res, mimeMap.zip) |
| 19 | }) | 20 | }) |
| 20 | } | 21 | } |
| 22 | +export function cargoXlsx(str,data) { | ||
| 23 | + var url = baseUrl + str | ||
| 24 | + axios({ | ||
| 25 | + method: 'post', | ||
| 26 | + url: url, | ||
| 27 | + data:data, | ||
| 28 | + responseType: 'blob', | ||
| 29 | + headers: { 'Authorization': getToken() } | ||
| 30 | + }).then(res => { | ||
| 31 | + if(res.status === 200){ | ||
| 32 | + cargoTableXlsx(res) | ||
| 33 | + } | ||
| 34 | + }) | ||
| 35 | +} | ||
| 21 | /** | 36 | /** |
| 22 | * 解析blob响应内容并下载 | 37 | * 解析blob响应内容并下载 |
| 23 | * @param {*} res blob响应内容 | 38 | * @param {*} res blob响应内容 |
| ... | @@ -25,7 +40,7 @@ export function downLoadZip(str, filename) { | ... | @@ -25,7 +40,7 @@ export function downLoadZip(str, filename) { |
| 25 | */ | 40 | */ |
| 26 | export function resolveBlob(res, mimeType) { | 41 | export function resolveBlob(res, mimeType) { |
| 27 | const aLink = document.createElement('a') | 42 | const aLink = document.createElement('a') |
| 28 | - var blob = new Blob([res.data], { type: mimeType }) | 43 | + var blob = new Blob([res], { type: mimeType }) |
| 29 | // //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名; | 44 | // //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名; |
| 30 | var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') | 45 | var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') |
| 31 | var contentDisposition = decodeURI(res.headers['content-disposition']) | 46 | var contentDisposition = decodeURI(res.headers['content-disposition']) |
| ... | @@ -38,3 +53,14 @@ export function resolveBlob(res, mimeType) { | ... | @@ -38,3 +53,14 @@ export function resolveBlob(res, mimeType) { |
| 38 | aLink.click() | 53 | aLink.click() |
| 39 | document.body.removeChild(aLink); | 54 | document.body.removeChild(aLink); |
| 40 | } | 55 | } |
| 56 | + | ||
| 57 | +//货物查询表导出 | ||
| 58 | +export function cargoTableXlsx(res){ | ||
| 59 | + const aLink = document.createElement('a') | ||
| 60 | + const fileName = "货物查询表.xlsx" | ||
| 61 | + aLink.href = URL.createObjectURL(res.data) | ||
| 62 | + aLink.setAttribute('download', fileName) // 设置下载文件名称 | ||
| 63 | + document.body.appendChild(aLink) | ||
| 64 | + aLink.click() | ||
| 65 | + document.body.removeChild(aLink); | ||
| 66 | +} | ... | ... |
This diff is collapsed. Click to expand it.
| 1 | +<template> | ||
| 2 | + <div style="margin: 20px"> | ||
| 3 | + <el-form :inline="true" :model="form" class="demo-form-inline" size="small"> | ||
| 4 | + <el-form-item label="航班种类"> | ||
| 5 | + <el-select v-model="form.type" placeholder="航班种类"> | ||
| 6 | + <el-option | ||
| 7 | + v-for="item in flightType" | ||
| 8 | + :key="item.id" | ||
| 9 | + :label="item.englishName" | ||
| 10 | + :value="item.code" | ||
| 11 | + >{{ item.englishName }}</el-option | ||
| 12 | + > | ||
| 13 | + </el-select> | ||
| 14 | + </el-form-item> | ||
| 15 | + <el-form-item> | ||
| 16 | + <el-upload | ||
| 17 | + action="/flightInfoImport/importFlight" | ||
| 18 | + name="file" | ||
| 19 | + :http-request="uploadExcel" | ||
| 20 | + :on-remove="handleRemove" | ||
| 21 | + :limit="1" | ||
| 22 | + :on-exceed="handleExceed" | ||
| 23 | + :file-list="fileList" | ||
| 24 | + accept=".xlsx" | ||
| 25 | + class="upload-demo" | ||
| 26 | + > | ||
| 27 | + <el-button type="primary">点击上传</el-button> | ||
| 28 | + </el-upload> | ||
| 29 | + </el-form-item> | ||
| 30 | + <el-form-item> | ||
| 31 | + <el-button type="primary" @click="downloadTempleate" | ||
| 32 | + >下载模板</el-button | ||
| 33 | + > | ||
| 34 | + </el-form-item> | ||
| 35 | + </el-form> | ||
| 36 | + <div style="font-size: 12px; font-weight: 700"> | ||
| 37 | + 提示:<span style="color: #0000ff">以下为所提交的数据或出错信息</span> | ||
| 38 | + </div> | ||
| 39 | + <el-table | ||
| 40 | + ref="filterTable" | ||
| 41 | + :data="tableData" | ||
| 42 | + style="width: 100%; margin-top: 20px" | ||
| 43 | + size="small" | ||
| 44 | + border | ||
| 45 | + > | ||
| 46 | + <el-table-column label="行号" prop="line" fixed width="50" align="center"> | ||
| 47 | + </el-table-column> | ||
| 48 | + <el-table-column label="错误信息" prop="errorMessage" fixed width="200"> | ||
| 49 | + <template slot-scope="scope"> | ||
| 50 | + <div v-for="(m, key) in scope.row.errorMessage" :key="key"> | ||
| 51 | + {{ m }} | ||
| 52 | + </div> | ||
| 53 | + </template> | ||
| 54 | + </el-table-column> | ||
| 55 | + <el-table-column v-if="tableData.length == 0"></el-table-column> | ||
| 56 | + <el-table-column | ||
| 57 | + v-for="(value, key) in this.tableData[0]" | ||
| 58 | + :key="key" | ||
| 59 | + v-if="key != 'errorMessage' && key != 'line'" | ||
| 60 | + :label="key" | ||
| 61 | + :prop="key" | ||
| 62 | + width="120" | ||
| 63 | + ></el-table-column> | ||
| 64 | + </el-table> | ||
| 65 | + </div> | ||
| 66 | +</template> | ||
| 67 | + </div> | ||
| 68 | +</template> | ||
| 69 | +<script> | ||
| 70 | +import { | ||
| 71 | + filghtKindData, | ||
| 72 | + downLoadTemplate, | ||
| 73 | + importFlight, | ||
| 74 | +} from "@/api/flightInfoImport"; | ||
| 75 | +export default { | ||
| 76 | + data() { | ||
| 77 | + return { | ||
| 78 | + flightType: [], | ||
| 79 | + form: { | ||
| 80 | + type: "", | ||
| 81 | + region: "", | ||
| 82 | + }, | ||
| 83 | + fileList: [], | ||
| 84 | + tableData: [], | ||
| 85 | + }; | ||
| 86 | + }, | ||
| 87 | + methods: { | ||
| 88 | + downloadTempleate() { | ||
| 89 | + let downloadType = ""; | ||
| 90 | + let fileName = ""; | ||
| 91 | + switch (this.form.type) { | ||
| 92 | + case "flightKind20": | ||
| 93 | + downloadType = "whiteTail"; | ||
| 94 | + fileName = "航班信息导入模板WhiteTail.xlsx"; | ||
| 95 | + break; | ||
| 96 | + case "flightKind30": | ||
| 97 | + downloadType = "purpleTail"; | ||
| 98 | + fileName = "航班信息导入模板PurpleTail.xlsx"; | ||
| 99 | + break; | ||
| 100 | + default: | ||
| 101 | + this.$confirm("此类航班暂无模板,请选择其他类型航班", "提示", { | ||
| 102 | + confirmButtonText: "确定", | ||
| 103 | + showCancelButton: false, | ||
| 104 | + type: "warning", | ||
| 105 | + }); | ||
| 106 | + } | ||
| 107 | + if (downloadType != "") { | ||
| 108 | + downLoadTemplate(downloadType).then((res) => { | ||
| 109 | + if (res) { | ||
| 110 | + const blob = new Blob([res]); | ||
| 111 | + const link = document.createElement("a"); //创建a标签 | ||
| 112 | + link.download = fileName; //a标签添加属性 | ||
| 113 | + link.style.display = "none"; | ||
| 114 | + link.href = URL.createObjectURL(blob); | ||
| 115 | + document.body.appendChild(link); | ||
| 116 | + link.click(); //执行下载 | ||
| 117 | + URL.revokeObjectURL(link.href); //释放url | ||
| 118 | + document.body.removeChild(link); //释放标签 | ||
| 119 | + } else { | ||
| 120 | + this.$message.error("下载失败"); | ||
| 121 | + } | ||
| 122 | + }); | ||
| 123 | + } | ||
| 124 | + }, | ||
| 125 | + uploadExcel(option) { | ||
| 126 | + //上传excel | ||
| 127 | + const file = option.file; | ||
| 128 | + console.log(option); | ||
| 129 | + importFlight(file, this.form.type).then((res) => { | ||
| 130 | + if (res.code != 200) { | ||
| 131 | + if (res.code == 603) { | ||
| 132 | + this.$alert(res.msg , "提示", { | ||
| 133 | + confirmButtonText: "确定", | ||
| 134 | + type: "warning", | ||
| 135 | + }); | ||
| 136 | + }else { | ||
| 137 | + this.$message.error(res.msg); | ||
| 138 | + this.tableData = res.data; | ||
| 139 | + } | ||
| 140 | + } else { | ||
| 141 | + this.$message.success("导入成功"); | ||
| 142 | + this.tableData = res.data; | ||
| 143 | + } | ||
| 144 | + }); | ||
| 145 | + }, | ||
| 146 | + handleRemove(file, fileList) { | ||
| 147 | + //清掉上传的文件 | ||
| 148 | + this.tableData = []; | ||
| 149 | + this.fileList = []; | ||
| 150 | + }, | ||
| 151 | + handleExceed(files) { | ||
| 152 | + //重复上传文件 | ||
| 153 | + let file = {}; | ||
| 154 | + file.file = files[0]; | ||
| 155 | + file.name = files[0].name; | ||
| 156 | + this.fileList = []; | ||
| 157 | + this.fileList.push(file); | ||
| 158 | + this.uploadExcel(file); | ||
| 159 | + }, | ||
| 160 | + }, | ||
| 161 | + created() { | ||
| 162 | + filghtKindData().then((response) => { | ||
| 163 | + if (response.code != 200) { | ||
| 164 | + this.$message({ | ||
| 165 | + message: response.msg, | ||
| 166 | + type: "error", | ||
| 167 | + }); | ||
| 168 | + } | ||
| 169 | + this.flightType = response.data; | ||
| 170 | + this.form.type = response.data[0].code; | ||
| 171 | + }); | ||
| 172 | + }, | ||
| 173 | +}; | ||
| 174 | +</script> | ||
| 175 | +<style rel="stylesheet/scss" lang="scss"> | ||
| 176 | +.upload-demo { | ||
| 177 | + float: right; | ||
| 178 | +} | ||
| 179 | +.el-upload-list { | ||
| 180 | + display: inline-block; | ||
| 181 | + margin-left: 10px; | ||
| 182 | + vertical-align: top; | ||
| 183 | +} | ||
| 184 | +</style> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
| 1 | <template> | 1 | <template> |
| 2 | - <div> | 2 | + <div></div> |
| 3 | - <el-button type="primary" size="mini" @click="submit">保存</el-button> | ||
| 4 | - <el-button | ||
| 5 | - size="mini" | ||
| 6 | - type="text" | ||
| 7 | - icon="el-icon-delete" | ||
| 8 | - v-hasPermi="['system:user:list']" | ||
| 9 | - >删除1</el-button> | ||
| 10 | - | ||
| 11 | - <el-button | ||
| 12 | - size="mini" | ||
| 13 | - type="text" | ||
| 14 | - icon="el-icon-delete" | ||
| 15 | - v-hasPermi="['system:user:remove']" | ||
| 16 | - >删除2</el-button> | ||
| 17 | - </div> | ||
| 18 | </template> | 3 | </template> |
| 19 | <script> | 4 | <script> |
| 20 | import { delUser } from "@/api/system/user"; | 5 | import { delUser } from "@/api/system/user"; |
| ... | @@ -22,8 +7,8 @@ import { delUser } from "@/api/system/user"; | ... | @@ -22,8 +7,8 @@ import { delUser } from "@/api/system/user"; |
| 22 | export default { | 7 | export default { |
| 23 | props: { | 8 | props: { |
| 24 | user: { | 9 | user: { |
| 25 | - type: Object | 10 | + type: Object, |
| 26 | - } | 11 | + }, |
| 27 | }, | 12 | }, |
| 28 | data() { | 13 | data() { |
| 29 | return { | 14 | return { |
| ... | @@ -33,11 +18,11 @@ export default { | ... | @@ -33,11 +18,11 @@ export default { |
| 33 | methods: { | 18 | methods: { |
| 34 | submit() { | 19 | submit() { |
| 35 | this.msgSuccess("修改成功"); | 20 | this.msgSuccess("修改成功"); |
| 36 | - delUser('112').then(response => { | 21 | + delUser("112").then((response) => { |
| 37 | this.msgSuccess("修改成功"); | 22 | this.msgSuccess("修改成功"); |
| 38 | }); | 23 | }); |
| 39 | - } | 24 | + }, |
| 40 | - } | 25 | + }, |
| 41 | }; | 26 | }; |
| 42 | </script> | 27 | </script> |
| 43 | 28 | ... | ... |
| ... | @@ -19,8 +19,8 @@ | ... | @@ -19,8 +19,8 @@ |
| 19 | </el-input> | 19 | </el-input> |
| 20 | </el-form-item> | 20 | </el-form-item> |
| 21 | 21 | ||
| 22 | - <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> | 22 | + <!-- <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> --> |
| 23 | - <el-form-item style="width:100%;"> | 23 | + <el-form-item style="width:100%;marginTop:44px"> |
| 24 | <el-button | 24 | <el-button |
| 25 | :loading="loading" | 25 | :loading="loading" |
| 26 | size="medium" | 26 | size="medium" | ... | ... |
src/views/system/role/index.vue
deleted
100644 → 0
| 1 | -<template> | ||
| 2 | - <div class="app-container"> | ||
| 3 | - <el-form :model="queryParams" ref="queryForm" :inline="true"> | ||
| 4 | - <el-form-item label="原航班" prop="sourceFlightNo"> | ||
| 5 | - <el-input v-model="queryParams.sourceFlightNo" placeholder="请输入原航班" clearable size="small" /> | ||
| 6 | - </el-form-item> | ||
| 7 | - <el-form-item label="状态" prop="status"> | ||
| 8 | - <el-select v-model="queryParams.status" placeholder="请选择" clearable size="small"> | ||
| 9 | - <el-option v-for="dict in statusList" :key="dict.id" :label="dict.name" :value="dict.id" /> | ||
| 10 | - </el-select> | ||
| 11 | - | ||
| 12 | - </el-form-item> | ||
| 13 | - | ||
| 14 | - <el-form-item> | ||
| 15 | - <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询原航班配置</el-button> | ||
| 16 | - </el-form-item> | ||
| 17 | - <br /> | ||
| 18 | - <el-form-item label="日期" prop="flightDate"> | ||
| 19 | - | ||
| 20 | - <el-date-picker v-model="queryParams.flightDate" type="date" placeholder="选择日期"> | ||
| 21 | - </el-date-picker> | ||
| 22 | - </el-form-item> | ||
| 23 | - | ||
| 24 | - <el-form-item> | ||
| 25 | - <el-button type="primary" icon="el-icon-search" size="mini" @click="findSourceFlightAndFlightDate">查询实际目的航班</el-button>  | ||
| 26 | - <span style="color: red;">注:原航班+日期查询该日期的航班实际情况</span> | ||
| 27 | - </el-form-item> | ||
| 28 | - <br /> | ||
| 29 | - <el-form-item> | ||
| 30 | - <el-col :span="1.5"> | ||
| 31 | - <el-button type="primary" icon="el-icon-plus" size="mini">添加规则</el-button> | ||
| 32 | - </el-col> | ||
| 33 | -   <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | ||
| 34 | - </el-form-item> | ||
| 35 | - </el-form> | ||
| 36 | - | ||
| 37 | - | ||
| 38 | - <el-table v-loading="loading" :data="sourceFlightRulesList" > | ||
| 39 | - | ||
| 40 | - <el-table-column label="原航班" align="center" prop="sourceFlightNo"/> | ||
| 41 | - <el-table-column label="目的航班排序" align="center" prop="flightRank" width="280"/> | ||
| 42 | - <!-- <el-table-column label="优先级" align="center" prop="priority" /> --> | ||
| 43 | - <el-table-column label="周期" align="center" prop="dayOfWeek" width="180"/> | ||
| 44 | - <el-table-column label="状态" align="center" prop="status" :formatter="statusFormat" /> | ||
| 45 | - <el-table-column label="开始时间" align="center" prop="startDate" width="100"/> | ||
| 46 | - <el-table-column label="结束时间" align="center" prop="endDate" width="100"/> | ||
| 47 | - <el-table-column label="最后修改人" align="center" prop="updateUserName" width="100"/> | ||
| 48 | - <el-table-column label="最后修改时间" align="center" prop="updateTime" width="100"/> | ||
| 49 | - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"width="280" fixed="right"> | ||
| 50 | - <template slot-scope="scope"> | ||
| 51 | - <el-button size="mini" type="text" icon="el-icon-edit" >修改</el-button> | ||
| 52 | - <el-button size="mini" type="text" icon="el-icon-delete" >删除</el-button> | ||
| 53 | - <el-button size="mini" type="text" icon="el-icon-delete" >启用</el-button> | ||
| 54 | - <el-button size="mini" type="text" icon="el-icon-delete" >停用</el-button> | ||
| 55 | - </template> | ||
| 56 | - </el-table-column> | ||
| 57 | - </el-table> | ||
| 58 | - | ||
| 59 | - <pagination v-show="total>0" :total="total" layout=" prev, pager, next, jumper, sizes,total" | ||
| 60 | - :page.sync="queryParams.pageNum" :limit.sync="queryParams.limit" @pagination="findSourceFlightRules" /> | ||
| 61 | - | ||
| 62 | - | ||
| 63 | - <!-- 查看目的航班对话框 --> | ||
| 64 | - <el-dialog title="实际目的航班" :visible.sync="openFlightDate" width="70%"> | ||
| 65 | - <el-table v-loading="loadingFlightDate" :data="sourceFlightAndFlightDate"> | ||
| 66 | - | ||
| 67 | - <el-table-column label="原航班" align="center" prop="sourceFlightNo"/> | ||
| 68 | - <el-table-column label="实际目的航班" align="center" prop="actualFlight" width="280"/> | ||
| 69 | - <el-table-column label="航班日期" align="center" prop="flightDate" /> | ||
| 70 | - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"width="200"> | ||
| 71 | - <template slot-scope="scope"> | ||
| 72 | - <el-button size="mini" type="text" icon="el-icon-edit" >查看配置维度</el-button> | ||
| 73 | - </template> | ||
| 74 | - </el-table-column> | ||
| 75 | - </el-table> | ||
| 76 | - <div slot="footer" class="dialog-footer"> | ||
| 77 | - <el-button @click="cancelFlightDate">返 回</el-button> | ||
| 78 | - </div> | ||
| 79 | - </el-dialog> | ||
| 80 | - </div> | ||
| 81 | -</template> | ||
| 82 | -<script> | ||
| 83 | - import { | ||
| 84 | - findSourceFlightRulesApi,findSourceFlightAndFlightDateApi | ||
| 85 | - } from "@/api/sourceFlightRules"; | ||
| 86 | - export default { | ||
| 87 | - name: "SourceFlightRules", | ||
| 88 | - data() { | ||
| 89 | - return { | ||
| 90 | - // 遮罩层 | ||
| 91 | - loading: false, | ||
| 92 | - // 遮罩层 | ||
| 93 | - loadingFlightDate: false, | ||
| 94 | - // 总条数 | ||
| 95 | - total: 0, | ||
| 96 | - // 原航班规则数据 | ||
| 97 | - sourceFlightRulesList: [], | ||
| 98 | - //目的航班数据 | ||
| 99 | - sourceFlightAndFlightDate:[], | ||
| 100 | - statusList: [{'id':1,'name':'有效'}, {'id':2,'name':'配置中'},{'id':3,'name':'停用'}], | ||
| 101 | - // 新增修改查看规则弹出层 | ||
| 102 | - open: false, | ||
| 103 | - // 是否显示查看目的航班弹出层 | ||
| 104 | - openFlightDate: false, | ||
| 105 | - // 查询参数 | ||
| 106 | - queryParams: { | ||
| 107 | - start: 0, //当前条数【代表第几条数据 +1开始】 | ||
| 108 | - pageNum: 1, | ||
| 109 | - limit: 20, //一页显示多少条数据 | ||
| 110 | - sourceFlightNo: undefined, //原航班号 | ||
| 111 | - status: undefined, //状态 | ||
| 112 | - flightDate: undefined //日期 | ||
| 113 | - }, | ||
| 114 | - // 表单参数 | ||
| 115 | - form: {}, | ||
| 116 | - // 表单校验 | ||
| 117 | - rules: {} | ||
| 118 | - }; | ||
| 119 | - }, | ||
| 120 | - created() { | ||
| 121 | - this.findSourceFlightRules(); | ||
| 122 | - }, | ||
| 123 | - methods: { | ||
| 124 | - /** 查询原航班顺位规则*/ | ||
| 125 | - findSourceFlightRules() { | ||
| 126 | - //this.loading = true; | ||
| 127 | - if (this.queryParams.pageNum > 1) { | ||
| 128 | - this.queryParams.start = (this.queryParams.pageNum - 1) * this.queryParams.limit | ||
| 129 | - }else{ | ||
| 130 | - this.queryParams.start=0; | ||
| 131 | - } | ||
| 132 | - findSourceFlightRulesApi(this.queryParams).then(response => { | ||
| 133 | - this.sourceFlightRulesList = response.data.list; | ||
| 134 | - this.total = response.data.totalCount; | ||
| 135 | - this.loading = false; | ||
| 136 | - }); | ||
| 137 | - | ||
| 138 | - }, | ||
| 139 | - /** 查询目的航班*/ | ||
| 140 | - findSourceFlightAndFlightDate(){ | ||
| 141 | - //校验原航班号非空 | ||
| 142 | - if(this.queryParams.sourceFlightNo===null||this.queryParams.sourceFlightNo===undefined||this.queryParams.sourceFlightNo.trim()===''){ | ||
| 143 | - this.$message.warning("原航班号为空"); | ||
| 144 | - return | ||
| 145 | - } | ||
| 146 | - //校验原日期非空 | ||
| 147 | - if(this.queryParams.flightDate===null||this.queryParams.flightDate===undefined){ | ||
| 148 | - this.$message.warning("日期为空"); | ||
| 149 | - return | ||
| 150 | - } | ||
| 151 | - this.openFlightDate = true; | ||
| 152 | - this.loadingFlightDate=true; | ||
| 153 | - this.sourceFlightAndFlightDate=[]; | ||
| 154 | - findSourceFlightAndFlightDateApi(this.queryParams).then(response => { | ||
| 155 | - this.sourceFlightAndFlightDate = response.data; | ||
| 156 | - this.loadingFlightDate=false; | ||
| 157 | - }); | ||
| 158 | - | ||
| 159 | - | ||
| 160 | - }, | ||
| 161 | - // 目的航班弹出框返回 | ||
| 162 | - cancelFlightDate() { | ||
| 163 | - this.openFlightDate = false; | ||
| 164 | - }, | ||
| 165 | - // 状态字典翻译 | ||
| 166 | - statusFormat(row) { | ||
| 167 | - if(row.status==='1'){ | ||
| 168 | - return '有效' | ||
| 169 | - }else if(row.status==='2'){ | ||
| 170 | - return '配置中' | ||
| 171 | - }else if(row.status==='3'){ | ||
| 172 | - return '停用' | ||
| 173 | - } | ||
| 174 | - return row.status; | ||
| 175 | - }, | ||
| 176 | - /** 重置按钮操作 */ | ||
| 177 | - resetQuery() { | ||
| 178 | - this.resetForm("queryForm"); | ||
| 179 | - this.handleQuery(); | ||
| 180 | - }, | ||
| 181 | - /** 搜索按钮操作 */ | ||
| 182 | - handleQuery() { | ||
| 183 | - this.queryParams.pageNum = 1; | ||
| 184 | - this.queryParams.start=0; | ||
| 185 | - this.findSourceFlightRules(); | ||
| 186 | - } | ||
| 187 | - | ||
| 188 | - } | ||
| 189 | - }; | ||
| 190 | -</script> | ||
| 191 | -<style> | ||
| 192 | - | ||
| 193 | - | ||
| 194 | -</style> |
src/views/system/user/index.vue
deleted
100644 → 0
| 1 | -<template> | ||
| 2 | -<div style="margin:40px" class="app-container"> | ||
| 3 | - <el-form :inline="true" :model="queryParams" class="demo-form-inline" size="small"> | ||
| 4 | - <el-form-item label="航班号"> | ||
| 5 | - <el-input v-model="queryParams.purposeOfFlightNo" placeholder="航班号"></el-input> | ||
| 6 | - </el-form-item> | ||
| 7 | - <el-form-item> | ||
| 8 | - <el-button type="primary" icon="el-icon-search" @click="getList" size="mini">查询</el-button> | ||
| 9 | - </el-form-item> | ||
| 10 | - </el-form> | ||
| 11 | - <el-button style="margin-bottom:20px" type="primary" icon="el-icon-plus" size="mini">添加</el-button> | ||
| 12 | - <el-table | ||
| 13 | - :data="flyList" | ||
| 14 | - style="width: 800px" | ||
| 15 | - v-loading="loading" size="small" | ||
| 16 | - > | ||
| 17 | - <el-table-column prop="purposeOfFlightNo" label="航班号" align="center"></el-table-column> | ||
| 18 | - <el-table-column label="操作" prop="id" align="center"> | ||
| 19 | - <template slot-scope="scope" > | ||
| 20 | - <el-button type="text" size="mini" icon="el-icon-view" @click="handleClick(scope.row.id, 'detail')">查看</el-button> | ||
| 21 | - <el-button type="text" size="mini" icon="el-icon-edit" @click="handleClick(scope.row.id, 'update')">修改</el-button> | ||
| 22 | - <el-button type="text" size="mini" icon="el-icon-delete">删除</el-button> | ||
| 23 | - <el-button type="text" size="mini" icon="el-icon-video-play">启用</el-button> | ||
| 24 | - <el-button type="text" size="mini" icon="el-icon-video-pause">停用</el-button> | ||
| 25 | - </template> | ||
| 26 | - </el-table-column> | ||
| 27 | - </el-table> | ||
| 28 | - <el-pagination | ||
| 29 | - @size-change="getList" | ||
| 30 | - @current-change="getList" | ||
| 31 | - :current-page.sync="curPage" | ||
| 32 | - :page-sizes="[10, 20, 30, 40]" | ||
| 33 | - :page-size.sync="limit" | ||
| 34 | - layout="prev, pager, next, jumper, sizes, total" | ||
| 35 | - :total="total" | ||
| 36 | - background | ||
| 37 | - :hide-on-single-page="true" | ||
| 38 | - style="margin-top:40px; text-align:right"> | ||
| 39 | - </el-pagination> | ||
| 40 | -</div> | ||
| 41 | -</template> | ||
| 42 | - | ||
| 43 | -<script> | ||
| 44 | - import { | ||
| 45 | - findFlightNo | ||
| 46 | - } from "@/api/destinationFlight"; | ||
| 47 | - | ||
| 48 | - export default { | ||
| 49 | - data() { | ||
| 50 | - return { | ||
| 51 | - queryParams: { | ||
| 52 | - purposeOfFlightNo: '', | ||
| 53 | - start:0, | ||
| 54 | - limit:10 | ||
| 55 | - }, | ||
| 56 | - flyList:[], | ||
| 57 | - curPage:1, | ||
| 58 | - limit:10, | ||
| 59 | - total:0, | ||
| 60 | - loading:false, | ||
| 61 | - } | ||
| 62 | - }, | ||
| 63 | - methods: { | ||
| 64 | - getList(){ | ||
| 65 | - this.queryParams.limit = this.limit; | ||
| 66 | - if (this.curPage > 1) { | ||
| 67 | - this.queryParams.start = (this.curPage - 1) * this.queryParams.limit | ||
| 68 | - }else { | ||
| 69 | - this.queryParams.start = 0; | ||
| 70 | - } | ||
| 71 | - this.loading = true; | ||
| 72 | - findFlightNo(this.queryParams).then(response => { | ||
| 73 | - this.flyList = response.data.list; | ||
| 74 | - this.total = response.data.totalCount; | ||
| 75 | - this.loading = false; | ||
| 76 | - }); | ||
| 77 | - }, | ||
| 78 | - //跳转到查看,修改页面 | ||
| 79 | - handleClick(flightiId, handle){ | ||
| 80 | - this.$router.push({ name: 'info', params: { handle: handle, id:flightiId }}); | ||
| 81 | - }, | ||
| 82 | - //删除,启用,停用 | ||
| 83 | - changeStatus(id, handle){ | ||
| 84 | - | ||
| 85 | - } | ||
| 86 | - }, | ||
| 87 | - created() { | ||
| 88 | - this.getList(); | ||
| 89 | - } | ||
| 90 | - } | ||
| 91 | -</script> | ||
| 92 | - | ||
| 93 | - |
| 1 | <template> | 1 | <template> |
| 2 | - <div style="margin: 20px"> | 2 | + <div></div> |
| 3 | - <el-form :inline="true" :model="form" class="demo-form-inline" size="small"> | ||
| 4 | - <el-form-item label="航班种类"> | ||
| 5 | - <el-select v-model="form.type" placeholder="航班种类"> | ||
| 6 | - <el-option | ||
| 7 | - v-for="item in flightType" | ||
| 8 | - :key="item.id" | ||
| 9 | - :label="item.englishName" | ||
| 10 | - :value="item.code" | ||
| 11 | - >{{item.englishName}}</el-option> | ||
| 12 | - </el-select> | ||
| 13 | - </el-form-item> | ||
| 14 | - <el-form-item> | ||
| 15 | - <el-upload | ||
| 16 | - action="/flightInfoImport/importFlight" | ||
| 17 | - name="file" | ||
| 18 | - :http-request="uploadExcel" | ||
| 19 | - :on-remove="handleRemove" | ||
| 20 | - :limit="1" | ||
| 21 | - :on-exceed="handleExceed" | ||
| 22 | - :file-list="fileList" | ||
| 23 | - accept=".xlsx" | ||
| 24 | - class="upload-demo" | ||
| 25 | - > | ||
| 26 | - <el-button type="primary">点击上传</el-button> | ||
| 27 | - </el-upload> | ||
| 28 | - </el-form-item> | ||
| 29 | - <el-form-item> | ||
| 30 | - <el-button type="primary" @click="downloadTempleate" | ||
| 31 | - >下载模板</el-button | ||
| 32 | - > | ||
| 33 | - </el-form-item> | ||
| 34 | - </el-form> | ||
| 35 | - <div style="font-size: 12px;font-weight: 700;">提示:<span style="color:#0000FF">以下为所提交的数据或出错信息</span></div> | ||
| 36 | - | ||
| 37 | - <el-table | ||
| 38 | - ref="filterTable" | ||
| 39 | - :data="tableData" | ||
| 40 | - style="width: 100%; margin-top: 20px" | ||
| 41 | - size="small" | ||
| 42 | - border | ||
| 43 | - > | ||
| 44 | - <el-table-column label="行号" prop="line" fixed width="50" align="center"> | ||
| 45 | - </el-table-column> | ||
| 46 | - | ||
| 47 | - <el-table-column label="错误信息" prop="errorMessage" fixed width="200"> | ||
| 48 | - <template slot-scope="scope"> | ||
| 49 | - <div v-for="(m,key) in scope.row.errorMessage" :key="key">{{ m }}</div> | ||
| 50 | - </template> | ||
| 51 | - </el-table-column> | ||
| 52 | - | ||
| 53 | - <el-table-column v-if="tableData.length == 0" ></el-table-column> | ||
| 54 | - | ||
| 55 | - <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> | ||
| 56 | - </el-table> | ||
| 57 | - </div> | ||
| 58 | -</template> | ||
| 59 | - </div> | ||
| 60 | </template> | 3 | </template> |
| 61 | 4 | ||
| 62 | <script> | 5 | <script> |
| 63 | -import { | ||
| 64 | - filghtKindData, | ||
| 65 | - downLoadTemplate, | ||
| 66 | - importFlight, | ||
| 67 | -} from "@/api/flightInfoImport"; | ||
| 68 | - | ||
| 69 | export default { | 6 | export default { |
| 70 | - data() { | ||
| 71 | - return { | ||
| 72 | - flightType: [], | ||
| 73 | - form: { | ||
| 74 | - type: "", | ||
| 75 | - region: "", | ||
| 76 | - }, | ||
| 77 | - fileList: [], | ||
| 78 | - tableData: [], | ||
| 79 | - }; | ||
| 80 | - }, | ||
| 81 | - methods: { | ||
| 82 | - downloadTempleate() { | ||
| 83 | - let downloadType = ""; | ||
| 84 | - let fileName = ""; | ||
| 85 | - switch (this.form.type) { | ||
| 86 | - case "flightKind20": | ||
| 87 | - downloadType = "whiteTail"; | ||
| 88 | - fileName = "航班信息导入模板WhiteTail.xlsx"; | ||
| 89 | - break; | ||
| 90 | - case "flightKind30": | ||
| 91 | - downloadType = "purpleTail"; | ||
| 92 | - fileName = "航班信息导入模板PurpleTail.xlsx"; | ||
| 93 | - break; | ||
| 94 | - default: | ||
| 95 | - this.$confirm("此类航班暂无模板,请选择其他类型航班", "提示", { | ||
| 96 | - confirmButtonText: "确定", | ||
| 97 | - showCancelButton: false, | ||
| 98 | - type: "warning", | ||
| 99 | - }); | ||
| 100 | - } | ||
| 101 | - if (downloadType != "") { | ||
| 102 | - downLoadTemplate(downloadType).then((res) => { | ||
| 103 | - if (res) { | ||
| 104 | - const blob = new Blob([res]); | ||
| 105 | - const link = document.createElement("a"); //创建a标签 | ||
| 106 | - link.download = fileName; //a标签添加属性 | ||
| 107 | - link.style.display = "none"; | ||
| 108 | - link.href = URL.createObjectURL(blob); | ||
| 109 | - document.body.appendChild(link); | ||
| 110 | - link.click(); //执行下载 | ||
| 111 | - URL.revokeObjectURL(link.href); //释放url | ||
| 112 | - document.body.removeChild(link); //释放标签 | ||
| 113 | - } else { | ||
| 114 | - this.$message.error("下载失败"); | ||
| 115 | - } | ||
| 116 | - }); | ||
| 117 | - } | ||
| 118 | - }, | ||
| 119 | - uploadExcel(option) { | ||
| 120 | - //上传excel | ||
| 121 | - const file = option.file; | ||
| 122 | - console.log(option); | ||
| 123 | - importFlight(file, this.form.type).then((res) => { | ||
| 124 | - if (res.code != 200) { | ||
| 125 | - this.$message.error(res.msg); | ||
| 126 | - this.tableData = res.data; | ||
| 127 | - } else { | ||
| 128 | - this.$message.success('导入成功'); | ||
| 129 | - this.tableData = res.data; | ||
| 130 | - } | ||
| 131 | - }); | ||
| 132 | - }, | ||
| 133 | - handleRemove(file, fileList) { | ||
| 134 | - //清掉上传的文件 | ||
| 135 | - this.tableData = []; | ||
| 136 | - this.fileList = []; | ||
| 137 | - }, | ||
| 138 | - handleExceed(files) { | ||
| 139 | - //重复上传文件 | ||
| 140 | - let file = {}; | ||
| 141 | - file.file = files[0]; | ||
| 142 | - file.name = files[0].name; | ||
| 143 | - this.fileList = []; | ||
| 144 | - this.fileList.push(file); | ||
| 145 | 7 | ||
| 146 | - this.uploadExcel(file); | 8 | +} |
| 147 | - }, | ||
| 148 | - }, | ||
| 149 | - created() { | ||
| 150 | - filghtKindData().then((response) => { | ||
| 151 | - if (response.code != 200) { | ||
| 152 | - this.$message({ | ||
| 153 | - message: response.msg, | ||
| 154 | - type: "error", | ||
| 155 | - }); | ||
| 156 | - } | ||
| 157 | - this.flightType = response.data; | ||
| 158 | - this.form.type = response.data[0].code; | ||
| 159 | - }); | ||
| 160 | - }, | ||
| 161 | -}; | ||
| 162 | </script> | 9 | </script> |
| 163 | 10 | ||
| 164 | -<style rel="stylesheet/scss" lang="scss"> | 11 | +<style> |
| 165 | -.upload-demo { | 12 | + |
| 166 | - float: right; | ||
| 167 | -} | ||
| 168 | -.el-upload-list { | ||
| 169 | - display: inline-block; | ||
| 170 | - margin-left: 10px; | ||
| 171 | - vertical-align: top; | ||
| 172 | -} | ||
| 173 | </style> | 13 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
This diff is collapsed. Click to expand it.
| 1 | +//version:0.5.1 | ||
| 1 | 'use strict' | 2 | 'use strict' |
| 2 | const path = require('path') | 3 | const path = require('path') |
| 3 | const defaultSettings = require('./src/settings.js') | 4 | const defaultSettings = require('./src/settings.js') |
| ... | @@ -8,7 +9,7 @@ function resolve(dir) { | ... | @@ -8,7 +9,7 @@ function resolve(dir) { |
| 8 | 9 | ||
| 9 | const name = defaultSettings.title || 'IMAC后台管理系统' // 标题 | 10 | const name = defaultSettings.title || 'IMAC后台管理系统' // 标题 |
| 10 | 11 | ||
| 11 | -const port = process.env.port || process.env.npm_config_port || 80 // 端口 | 12 | +const port = process.env.port || process.env.npm_config_port || 8080 // 端口 |
| 12 | 13 | ||
| 13 | // vue.config.js 配置说明 | 14 | // vue.config.js 配置说明 |
| 14 | //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions | 15 | //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions |
| ... | @@ -17,7 +18,7 @@ module.exports = { | ... | @@ -17,7 +18,7 @@ module.exports = { |
| 17 | // 部署生产环境和开发环境下的URL。 | 18 | // 部署生产环境和开发环境下的URL。 |
| 18 | // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 | 19 | // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 |
| 19 | // 例如 https://www.FedEx.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.FedEx.vip/admin/,则设置 baseUrl 为 /admin/。 | 20 | // 例如 https://www.FedEx.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.FedEx.vip/admin/,则设置 baseUrl 为 /admin/。 |
| 20 | - publicPath: process.env.NODE_ENV === "production" ? "/" : "/", | 21 | + publicPath: process.env.NODE_ENV === "production" ? "/iMac/" : "/", |
| 21 | // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) | 22 | // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) |
| 22 | outputDir: 'dist', | 23 | outputDir: 'dist', |
| 23 | // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) | 24 | // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) |
| ... | @@ -34,8 +35,9 @@ module.exports = { | ... | @@ -34,8 +35,9 @@ module.exports = { |
| 34 | proxy: { | 35 | proxy: { |
| 35 | // detail: https://cli.vuejs.org/config/#devserver-proxy | 36 | // detail: https://cli.vuejs.org/config/#devserver-proxy |
| 36 | [process.env.VUE_APP_BASE_API]: { | 37 | [process.env.VUE_APP_BASE_API]: { |
| 37 | - //target: `http://localhost:8080`, | 38 | + // target: `https://imacuat.zmd.apac.fedex.com:9002/IMAC2`, |
| 38 | // target: `http://192.168.1.45:8080`, | 39 | // target: `http://192.168.1.45:8080`, |
| 40 | + // target: `http://47.103.140.98:9002`, | ||
| 39 | target: `http://192.168.1.134:18080`, | 41 | target: `http://192.168.1.134:18080`, |
| 40 | changeOrigin: true, | 42 | changeOrigin: true, |
| 41 | pathRewrite: { | 43 | pathRewrite: { |
| ... | @@ -81,7 +83,7 @@ module.exports = { | ... | @@ -81,7 +83,7 @@ module.exports = { |
| 81 | .plugin('ScriptExtHtmlWebpackPlugin') | 83 | .plugin('ScriptExtHtmlWebpackPlugin') |
| 82 | .after('html') | 84 | .after('html') |
| 83 | .use('script-ext-html-webpack-plugin', [{ | 85 | .use('script-ext-html-webpack-plugin', [{ |
| 84 | - // `runtime` must same as runtimeChunk name. default is `runtime` | 86 | + // `runtime` must same as runtimeChunk name. default is `runtime` |
| 85 | inline: /runtime\..*\.js$/ | 87 | inline: /runtime\..*\.js$/ |
| 86 | }]) | 88 | }]) |
| 87 | .end() | 89 | .end() |
| ... | @@ -111,8 +113,8 @@ module.exports = { | ... | @@ -111,8 +113,8 @@ module.exports = { |
| 111 | }) | 113 | }) |
| 112 | config.optimization.runtimeChunk('single'), | 114 | config.optimization.runtimeChunk('single'), |
| 113 | { | 115 | { |
| 114 | - from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件 | 116 | + from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件 |
| 115 | - to: './', //到根目录下 | 117 | + to: './', //到根目录下 |
| 116 | } | 118 | } |
| 117 | } | 119 | } |
| 118 | ) | 120 | ) | ... | ... |
-
Please register or login to post a comment