作者 朱兆平

Merge branch 'nmms' of 118.31.66.166:zp260/vue_cli

# Conflicts:
#	config/index.js
#	package-lock.json
#	package.json
#	src/api/api.js
#	src/api/http.js
#	src/api/log_api.js
#	src/api/perm_api.js
#	src/api/role_api.js
#	src/api/user.js
#	src/main.js
#	src/routes.js
#	src/views/Home.vue
合并新舱单

要显示太多修改。

为保证性能只显示 41 of 41+ 个文件。

@@ -30,8 +30,8 @@ module.exports = { @@ -30,8 +30,8 @@ module.exports = {
30 assetsPublicPath: '/', 30 assetsPublicPath: '/',
31 proxyTable: { 31 proxyTable: {
32 '/api':{ 32 '/api':{
33 - target: 'http://192.168.1.53:12343',//设置你调用的接口域名和端口号 别忘了加http  
34 - // target: 'http://192.168.43.78:12343',//设置你调用的接口域名和端口号 别忘了加http 33 + // target: 'http://192.168.1.53:12343',//设置你调用的接口域名和端口号 别忘了加http
  34 + target: 'http://localhost:12343',//设置你调用的接口域名和端口号 别忘了加http
35 changeOrigin: true, 35 changeOrigin: true,
36 pathRewrite: { 36 pathRewrite: {
37 '^/api/': '/'//这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add’即可 37 '^/api/': '/'//这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add’即可
@@ -85,7 +85,7 @@ @@ -85,7 +85,7 @@
85 }, 85 },
86 "adler-32": { 86 "adler-32": {
87 "version": "1.2.0", 87 "version": "1.2.0",
88 - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", 88 + "resolved": "https://registry.npm.taobao.org/adler-32/download/adler-32-1.2.0.tgz",
89 "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=", 89 "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=",
90 "requires": { 90 "requires": {
91 "exit-on-epipe": "~1.0.1", 91 "exit-on-epipe": "~1.0.1",
@@ -613,8 +613,8 @@ @@ -613,8 +613,8 @@
613 }, 613 },
614 "async-validator": { 614 "async-validator": {
615 "version": "1.8.5", 615 "version": "1.8.5",
616 - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",  
617 - "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", 616 + "resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz",
  617 + "integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=",
618 "requires": { 618 "requires": {
619 "babel-runtime": "6.x" 619 "babel-runtime": "6.x"
620 } 620 }
@@ -896,8 +896,8 @@ @@ -896,8 +896,8 @@
896 }, 896 },
897 "babel-helper-vue-jsx-merge-props": { 897 "babel-helper-vue-jsx-merge-props": {
898 "version": "2.0.3", 898 "version": "2.0.3",
899 - "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",  
900 - "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" 899 + "resolved": "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
  900 + "integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY="
901 }, 901 },
902 "babel-helpers": { 902 "babel-helpers": {
903 "version": "6.24.1", 903 "version": "6.24.1",
@@ -2340,7 +2340,7 @@ @@ -2340,7 +2340,7 @@
2340 }, 2340 },
2341 "codepage": { 2341 "codepage": {
2342 "version": "1.14.0", 2342 "version": "1.14.0",
2343 - "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz", 2343 + "resolved": "https://registry.npm.taobao.org/codepage/download/codepage-1.14.0.tgz",
2344 "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=", 2344 "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=",
2345 "requires": { 2345 "requires": {
2346 "commander": "~2.14.1", 2346 "commander": "~2.14.1",
@@ -2976,8 +2976,8 @@ @@ -2976,8 +2976,8 @@
2976 }, 2976 },
2977 "deepmerge": { 2977 "deepmerge": {
2978 "version": "1.5.2", 2978 "version": "1.5.2",
2979 - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",  
2980 - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" 2979 + "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1570547201087&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz",
  2980 + "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M="
2981 }, 2981 },
2982 "define-property": { 2982 "define-property": {
2983 "version": "2.0.2", 2983 "version": "2.0.2",
@@ -3242,9 +3242,15 @@ @@ -3242,9 +3242,15 @@
3242 "dev": true 3242 "dev": true
3243 }, 3243 },
3244 "element-ui": { 3244 "element-ui": {
  3245 +<<<<<<< HEAD
3245 "version": "2.13.0", 3246 "version": "2.13.0",
3246 "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.0.tgz", 3247 "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.0.tgz",
3247 "integrity": "sha512-KYsHWsBXYbLELS8cdfvgJTOMSUby3UEjvsPV1V1VmgJ/DdkOAS4z3MiOrPxrT9w2Cc5lZ4eVSQiGhYFR5NVChw==", 3248 "integrity": "sha512-KYsHWsBXYbLELS8cdfvgJTOMSUby3UEjvsPV1V1VmgJ/DdkOAS4z3MiOrPxrT9w2Cc5lZ4eVSQiGhYFR5NVChw==",
  3249 +=======
  3250 + "version": "2.12.0",
  3251 + "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.12.0.tgz",
  3252 + "integrity": "sha1-qJO8Ea5Pfbt+nVQWBvI+ZD8THuQ=",
  3253 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
3248 "requires": { 3254 "requires": {
3249 "async-validator": "~1.8.1", 3255 "async-validator": "~1.8.1",
3250 "babel-helper-vue-jsx-merge-props": "^2.0.0", 3256 "babel-helper-vue-jsx-merge-props": "^2.0.0",
@@ -6313,7 +6319,11 @@ @@ -6313,7 +6319,11 @@
6313 }, 6319 },
6314 "normalize-wheel": { 6320 "normalize-wheel": {
6315 "version": "1.0.1", 6321 "version": "1.0.1",
  6322 +<<<<<<< HEAD
6316 "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", 6323 "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
  6324 +=======
  6325 + "resolved": "https://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz",
  6326 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
6317 "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" 6327 "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
6318 }, 6328 },
6319 "npm": { 6329 "npm": {
@@ -10547,7 +10557,7 @@ @@ -10547,7 +10557,7 @@
10547 }, 10557 },
10548 "raw-loader": { 10558 "raw-loader": {
10549 "version": "0.5.1", 10559 "version": "0.5.1",
10550 - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", 10560 + "resolved": "https://registry.npm.taobao.org/raw-loader/download/raw-loader-0.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fraw-loader%2Fdownload%2Fraw-loader-0.5.1.tgz",
10551 "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" 10561 "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao="
10552 }, 10562 },
10553 "read-pkg": { 10563 "read-pkg": {
@@ -11142,8 +11152,13 @@ @@ -11142,8 +11152,13 @@
11142 }, 11152 },
11143 "resize-observer-polyfill": { 11153 "resize-observer-polyfill": {
11144 "version": "1.5.1", 11154 "version": "1.5.1",
  11155 +<<<<<<< HEAD
11145 "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", 11156 "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
11146 "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" 11157 "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
  11158 +=======
  11159 + "resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresize-observer-polyfill%2Fdownload%2Fresize-observer-polyfill-1.5.1.tgz",
  11160 + "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ="
  11161 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
11147 }, 11162 },
11148 "resolve": { 11163 "resolve": {
11149 "version": "1.12.0", 11164 "version": "1.12.0",
@@ -12061,8 +12076,8 @@ @@ -12061,8 +12076,8 @@
12061 }, 12076 },
12062 "throttle-debounce": { 12077 "throttle-debounce": {
12063 "version": "1.1.0", 12078 "version": "1.1.0",
12064 - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",  
12065 - "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==" 12079 + "resolved": "https://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz",
  12080 + "integrity": "sha1-UYU9o3vmihVctugns1FKPEIuic0="
12066 }, 12081 },
12067 "through": { 12082 "through": {
12068 "version": "2.3.8", 12083 "version": "2.3.8",
@@ -12,7 +12,11 @@ @@ -12,7 +12,11 @@
12 "dependencies": { 12 "dependencies": {
13 "axios": "^0.19.0", 13 "axios": "^0.19.0",
14 "echarts": "^3.3.2", 14 "echarts": "^3.3.2",
  15 +<<<<<<< HEAD
15 "element-ui": "^2.13.0", 16 "element-ui": "^2.13.0",
  17 +=======
  18 + "element-ui": "^2.12.0",
  19 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
16 "eslint": "^5.14.1", 20 "eslint": "^5.14.1",
17 "file-saver": "^2.0.2", 21 "file-saver": "^2.0.2",
18 "font-awesome": "^4.7.0", 22 "font-awesome": "^4.7.0",
@@ -5,13 +5,13 @@ import qs from 'qs' @@ -5,13 +5,13 @@ import qs from 'qs'
5 Vue.prototype.$http = axios; 5 Vue.prototype.$http = axios;
6 6
7 7
8 -export const getuserMenus = params => { return axios.get(`/perm/userMenus`, { params: params }); }; 8 +export const getuserMenus = params => { return axios.get(`USER-CENTER/perm/userMenus`, { params: params }); };
9 9
10 export const getUserList = params => { return axios.get(`/cloud-user-center/user/list`, { params: params }); }; 10 export const getUserList = params => { return axios.get(`/cloud-user-center/user/list`, { params: params }); };
11 11
12 export const getUserListPage = params => { return axios({ 12 export const getUserListPage = params => { return axios({
13 method: 'GET', 13 method: 'GET',
14 - url: `/user/list`, 14 + url: `USER-CENTER/user/list`,
15 data: params, 15 data: params,
16 headers: { 16 headers: {
17 'Content-Type': 'application/json;charset=UTF-8' 17 'Content-Type': 'application/json;charset=UTF-8'
@@ -21,18 +21,18 @@ export const getUserListPage = params => { return axios({ @@ -21,18 +21,18 @@ export const getUserListPage = params => { return axios({
21 21
22 export const removeUser = params => { return axios({ 22 export const removeUser = params => { return axios({
23 method: 'DELETE', 23 method: 'DELETE',
24 - url: `/user/del`, 24 + url: `USER-CENTER/user/del`,
25 data: params, 25 data: params,
26 headers: { 26 headers: {
27 'Content-Type': 'application/json;charset=UTF-8' 27 'Content-Type': 'application/json;charset=UTF-8'
28 } 28 }
29 })}; 29 })};
30 30
31 -export const batchRemoveUser = params => { return axios.get(`/user/batchremove`, { params: params }); }; 31 +export const batchRemoveUser = params => { return axios.get(`USER-CENTER/user/batchremove`, { params: params }); };
32 32
33 export const editUser = params => { return axios({ 33 export const editUser = params => { return axios({
34 method: 'PUT', 34 method: 'PUT',
35 - url: `/user/edit`, 35 + url: `USER-CENTER/user/edit`,
36 data: params, 36 data: params,
37 headers: { 37 headers: {
38 'Content-Type': 'application/json;charset=UTF-8' 38 'Content-Type': 'application/json;charset=UTF-8'
@@ -41,7 +41,7 @@ export const editUser = params => { return axios({ @@ -41,7 +41,7 @@ export const editUser = params => { return axios({
41 41
42 export const addUser = params => { return axios({ 42 export const addUser = params => { return axios({
43 method: 'POST', 43 method: 'POST',
44 - url: `/user/add`, 44 + url: `USER-CENTER/user/add`,
45 data: params, 45 data: params,
46 headers: { 46 headers: {
47 'Content-Type': 'application/json;charset=UTF-8' 47 'Content-Type': 'application/json;charset=UTF-8'
@@ -50,9 +50,9 @@ export const addUser = params => { return axios({ @@ -50,9 +50,9 @@ export const addUser = params => { return axios({
50 50
51 export const setUserRole = params => { return axios({ 51 export const setUserRole = params => { return axios({
52 method: 'PUT', 52 method: 'PUT',
53 - url: `/user/roleset`, 53 + url: `USER-CENTER/user/roleset`,
54 data: params, 54 data: params,
55 headers: { 55 headers: {
56 'Content-Type': 'application/json;charset=UTF-8' 56 'Content-Type': 'application/json;charset=UTF-8'
57 } 57 }
58 -})};  
  58 +})};
  1 +import http from './http.js'
  2 +let baseUrl = 'nmms-server/nmms/country'
  3 +
  4 +
  5 +export const getCountry = params => { return http.get(`${baseUrl}/getCountryCode`, params); };
  6 +
  7 +export const getByCountryCodeForName = params => { return http.post(`${baseUrl}/getByCountryCodeForName`,params)};
  8 +
  9 +export const getByCountryCode = params => { return http.post(`${baseUrl}/getByCountryCode`,params)};
  1 +import http from './http.js'
  2 +
  3 +let baseUrl = 'nmms-server/nmms/mt3201'
  4 +
  5 +export const getMt3201ListForParam = params => {
  6 + return http.get(`${baseUrl}/getMt3201ListForParam`, params);
  7 +};
  8 +export const deleteByIsDelete = params => { return http.del(`${baseUrl}/deleteByIsDelete`,params)};
  9 +
  10 +export const updateStatus = params => { return http.put(`${baseUrl}/updateStatus`, params)};
  11 +
  12 +export const updateMT3201 = params => { return http.put(`${baseUrl}/updateMt3201`,params)};
  13 +
  14 +export const addMt3201 = params => { return http.post(`${baseUrl}/addMt3201`,params)};
  1 +import http from './http.js'
  2 +
  3 +let baseUrl = 'nmms-server/nmms/flight'
  4 +
  5 +export const getFlightListForParam = params => {
  6 + return http.get(`${baseUrl}/getFlight`, params);
  7 +};
  1 +import http from './http.js'
  2 +
  3 +let baseUrl = 'nmms-server/nmms/mt4201'
  4 +
  5 +export const getMt4201ListForParam = params => {
  6 + return http.get(`${baseUrl}/getMt4201ListForParam`, params);
  7 +};
  8 +export const deleteByIsDelete = params => { return http.del(`${baseUrl}/deleteByIsDelete`,params)};
  9 +
  10 +export const updateStatus = params => { return http.put(`${baseUrl}/updateStatus`, params)};
  11 +
  12 +export const updateMT4201 = params => { return http.put(`${baseUrl}/updateMt4201`,params)};
  13 +
  14 +export const addMt4201 = params => { return http.post(`${baseUrl}/addMt4201`,params)};
  1 +import http from './http.js'
  2 +
  3 +let baseUrl = 'nmms-server/nmms/manifest'
  4 +
  5 +export const getManifests = params => {
  6 + return http.get(`${baseUrl}/getManifests`, params);
  7 +};
  1 +import http from './http.js'
  2 +
  3 +let baseUrl = 'nmms-server/nmms/mt2201'
  4 +
  5 +export const getMt2201ListForParam = params => { return http.get(`${baseUrl}/getMt2201ListForParam`, params)};
  6 +
  7 +export const deleteByIsDelete = params => { return http.del(`${baseUrl}/deleteByIsDelete`,params)};
  8 +
  9 +export const updateStatus = params => { return http.put(`${baseUrl}/updateStatus`, params) };
  10 +
  11 +export const updateMT2201 = params => { return http.put(`${baseUrl}/updateMt2201`,params)};
  12 +
  13 +export const addMt2201 = params => { return http.post(`${baseUrl}/addMt2201`,params)};
  14 +
  15 +export const getLostLoadChange = params => { return http.get(`${baseUrl}/getLostLoadChange`, params)};
  16 +
  17 +export const saveLostChange = params => { return http.get(`${baseUrl}/saveLostChange`, params)};
  18 +
  19 +export const saveLostLoad = params => { return http.put(`${baseUrl}/saveLostLoad`,params)};
  1 +import http from './http.js'
  2 +
  3 +let baseUrl = 'nmms-server/nmms/mt520x'
  4 +
  5 +export const getMt520XListForParam = params => {
  6 + return http.get(`${baseUrl}/getMt520xListForParam`, params);
  7 +};
  8 +export const deleteByIsDelete = params => { return http.del(`${baseUrl}/deleteByIsDelete`,params)};
  9 +
  10 +export const updateStatus = params => { return http.put(`${baseUrl}/updateStatus`, params)};
  11 +
  12 +export const updateMt520X = params => { return http.put(`${baseUrl}/updateMt520x`,params)};
  13 +
  14 +export const addMt520X = params => { return http.post(`${baseUrl}/addMt520x`,params)};
@@ -17,7 +17,7 @@ export default { @@ -17,7 +17,7 @@ export default {
17 return axios({ 17 return axios({
18 method: 'GET', 18 method: 'GET',
19 url: url, 19 url: url,
20 - params: params, 20 + params: params,
21 headers: { 21 headers: {
22 'Content-Type': 'application/x-www-form-urlencoded' 22 'Content-Type': 'application/x-www-form-urlencoded'
23 } 23 }
@@ -67,4 +67,4 @@ export default { @@ -67,4 +67,4 @@ export default {
67 // headers: {}, 67 // headers: {},
68 // // axios 的配置 68 // // axios 的配置
69 // config: {} 69 // config: {}
70 -// }  
  70 +// }
1 import axios from 'axios' 1 import axios from 'axios'
2 2
  3 +<<<<<<< HEAD
3 let base = '/cloud-user-center/system/log'; 4 let base = '/cloud-user-center/system/log';
  5 +=======
  6 +axios.defaults.baseURL = 'http://localhost:8082/api';
  7 +let base = axios.defaults.baseURL+'USER-CENTER/system/log';
  8 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
4 9
5 10
6 export const getList = params => { return axios.get(`${base}/list`, { params: params }); }; 11 export const getList = params => { return axios.get(`${base}/list`, { params: params }); };
  1 +import http from './http.js'
  2 +let baseUrl = 'nmms-server/nmms/mt1201'
  3 +
  4 +export const getMt1201ListForParam = params => { return http.get(`${baseUrl}/getMt1201ListForParam`, params); };
  5 +
  6 +export const deleteByIsDelete = params => { return http.del(`${baseUrl}/deleteByIsDelete`,params)};
  7 +
  8 +export const updateStatus = params => { return http.put(`${baseUrl}/updateStatus`, { params: params }); };
  9 +
  10 +export const updateMT1201 = params => { return http.put(`${baseUrl}/updateMT1201`,params)};
  11 +
  12 +export const addMt1201 = params => { return http.post(`${baseUrl}/addMt1201`,params)};
  13 +
  14 +
1 import axios from 'axios' 1 import axios from 'axios'
2 2
  3 +<<<<<<< HEAD
3 let base = '/cloud-user-center/perm'; 4 let base = '/cloud-user-center/perm';
  5 +=======
  6 +axios.defaults.baseURL = 'http://localhost:8082/api';
  7 +let base = axios.defaults.baseURL+'USER-CENTER/perm';
  8 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
4 9
5 10
6 export const getList = params => { return axios.get(`${base}/list`, { params: params }); }; 11 export const getList = params => { return axios.get(`${base}/list`, { params: params }); };
@@ -34,4 +39,4 @@ export const add = params => { return axios({ @@ -34,4 +39,4 @@ export const add = params => { return axios({
34 headers: { 39 headers: {
35 'Content-Type': 'application/json;charset=UTF-8' 40 'Content-Type': 'application/json;charset=UTF-8'
36 } 41 }
37 -})};  
  42 +})};
  1 +import http from './http.js'
  2 +
  3 +let baseUrl = 'nmms-server/nmms/rep'
  4 +
  5 +export const getResponseForParam = params => {
  6 + return http.get(`${baseUrl}/getResponseForParam`, params);
  7 +};
1 import axios from 'axios' 1 import axios from 'axios'
2 2
  3 +<<<<<<< HEAD
3 let base = '/cloud-user-center/role'; 4 let base = '/cloud-user-center/role';
  5 +=======
  6 +let base = 'USER-CENTER/role';
  7 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
4 8
5 9
6 export const getList = params => { return axios.get(`${base}/list`, { params: params }); }; 10 export const getList = params => { return axios.get(`${base}/list`, { params: params }); };
@@ -43,4 +47,4 @@ export const updateRolePerm = params => { return axios({ @@ -43,4 +47,4 @@ export const updateRolePerm = params => { return axios({
43 headers: { 47 headers: {
44 'Content-Type': 'application/json;charset=UTF-8' 48 'Content-Type': 'application/json;charset=UTF-8'
45 } 49 }
46 -})};  
  50 +})};
1 import http from './http.js' 1 import http from './http.js'
  2 +<<<<<<< HEAD
2 let baseUrl = '/cloud-user-center/user' 3 let baseUrl = '/cloud-user-center/user'
  4 +=======
  5 +let baseUrl = 'user-center/user'
  6 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
3 7
4 export const getUserList = params => { return http.get(`${baseUrl}/list`, params); }; 8 export const getUserList = params => { return http.get(`${baseUrl}/list`, params); };
5 9
@@ -13,4 +17,4 @@ export const editUser = params => { return http.put(`/user/edit`,params)}; @@ -13,4 +17,4 @@ export const editUser = params => { return http.put(`/user/edit`,params)};
13 17
14 export const addUser = params => { return http.post(`/user/add`,params)}; 18 export const addUser = params => { return http.post(`/user/add`,params)};
15 19
16 -export const setUserRole = params => { return http.put(`/user/roleset`,params)};  
  20 +export const setUserRole = params => { return http.put(`/user/roleset`,params)};
@@ -29,12 +29,12 @@ export default { @@ -29,12 +29,12 @@ export default {
29 }, 29 },
30 limit: { 30 limit: {
31 type: Number, 31 type: Number,
32 - default: 20 32 + default: 100
33 }, 33 },
34 pageSizes: { 34 pageSizes: {
35 type: Array, 35 type: Array,
36 default() { 36 default() {
37 - return [10, 20, 30, 50] 37 + return [10, 20, 30, 50, 100]
38 } 38 }
39 }, 39 },
40 layout: { 40 layout: {
@@ -92,7 +92,7 @@ export default { @@ -92,7 +92,7 @@ export default {
92 <style scoped> 92 <style scoped>
93 .pagination-container { 93 .pagination-container {
94 background: #fff; 94 background: #fff;
95 - padding: 32px 16px; 95 + /*padding: 32px 16px;*/
96 } 96 }
97 .pagination-container.hidden { 97 .pagination-container.hidden {
98 display: none; 98 display: none;
1 <template> 1 <template>
2 <el-table :data="formatData" :row-style="showRow" v-bind="$attrs"> 2 <el-table :data="formatData" :row-style="showRow" v-bind="$attrs">
3 - <el-table-column type="selection" width="30" align="center"/>  
4 - <el-table-column v-if="columns.length===0" width="30" align="center"> 3 + <el-table-column type="selection" width="50" align="center"></el-table-column>
  4 + <el-table-column v-if="columns.length===0" width="55" align="center">
5 <template slot-scope="scope"> 5 <template slot-scope="scope">
6 <span v-for="space in scope.row._level" :key="space" class="ms-tree-space"/> 6 <span v-for="space in scope.row._level" :key="space" class="ms-tree-space"/>
7 <span v-if="iconShow(0,scope.row)" class="tree-ctrl" @click="toggleExpanded(scope.$index)"> 7 <span v-if="iconShow(0,scope.row)" class="tree-ctrl" @click="toggleExpanded(scope.$index)">
8 <i v-if="!scope.row._expanded" class="el-icon-plus"/> 8 <i v-if="!scope.row._expanded" class="el-icon-plus"/>
9 <i v-else class="el-icon-minus"/> 9 <i v-else class="el-icon-minus"/>
10 </span> 10 </span>
11 - <!--{{ scope.$index }}-->  
12 </template> 11 </template>
13 </el-table-column> 12 </el-table-column>
14 <el-table-column v-for="(column, index) in columns" v-else :key="column.value" :label="column.text" :width="column.width"> 13 <el-table-column v-for="(column, index) in columns" v-else :key="column.value" :label="column.text" :width="column.width">
@@ -20,7 +19,6 @@ @@ -20,7 +19,6 @@
20 <i v-if="!scope.row._expanded" class="el-icon-plus"/> 19 <i v-if="!scope.row._expanded" class="el-icon-plus"/>
21 <i v-else class="el-icon-minus"/> 20 <i v-else class="el-icon-minus"/>
22 </span> 21 </span>
23 - {{ scope.row[column.value] }}  
24 </template> 22 </template>
25 </el-table-column> 23 </el-table-column>
26 <slot/> 24 <slot/>
@@ -49,7 +47,7 @@ export default { @@ -49,7 +47,7 @@ export default {
49 evalArgs: Array, 47 evalArgs: Array,
50 expandAll: { 48 expandAll: {
51 type: Boolean, 49 type: Boolean,
52 - default: true 50 + default: false
53 } 51 }
54 }, 52 },
55 computed: { 53 computed: {
@@ -68,11 +66,8 @@ export default { @@ -68,11 +66,8 @@ export default {
68 }, 66 },
69 methods: { 67 methods: {
70 showRow: function(row) { 68 showRow: function(row) {
71 - this.data  
72 - const show = (row.parent ? (row.parent._expanded && row.parent._show) : true)  
73 -// const show = (row.row.parent ? (row.row.parent._expanded && row.row.parent._show) : true)  
74 -// row.row._show = show  
75 - row._show = show 69 + const show = (row.row.parent ? (row.row.parent._expanded && row.row.parent._show) : true)
  70 + row.row._show = show
76 return show ? 'animation:treeTableShow 1s;-webkit-animation:treeTableShow 1s;' : 'display:none;' 71 return show ? 'animation:treeTableShow 1s;-webkit-animation:treeTableShow 1s;' : 'display:none;'
77 }, 72 },
78 // 切换下级是否展开 73 // 切换下级是否展开
1 1
2 import Vue from 'vue' 2 import Vue from 'vue'
3 import App from './App' 3 import App from './App'
  4 +<<<<<<< HEAD
  5 +=======
  6 +import ElementUI from 'element-ui'
  7 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
4 import 'element-ui/lib/theme-chalk/index.css' 8 import 'element-ui/lib/theme-chalk/index.css'
5 //import './assets/theme/theme-green/index.css' 9 //import './assets/theme/theme-green/index.css'
6 import VueRouter from 'vue-router' 10 import VueRouter from 'vue-router'
@@ -11,9 +15,13 @@ import rout from './routes' @@ -11,9 +15,13 @@ import rout from './routes'
11 import Mock from './mock' 15 import Mock from './mock'
12 import i18n from './lang' 16 import i18n from './lang'
13 import 'font-awesome/css/font-awesome.min.css' 17 import 'font-awesome/css/font-awesome.min.css'
  18 +<<<<<<< HEAD
14 import ElementUI from 'element-ui' 19 import ElementUI from 'element-ui'
15 20
16 import * as socketApi from './api/socket' 21 import * as socketApi from './api/socket'
  22 +=======
  23 +import '@/styles/index.scss'
  24 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
17 25
18 //定义一个全局过滤器实现日期格式化 26 //定义一个全局过滤器实现日期格式化
19 Vue.filter('datefmt',function(input,fmtstring){ 27 Vue.filter('datefmt',function(input,fmtstring){
@@ -33,8 +41,8 @@ Vue.use(Vuex) @@ -33,8 +41,8 @@ Vue.use(Vuex)
33 Vue.prototype.$axios = axios; 41 Vue.prototype.$axios = axios;
34 42
35 //NProgress.configure({ showSpinner: false }); 43 //NProgress.configure({ showSpinner: false });
36 -console.log("mainjs:");  
37 -console.log(rout.routes); 44 +// console.log("mainjs:");
  45 +// console.log(rout.routes);
38 const router = new VueRouter({ 46 const router = new VueRouter({
39 routes:rout.routes 47 routes:rout.routes
40 }); 48 });
@@ -61,7 +69,7 @@ router.beforeEach((to, from, next) => { @@ -61,7 +69,7 @@ router.beforeEach((to, from, next) => {
61 } 69 }
62 }); 70 });
63 71
64 -var message = Vue.prototype.$message; 72 +const message = Vue.prototype.$message;
65 axios.defaults.baseURL = '/api'; 73 axios.defaults.baseURL = '/api';
66 axios.interceptors.response.use( 74 axios.interceptors.response.use(
67 res => { 75 res => {
@@ -7,12 +7,26 @@ import Role from './views/nav1/role.vue' @@ -7,12 +7,26 @@ import Role from './views/nav1/role.vue'
7 import Perm from './views/nav1/perm.vue' 7 import Perm from './views/nav1/perm.vue'
8 import LOG from './views/nav1/Log.vue' 8 import LOG from './views/nav1/Log.vue'
9 import PreManifest from './views/agent/PreManifest.vue' 9 import PreManifest from './views/agent/PreManifest.vue'
  10 +<<<<<<< HEAD
10 import Company from './views/nav1/company.vue' 11 import Company from './views/nav1/company.vue'
11 import Department from './views/nav1/department.vue' 12 import Department from './views/nav1/department.vue'
12 import Group from './views/nav1/groupcompany.vue' 13 import Group from './views/nav1/groupcompany.vue'
13 import Process from './views/hqpt/Process.vue' 14 import Process from './views/hqpt/Process.vue'
14 import Job from './views/hqpt/Job.vue' 15 import Job from './views/hqpt/Job.vue'
15 // import Form from './views/nav1/Form.vue' 16 // import Form from './views/nav1/Form.vue'
  17 +=======
  18 +import OrgManifest from './views/nmms/orgManifest.vue'
  19 +import ExitFlight from './views/nmms/ExitFlight.vue'
  20 +import ExitPre from './views/nmms/ExitPre.vue'
  21 +import ExitTidy from './views/nmms/ExitTidy.vue'
  22 +import ExitArrive from './views/nmms/ExitArrive.vue'
  23 +import ExitManifest from './views/nmms/ExitManifest.vue'
  24 +import ExitLoading from './views/nmms/ExitLoading.vue'
  25 +import ExitFlightDesc from './views/nmms/ExitFlightDesc.vue'
  26 +import LostLoad from './views/lostLoadChange/lostLoading.vue'
  27 +import LostLoadChange from './views/lostLoadChange/lostLoadChange.vue'
  28 +
  29 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
16 30
17 import User from './views/nav1/user.vue' 31 import User from './views/nav1/user.vue'
18 import Page4 from './views/nav2/Page4.vue' 32 import Page4 from './views/nav2/Page4.vue'
@@ -47,7 +61,7 @@ let routes = [ @@ -47,7 +61,7 @@ let routes = [
47 leaf: true, 61 leaf: true,
48 iconCls: 'el-icon-menu', 62 iconCls: 'el-icon-menu',
49 children: [ 63 children: [
50 - { path: '/main', component: Main, name: '首页'}, 64 + {path: '/main', component: Main, name: '首页'},
51 ] 65 ]
52 }, 66 },
53 // { path: '/test', component: Main }, 67 // { path: '/test', component: Main },
@@ -57,6 +71,7 @@ let routes = [ @@ -57,6 +71,7 @@ let routes = [
57 name: '系统设置', 71 name: '系统设置',
58 iconCls: 'el-icon-setting',//图标样式class 72 iconCls: 'el-icon-setting',//图标样式class
59 children: [ 73 children: [
  74 +<<<<<<< HEAD
60 { path: '/user', component: User, name: '用户管理' }, 75 { path: '/user', component: User, name: '用户管理' },
61 { path: '/role', component: Role, name: '岗位管理' }, 76 { path: '/role', component: Role, name: '岗位管理' },
62 { path: '/perm', component: Perm, name: '权限管理' }, 77 { path: '/perm', component: Perm, name: '权限管理' },
@@ -64,6 +79,12 @@ let routes = [ @@ -64,6 +79,12 @@ let routes = [
64 { path: '/department', component: Department, name: '部门管理' }, 79 { path: '/department', component: Department, name: '部门管理' },
65 { path: '/company', component: Company, name: '公司管理'}, 80 { path: '/company', component: Company, name: '公司管理'},
66 { path: '/group', component: Group, name: '集团管理'} 81 { path: '/group', component: Group, name: '集团管理'}
  82 +=======
  83 + {path: '/user', component: User, name: '用户管理'},
  84 + {path: '/role', component: Role, name: '角色管理'},
  85 + {path: '/perm', component: Perm, name: '权限管理'},
  86 + {path: '/log', component: LOG, name: '系统日志'},
  87 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
67 ] 88 ]
68 }, 89 },
69 { 90 {
@@ -72,8 +93,37 @@ let routes = [ @@ -72,8 +93,37 @@ let routes = [
72 name: '客服系统', 93 name: '客服系统',
73 iconCls: 'fa fa-id-card-o', 94 iconCls: 'fa fa-id-card-o',
74 children: [ 95 children: [
  96 +<<<<<<< HEAD
75 { path: '/process', component: Process, name: '工单管理' }, 97 { path: '/process', component: Process, name: '工单管理' },
76 { path: '/job', component: Job, name: '任务管理' } 98 { path: '/job', component: Job, name: '任务管理' }
  99 +=======
  100 + {path: '/pre1', component: PreManifest, name: '预配'},
  101 + ]
  102 + },
  103 + {
  104 + path: '/output',
  105 + component: Home,
  106 + name: '出港业务申报',
  107 + iconCls: 'el-icon-collection',
  108 + children: [
  109 + {path: '/flight', component: ExitFlight, name: '出港航班申报'},
  110 + {path: '/manifest', component: ExitManifest, name: '出港运单申报'},
  111 + {path: '/pre', component: ExitPre, name: '出港预配舱单'},
  112 + {path: '/arrive', component: ExitArrive, name: '出港运抵'},
  113 + {path: '/loadingView', component: ExitFlightDesc, name: '出港航班信息'},
  114 + {path: '/loading', component: ExitLoading, name: '出港装载'},
  115 + {path: '/tidy', component: ExitTidy, name: '出港理货'}
  116 + ]
  117 + },
  118 + {
  119 + path: '/lost',
  120 + component: Home,
  121 + name: '落装改配申报',
  122 + iconCls:'el-icon-goods',
  123 + children:[
  124 + {path:'/lostLoad',component:LostLoad,name:'落装业务申报'},
  125 + // {path:'/lostLoadChange',component:LostLoadChange,name:'改配业务申报'}
  126 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
77 ] 127 ]
78 }, 128 },
79 { 129 {
@@ -82,7 +132,12 @@ let routes = [ @@ -82,7 +132,12 @@ let routes = [
82 name: '能源管理', 132 name: '能源管理',
83 iconCls: 'fa fa-id-card-o', 133 iconCls: 'fa fa-id-card-o',
84 children: [ 134 children: [
  135 +<<<<<<< HEAD
85 { path: '/location', component: Location, name: '能源缴费' }, 136 { path: '/location', component: Location, name: '能源缴费' },
  137 +=======
  138 + {path: '/page4', component: Page4, name: '页面4'},
  139 + {path: '/page5', component: Page5, name: '页面5'}
  140 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
86 ] 141 ]
87 }, 142 },
88 { 143 {
@@ -105,12 +160,16 @@ let routes = [ @@ -105,12 +160,16 @@ let routes = [
105 iconCls: 'fa fa-address-card', 160 iconCls: 'fa fa-address-card',
106 // leaf: true,//只有一个节点 161 // leaf: true,//只有一个节点
107 children: [ 162 children: [
  163 +<<<<<<< HEAD
108 164
109 { path: '/water_stations_patrol', component: WaterStationsPatrol, name: '二水厂-水站巡视记录单管理' }, 165 { path: '/water_stations_patrol', component: WaterStationsPatrol, name: '二水厂-水站巡视记录单管理' },
110 // { path: '/page6', component: Page6, name: '水质量检测' }, 166 // { path: '/page6', component: Page6, name: '水质量检测' },
111 // { path: '/page6', component: Page6, name: '污水站' }, 167 // { path: '/page6', component: Page6, name: '污水站' },
112 // { path: '/page6', component: Page6, name: '一水厂' }, 168 // { path: '/page6', component: Page6, name: '一水厂' },
113 // { path: '/page6', component: Page6, name: '综合楼空调站' }, 169 // { path: '/page6', component: Page6, name: '综合楼空调站' },
  170 +=======
  171 + {path: '/page6', component: Page6, name: '导航三'}
  172 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
114 ] 173 ]
115 }, 174 },
116 { 175 {
@@ -119,13 +178,13 @@ let routes = [ @@ -119,13 +178,13 @@ let routes = [
119 name: 'Charts', 178 name: 'Charts',
120 iconCls: 'fa fa-bar-chart', 179 iconCls: 'fa fa-bar-chart',
121 children: [ 180 children: [
122 - { path: '/echarts', component: echarts, name: 'echarts' } 181 + {path: '/echarts', component: echarts, name: 'echarts'}
123 ] 182 ]
124 }, 183 },
125 { 184 {
126 path: '*', 185 path: '*',
127 hidden: true, 186 hidden: true,
128 - redirect: { path: '/404' } 187 + redirect: {path: '/404'}
129 } 188 }
130 ]; 189 ];
131 let initRouters = routes.concat(); 190 let initRouters = routes.concat();
@@ -136,7 +195,7 @@ let setUserMenus = function (list) { @@ -136,7 +195,7 @@ let setUserMenus = function (list) {
136 * 处理登陆后的账号对应的菜单 195 * 处理登陆后的账号对应的菜单
137 * @param menuList 196 * @param menuList
138 */ 197 */
139 -let handleMenuList = function (router,menu) { 198 +let handleMenuList = function (router, menu) {
140 var _self = this; 199 var _self = this;
141 var routerName = ""; 200 var routerName = "";
142 router.forEach(function (v_router) { 201 router.forEach(function (v_router) {
@@ -149,16 +208,16 @@ let handleMenuList = function (router,menu) { @@ -149,16 +208,16 @@ let handleMenuList = function (router,menu) {
149 208
150 //匹配到继续判断是否子元素,有子元素继续递归 209 //匹配到继续判断是否子元素,有子元素继续递归
151 if (result) { 210 if (result) {
152 - if(v_router.children) {  
153 - _self.handleMenuList(v_router.children,result.children); 211 + if (v_router.children) {
  212 + _self.handleMenuList(v_router.children, result.children);
154 } 213 }
155 //没有则可以移除 214 //没有则可以移除
156 - }else {  
157 - router.splice(router.findIndex(itm => itm.name === routerName ),1); 215 + } else {
  216 + router.splice(router.findIndex(itm => itm.name === routerName), 1);
158 } 217 }
159 }) 218 })
160 }); 219 });
161 } 220 }
162 export default { 221 export default {
163 - routes,setUserMenus,handleMenuList,initRouters  
164 -};  
  222 + routes, setUserMenus, handleMenuList, initRouters
  223 +};
  1 +@import './variables.scss';
  2 +
  3 +@mixin colorBtn($color) {
  4 + background: $color;
  5 +
  6 + &:hover {
  7 + color: $color;
  8 +
  9 + &:before,
  10 + &:after {
  11 + background: $color;
  12 + }
  13 + }
  14 +}
  15 +
  16 +.blue-btn {
  17 + @include colorBtn($blue)
  18 +}
  19 +
  20 +.light-blue-btn {
  21 + @include colorBtn($light-blue)
  22 +}
  23 +
  24 +.red-btn {
  25 + @include colorBtn($red)
  26 +}
  27 +
  28 +.pink-btn {
  29 + @include colorBtn($pink)
  30 +}
  31 +
  32 +.green-btn {
  33 + @include colorBtn($green)
  34 +}
  35 +
  36 +.tiffany-btn {
  37 + @include colorBtn($tiffany)
  38 +}
  39 +
  40 +.yellow-btn {
  41 + @include colorBtn($yellow)
  42 +}
  43 +
  44 +.pan-btn {
  45 + font-size: 14px;
  46 + color: #fff;
  47 + padding: 14px 36px;
  48 + border-radius: 8px;
  49 + border: none;
  50 + outline: none;
  51 + transition: 600ms ease all;
  52 + position: relative;
  53 + display: inline-block;
  54 +
  55 + &:hover {
  56 + background: #fff;
  57 +
  58 + &:before,
  59 + &:after {
  60 + width: 100%;
  61 + transition: 600ms ease all;
  62 + }
  63 + }
  64 +
  65 + &:before,
  66 + &:after {
  67 + content: '';
  68 + position: absolute;
  69 + top: 0;
  70 + right: 0;
  71 + height: 2px;
  72 + width: 0;
  73 + transition: 400ms ease all;
  74 + }
  75 +
  76 + &::after {
  77 + right: inherit;
  78 + top: inherit;
  79 + left: 0;
  80 + bottom: 0;
  81 + }
  82 +}
  83 +
  84 +.custom-button {
  85 + display: inline-block;
  86 + line-height: 1;
  87 + white-space: nowrap;
  88 + cursor: pointer;
  89 + background: #fff;
  90 + color: #fff;
  91 + -webkit-appearance: none;
  92 + text-align: center;
  93 + box-sizing: border-box;
  94 + outline: 0;
  95 + margin: 0;
  96 + padding: 10px 15px;
  97 + font-size: 14px;
  98 + border-radius: 4px;
  99 +}
  1 +//覆盖一些element-ui样式
  2 +
  3 +.el-breadcrumb__inner,
  4 +.el-breadcrumb__inner a {
  5 + font-weight: 400 !important;
  6 +}
  7 +
  8 +.el-upload {
  9 + input[type="file"] {
  10 + display: none !important;
  11 + }
  12 +}
  13 +
  14 +.el-upload__input {
  15 + display: none;
  16 +}
  17 +
  18 +.cell {
  19 + .el-tag {
  20 + margin-right: 0px;
  21 + }
  22 +}
  23 +
  24 +.small-padding {
  25 + .cell {
  26 + padding-left: 5px;
  27 + padding-right: 5px;
  28 + }
  29 +}
  30 +
  31 +.fixed-width {
  32 + .el-button--mini {
  33 + padding: 7px 10px;
  34 + width: 60px;
  35 + }
  36 +}
  37 +
  38 +.status-col {
  39 + .cell {
  40 + padding: 0 10px;
  41 + text-align: center;
  42 +
  43 + .el-tag {
  44 + margin-right: 0px;
  45 + }
  46 + }
  47 +}
  48 +
  49 +//暂时性解决dialog 问题 https://github.com/ElemeFE/element/issues/2461
  50 +.el-dialog {
  51 + transform: none;
  52 + left: 0;
  53 + position: relative;
  54 + margin: 0 auto;
  55 +}
  56 +
  57 +//文章页textarea修改样式
  58 +.article-textarea {
  59 + textarea {
  60 + padding-right: 40px;
  61 + resize: none;
  62 + border: none;
  63 + border-radius: 0px;
  64 + border-bottom: 1px solid #bfcbd9;
  65 + }
  66 +}
  67 +
  68 +//element ui upload
  69 +.upload-container {
  70 + .el-upload {
  71 + width: 100%;
  72 +
  73 + .el-upload-dragger {
  74 + width: 100%;
  75 + height: 200px;
  76 + }
  77 + }
  78 +}
  79 +
  80 +//dropdown
  81 +.el-dropdown-menu {
  82 + a {
  83 + display: block
  84 + }
  85 +}
  1 +@import './variables.scss';
  2 +@import './mixin.scss';
  3 +@import './transition.scss';
  4 +@import './element-ui.scss';
  5 +@import './sidebar.scss';
  6 +@import './btn.scss';
  7 +
  8 +body {
  9 + height: 100%;
  10 + -moz-osx-font-smoothing: grayscale;
  11 + -webkit-font-smoothing: antialiased;
  12 + text-rendering: optimizeLegibility;
  13 + font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
  14 +}
  15 +
  16 +label {
  17 + font-weight: 700;
  18 +}
  19 +
  20 +html {
  21 + height: 100%;
  22 + box-sizing: border-box;
  23 +}
  24 +
  25 +#app {
  26 + height: 100%;
  27 +}
  28 +
  29 +*,
  30 +*:before,
  31 +*:after {
  32 + box-sizing: inherit;
  33 +}
  34 +
  35 +.no-padding {
  36 + padding: 0px !important;
  37 +}
  38 +
  39 +.padding-content {
  40 + padding: 4px 0;
  41 +}
  42 +
  43 +a:focus,
  44 +a:active {
  45 + outline: none;
  46 +}
  47 +
  48 +a,
  49 +a:focus,
  50 +a:hover {
  51 + cursor: pointer;
  52 + color: inherit;
  53 + text-decoration: none;
  54 +}
  55 +
  56 +div:focus {
  57 + outline: none;
  58 +}
  59 +
  60 +.fr {
  61 + float: right;
  62 +}
  63 +
  64 +.fl {
  65 + float: left;
  66 +}
  67 +
  68 +.pr-5 {
  69 + padding-right: 5px;
  70 +}
  71 +
  72 +.pl-5 {
  73 + padding-left: 5px;
  74 +}
  75 +
  76 +.block {
  77 + display: block;
  78 +}
  79 +
  80 +.pointer {
  81 + cursor: pointer;
  82 +}
  83 +
  84 +.inlineBlock {
  85 + display: block;
  86 +}
  87 +
  88 +.clearfix {
  89 + &:after {
  90 + visibility: hidden;
  91 + display: block;
  92 + font-size: 0;
  93 + content: " ";
  94 + clear: both;
  95 + height: 0;
  96 + }
  97 +}
  98 +
  99 +code {
  100 + background: #eef1f6;
  101 + padding: 15px 16px;
  102 + margin-bottom: 20px;
  103 + display: block;
  104 + line-height: 36px;
  105 + font-size: 15px;
  106 + font-family: "Source Sans Pro", "Helvetica Neue", Arial, sans-serif;
  107 +
  108 + a {
  109 + color: #337ab7;
  110 + cursor: pointer;
  111 +
  112 + &:hover {
  113 + color: rgb(32, 160, 255);
  114 + }
  115 + }
  116 +}
  117 +
  118 +.warn-content {
  119 + background: rgba(66, 185, 131, .1);
  120 + border-radius: 2px;
  121 + padding: 16px;
  122 + padding: 1rem;
  123 + line-height: 1.6rem;
  124 + word-spacing: .05rem;
  125 +
  126 + a {
  127 + color: #42b983;
  128 + font-weight: 600;
  129 + }
  130 +}
  131 +
  132 +//main-container全局样式
  133 +.app-container {
  134 + padding: 20px;
  135 +}
  136 +
  137 +.components-container {
  138 + margin: 30px 50px;
  139 + position: relative;
  140 +}
  141 +
  142 +.pagination-container {
  143 + margin-top: 30px;
  144 +}
  145 +
  146 +.text-center {
  147 + text-align: center
  148 +}
  149 +
  150 +.sub-navbar {
  151 + height: 50px;
  152 + line-height: 50px;
  153 + position: relative;
  154 + width: 100%;
  155 + text-align: right;
  156 + padding-right: 20px;
  157 + transition: 600ms ease position;
  158 + background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%);
  159 +
  160 + .subtitle {
  161 + font-size: 20px;
  162 + color: #fff;
  163 + }
  164 +
  165 + &.draft {
  166 + background: #d0d0d0;
  167 + }
  168 +
  169 + &.deleted {
  170 + background: #d0d0d0;
  171 + }
  172 +}
  173 +
  174 +.link-type,
  175 +.link-type:focus {
  176 + color: #337ab7;
  177 + cursor: pointer;
  178 +
  179 + &:hover {
  180 + color: rgb(32, 160, 255);
  181 + }
  182 +}
  183 +
  184 +.filter-container {
  185 + padding-bottom: 10px;
  186 +
  187 + .filter-item {
  188 + display: inline-block;
  189 + vertical-align: middle;
  190 + margin-bottom: 10px;
  191 + }
  192 +}
  193 +
  194 +//refine vue-multiselect plugin
  195 +.multiselect {
  196 + line-height: 16px;
  197 +}
  198 +
  199 +.multiselect--active {
  200 + z-index: 1000 !important;
  201 +}
  1 +@mixin clearfix {
  2 + &:after {
  3 + content: "";
  4 + display: table;
  5 + clear: both;
  6 + }
  7 +}
  8 +
  9 +@mixin scrollBar {
  10 + &::-webkit-scrollbar-track-piece {
  11 + background: #d3dce6;
  12 + }
  13 +
  14 + &::-webkit-scrollbar {
  15 + width: 6px;
  16 + }
  17 +
  18 + &::-webkit-scrollbar-thumb {
  19 + background: #99a9bf;
  20 + border-radius: 20px;
  21 + }
  22 +}
  23 +
  24 +@mixin relative {
  25 + position: relative;
  26 + width: 100%;
  27 + height: 100%;
  28 +}
  29 +
  30 +@mixin pct($pct) {
  31 + width: #{$pct};
  32 + position: relative;
  33 + margin: 0 auto;
  34 +}
  35 +
  36 +@mixin triangle($width, $height, $color, $direction) {
  37 + $width: $width/2;
  38 + $color-border-style: $height solid $color;
  39 + $transparent-border-style: $width solid transparent;
  40 + height: 0;
  41 + width: 0;
  42 +
  43 + @if $direction==up {
  44 + border-bottom: $color-border-style;
  45 + border-left: $transparent-border-style;
  46 + border-right: $transparent-border-style;
  47 + }
  48 +
  49 + @else if $direction==right {
  50 + border-left: $color-border-style;
  51 + border-top: $transparent-border-style;
  52 + border-bottom: $transparent-border-style;
  53 + }
  54 +
  55 + @else if $direction==down {
  56 + border-top: $color-border-style;
  57 + border-left: $transparent-border-style;
  58 + border-right: $transparent-border-style;
  59 + }
  60 +
  61 + @else if $direction==left {
  62 + border-right: $color-border-style;
  63 + border-top: $transparent-border-style;
  64 + border-bottom: $transparent-border-style;
  65 + }
  66 +}
  1 +#app {
  2 +
  3 + // 主体区域 Main container
  4 + .main-container {
  5 + min-height: 100%;
  6 + transition: margin-left .28s;
  7 + margin-left: $sideBarWidth;
  8 + position: relative;
  9 + }
  10 +
  11 + // 侧边栏 Sidebar container
  12 + .sidebar-container {
  13 + transition: width 0.28s;
  14 + width: $sideBarWidth !important;
  15 + height: 100%;
  16 + position: fixed;
  17 + font-size: 0px;
  18 + top: 0;
  19 + bottom: 0;
  20 + left: 0;
  21 + z-index: 1001;
  22 + overflow: hidden;
  23 +
  24 + //reset element-ui css
  25 + .horizontal-collapse-transition {
  26 + transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
  27 + }
  28 +
  29 + .scrollbar-wrapper {
  30 + overflow-x: hidden !important;
  31 +
  32 + .el-scrollbar__view {
  33 + height: 100%;
  34 + }
  35 + }
  36 +
  37 + .el-scrollbar__bar.is-vertical {
  38 + right: 0px;
  39 + }
  40 +
  41 + .is-horizontal {
  42 + display: none;
  43 + }
  44 +
  45 + a {
  46 + display: inline-block;
  47 + width: 100%;
  48 + overflow: hidden;
  49 + }
  50 +
  51 + .svg-icon {
  52 + margin-right: 16px;
  53 + }
  54 +
  55 + .el-menu {
  56 + border: none;
  57 + height: 100%;
  58 + width: 100% !important;
  59 + }
  60 +
  61 + // menu hover
  62 + .submenu-title-noDropdown,
  63 + .el-submenu__title {
  64 + &:hover {
  65 + background-color: $menuHover !important;
  66 + }
  67 + }
  68 +
  69 + .is-active>.el-submenu__title {
  70 + color: $subMenuActiveText !important;
  71 + }
  72 +
  73 + & .nest-menu .el-submenu>.el-submenu__title,
  74 + & .el-submenu .el-menu-item {
  75 + min-width: $sideBarWidth !important;
  76 + background-color: $subMenuBg !important;
  77 +
  78 + &:hover {
  79 + background-color: $subMenuHover !important;
  80 + }
  81 + }
  82 + }
  83 +
  84 + .hideSidebar {
  85 + .sidebar-container {
  86 + width: 36px !important;
  87 + }
  88 +
  89 + .main-container {
  90 + margin-left: 36px;
  91 + }
  92 +
  93 + .submenu-title-noDropdown {
  94 + padding-left: 10px !important;
  95 + position: relative;
  96 +
  97 + .el-tooltip {
  98 + padding: 0 10px !important;
  99 + }
  100 + }
  101 +
  102 + .el-submenu {
  103 + overflow: hidden;
  104 +
  105 + &>.el-submenu__title {
  106 + padding-left: 10px !important;
  107 +
  108 + .el-submenu__icon-arrow {
  109 + display: none;
  110 + }
  111 + }
  112 + }
  113 +
  114 + .el-menu--collapse {
  115 + .el-submenu {
  116 + &>.el-submenu__title {
  117 + &>span {
  118 + height: 0;
  119 + width: 0;
  120 + overflow: hidden;
  121 + visibility: hidden;
  122 + display: inline-block;
  123 + }
  124 + }
  125 + }
  126 + }
  127 + }
  128 +
  129 + .el-menu--collapse .el-menu .el-submenu {
  130 + min-width: $sideBarWidth !important;
  131 + }
  132 +
  133 + // 适配移动端, Mobile responsive
  134 + .mobile {
  135 + .main-container {
  136 + margin-left: 0px;
  137 + }
  138 +
  139 + .sidebar-container {
  140 + transition: transform .28s;
  141 + width: $sideBarWidth !important;
  142 + }
  143 +
  144 + &.hideSidebar {
  145 + .sidebar-container {
  146 + pointer-events: none;
  147 + transition-duration: 0.3s;
  148 + transform: translate3d(-$sideBarWidth, 0, 0);
  149 + }
  150 + }
  151 + }
  152 +
  153 + .withoutAnimation {
  154 +
  155 + .main-container,
  156 + .sidebar-container {
  157 + transition: none;
  158 + }
  159 + }
  160 +}
  161 +
  162 +// when menu collapsed
  163 +.el-menu--vertical {
  164 + &>.el-menu {
  165 + .svg-icon {
  166 + margin-right: 16px;
  167 + }
  168 + }
  169 +
  170 + .nest-menu .el-submenu>.el-submenu__title,
  171 + .el-menu-item {
  172 + &:hover {
  173 + // you can use $subMenuHover
  174 + background-color: $menuHover !important;
  175 + }
  176 + }
  177 +
  178 + // the scroll bar appears when the subMenu is too long
  179 + >.el-menu--popup {
  180 + max-height: 100vh;
  181 + overflow-y: auto;
  182 +
  183 + &::-webkit-scrollbar-track-piece {
  184 + background: #d3dce6;
  185 + }
  186 +
  187 + &::-webkit-scrollbar {
  188 + width: 6px;
  189 + }
  190 +
  191 + &::-webkit-scrollbar-thumb {
  192 + background: #99a9bf;
  193 + border-radius: 20px;
  194 + }
  195 + }
  196 +}
  1 +//globl transition css
  2 +
  3 +/*fade*/
  4 +.fade-enter-active,
  5 +.fade-leave-active {
  6 + transition: opacity 0.28s;
  7 +}
  8 +
  9 +.fade-enter,
  10 +.fade-leave-active {
  11 + opacity: 0;
  12 +}
  13 +
  14 +/*fade-transform*/
  15 +.fade-transform-leave-active,
  16 +.fade-transform-enter-active {
  17 + transition: all .5s;
  18 +}
  19 +
  20 +.fade-transform-enter {
  21 + opacity: 0;
  22 + transform: translateX(-30px);
  23 +}
  24 +
  25 +.fade-transform-leave-to {
  26 + opacity: 0;
  27 + transform: translateX(30px);
  28 +}
  29 +
  30 +/*breadcrumb transition*/
  31 +.breadcrumb-enter-active,
  32 +.breadcrumb-leave-active {
  33 + transition: all .5s;
  34 +}
  35 +
  36 +.breadcrumb-enter,
  37 +.breadcrumb-leave-active {
  38 + opacity: 0;
  39 + transform: translateX(20px);
  40 +}
  41 +
  42 +.breadcrumb-move {
  43 + transition: all .5s;
  44 +}
  45 +
  46 +.breadcrumb-leave-active {
  47 + position: absolute;
  48 +}
  1 +// base color
  2 +$blue:#324157;
  3 +$light-blue:#3A71A8;
  4 +$red:#C03639;
  5 +$pink: #E65D6E;
  6 +$green: #30B08F;
  7 +$tiffany: #4AB7BD;
  8 +$yellow:#FEC171;
  9 +$panGreen: #30B08F;
  10 +
  11 +//sidebar
  12 +$menuText:#bfcbd9;
  13 +$menuActiveText:#409EFF;
  14 +$subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951
  15 +
  16 +$menuBg:#304156;
  17 +$menuHover:#263445;
  18 +
  19 +$subMenuBg:#1f2d3d;
  20 +$subMenuHover:#001528;
  21 +
  22 +$sideBarWidth: 180px;
  23 +
  24 +// the :export directive is the magic sauce for webpack
  25 +:export {
  26 + menuText: $menuText;
  27 + menuActiveText: $menuActiveText;
  28 + subMenuActiveText: $subMenuActiveText;
  29 + menuBg: $menuBg;
  30 + menuHover: $menuHover;
  31 + subMenuBg: $subMenuBg;
  32 + subMenuHover: $subMenuHover;
  33 + sideBarWidth: $sideBarWidth;
  34 +}
@@ -8,7 +8,7 @@ const type = [{ @@ -8,7 +8,7 @@ const type = [{
8 value: 'CN', 8 value: 'CN',
9 label: 'PASSPORT' 9 label: 'PASSPORT'
10 }, { 10 }, {
11 - value: 'CN', 11 + value: 'US',
12 label: 'OC' 12 label: 'OC'
13 }, { 13 }, {
14 value: 'CN', 14 value: 'CN',
@@ -35,6 +35,50 @@ export function validAlphabets(str) { @@ -35,6 +35,50 @@ export function validAlphabets(str) {
35 return reg.test(str) 35 return reg.test(str)
36 } 36 }
37 37
  38 +/* 大小写字母数字*/
  39 +export function validAlphabetsAndNum(str) {
  40 + const reg = /^[0-9A-Za-z]+$/
  41 + return reg.test(str)
  42 +}
  43 +
  44 +/* 大小写字母数字空格*/
  45 +export function validAlphabetsAndSpanceKey(str) {
  46 + const reg = /^[0-9a-zA-Z\s]+$/
  47 + return reg.test(str)
  48 +}
  49 +
  50 +/**
  51 + * 航班校验
  52 + */
  53 +export function validFlightNo(str) {
  54 + const reg = /^[A-Z0-9]{6,7}$/
  55 + if(!reg.test(str)){
  56 + return false
  57 + }
  58 + const flightNoPre = /^[A-Z]+$/
  59 + if(!flightNoPre.test(str.substring(0,2))){
  60 + return false
  61 + } else {
  62 + return true
  63 + }
  64 +}
  65 +
  66 +/**
  67 + * 主单校验
  68 + */
  69 +export function validAwb(str) {
  70 + const reg = /^[0-9\-]{12}$/
  71 + if(!reg.test(str)){
  72 + return false
  73 + }
  74 + const result = str.split("-")[1]
  75 + const num = (result.substring(0,7)) % 7
  76 + if(num === eval(str.substring(11)) ){
  77 + return true
  78 + } else {
  79 + return false
  80 + }
  81 +}
38 /** 82 /**
39 * validate email 83 * validate email
40 * @param email 84 * @param email
@@ -44,3 +88,14 @@ export function validEmail(email) { @@ -44,3 +88,14 @@ export function validEmail(email) {
44 const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 88 const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
45 return re.test(email) 89 return re.test(email)
46 } 90 }
  91 +
  92 +/**
  93 + *
  94 + * 整数和小数,小数最多两位
  95 + * @param value
  96 + * @returns {boolean}
  97 + */
  98 +export function validatorNum(value) {
  99 + const reg = /^(\d*)+(\.[0-9]{1,2})?$/
  100 + return reg.test(value)
  101 +}
1 <template> 1 <template>
  2 +<<<<<<< HEAD
2 <el-row class="container"> 3 <el-row class="container">
3 <el-col :span="24" class="header"> 4 <el-col :span="24" class="header">
4 <el-col :span="10" class="logo" :class="collapsed?'logo-collapse-width':'logo-width'"> 5 <el-col :span="10" class="logo" :class="collapsed?'logo-collapse-width':'logo-width'">
@@ -68,12 +69,101 @@ @@ -68,12 +69,101 @@
68 </section> 69 </section>
69 </el-col> 70 </el-col>
70 </el-row> 71 </el-row>
  72 +=======
  73 + <el-row class="container">
  74 + <el-col :span="24" class="header">
  75 + <el-col :span="10" class="logo" :class="collapsed?'logo-collapse-width':'logo-width'">
  76 + {{collapsed?'':sysName}}
  77 + </el-col>
  78 + <el-col :span="10">
  79 + <div class="tools" @click.prevent="collapse">
  80 + <i class="fa fa-align-justify"></i>
  81 + </div>
  82 + </el-col>
  83 + <el-col :span="4" class="userinfo">
  84 + <el-dropdown trigger="hover">
  85 + <span class="el-dropdown-link userinfo-inner"><img
  86 + :src="this.sysUserAvatar"/> {{sysUserName}}</span>
  87 + <el-dropdown-menu slot="dropdown">
  88 + <el-dropdown-item>我的消息</el-dropdown-item>
  89 + <el-dropdown-item>设置</el-dropdown-item>
  90 + <el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item>
  91 + </el-dropdown-menu>
  92 + </el-dropdown>
  93 + </el-col>
  94 + </el-col>
  95 + <el-col :span="24" class="main">
  96 + <aside :class="collapsed?'menu-collapsed':'menu-expanded'">
  97 + <!--导航菜单-->
  98 + <el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleopen"
  99 + @close="handleclose" @select="handleselect" unique-opened router v-show="!collapsed"
  100 + style="min-width: 230px">
  101 + <template v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
  102 + <el-submenu :index="index+''" v-if="!item.leaf">
  103 + <template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template>
  104 + <el-menu-item v-for="child in item.children" :index="child.path" :key="child.path"
  105 + v-if="!child.hidden">{{child.name}}
  106 + </el-menu-item>
  107 + </el-submenu>
  108 + <el-menu-item v-if="item.leaf&&item.children.length>0" :index="item.children[0].path"><i
  109 + :class="item.iconCls"></i>{{item.children[0].name}}
  110 + </el-menu-item>
  111 + </template>
  112 + </el-menu>
  113 + <!--导航菜单-折叠后-->
  114 + <ul class="el-menu el-menu-vertical-demo collapsed" v-show="collapsed" ref="menuCollapsed">
  115 + <li v-for="(item,index) in $router.options.routes" v-if="!item.hidden" class="el-submenu item">
  116 + <template v-if="!item.leaf">
  117 + <div class="el-submenu__title" style="padding-left: 20px;" @mouseover="showMenu(index,true)"
  118 + @mouseout="showMenu(index,false)"><i :class="item.iconCls"></i></div>
  119 + <ul class="el-menu submenu" :class="'submenu-hook-'+index" @mouseover="showMenu(index,true)"
  120 + @mouseout="showMenu(index,false)">
  121 + <li v-for="child in item.children" v-if="!child.hidden" :key="child.path"
  122 + class="el-menu-item" style="padding-left: 40px;"
  123 + :class="$route.path==child.path?'is-active':''" @click="$router.push(child.path)">
  124 + {{child.name}}
  125 + </li>
  126 + </ul>
  127 + </template>
  128 + <template v-else>
  129 + <li class="el-submenu">
  130 + <div class="el-submenu__title el-menu-item"
  131 + style="padding-left: 20px;height: 56px;line-height: 56px;padding: 0 20px;"
  132 + :class="$route.path==item.children[0].path?'is-active':''"
  133 + @click="$router.push(item.children[0].path)"><i :class="item.iconCls"></i></div>
  134 + </li>
  135 +</template>
  136 +</li>
  137 +</ul>
  138 +</aside>
  139 +<section class="content-container">
  140 + <div class="grid-content bg-purple-light">
  141 + <el-col :span="24" class="breadcrumb-container">
  142 + <strong class="title">{{$route.name}}</strong>
  143 + <el-breadcrumb separator="/" class="breadcrumb-inner">
  144 + <el-breadcrumb-item v-for="item in $route.matched" :key="item.path">
  145 + {{ item.name }}
  146 + </el-breadcrumb-item>
  147 + </el-breadcrumb>
  148 + </el-col>
  149 + <el-col :span="24" class="content-wrapper">
  150 + <transition name="fade" mode="out-in">
  151 + <router-view :key="$route.path +$route.query.t"></router-view>
  152 + </transition>
  153 + </el-col>
  154 + </div>
  155 +</section>
  156 +</el-col>
  157 +</el-row>
  158 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
71 </template> 159 </template>
72 160
73 161
74 <script> 162 <script>
75 import rt from '../routes' 163 import rt from '../routes'
  164 +
76 export default { 165 export default {
  166 +<<<<<<< HEAD
77 data() { 167 data() {
78 return { 168 return {
79 sysName:'后勤管理平台', 169 sysName:'后勤管理平台',
@@ -112,179 +202,258 @@ @@ -112,179 +202,258 @@
112 //type: 'warning' 202 //type: 'warning'
113 }).then(() => { 203 }).then(() => {
114 sessionStorage.removeItem('user'); 204 sessionStorage.removeItem('user');
  205 +=======
  206 +
  207 + provide() {
  208 + return {
  209 + reload: this.reload
  210 + }
  211 + },
  212 + data() {
  213 + return {
  214 + sysName: '流浪地球管理系统',
  215 + collapsed: false,
  216 + sysUserName: '',
  217 + sysUserAvatar: '',
  218 + isRouterAlive: true,
  219 + form: {
  220 + name: '',
  221 + region: '',
  222 + date1: '',
  223 + date2: '',
  224 + delivery: false,
  225 + type: [],
  226 + resource: '',
  227 + desc: ''
  228 + }
  229 + }
  230 + },
  231 + methods: {
  232 + reload() {
  233 + this.$nextTick(function () {
  234 + this.$router.push({
  235 + path: this.$router.path,
  236 + query:{
  237 + t: new Date().getTime()
  238 + }
  239 + })
  240 + })
  241 + },
  242 + onSubmit() {
  243 + console.log('submit!');
  244 + },
  245 + handleopen() {
  246 + console.log('handleopen');
  247 + },
  248 + handleclose() {
  249 + console.log('handleclose');
  250 + },
  251 + handleselect: function (a, b) {
  252 + this.reload()
  253 + },
  254 + //退出登录
  255 + logout: function () {
  256 + var _this = this;
  257 + this.$confirm('确认退出吗?', '提示', {
  258 + //type: 'warning'
  259 + }).then(() => {
  260 + sessionStorage.removeItem('user');
  261 +>>>>>>> bc2ec1ef193de6a4d7b7d18f1b5d08e9f5203861
115 sessionStorage.removeItem('menu'); 262 sessionStorage.removeItem('menu');
116 263
117 //退出后初始化原来的路由 264 //退出后初始化原来的路由
118 - let sysRoutes = JSON.parse(sessionStorage.getItem('sysMenu'));  
119 - console.log(sysRoutes);  
120 - _this.$router.options.routes = sysRoutes; 265 + let sysRoutes = JSON.parse(sessionStorage.getItem('sysMenu'));
  266 + // console.log(sysRoutes);
  267 + _this.$router.options.routes = sysRoutes;
121 268
122 - _this.$router.push('/login');  
123 - }).catch(() => { 269 + _this.$router.push('/login');
  270 + }).catch(() => {
124 271
125 - }); 272 + });
126 273
127 274
128 - },  
129 - //折叠导航栏  
130 - collapse:function(){  
131 - this.collapsed=!this.collapsed;  
132 - },  
133 - showMenu(i,status){  
134 - this.$refs.menuCollapsed.getElementsByClassName('submenu-hook-'+i)[0].style.display=status?'block':'none';  
135 - }  
136 - },  
137 - mounted() { 275 + },
  276 + //折叠导航栏
  277 + collapse: function () {
  278 + this.collapsed = !this.collapsed;
  279 + },
  280 + showMenu(i, status) {
  281 + this.$refs.menuCollapsed.getElementsByClassName('submenu-hook-' + i)[0].style.display = status ? 'block' : 'none';
  282 + }
  283 + },
  284 + mounted() {
138 var _this = this; 285 var _this = this;
139 - var user = sessionStorage.getItem('user');  
140 - if (user) {  
141 - user = JSON.parse(user);  
142 - this.sysUserName = user.username || '';  
143 - this.sysUserAvatar = user.userface || '/static/images/faceDefault.jpg';  
144 - }  
145 - //操作路由,判断本地存储的用户栏目列表是否存在,如果存在则加载路由  
146 - var userRouters = sessionStorage.getItem('menu');  
147 - if (userRouters) { 286 + var user = sessionStorage.getItem('user');
  287 + if (user) {
  288 + user = JSON.parse(user);
  289 + this.sysUserName = user.username || '';
  290 + this.sysUserAvatar = user.userface || '/static/images/faceDefault.jpg';
  291 + }
  292 + //操作路由,判断本地存储的用户栏目列表是否存在,如果存在则加载路由
  293 + var userRouters = sessionStorage.getItem('menu');
  294 + if (userRouters) {
148 userRouters = JSON.parse(userRouters); 295 userRouters = JSON.parse(userRouters);
149 _this.$router.options.routes = userRouters; 296 _this.$router.options.routes = userRouters;
150 - console.log("home:");  
151 - console.log(_this.$router.options.routes);  
152 - }  
153 - }  
154 - } 297 + // console.log("home:");
  298 + // console.log(_this.$router.options.routes);
  299 + }
  300 + }
  301 + }
155 302
156 </script> 303 </script>
157 304
158 <style scoped lang="scss"> 305 <style scoped lang="scss">
159 - @import '~scss_vars';  
160 -  
161 - .container {  
162 - position: absolute;  
163 - top: 0px;  
164 - bottom: 0px;  
165 - width: 100%;  
166 - .header {  
167 - height: 60px;  
168 - line-height: 60px;  
169 - background: $color-primary;  
170 - color:#fff;  
171 - .userinfo {  
172 - text-align: right;  
173 - padding-right: 35px;  
174 - float: right;  
175 - .userinfo-inner {  
176 - cursor: pointer;  
177 - color:#fff;  
178 - img {  
179 - width: 40px;  
180 - height: 40px;  
181 - border-radius: 20px;  
182 - margin: 10px 0px 10px 10px;  
183 - float: right;  
184 - }  
185 - }  
186 - }  
187 - .logo {  
188 - //width:230px;  
189 - height:60px;  
190 - font-size: 22px;  
191 - padding-left:20px;  
192 - padding-right:20px;  
193 - border-color: rgba(238,241,146,0.3);  
194 - border-right-width: 1px;  
195 - border-right-style: solid;  
196 - img {  
197 - width: 40px;  
198 - float: left;  
199 - margin: 10px 10px 10px 18px;  
200 - }  
201 - .txt {  
202 - color:#fff;  
203 - }  
204 - }  
205 - .logo-width{  
206 - width:230px;  
207 - }  
208 - .logo-collapse-width{  
209 - width:60px  
210 - }  
211 - .tools{  
212 - padding: 0px 23px;  
213 - width:14px;  
214 - height: 60px;  
215 - line-height: 60px;  
216 - cursor: pointer;  
217 - }  
218 - }  
219 - .main {  
220 - display: flex;  
221 - // background: #324057;  
222 - position: absolute;  
223 - top: 60px;  
224 - bottom: 0px;  
225 - overflow: hidden;  
226 - aside {  
227 - flex:0 0 230px;  
228 - width: 230px;  
229 - // position: absolute;  
230 - // top: 0px;  
231 - // bottom: 0px;  
232 - .el-menu{  
233 - height: 100%;  
234 - }  
235 - .collapsed{  
236 - width:60px;  
237 - .item{  
238 - position: relative;  
239 - }  
240 - .submenu{  
241 - position:absolute;  
242 - top:0px;  
243 - left:60px;  
244 - z-index:99999;  
245 - height:auto;  
246 - display:none;  
247 - } 306 + @import '~scss_vars';
248 307
249 - }  
250 - }  
251 - .menu-collapsed{  
252 - flex:0 0 60px;  
253 - width: 60px;  
254 - }  
255 - .menu-expanded{  
256 - flex:0 0 230px;  
257 - width: 230px;  
258 - }  
259 - .menu-expanded ul{  
260 - width: 230px;  
261 - }  
262 - .content-container {  
263 - // background: #f1f2f7;  
264 - flex:1;  
265 - // position: absolute;  
266 - // right: 0px;  
267 - // top: 0px;  
268 - // bottom: 0px;  
269 - // left: 230px;  
270 - overflow-y: scroll;  
271 - padding: 20px;  
272 - .breadcrumb-container {  
273 - //margin-bottom: 15px;  
274 - .title {  
275 - width: 200px;  
276 - float: left;  
277 - color: #475669;  
278 - }  
279 - .breadcrumb-inner {  
280 - float: right;  
281 - }  
282 - }  
283 - .content-wrapper {  
284 - background-color: #fff;  
285 - box-sizing: border-box;  
286 - }  
287 - }  
288 - }  
289 - }  
290 -</style>  
  308 + .container {
  309 + position: absolute;
  310 + top: 0px;
  311 + bottom: 0px;
  312 + width: 100%;
  313 +
  314 + .header {
  315 + height: 60px;
  316 + line-height: 60px;
  317 + background: $color-primary;
  318 + color: #fff;
  319 +
  320 + .userinfo {
  321 + text-align: right;
  322 + padding-right: 35px;
  323 + float: right;
  324 +
  325 + .userinfo-inner {
  326 + cursor: pointer;
  327 + color: #fff;
  328 +
  329 + img {
  330 + width: 40px;
  331 + height: 40px;
  332 + border-radius: 20px;
  333 + margin: 10px 0px 10px 10px;
  334 + float: right;
  335 + }
  336 + }
  337 + }
  338 +
  339 + .logo {
  340 + //width:230px;
  341 + height: 60px;
  342 + font-size: 22px;
  343 + padding-left: 20px;
  344 + padding-right: 20px;
  345 + border-color: rgba(238, 241, 146, 0.3);
  346 + border-right-width: 1px;
  347 + border-right-style: solid;
  348 +
  349 + img {
  350 + width: 40px;
  351 + float: left;
  352 + margin: 10px 10px 10px 18px;
  353 + }
  354 +
  355 + .txt {
  356 + color: #fff;
  357 + }
  358 + }
  359 +
  360 + .logo-width {
  361 + width: 230px;
  362 + }
  363 +
  364 + .logo-collapse-width {
  365 + width: 60px
  366 + }
  367 +
  368 + .tools {
  369 + padding: 0px 23px;
  370 + width: 14px;
  371 + height: 60px;
  372 + line-height: 60px;
  373 + cursor: pointer;
  374 + }
  375 + }
  376 +
  377 + .main {
  378 + display: flex;
  379 + // background: #324057;
  380 + position: absolute;
  381 + top: 60px;
  382 + bottom: 0px;
  383 + overflow: hidden;
  384 +
  385 + aside {
  386 + flex: 0 0 230px;
  387 + width: 230px;
  388 + // position: absolute;
  389 + // top: 0px;
  390 + // bottom: 0px;
  391 + .el-menu {
  392 + height: 100%;
  393 + }
  394 +
  395 + .collapsed {
  396 + width: 60px;
  397 +
  398 + .item {
  399 + position: relative;
  400 + }
  401 +
  402 + .submenu {
  403 + position: absolute;
  404 + top: 0px;
  405 + left: 60px;
  406 + z-index: 99999;
  407 + height: auto;
  408 + display: none;
  409 + }
  410 +
  411 + }
  412 + }
  413 +
  414 + .menu-collapsed {
  415 + flex: 0 0 60px;
  416 + width: 60px;
  417 + }
  418 +
  419 + .menu-expanded {
  420 + flex: 0 0 230px;
  421 + width: 230px;
  422 + }
  423 +
  424 + .menu-expanded ul {
  425 + width: 230px;
  426 + }
  427 +
  428 + .content-container {
  429 + // background: #f1f2f7;
  430 + flex: 1;
  431 + // position: absolute;
  432 + // right: 0px;
  433 + // top: 0px;
  434 + // bottom: 0px;
  435 + // left: 230px;
  436 + overflow-y: scroll;
  437 + padding: 20px;
  438 +
  439 + .breadcrumb-container {
  440 + //margin-bottom: 15px;
  441 + .title {
  442 + width: 200px;
  443 + float: left;
  444 + color: #475669;
  445 + }
  446 +
  447 + .breadcrumb-inner {
  448 + float: right;
  449 + }
  450 + }
  451 +
  452 + .content-wrapper {
  453 + background-color: #fff;
  454 + box-sizing: border-box;
  455 + }
  456 + }
  457 + }
  458 + }
  459 +</style>
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 <el-button v-waves :loading="downloadLoading" class="filter-item" type="primary" icon="el-icon-download" @click="handleDownload">{{ $t('table.export') }}</el-button> 9 <el-button v-waves :loading="downloadLoading" class="filter-item" type="primary" icon="el-icon-download" @click="handleDownload">{{ $t('table.export') }}</el-button>
10 <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-message" @click="handleCreate">批量发送</el-button> 10 <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-message" @click="handleCreate">批量发送</el-button>
11 </div> 11 </div>
12 - <tree-table :data="data" :eval-func="func" :eval-args="args" :expand-all="expandAll" stripe style="font-size: 13px" border @selection-change="handleSelectionChange"> 12 + <tree-table :data="tableData" :eval-func="func" :eval-args="args" :expand-all="expandAll" stripe style="font-size: 13px" border @selection-change="handleSelectionChange">
13 <el-table-column prop="waybillNo" label="主单号" width="110px" align="center" sortable> 13 <el-table-column prop="waybillNo" label="主单号" width="110px" align="center" sortable>
14 <template slot-scope="scope"> 14 <template slot-scope="scope">
15 <span>{{ scope.row.waybillNo }}</span> 15 <span>{{ scope.row.waybillNo }}</span>
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 </el-table-column> 27 </el-table-column>
28 <el-table-column label="航班日期" width="100px" align="center" sortable> 28 <el-table-column label="航班日期" width="100px" align="center" sortable>
29 <template slot-scope="scope"> 29 <template slot-scope="scope">
30 - <span>{{ scope.row.flightDate | parseTime('{y}-{m}-{d}') }}</span> 30 + <span>{{ scope.row.flightDate }}</span>
31 </template> 31 </template>
32 </el-table-column> 32 </el-table-column>
33 <el-table-column label="起始站" width="60px" align="center"> 33 <el-table-column label="起始站" width="60px" align="center">
@@ -63,7 +63,7 @@ @@ -63,7 +63,7 @@
63 </div> 63 </div>
64 </template> 64 </template>
65 </el-table-column> 65 </el-table-column>
66 - <el-table-column :label="$t('table.actions')" align="center" class-name="small-padding fixed-width"> 66 + <el-table-column :label="$t('table.actions')" align="center" class-name="small-padding fixed-width" >
67 <template slot-scope="scope"> 67 <template slot-scope="scope">
68 <el-button type="primary" size="small" @click="handleUpdate(scope.row)">快速编辑</el-button> 68 <el-button type="primary" size="small" @click="handleUpdate(scope.row)">快速编辑</el-button>
69 <el-button type="primary" size="mini" @click="handleUpdate(scope.row)">{{ $t('table.edit') }}</el-button> 69 <el-button type="primary" size="mini" @click="handleUpdate(scope.row)">{{ $t('table.edit') }}</el-button>
@@ -79,8 +79,8 @@ @@ -79,8 +79,8 @@
79 </tree-table> 79 </tree-table>
80 <pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" /> 80 <pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
81 81
82 - <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" fullscreen="true">  
83 - <el-form ref="" :inline="true" label-position="left" :rules="rules" :model="temp" label-width="100px" style="font-size: 13px"> 82 + <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" fullscreen>
  83 + <el-form ref="" :inline="true" :rules="rules" :model="temp" label-width="100px" style="font-size: 13px">
84 <div> 84 <div>
85 <el-tag type="info" effect="plain"> 85 <el-tag type="info" effect="plain">
86 航班信息 86 航班信息
@@ -350,17 +350,16 @@ @@ -350,17 +350,16 @@
350 Auth: Lei.j1ang 350 Auth: Lei.j1ang
351 Created: 2018/1/19-14:54 351 Created: 2018/1/19-14:54
352 */ 352 */
353 -import { fetchList } from '@/api/article' 353 +
354 import treeTable from '@/components/TreeTable' 354 import treeTable from '@/components/TreeTable'
355 -import treeToArray from './customEval' 355 +import treeToArray from '@/utils/customEval'
356 import Pagination from '@/components/Pagination' 356 import Pagination from '@/components/Pagination'
357 import waves from '@/directive/waves' // Waves directive 357 import waves from '@/directive/waves' // Waves directive
358 import country from '@/utils/country.js' 358 import country from '@/utils/country.js'
359 import companyType from '@/utils/companyType.js' 359 import companyType from '@/utils/companyType.js'
360 import dangerGoods from '@/utils/dangerGoods.js' 360 import dangerGoods from '@/utils/dangerGoods.js'
361 import goodsPackage from '@/utils/goodsPackage.js' 361 import goodsPackage from '@/utils/goodsPackage.js'
362 -import excel from '@/vendor/Export2Excel'  
363 -import { parseTime } from '@/utils' 362 +
364 const calendarTypeOptions = [ 363 const calendarTypeOptions = [
365 { key: 'CN', display_name: 'China' }, 364 { key: 'CN', display_name: 'China' },
366 { key: 'US', display_name: 'USA' }, 365 { key: 'US', display_name: 'USA' },
@@ -403,11 +402,12 @@ export default { @@ -403,11 +402,12 @@ export default {
403 return { 402 return {
404 func: treeToArray, 403 func: treeToArray,
405 expandAll: true, 404 expandAll: true,
  405 + fullscreen:true,
406 total: 1, 406 total: 1,
407 resend: true, 407 resend: true,
408 - listLoading: false,  
409 - downloadLoading: false,  
410 - loading: false, 408 + loading:false,
  409 + listLoading: true,
  410 + downloadLoading:false,
411 multipleSelection: [], 411 multipleSelection: [],
412 dialogFormVisible: false, 412 dialogFormVisible: false,
413 dialogStatus: '', 413 dialogStatus: '',
@@ -428,6 +428,7 @@ export default { @@ -428,6 +428,7 @@ export default {
428 flightDate: '', 428 flightDate: '',
429 custom: '' 429 custom: ''
430 }, 430 },
  431 + tableData:[],
431 temp: { 432 temp: {
432 id: undefined, 433 id: undefined,
433 waybillNo: '', 434 waybillNo: '',
@@ -441,7 +442,103 @@ export default { @@ -441,7 +442,103 @@ export default {
441 maniWeight: undefined 442 maniWeight: undefined
442 }, 443 },
443 manifestCustoms: ['4604', '4620', '4613'], 444 manifestCustoms: ['4604', '4620', '4613'],
444 - data: [ 445 +
  446 + pickerOptions: {
  447 + shortcuts: [
  448 + {
  449 + text: '今天',
  450 + onClick(picker) {
  451 + picker.$emit('pick', new Date())
  452 + }
  453 + },
  454 + {
  455 + text: '昨天',
  456 + onClick(picker) {
  457 + const date = new Date()
  458 + date.setTime(date.getTime() - 3600 * 1000 * 24)
  459 + picker.$emit('pick', date)
  460 + }
  461 + },
  462 + {
  463 + text: '明天',
  464 + onClick(picker) {
  465 + const date = new Date()
  466 + date.setTime(date.getTime() + 3600 * 1000 * 24)
  467 + picker.$emit('pick', date)
  468 + }
  469 + },
  470 + {
  471 + text: '一周前',
  472 + onClick(picker) {
  473 + const date = new Date()
  474 + date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
  475 + picker.$emit('pick', date)
  476 + }
  477 + }
  478 + ]
  479 + },
  480 + args: [null, null, 'timeLine'],
  481 + rules: {
  482 + maniWeight: [{ type: 'number', required: true, message: '重量必须为数字', trigger: 'blur' }],
  483 + maniPiece: [{ type: 'number', required: true, message: '件数必须为数字', trigger: 'blur' }],
  484 + desStation: [{ required: true, message: '运单目的地必须输入', trigger: 'blur' }],
  485 + oriStation: [{ required: true, message: '运单起始站必须数据', trigger: 'change' }],
  486 + flightDate: [{ type: 'date', required: true, message: '航班日期必须输入', trigger: 'change' }],
  487 + flight: [{ required: true, message: '航班号必须输入', trigger: 'blur' }],
  488 + custom: [{ required: true, message: '关区代码必须选择', trigger: 'change' }],
  489 + waybillNo: [{ required: true, message: '运单号必须输入', trigger: 'blur' }]
  490 + }
  491 + }
  492 + },
  493 + created(){
  494 + console.log(this.$route.params.scopeRow)
  495 + this.getList()
  496 + },
  497 + methods: {
  498 + message(row) {
  499 + this.$message.info(row.event)
  500 + },
  501 + sortChange(data) {
  502 + const { prop, order } = data
  503 + if (prop === 'id') {
  504 + this.sortByID(order)
  505 + }
  506 + },
  507 + sortByID(order) {
  508 + if (order === 'ascending') {
  509 + this.listQuery.sort = '+id'
  510 + } else {
  511 + this.listQuery.sort = '-id'
  512 + }
  513 + this.handleFilter()
  514 + },
  515 + handleFilter(){
  516 +
  517 + },
  518 + handleSwitch(row){
  519 +
  520 + },
  521 + handleDownload(){
  522 + this.downloadLoading = true
  523 + },
  524 + handleUpdate(row) {
  525 + this.temp = Object.assign({}, row) // copy obj
  526 + this.temp.timestamp = new Date(this.temp.timestamp)
  527 + this.dialogStatus = 'update'
  528 + this.dialogFormVisible = true
  529 + this.$nextTick(() => {
  530 + this.$refs[''].clearValidate()
  531 + })
  532 + },
  533 + handleModifyStatus(row, status) {
  534 + this.$message({
  535 + message: '操作成功',
  536 + type: 'success'
  537 + })
  538 + row.status = status
  539 + },
  540 + getList() {
  541 + this.tableData = [
445 { 542 {
446 id: 0, 543 id: 0,
447 waybillNo: '580-20728399', 544 waybillNo: '580-20728399',
@@ -520,7 +617,7 @@ export default { @@ -520,7 +617,7 @@ export default {
520 ] 617 ]
521 }, 618 },
522 { 619 {
523 - id: 5, 620 + id: 4,
524 waybillNo: '580-20728391', 621 waybillNo: '580-20728391',
525 houseWaybillNo: '', 622 houseWaybillNo: '',
526 custom: '4604', 623 custom: '4604',
@@ -532,104 +629,278 @@ export default { @@ -532,104 +629,278 @@ export default {
532 maniWeight: 21321, 629 maniWeight: 21321,
533 status: '10003', 630 status: '10003',
534 customText: ' 已发送预配舱单 ' 631 customText: ' 已发送预配舱单 '
  632 + },
  633 + {
  634 + id: 5,
  635 + waybillNo: '580-20728399',
  636 + houseWaybillNo: '',
  637 + custom: '4604',
  638 + flight: 'CV9733',
  639 + flightDate: '2019-06-21',
  640 + oriStation: 'LUX',
  641 + desStation: 'CGO',
  642 + maniPiece: 50,
  643 + maniWeight: 21321,
  644 + status: '41301',
  645 + customText: ' 预配舱单主要数据传输成功。',
  646 + customComplate: 25
  647 + },
  648 + {
  649 + id: 6,
  650 + waybillNo: '580-20728399',
  651 + houseWaybillNo: '',
  652 + custom: '4604',
  653 + flight: 'CV9733',
  654 + flightDate: '2019-06-21',
  655 + oriStation: 'LUX',
  656 + desStation: 'CGO',
  657 + maniPiece: 50,
  658 + maniWeight: 21321,
  659 + status: '41301',
  660 + customText: ' 预配舱单主要数据传输成功。',
  661 + customComplate: 25
  662 + },
  663 + {
  664 + id: 7,
  665 + waybillNo: '580-20728399',
  666 + houseWaybillNo: '',
  667 + custom: '4604',
  668 + flight: 'CV9733',
  669 + flightDate: '2019-06-21',
  670 + oriStation: 'LUX',
  671 + desStation: 'CGO',
  672 + maniPiece: 50,
  673 + maniWeight: 21321,
  674 + status: '41301',
  675 + customText: ' 预配舱单主要数据传输成功。',
  676 + customComplate: 25
  677 + },
  678 + {
  679 + id: 8,
  680 + waybillNo: '580-20728399',
  681 + houseWaybillNo: '',
  682 + custom: '4604',
  683 + flight: 'CV9733',
  684 + flightDate: '2019-06-21',
  685 + oriStation: 'LUX',
  686 + desStation: 'CGO',
  687 + maniPiece: 50,
  688 + maniWeight: 21321,
  689 + status: '41301',
  690 + customText: ' 预配舱单主要数据传输成功。',
  691 + customComplate: 25
  692 + },
  693 + {
  694 + id: 9,
  695 + waybillNo: '580-20728399',
  696 + houseWaybillNo: '',
  697 + custom: '4604',
  698 + flight: 'CV9733',
  699 + flightDate: '2019-06-21',
  700 + oriStation: 'LUX',
  701 + desStation: 'CGO',
  702 + maniPiece: 50,
  703 + maniWeight: 21321,
  704 + status: '41301',
  705 + customText: ' 预配舱单主要数据传输成功。',
  706 + customComplate: 25
  707 + },
  708 + {
  709 + id: 10,
  710 + waybillNo: '580-20728399',
  711 + houseWaybillNo: '',
  712 + custom: '4604',
  713 + flight: 'CV9733',
  714 + flightDate: '2019-06-21',
  715 + oriStation: 'LUX',
  716 + desStation: 'CGO',
  717 + maniPiece: 50,
  718 + maniWeight: 21321,
  719 + status: '41301',
  720 + customText: ' 预配舱单主要数据传输成功。',
  721 + customComplate: 25
  722 + },
  723 + {
  724 + id: 11,
  725 + waybillNo: '580-20728399',
  726 + houseWaybillNo: '',
  727 + custom: '4604',
  728 + flight: 'CV9733',
  729 + flightDate: '2019-06-21',
  730 + oriStation: 'LUX',
  731 + desStation: 'CGO',
  732 + maniPiece: 50,
  733 + maniWeight: 21321,
  734 + status: '41301',
  735 + customText: ' 预配舱单主要数据传输成功。',
  736 + customComplate: 25
  737 + },
  738 + {
  739 + id: 12,
  740 + waybillNo: '580-20728399',
  741 + houseWaybillNo: '',
  742 + custom: '4604',
  743 + flight: 'CV9733',
  744 + flightDate: '2019-06-21',
  745 + oriStation: 'LUX',
  746 + desStation: 'CGO',
  747 + maniPiece: 50,
  748 + maniWeight: 21321,
  749 + status: '41301',
  750 + customText: ' 预配舱单主要数据传输成功。',
  751 + customComplate: 25
  752 + },
  753 + {
  754 + id: 13,
  755 + waybillNo: '580-20728399',
  756 + houseWaybillNo: '',
  757 + custom: '4604',
  758 + flight: 'CV9733',
  759 + flightDate: '2019-06-21',
  760 + oriStation: 'LUX',
  761 + desStation: 'CGO',
  762 + maniPiece: 50,
  763 + maniWeight: 21321,
  764 + status: '41301',
  765 + customText: ' 预配舱单主要数据传输成功。',
  766 + customComplate: 25
  767 + },{
  768 + id: 14,
  769 + waybillNo: '580-20728399',
  770 + houseWaybillNo: '',
  771 + custom: '4604',
  772 + flight: 'CV9733',
  773 + flightDate: '2019-06-21',
  774 + oriStation: 'LUX',
  775 + desStation: 'CGO',
  776 + maniPiece: 50,
  777 + maniWeight: 21321,
  778 + status: '41301',
  779 + customText: ' 预配舱单主要数据传输成功。',
  780 + customComplate: 25
  781 + },
  782 + {
  783 + id: 15,
  784 + waybillNo: '580-20728399',
  785 + houseWaybillNo: '',
  786 + custom: '4604',
  787 + flight: 'CV9733',
  788 + flightDate: '2019-06-21',
  789 + oriStation: 'LUX',
  790 + desStation: 'CGO',
  791 + maniPiece: 50,
  792 + maniWeight: 21321,
  793 + status: '41301',
  794 + customText: ' 预配舱单主要数据传输成功。',
  795 + customComplate: 25
  796 + },
  797 + {
  798 + id: 16,
  799 + waybillNo: '580-20728399',
  800 + houseWaybillNo: '',
  801 + custom: '4604',
  802 + flight: 'CV9733',
  803 + flightDate: '2019-06-21',
  804 + oriStation: 'LUX',
  805 + desStation: 'CGO',
  806 + maniPiece: 50,
  807 + maniWeight: 21321,
  808 + status: '41301',
  809 + customText: ' 预配舱单主要数据传输成功。',
  810 + customComplate: 25
  811 + },
  812 + {
  813 + id: 17,
  814 + waybillNo: '580-20728399',
  815 + houseWaybillNo: '',
  816 + custom: '4604',
  817 + flight: 'CV9733',
  818 + flightDate: '2019-06-21',
  819 + oriStation: 'LUX',
  820 + desStation: 'CGO',
  821 + maniPiece: 50,
  822 + maniWeight: 21321,
  823 + status: '41301',
  824 + customText: ' 预配舱单主要数据传输成功。',
  825 + customComplate: 25
  826 + },
  827 + {
  828 + id: 18,
  829 + waybillNo: '580-20728399',
  830 + houseWaybillNo: '',
  831 + custom: '4604',
  832 + flight: 'CV9733',
  833 + flightDate: '2019-06-21',
  834 + oriStation: 'LUX',
  835 + desStation: 'CGO',
  836 + maniPiece: 50,
  837 + maniWeight: 21321,
  838 + status: '41301',
  839 + customText: ' 预配舱单主要数据传输成功。',
  840 + customComplate: 25
  841 + },
  842 + {
  843 + id: 19,
  844 + waybillNo: '580-20728399',
  845 + houseWaybillNo: '',
  846 + custom: '4604',
  847 + flight: 'CV9733',
  848 + flightDate: '2019-06-21',
  849 + oriStation: 'LUX',
  850 + desStation: 'CGO',
  851 + maniPiece: 50,
  852 + maniWeight: 21321,
  853 + status: '41301',
  854 + customText: ' 预配舱单主要数据传输成功。',
  855 + customComplate: 25
  856 + },
  857 + {
  858 + id: 20,
  859 + waybillNo: '580-20728399',
  860 + houseWaybillNo: '',
  861 + custom: '4604',
  862 + flight: 'CV9733',
  863 + flightDate: '2019-06-21',
  864 + oriStation: 'LUX',
  865 + desStation: 'CGO',
  866 + maniPiece: 50,
  867 + maniWeight: 21321,
  868 + status: '41301',
  869 + customText: ' 预配舱单主要数据传输成功。',
  870 + customComplate: 25
  871 + },
  872 + {
  873 + id: 23,
  874 + waybillNo: '580-20728399',
  875 + houseWaybillNo: '',
  876 + custom: '4604',
  877 + flight: 'CV9733',
  878 + flightDate: '2019-06-21',
  879 + oriStation: 'LUX',
  880 + desStation: 'CGO',
  881 + maniPiece: 50,
  882 + maniWeight: 21321,
  883 + status: '41301',
  884 + customText: ' 预配舱单主要数据传输成功。',
  885 + customComplate: 25
  886 + }, {
  887 + id: 22,
  888 + waybillNo: '580-20728399',
  889 + houseWaybillNo: '',
  890 + custom: '4604',
  891 + flight: 'CV9733',
  892 + flightDate: '2019-06-21',
  893 + oriStation: 'LUX',
  894 + desStation: 'CGO',
  895 + maniPiece: 50,
  896 + maniWeight: 21321,
  897 + status: '41300',
  898 + customText: ' 预配舱单主要数据传输成功。',
  899 + customComplate: 25
535 } 900 }
536 - ],  
537 - pickerOptions: {  
538 - shortcuts: [  
539 - {  
540 - text: '今天',  
541 - onClick(picker) {  
542 - picker.$emit('pick', new Date())  
543 - }  
544 - },  
545 - {  
546 - text: '昨天',  
547 - onClick(picker) {  
548 - const date = new Date()  
549 - date.setTime(date.getTime() - 3600 * 1000 * 24)  
550 - picker.$emit('pick', date)  
551 - }  
552 - },  
553 - {  
554 - text: '明天',  
555 - onClick(picker) {  
556 - const date = new Date()  
557 - date.setTime(date.getTime() + 3600 * 1000 * 24)  
558 - picker.$emit('pick', date)  
559 - }  
560 - },  
561 - {  
562 - text: '一周前',  
563 - onClick(picker) {  
564 - const date = new Date()  
565 - date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)  
566 - picker.$emit('pick', date)  
567 - }  
568 - }  
569 - ]  
570 - },  
571 - args: [null, null, 'timeLine'],  
572 - rules: {  
573 - maniWeight: [{ type: 'number', required: true, message: '重量必须为数字', trigger: 'blur' }],  
574 - maniPiece: [{ type: 'number', required: true, message: '件数必须为数字', trigger: 'blur' }],  
575 - desStation: [{ required: true, message: '运单目的地必须输入', trigger: 'blur' }],  
576 - oriStation: [{ required: true, message: '运单起始站必须数据', trigger: 'change' }],  
577 - flightDate: [{ type: 'date', required: true, message: '航班日期必须输入', trigger: 'change' }],  
578 - flight: [{ required: true, message: '航班号必须输入', trigger: 'blur' }],  
579 - custom: [{ required: true, message: '关区代码必须选择', trigger: 'change' }],  
580 - waybillNo: [{ required: true, message: '运单号必须输入', trigger: 'blur' }]  
581 - }  
582 - }  
583 - },  
584 - methods: {  
585 - message(row) {  
586 - this.$message.info(row.event)  
587 - },  
588 - sortChange(data) {  
589 - const { prop, order } = data  
590 - if (prop === 'id') {  
591 - this.sortByID(order)  
592 - }  
593 - },  
594 - sortByID(order) {  
595 - if (order === 'ascending') {  
596 - this.listQuery.sort = '+id'  
597 - } else {  
598 - this.listQuery.sort = '-id'  
599 - }  
600 - this.handleFilter()  
601 - },  
602 - handleUpdate(row) {  
603 - this.temp = Object.assign({}, row) // copy obj  
604 - this.temp.timestamp = new Date(this.temp.timestamp)  
605 - this.dialogStatus = 'update'  
606 - this.dialogFormVisible = true  
607 - this.$nextTick(() => {  
608 - this.$refs[''].clearValidate()  
609 - })  
610 - },  
611 - handleFilter() {  
612 - this.listQuery.page = 1  
613 - this.getList()  
614 - },  
615 - handleModifyStatus(row, status) {  
616 - this.$message({  
617 - message: '操作成功',  
618 - type: 'success'  
619 - })  
620 - row.status = status  
621 - },  
622 - getList() {  
623 - this.listLoading = true  
624 - fetchList(this.listQuery).then(response => {  
625 - this.list = response.data.items  
626 - this.total = response.data.total  
627 901
628 - // Just to simulate the time of the request  
629 - setTimeout(() => {  
630 - this.listLoading = false  
631 - }, 1.5 * 1000)  
632 - }) 902 + ]
  903 + this.total = this.tableData.length
633 }, 904 },
634 handleSelectionChange(val) { 905 handleSelectionChange(val) {
635 this.multipleSelection = val 906 this.multipleSelection = val
@@ -656,18 +927,6 @@ export default { @@ -656,18 +927,6 @@ export default {
656 this.$refs[''].clearValidate() 927 this.$refs[''].clearValidate()
657 }) 928 })
658 }, 929 },
659 - handleDownload() {  
660 - this.downloadLoading = true  
661 - const tHeader = ['timestamp', 'title', 'type', 'importance', 'status']  
662 - const filterVal = ['timestamp', 'title', 'type', 'importance', 'status']  
663 - const data = this.formatJson(filterVal, this.list)  
664 - excel.export_json_to_excel({  
665 - header: tHeader,  
666 - data,  
667 - filename: 'table-list'  
668 - })  
669 - this.downloadLoading = false  
670 - },  
671 remoteMethod(query) { 930 remoteMethod(query) {
672 if (query !== '') { 931 if (query !== '') {
673 this.loading = true 932 this.loading = true
  1 +<template>
  2 + <!--<div class="app-container">-->
  3 + <div class="app-content">
  4 + <div class="filter-container">
  5 + <el-input v-model="listQuery.awba" clearable style="width: 200px;" class="filter-item" placeholder="运单号"/>
  6 + <el-input v-model="listQuery.carrier" clearable style="width: 200px;" class="filter-item" placeholder="承运人"/>
  7 + <el-input v-model="listQuery.flightno" clearable style="width: 200px;" class="filter-item" placeholder="航班号"/>
  8 + <el-date-picker v-model="listQuery.flightDate" type="date" placeholder="航班日期"
  9 + value-format="yyyy-MM-dd" class="filter-item"></el-date-picker>
  10 + </div>
  11 + <div class="filter-container">
  12 + <el-select v-model="listQuery.messageType" clearable class="filter-item" placeholder="请选择报文类型" style="width: 200px;">
  13 + <el-option v-for="item in messageTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
  14 + </el-select>
  15 + <el-select v-model="listQuery.messageStatus" clearable class="filter-item" placeholder="请选择报文状态" style="width: 200px;">
  16 + <el-option v-for="item in messageStatusList" :key="item.value" :label="item.label" :value="item.value"></el-option>
  17 + </el-select>
  18 + <el-select v-model="listQuery.customStatus" clearable class="filter-item" placeholder="请选择海关状态" style="width: 200px;">
  19 + <el-option v-for="item in customStatusList" :key="item.value" :label="item.label" :value="item.value"></el-option>
  20 + </el-select>
  21 + <el-button class="filter-item" type="primary" @click="handleSearch">查询</el-button>
  22 + <el-button class="filter-item" style="margin-left: 10px;" type="warning"
  23 + @click="handleUpdateStatus">批量修改状态</el-button>
  24 + </div>
  25 + <div class="midSpan">
  26 + <el-row>
  27 + <el-col :span="0.5">
  28 + <span style="color: red">注:</span>
  29 + </el-col>
  30 + <el-col :span="1" style="background: oldlace; margin-right: 5px" align="center">
  31 + <span>预配舱单</span>
  32 + </el-col>
  33 + <el-col :span="1" style="background: #f0f9eb; margin-right: 5px" align="center">
  34 + <span>出港运抵</span>
  35 + </el-col>
  36 + <el-col :span="1" style="background: #bce7fd; margin-right: 5px" align="center">
  37 + <span>出港装载</span>
  38 + </el-col>
  39 + <el-col :span="1" style="background: #f5ffc0" align="center">
  40 + <span>出港理货</span>
  41 + </el-col>
  42 + </el-row>
  43 + </div>
  44 + <tree-table v-loading="listLoading" :data="manifestData" :eval-func="func" :expand-all="true"
  45 + style="font-size: 13px" border @selection-change="handleSelectionChange"
  46 + :row-class-name="tableRowClassName">
  47 + <el-table-column label="航班号" width="80px" align="center">
  48 + <template slot-scope="scope">
  49 + <span>{{ scope.row.carrier }}{{ scope.row.flightno }}</span>
  50 + </template>
  51 + </el-table-column>
  52 + <el-table-column label="航班日期" width="100px" align="center">
  53 + <template slot-scope="scope">
  54 + <span>{{ scope.row.flightdate }}</span>
  55 + </template>
  56 + </el-table-column>
  57 + <el-table-column label="航段" width="100px" align="center">
  58 + <template slot-scope="scope">
  59 + <span>{{ scope.row.originstation }}-{{ scope.row.destinationstation }}</span>
  60 + </template>
  61 + </el-table-column>
  62 + <el-table-column label="主单号" width="120px" align="center" >
  63 + <template slot-scope="scope" >
  64 + <span>{{ scope.row.awba }}</span>
  65 + </template>
  66 + </el-table-column>
  67 + <el-table-column label="分单号" width="150px" align="center">
  68 + <template slot-scope="scope">
  69 + <span>{{ scope.row.awbh }}</span>
  70 + </template>
  71 + </el-table-column>
  72 + <el-table-column label="件数" width="60px" align="center">
  73 + <template slot-scope="scope">
  74 + <span>{{ scope.row.piece }}</span>
  75 + </template>
  76 + </el-table-column>
  77 + <el-table-column label="重量" width="60px" align="center">
  78 + <template slot-scope="scope">
  79 + <span>{{ scope.row.weight }}</span>
  80 + </template>
  81 + </el-table-column>
  82 + <el-table-column label="关区" width="60px" align="center">
  83 + <template slot-scope="scope">
  84 + <span>{{ scope.row.customcode }}</span>
  85 + </template>
  86 + </el-table-column>
  87 + <el-table-column label="时间" width="150px" align="center">
  88 + <template slot-scope="scope">
  89 + <span>{{ scope.row.actime }}</span>
  90 + </template>
  91 + </el-table-column>
  92 + <el-table-column label="状态" width="90px" align="center">
  93 + <template slot-scope="scope">
  94 + <span v-if="scope.row.status ==='01'">未发送</span>
  95 + <span v-if="scope.row.status ==='02'">已发舱单报</span>
  96 + <span v-if="scope.row.status ==='05'">舱单报退单</span>
  97 + <span v-if="scope.row.status ==='06'">舱单转人工</span>
  98 + <span v-if="scope.row.status ==='07'">舱单报申报成功</span>
  99 + <span v-if="scope.row.status ==='08'">已发舱单删除报</span>
  100 + <span v-if="scope.row.status ==='09'">舱单删除报退单</span>
  101 + <span v-if="scope.row.status ==='10'">舱单删除报转人工</span>
  102 + <span v-if="scope.row.status ==='11'">舱单删除成功</span>
  103 + <span v-if="scope.row.status ==='12'">已发舱单修改报</span>
  104 + <span v-if="scope.row.status ==='13'">舱单修改报退单</span>
  105 + <span v-if="scope.row.status ==='14'">舱单修改报转人工</span>
  106 + <span v-if="scope.row.status ==='15'">舱单修改报成功</span>
  107 + <span v-if="scope.row.status ==='16'">海关已存在</span>
  108 + </template>
  109 + </el-table-column>
  110 + <el-table-column label="回执内容" align="center" show-overflow-tooltip>
  111 + <template slot-scope="scope">
  112 + <span>{{ scope.row.customText }}</span>
  113 + <!--<div>-->
  114 + <!--<el-progress :percentage="scope.row.customComplate" :status="scope.row.status | statusFilter"/>-->
  115 + <!--</div>-->
  116 + </template>
  117 + </el-table-column>
  118 + <el-table-column label="操作" width="180px" align="center">
  119 + <template slot-scope="scope">
  120 + <a style="color: #1d8ce0; margin-right: 5px" v-if="scope.row.messageType==='MT2201'" @click="handleUpdate(scope.row)">预配舱单</a>
  121 + <a style="color: #1d8ce0; margin-right: 5px" v-if="scope.row.messageType==='MT3201'" @click="handleUpdate(scope.row)">出港运抵</a>
  122 + <a style="color: #1d8ce0; margin-right: 5px" v-if="scope.row.messageType==='MT4201'" @click="handleUpdate(scope.row)">出港装载</a>
  123 + <a style="color: #1d8ce0; margin-right: 5px" v-if="scope.row.messageType==='MT5202'" @click="handleUpdate(scope.row)">出港理货</a>
  124 + <a style="color: #1d8ce0" @click="handleUpdateStatus(scope.row)">更改状态</a>
  125 + </template>
  126 + </el-table-column>
  127 + </tree-table>
  128 + <pagination v-show="total>0" :total="total" :page.sync="listQuery.pageSize" :limit.sync="listQuery.limitSize"
  129 + @pagination="getList"/>
  130 + </div>
  131 +</template>
  132 +<script>
  133 + import treeTable from '@/components/TreeTable'
  134 + import treeToArray from '@/utils/customEval'
  135 + import Pagination from '@/components/Pagination'
  136 + import {getManifests} from "@/api/exitManifest"
  137 +
  138 + import {getMt520XListForParam} from "@/api/exitTidy";
  139 + import {getMt3201ListForParam} from "@/api/exitArrive";
  140 + import {getMt4201ListForParam} from "@/api/exitLoading";
  141 +
  142 + export default {
  143 + name: "LostLoadChange",
  144 + components: {treeTable, Pagination},
  145 + inject:['reload'],
  146 + data() {
  147 + return {
  148 + func: treeToArray,
  149 + total: 1,
  150 + listLoading: false,
  151 + listQuery: {
  152 + pageSize: 1,
  153 + limitSize: 100,
  154 + awba:undefined,
  155 + carrier: undefined,
  156 + flightno:undefined,
  157 + flightDate: new Date(),
  158 + messageType: undefined,
  159 + messageStatus: undefined,
  160 + customStatus: undefined,
  161 + },
  162 + manifestData: [],
  163 + messageTypeList: [
  164 + {label:'预配舱单',value:'MT2201'},
  165 + {label:'出港运抵',value:'MT3201'},
  166 + {label:'出港装载',value:'MT4201'},
  167 + {label:'出港理货',value:'MT5202'}
  168 + ],
  169 + messageStatusList: [
  170 + {label:'未发送',value:'01'},
  171 + {label:'已发舱单报',value:'02'},
  172 + {label:'舱单报退单',value:'05'},
  173 + {label:'舱单转人工',value:'06'},
  174 + {label:'舱单报申报成功',value:'07'},
  175 + {label:'已发舱单删除报',value:'08'},
  176 + {label:'舱单删除报退单',value:'09'},
  177 + {label:'舱单删除报转人工',value:'10'},
  178 + {label:'舱单删除成功',value:'11'},
  179 + {label:'已发舱单修改报',value:'12'},
  180 + {label:'舱单修改报退单',value:'13'},
  181 + {label:'舱单修改报转人工',value:'14'},
  182 + {label:'舱单修改报成功',value:'15'},
  183 + {label:'海关已存在',value:'16'},
  184 + ],
  185 + customStatusList: [
  186 + {label:'普通货物',value:'001'},
  187 + {label:'国际转运货物',value:'002'},
  188 + {label:'国内转关',value:'003'},
  189 + {label:'空箱',value:'004'},
  190 + {label:'快件',value:'006'},
  191 + ]
  192 + }
  193 + },
  194 + methods: {
  195 + getList() {
  196 + this.listLoading = true
  197 + getManifests(this.listQuery).then(res =>{
  198 + this.manifestData = res.data.dataList
  199 + this.total = res.data.count
  200 + setTimeout(() =>{
  201 + this.listLoading = false
  202 + },1500)
  203 + })
  204 + },
  205 + handleSelectionChange() {
  206 +
  207 + },
  208 + handleSearch(){
  209 + this.getList()
  210 + },
  211 + handleUpdateStatus(row){
  212 +
  213 + },
  214 + handleUpdate(row){
  215 + if(row.messageType === 'MT2201'){
  216 + this.$router.push({name: '出港航班信息', params: {scopeRow: row}})
  217 + }
  218 + if(row.messageType === 'MT3201'){
  219 + this.$router.push({name: '出港航班信息', params: {scopeRow: row}})
  220 + }
  221 + if(row.messageType === 'MT4201'){
  222 + this.$router.push({name: '出港航班信息', params: {scopeRow: row}})
  223 + }
  224 + if(row.messageType === 'MT5201'){
  225 + this.$router.push({name: '出港航班信息', params: {scopeRow: row}})
  226 + }
  227 + },
  228 + tableRowClassName({row,index}){
  229 + if(row.messageType === 'MT2201'){
  230 + return 'MT2201-row'
  231 + }
  232 + if(row.messageType === 'MT3201'){
  233 + return 'MT3201-row'
  234 + }
  235 + if(row.messageType === 'MT4201'){
  236 + return 'MT4201-row'
  237 + }
  238 + if(row.messageType === 'MT5202'){
  239 + return 'MT5202-row'
  240 + }
  241 + }
  242 + }
  243 + }
  244 +
  245 +</script>
  246 +<style>
  247 + .el-table .MT2201-row {
  248 + background: oldlace;
  249 + }
  250 +
  251 + .el-table .MT3201-row {
  252 + background: #f0f9eb;
  253 + }
  254 +
  255 + .el-table .MT4201-row {
  256 + background: #bce7fd;
  257 + }
  258 +
  259 + .el-table .MT5202-row {
  260 + background: #f5ffc0;
  261 + }
  262 + .app-content{
  263 + margin-top: 20px;
  264 + }
  265 + .midSpan{
  266 + margin-bottom: 10px;
  267 + }
  268 +</style>
  1 +<template>
  2 + <!--<div class="app-container">-->
  3 + <div class="app-content">
  4 + <div class="filter-container">
  5 + <el-input v-model="listQuery.awba" clearable style="width: 200px;" class="filter-item" placeholder="主单号"/>
  6 + <el-input v-model="listQuery.awbh" clearable style="width: 200px;" class="filter-item" placeholder="分单号"/>
  7 + <el-button class="filter-item" type="primary" icon="el-icon-search" @click="handleSearch">查询</el-button>
  8 + </div>
  9 + <div>
  10 + <span style="color: red">注:主分单必须同时为空或者同时不为空</span>
  11 + </div>
  12 + <tree-table v-loading="listLoading" :data="lostLoadData" :eval-func="func" :expand-all="true"
  13 + style="font-size: 12px" border>
  14 + <el-table-column label="航班号" width="70px" align="center">
  15 + <template slot-scope="scope">
  16 + <span>{{ scope.row.carrier }}{{ scope.row.flightno }}</span>
  17 + </template>
  18 + </el-table-column>
  19 + <el-table-column label="航班日期" width="100px" align="center">
  20 + <template slot-scope="scope">
  21 + <span>{{ scope.row.flightdate }}</span>
  22 + </template>
  23 + </el-table-column>
  24 + <el-table-column label="航段" width="90px" align="center">
  25 + <template slot-scope="scope">
  26 + <span>{{ scope.row.originstation }}-{{ scope.row.destinationstation }}</span>
  27 + </template>
  28 + </el-table-column>
  29 + <el-table-column label="主单号" width="120px" align="center">
  30 + <template slot-scope="scope">
  31 + <span>{{ scope.row.awba }}</span>
  32 + </template>
  33 + </el-table-column>
  34 + <el-table-column label="分单号" width="150px" align="center">
  35 + <template slot-scope="scope">
  36 + <span>{{ scope.row.awbh }}</span>
  37 + </template>
  38 + </el-table-column>
  39 + <el-table-column label="件数" width="60px" align="center">
  40 + <template slot-scope="scope">
  41 + <span>{{ scope.row.piece }}</span>
  42 + </template>
  43 + </el-table-column>
  44 + <el-table-column label="重量" width="60px" align="center">
  45 + <template slot-scope="scope">
  46 + <span>{{ scope.row.weight }}</span>
  47 + </template>
  48 + </el-table-column>
  49 + <el-table-column label="关区" width="60px" align="center">
  50 + <template slot-scope="scope">
  51 + <span>{{ scope.row.customcode }}</span>
  52 + </template>
  53 + </el-table-column>
  54 + <el-table-column label="时间" width="150px" align="center">
  55 + <template slot-scope="scope">
  56 + <span>{{ scope.row.actime }}</span>
  57 + </template>
  58 + </el-table-column>
  59 + <el-table-column label="落装状态" width="90px" align="center">
  60 + <template slot-scope="scope">
  61 + <span v-if="scope.row.offload ==='001'">未落装</span>
  62 + <span v-if="scope.row.offload ==='002'">已落装</span>
  63 + <span v-if="scope.row.offload ==='003'">已落装改配</span>
  64 + </template>
  65 + </el-table-column>
  66 + <el-table-column label="状态" width="90px" align="center">
  67 + <template slot-scope="scope">
  68 + <span v-if="scope.row.status ==='01'">未发送</span>
  69 + <span v-if="scope.row.status ==='02'">已发舱单报</span>
  70 + <span v-if="scope.row.status ==='05'">舱单报退单</span>
  71 + <span v-if="scope.row.status ==='06'">舱单转人工</span>
  72 + <span v-if="scope.row.status ==='07'">舱单报申报成功</span>
  73 + <span v-if="scope.row.status ==='08'">已发舱单删除报</span>
  74 + <span v-if="scope.row.status ==='09'">舱单删除报退单</span>
  75 + <span v-if="scope.row.status ==='10'">舱单删除报转人工</span>
  76 + <span v-if="scope.row.status ==='11'">舱单删除成功</span>
  77 + <span v-if="scope.row.status ==='12'">已发舱单修改报</span>
  78 + <span v-if="scope.row.status ==='13'">舱单修改报退单</span>
  79 + <span v-if="scope.row.status ==='14'">舱单修改报转人工</span>
  80 + <span v-if="scope.row.status ==='15'">舱单修改报成功</span>
  81 + <span v-if="scope.row.status ==='16'">海关已存在</span>
  82 + </template>
  83 + </el-table-column>
  84 + <el-table-column label="回执内容" align="center" show-overflow-tooltip>
  85 + <template slot-scope="scope">
  86 + <span>{{ scope.row.ext5 }}</span>
  87 + </template>
  88 + </el-table-column>
  89 + <el-table-column label="操作" width="220px" align="center">
  90 + <template slot-scope="scope">
  91 + <el-button size="mini" type="primary" @click="handleLostLoad(scope.row)"
  92 + :disabled="scope.row.offload ==='002'">落装申请
  93 + </el-button>
  94 + <el-button size="mini" type="success" @click="handleLostChange(scope.row)"
  95 + :disabled="scope.row.offload ==='003'">落装改配
  96 + </el-button>
  97 + </template>
  98 + </el-table-column>
  99 + </tree-table>
  100 + <pagination v-show="total>0" :total="total" :page.sync="listQuery.pageSize" :limit.sync="listQuery.limitSize"
  101 + @pagination="getList"/>
  102 + <el-dialog :title="dialogMap[dialogStatus]" :visible.sync="dialogFormVisible">
  103 + <el-form ref="lostChangeData" :model="lostChangeModel" :rules="lostChangeRules" label-width="120px">
  104 + <el-form-item label="需改配主单号" prop="manifest">
  105 + <el-input v-model="lostChangeModel.awba" style="width: 300px"></el-input>
  106 + </el-form-item>
  107 + <el-form-item label="需改配分单号" prop="manifest">
  108 + <el-input v-model="lostChangeModel.awbh" style="width: 300px"></el-input>
  109 + </el-form-item>
  110 + <el-form-item label="改配后主单号" prop="manifest">
  111 + <el-input v-model="lostChangeModel.manifest" style="width: 300px"></el-input>
  112 + </el-form-item>
  113 + </el-form>
  114 + <div slot="footer" class="dialog-footer">
  115 + <el-button @click="dialogFormVisible = false">取消</el-button>
  116 + <el-button type="primary" @click="dialogStatus==='create'?createData():updateData()">保存</el-button>
  117 + </div>
  118 + </el-dialog>
  119 + </div>
  120 +
  121 +</template>
  122 +<script>
  123 + import treeTable from '@/components/TreeTable'
  124 + import treeToArray from '@/utils/customEval'
  125 + import Pagination from '@/components/Pagination'
  126 + import {getMt2201ListForParam, getLostLoadChange, saveLostChange, saveLostLoad} from "@/api/exitPre";
  127 + import {Message} from 'element-ui'
  128 + export default {
  129 + name: "LostLoad",
  130 + components: {treeTable, Pagination},
  131 + inject: ['reload'],
  132 + data() {
  133 + return {
  134 + func: treeToArray,
  135 + preTableStatus: true,
  136 + lostTableStatus: false,
  137 + total: 1,
  138 + listLoading: false,
  139 + listQuery: {
  140 + pageSize: 1,
  141 + limitSize: 100,
  142 + awba: undefined,
  143 + awbh: undefined,
  144 + },
  145 + dialogFormVisible: false,
  146 + dialogStatus: undefined,
  147 + dialogMap: {
  148 + create: '发送落装改配'
  149 + },
  150 + lostLoadData: [],
  151 + lostChangeModel:{
  152 + uuid: undefined,
  153 + awba: undefined,
  154 + awbh: undefined,
  155 + manifest: undefined
  156 + },
  157 + lostChangeRules:{}
  158 + }
  159 + },
  160 + methods: {
  161 + getList() {
  162 + this.listLoading = true
  163 + if (this.listQuery.awba !== undefined && this.listQuery.awbh !== undefined &&
  164 + this.listQuery.awba !== '' && this.listQuery.awbh !== '') {
  165 + getLostLoadChange(this.listQuery).then(res => {
  166 + this.lostLoadData = res.data.dataList
  167 + this.total = res.data.count
  168 + setTimeout(() => {
  169 + this.listLoading = false
  170 + }, 1500)
  171 + })
  172 + } else {
  173 + this.listQuery.awba = undefined
  174 + this.listQuery.awbh = undefined
  175 + getMt2201ListForParam(this.listQuery).then(res => {
  176 + this.lostLoadData = res.data.dataList
  177 + this.total = res.data.count
  178 + setTimeout(() => {
  179 + this.listLoading = false
  180 + }, 1500)
  181 + })
  182 + }
  183 + },
  184 + handleSearch() {
  185 + this.getList()
  186 + },
  187 + handleLostLoad(row) {
  188 + console.log(row)
  189 + this.$confirm("是否发送落装申请", "确认消息", {
  190 + distinguishCancelAndClose: true,
  191 + confirmButtonText: '确认发送',
  192 + cancelButtonText: '取消发送'
  193 + }).then(() => {
  194 + delete row.parent
  195 + delete row.children
  196 + saveLostLoad(row).then(res => {
  197 + if (res.data.count > 0) {
  198 + this.$message({
  199 + type: 'success',
  200 + message: res.data.respMessage
  201 + })
  202 + this.getList()
  203 + } else {
  204 + this.$message({
  205 + type: 'error',
  206 + message: res.data.respMessage
  207 + })
  208 + }
  209 + })
  210 +
  211 + }).catch(action => {
  212 + this.$message({
  213 + type: 'info',
  214 + message: action === 'cancel'
  215 + ? '取消发送'
  216 + : '发送取消'
  217 + })
  218 + })
  219 + },
  220 + handleLostChange(row) {
  221 + this.lostChangeModel = {
  222 + uuid: undefined,
  223 + awba: undefined,
  224 + awbh: undefined,
  225 + manifest: undefined
  226 + }
  227 + const preModel = Object.assign({},row)
  228 + this.lostChangeModel.awba = preModel.awba
  229 + this.lostChangeModel.awbh = preModel.awbh
  230 + this.lostChangeModel.uuid = preModel.uuid
  231 + this.dialogStatus = 'create'
  232 + this.dialogFormVisible = true
  233 + this.$nextTick(()=>{
  234 + this.$refs.lostChangeData.clearValidate()
  235 + })
  236 + },
  237 + createData(){
  238 + saveLostChange(this.lostChangeModel).then(res =>{
  239 + if(res.data.count >0){
  240 + Message.success(res.data.respMessage)
  241 + this.dialogFormVisible = false
  242 + this.getList()
  243 + } else {
  244 + Message.error(res.data.respMessage)
  245 + }
  246 + })
  247 + }
  248 + }
  249 + }
  250 +
  251 +</script>
  252 +<style>
  253 +
  254 +</style>
  1 +<template>
  2 + <!--<div class="app-container">-->
  3 + <div>
  4 + <div>
  5 + <el-row class="row-bg">
  6 + <el-col :span="24">
  7 + <div class="grid-content content">航班信息</div>
  8 + </el-col>
  9 + <el-col :span="24">
  10 + <div class="grid-content co">
  11 + <el-col :span="1">
  12 + <div class="grid-content"></div>
  13 + </el-col>
  14 + <el-col :span="20">
  15 + <div class="grid-content">
  16 + <span class="titleSpan">航班号:{{this.arriveQuery.carrier}}{{this.arriveQuery.flightno}}</span>
  17 + <span class="titleSpan">航班日期:{{this.arriveQuery.flightdate}}</span>
  18 + <span class="titleSpan">航段:{{this.arriveQuery.originstation}}-{{this.arriveQuery.destinationstation}}</span>
  19 + </div>
  20 + </el-col>
  21 + </div>
  22 + </el-col>
  23 + <el-col :span="24">
  24 + <div class="grid-content content">出港运抵查询</div>
  25 + </el-col>
  26 + <el-col :span="24">
  27 + <div class="grid-content co">
  28 + <el-col :span="1">
  29 + <div class="grid-content"></div>
  30 + </el-col>
  31 + <el-col :span="22">
  32 + <div class="grid-content">
  33 + <el-col :span="4">
  34 + <div class="grid-content">
  35 + <el-input v-model="awba" placeholder="请输入主单号"></el-input>
  36 + </div>
  37 + </el-col>
  38 + <div class="grid-content el-btn">
  39 + <el-button type="primary" size="mini" @click="handleSerach">查询</el-button>
  40 + <el-button v-if="arriveQuery.flightno ===undefined && arriveData.length<1"
  41 + type="primary" size="mini"
  42 + @click="handleAddArrive">新增运抵
  43 + </el-button>
  44 + </div>
  45 + </div>
  46 + </el-col>
  47 + </div>
  48 + </el-col>
  49 + <el-col :span="24">
  50 + <div class="grid-content content" style="margin-top: 6px">出港运抵明细</div>
  51 + </el-col>
  52 + </el-row>
  53 + </div>
  54 + <el-table v-loading="listLoading" :data="arriveData" stripe fit highlight-current-row
  55 + style="font-size: 12px" border @selection-change="handleSelectionChange">
  56 + <el-table-column type="selection" width="55" align="center"></el-table-column>
  57 + <el-table-column label="航班号" width="70" align="center">
  58 + <template slot-scope="scope">
  59 + <span>{{scope.row.carrier}}{{scope.row.flightno}}</span>
  60 + </template>
  61 + </el-table-column>
  62 + <el-table-column label="运单号" width="120" align="center">
  63 + <template slot-scope="scope">
  64 + <span>{{scope.row.awba}}</span>
  65 + </template>
  66 + </el-table-column>
  67 + <el-table-column label="分单号" width="120" align="center">
  68 + <template slot-scope="scope">
  69 + <span>{{scope.row.awbh}}</span>
  70 + </template>
  71 + </el-table-column>
  72 + <el-table-column label="运抵件数" width="70" align="center">
  73 + <template slot-scope="scope">
  74 + <span>{{scope.row.piece}}</span>
  75 + </template>
  76 + </el-table-column>
  77 + <el-table-column label="运抵重量" width="70" align="center">
  78 + <template slot-scope="scope">
  79 + <span>{{scope.row.weight}}</span>
  80 + </template>
  81 + </el-table-column>
  82 + <el-table-column label="货物描述" width="100" align="center">
  83 + <template slot-scope="scope">
  84 + <span>{{scope.row.goodsname}}</span>
  85 + </template>
  86 + </el-table-column>
  87 + <el-table-column label="运抵时间" width="140" align="center">
  88 + <template slot-scope="scope">
  89 + <span>{{scope.row.arrivetime}}</span>
  90 + </template>
  91 + </el-table-column>
  92 + <el-table-column label="状态" width="100" align="center">
  93 + <template slot-scope="scope">
  94 + <span v-if="scope.row.status ==='01'">未发送</span>
  95 + <span v-if="scope.row.status ==='02'">已发舱单报</span>
  96 + <span v-if="scope.row.status ==='05'">舱单报退单</span>
  97 + <span v-if="scope.row.status ==='06'">舱单转人工</span>
  98 + <span v-if="scope.row.status ==='07'">舱单报申报成功</span>
  99 + <span v-if="scope.row.status ==='08'">已发舱单删除报</span>
  100 + <span v-if="scope.row.status ==='09'">舱单删除报退单</span>
  101 + <span v-if="scope.row.status ==='10'">舱单删除报转人工</span>
  102 + <span v-if="scope.row.status ==='11'">舱单删除成功</span>
  103 + <span v-if="scope.row.status ==='12'">已发舱单修改报</span>
  104 + <span v-if="scope.row.status ==='13'">舱单修改报退单</span>
  105 + <span v-if="scope.row.status ==='14'">舱单修改报转人工</span>
  106 + <span v-if="scope.row.status ==='15'">舱单修改报成功</span>
  107 + <span v-if="scope.row.status ==='16'">海关已存在</span>
  108 + </template>
  109 + </el-table-column>
  110 + <el-table-column prop="receipt" label="回执信息" width="180" align="center">
  111 + <template slot-scope="scope">
  112 + <span>{{scope.row.ext5}}</span>
  113 + </template>
  114 + </el-table-column>
  115 + <el-table-column prop="operation" label="操作" align="center">
  116 + <template slot-scope="scope">
  117 + <el-button size="mini" @click="handleSend(scope.row)">收发明细</el-button>
  118 + <el-button size="mini" type="success" @click="handleEdit(scope.row)">编辑运单</el-button>
  119 + <el-button size="mini" type="primary" @click="handleAwbSend(scope.row)"
  120 + :disabled="scope.row.status !=='00'">发送舱单报
  121 + </el-button>
  122 + <el-button size="mini" type="danger" v-if="isAdmin" @click="handleAwbDelete(scope.row)">删除运单</el-button>
  123 +
  124 + <el-button size="mini" type="warning" @click="handleAwbStatus(scope.row)"
  125 + :disabled="scope.row.status ==='00'">修改状态
  126 + </el-button>
  127 + </template>
  128 + </el-table-column>
  129 + </el-table>
  130 + <div class="btnFoot">
  131 + <el-row>
  132 + <el-button type="primary" size="mini" v-if="arriveQuery.flightno !==undefined || arriveData.length>0"
  133 + @click="handelAddArriveInfo">新增出港运抵
  134 + </el-button>
  135 + <el-button type="primary" size="mini" v-if="arriveModel.flightno !== undefined || arriveData.length>0"
  136 + @click="handelBackStep">返回
  137 + </el-button>
  138 + </el-row>
  139 + </div>
  140 + <pagination v-show="total>0" :total="total" :page.sync="arriveQuery.pageSize"
  141 + :limit.sync="arriveQuery.limitSize"
  142 + @pagination="getList"/>
  143 + <el-dialog :title="dialogMap[dialogStatus]" :visible.sync="dialogFormVisible">
  144 + <el-form ref="arriveFormData" :model="arriveModel" :rules="arriveRoles" label-position="right"
  145 + label-width="90px">
  146 + <div class="grid-content content">
  147 + <span>航班信息</span>
  148 + </div>
  149 + <el-row>
  150 + <el-col :span="7.5">
  151 + <el-form-item label="主单号" prop="awba">
  152 + <el-input v-model="arriveModel.awba"></el-input>
  153 + </el-form-item>
  154 + </el-col>
  155 + <el-col :span="7.5">
  156 + <el-form-item label="分单号" prop="awbh">
  157 + <el-input v-model="awbh"></el-input>
  158 + </el-form-item>
  159 + </el-col>
  160 + </el-row>
  161 + <div class="grid-content content">
  162 + <span>航班信息</span>
  163 + </div>
  164 + <el-row>
  165 + <el-col :span="7.5">
  166 + <el-form-item label="承运人" prop="carrier">
  167 + <el-input v-model="carrier"
  168 + :disabled="dialogFormVisible === 'update'"></el-input>
  169 + </el-form-item>
  170 + </el-col>
  171 + <el-col :span="7.5">
  172 + <el-form-item label="航班号" prop="flightno">
  173 + <el-input v-model="flightno"
  174 + :disabled="dialogFormVisible === 'update'"></el-input>
  175 + </el-form-item>
  176 + </el-col>
  177 + <el-col :span="7.5">
  178 + <el-form-item label="航班日期" prop="flightdate">
  179 + <el-date-picker v-model="arriveModel.flightdate" value-format="yyyy-MM-dd" type="date"
  180 + placeholder="请输入"
  181 + :disabled="dialogFormVisible === 'update'"></el-date-picker>
  182 + </el-form-item>
  183 + </el-col>
  184 + </el-row>
  185 + <el-row>
  186 + <el-col :span="7.5">
  187 + <el-form-item label="起始站" prop="originstation">
  188 + <el-input v-model="originstation"
  189 + :disabled="dialogFormVisible === 'update'"></el-input>
  190 + </el-form-item>
  191 + </el-col>
  192 + <el-col :span="7.5">
  193 + <el-form-item label="目的站" prop="destinationstation">
  194 + <el-input v-model="destinationstation"
  195 + :disabled="dialogFormVisible === 'update'"></el-input>
  196 + </el-form-item>
  197 + </el-col>
  198 + </el-row>
  199 + <div class="grid-content content">
  200 + <span>货物信息</span>
  201 + </div>
  202 + <el-row>
  203 + <el-col :span="7.5">
  204 + <el-form-item label="运抵件数" prop="piece">
  205 + <el-input v-model.number="arriveModel.piece"></el-input>
  206 + </el-form-item>
  207 + </el-col>
  208 + <el-col :span="7.5">
  209 + <el-form-item label="运抵重量" prop="weight">
  210 + <el-input v-model.number="arriveModel.weight"></el-input>
  211 + </el-form-item>
  212 + </el-col>
  213 + <el-col :span="7.5">
  214 + <el-form-item label="运抵时间" prop="arrivetime">
  215 + <el-date-picker v-model="arriveModel.arrivetime" value-format="yyyy-MM-dd HH:mm:ss"
  216 + type="datetime"
  217 + placeholder="请输入"></el-date-picker>
  218 + </el-form-item>
  219 + </el-col>
  220 + </el-row>
  221 + <el-row>
  222 + <el-col :span="7.5">
  223 + <el-form-item label="货物描述" prop="goodsname">
  224 + <el-input v-model="goodsname" placeholder="请输入"></el-input>
  225 + </el-form-item>
  226 + </el-col>
  227 + <el-col :span="7.5">
  228 + <el-form-item label="海关关区" prop="customcode">
  229 + <el-select v-model="arriveModel.customcode">
  230 + <el-option v-for="item in customcodeList " :key="item" :label="item"
  231 + :value="item"></el-option>
  232 + </el-select>
  233 + </el-form-item>
  234 + </el-col>
  235 + </el-row>
  236 + </el-form>
  237 + <div slot="footer" class="dialog-footer">
  238 + <el-button @click="dialogFormVisible = false">取消</el-button>
  239 + <el-button type="primary" @click="dialogStatus==='create'?createData():updateData()">保存</el-button>
  240 + <el-button type="success" @click="SaveAndSend">保存并发送</el-button>
  241 + </div>
  242 + </el-dialog>
  243 + <el-dialog title="收发明细" :visible.sync="dialogTableVisible">
  244 + <el-table :data="detailData" border>
  245 + <el-table-column label="操作时间" width="150">
  246 + <template slot-scope="scope">
  247 + {{scope.row.busdate}}
  248 + </template>
  249 + </el-table-column>
  250 + <el-table-column label="航班号" width="80">
  251 + <template slot-scope="scope">
  252 + {{scope.row.carrier}}{{scope.row.flightno}}
  253 + </template>
  254 + </el-table-column>
  255 + <el-table-column label="航班日期" width="100">
  256 + <template slot-scope="scope">
  257 + {{scope.row.flightdate}}
  258 + </template>
  259 + </el-table-column>
  260 + <el-table-column label="件数" width="70">
  261 + <template slot-scope="scope">
  262 + {{scope.row.buspiece}}
  263 + </template>
  264 + </el-table-column>
  265 + <el-table-column label="重量" width="70">
  266 + <template slot-scope="scope">
  267 + {{scope.row.busweight}}
  268 + </template>
  269 + </el-table-column>
  270 + <el-table-column label="回执信息" width="">
  271 + <template slot-scope="scope">
  272 + {{scope.row.cusrestext}}
  273 + </template>
  274 + </el-table-column>
  275 + <el-table-column label="操作人" width="100">
  276 + <template slot-scope="scope">
  277 + {{scope.row.operusername}}
  278 + </template>
  279 + </el-table-column>
  280 + </el-table>
  281 + </el-dialog>
  282 + </div>
  283 +</template>
  284 +<script>
  285 + import treeTable from '@/components/TreeTable'
  286 + import treeToArray from '@/utils/customEval'
  287 + import Pagination from '@/components/Pagination'
  288 +
  289 + import {getMt3201ListForParam, deleteByIsDelete, updateStatus, updateMT3201, addMt3201} from '@/api/exitArrive'
  290 + import {Message} from "element-ui";
  291 + import {validAwb, validAlphabets, validAlphabetsAndNum,validAlphabetsAndSpanceKey,validatorNum} from "@/utils/validate";
  292 + import {getResponseForParam} from '@/api/responseDetail'
  293 +
  294 + export default {
  295 + name: "ExitArrive",
  296 + components: {treeTable, Pagination},
  297 + inject: ['reload'],
  298 + data() {
  299 + const validatorAwb = (rule, value, callback) => {
  300 + if (!validAwb(value)) {
  301 + callback("请正确书写主单号")
  302 + }
  303 + callback()
  304 + }
  305 + const validatorAwbh = (rule, value, callback) => {
  306 + if (!validAlphabetsAndNum(value)) {
  307 + callback("只能输入字母和数字")
  308 + }
  309 + callback()
  310 + }
  311 + const validatorAlphabets = (rule, value, callback) => {
  312 + if (!validAlphabets(value)) {
  313 + callback("只能输入字母")
  314 + }
  315 + callback()
  316 + }
  317 + const validAlphabetsSpanceKey = (rule,value,callback) =>{
  318 + if(!validAlphabetsAndSpanceKey(value)){
  319 + callback("只能输入字母、数字、空格")
  320 + }
  321 + callback()
  322 + }
  323 + const validatorNums = (rule, value, callback) => {
  324 + if (!validatorNum(value)) {
  325 + callback("只能输入数字,并且小数位最多两位")
  326 + }
  327 + callback()
  328 + }
  329 + return {
  330 + func: treeToArray,
  331 + total: 1,
  332 + isAdmin: false,
  333 + arriveQuery: {
  334 + pageSize: 1,
  335 + limitSize: 100,
  336 + awba: undefined,
  337 + carrier: undefined,
  338 + flightno: undefined,
  339 + flightdate: undefined,
  340 + originstation: undefined,
  341 + destinationstation: undefined,
  342 + customcode: undefined
  343 + },
  344 + dialogMap: {
  345 + update: '编辑出港运抵',
  346 + create: '添加出港运抵',
  347 + },
  348 + dialogTableVisible: false,
  349 + multipleSelection: [],
  350 + customcodeList: [4604, 4620],
  351 + dialogStatus: undefined,
  352 + awbhStatus: false,
  353 + dialogFormVisible: false,
  354 + listLoading: false,
  355 + arriveRoles: {
  356 + awba: [{required: true, trigger: 'blur', validator: validatorAwb}],
  357 + awbh: [{required: true, trigger: 'blur', validator: validatorAwbh}],
  358 + goodsname: [{required: true, trigger: 'blur', validator: validAlphabetsSpanceKey}],
  359 + carrier: [{required: true, trigger: 'blur', validator: validatorAwbh}],
  360 + flightno: [{required: true, trigger: 'blur', validator: validatorAwbh}],
  361 + originstation: [{required: true, trigger: 'blur', validator: validatorAlphabets}],
  362 + destinationstation: [{required: true, trigger: 'blur', validator: validatorAlphabets}],
  363 + weight: [{required: true, trigger: 'change', validator: validatorNums}],
  364 + piece: [{required: true, trigger: 'change', validator: validatorNums}],
  365 + },
  366 + arriveData: [],
  367 + detailData: [],
  368 + arriveModel: {
  369 + carrier: undefined,
  370 + flightno: undefined,
  371 + flightdate: undefined,
  372 + originstation: undefined,
  373 + destinationstation: undefined,
  374 + awba: undefined,
  375 + awbh: undefined,
  376 + piece: undefined,
  377 + weight: undefined,
  378 + goodsname: undefined,
  379 + customcode: undefined,
  380 + arrivetime: undefined,
  381 + messageType: 'MT3201'
  382 + }
  383 + }
  384 + },
  385 + created() {
  386 + if (this.$route.params.flightData !== undefined) {
  387 + // 给查询条件赋值
  388 + if (this.$route.params.flightData.awba !== undefined && this.$route.params.flightData.awba !== '') {
  389 + this.arriveQuery.awba = this.$route.params.flightData.awba.substring(0, 3) + "-" + this.$route.params.flightData.awba.substring(3)
  390 + }
  391 +
  392 + this.arriveQuery.carrier = this.$route.params.flightData.flightno.substring(0, 2)
  393 + this.arriveQuery.flightno = this.$route.params.flightData.flightno.substring(2)
  394 + this.arriveQuery.flightdate = this.$route.params.flightData.flightdate
  395 + this.arriveQuery.originstation = this.$route.params.flightData.originstation
  396 + this.arriveQuery.destinationstation = this.$route.params.flightData.destinationstation
  397 + this.getList()
  398 + }
  399 + let username = JSON.parse(sessionStorage.getItem('user')).username
  400 + if(username === 'admin'){
  401 + this.isAdmin = true
  402 + }
  403 + },
  404 + computed: {
  405 + awba: {
  406 + get: function () {
  407 + return this.arriveQuery.awba
  408 + },
  409 + set: function (val) {
  410 + this.arriveQuery.awba = val.trim()
  411 + }
  412 + },
  413 + awbh: {
  414 + get: function () {
  415 + return this.arriveModel.awbh
  416 + },
  417 + set: function (val) {
  418 + this.arriveModel.awbh = val.toUpperCase().trim()
  419 + }
  420 + },
  421 + carrier: {
  422 + get: function () {
  423 + return this.arriveModel.carrier
  424 + },
  425 + set: function (val) {
  426 + this.arriveModel.carrier = val.toUpperCase().trim()
  427 + }
  428 + },
  429 + goodsname: {
  430 + get: function () {
  431 + return this.arriveModel.goodsname
  432 + },
  433 + set: function (val) {
  434 + this.arriveModel.goodsname = val.toUpperCase().trim()
  435 + }
  436 + },
  437 + flightno: {
  438 + get: function () {
  439 + return this.arriveModel.flightno
  440 + },
  441 + set: function (val) {
  442 + this.arriveModel.flightno = val.toUpperCase().trim()
  443 + }
  444 + },
  445 + originstation: {
  446 + get: function () {
  447 + return this.arriveModel.originstation
  448 + },
  449 + set: function (val) {
  450 + this.arriveModel.originstation = val.toUpperCase().trim()
  451 + }
  452 + },
  453 + destinationstation: {
  454 + get: function () {
  455 + return this.arriveModel.destinationstation
  456 + },
  457 + set: function (val) {
  458 + this.arriveModel.destinationstation = val.toUpperCase().trim()
  459 + }
  460 + }
  461 + },
  462 + methods: {
  463 + getList() {
  464 + this.listLoading = true
  465 + if (this.arriveQuery.awba !== undefined) {
  466 + getMt3201ListForParam(this.arriveQuery).then(res => {
  467 + this.arriveData = res.data.dataList
  468 + this.total = res.data.count
  469 + if (res.data.count > 0) {
  470 + this.arriveQuery.carrier = this.arriveData[0].carrier
  471 + this.arriveQuery.flightno = this.arriveData[0].flightno
  472 + this.arriveQuery.flightdate = this.arriveData[0].flightdate
  473 + this.arriveQuery.originstation = this.arriveData[0].originstation
  474 + this.arriveQuery.destinationstation = this.arriveData[0].destinationstation
  475 + this.arriveQuery.customcode = this.arriveData[0].customcode
  476 + }
  477 + setTimeout(() => {
  478 + this.listLoading = false
  479 + }, 1.5 * 1000)
  480 + })
  481 + } else {
  482 + getMt3201ListForParam(this.arriveQuery).then(res => {
  483 + this.arriveData = res.data.dataList
  484 + this.total = res.data.count
  485 + setTimeout(() => {
  486 + this.listLoading = false
  487 + }, 1.5 * 1000)
  488 + })
  489 + }
  490 +
  491 + },
  492 + handleSerach() {
  493 + this.arriveQuery.carrier = undefined
  494 + this.arriveQuery.flightno = undefined
  495 + this.arriveQuery.originstation = undefined
  496 + this.arriveQuery.flightdate = undefined
  497 + this.arriveQuery.destinationstation = undefined
  498 + this.getList()
  499 + },
  500 + handleSelectionChange(val) {
  501 + this.multipleSelection = val
  502 + },
  503 + // 新增出港运抵
  504 + handelAddArriveInfo() {
  505 + this.restModel()
  506 + // 给model赋值,所使用数据是以单独单号查询数据所得
  507 + this.arriveModel.carrier = this.arriveQuery.carrier
  508 + this.arriveModel.flightdate = this.arriveQuery.flightdate
  509 + this.arriveModel.flightno = this.arriveQuery.flightno
  510 + this.arriveModel.originstation = this.arriveQuery.originstation
  511 + this.arriveModel.destinationstation = this.arriveQuery.destinationstation
  512 + this.arriveModel.customcode = this.arriveQuery.customcode
  513 + this.dialogStatus = 'create'
  514 + this.dialogFormVisible = true
  515 + this.$nextTick(() => {
  516 + this.$refs.arriveFormData.clearValidate()
  517 + })
  518 + },
  519 + createData() {
  520 + this.$refs.arriveFormData.validate(valid => {
  521 + if (valid) {
  522 + addMt3201(this.arriveModel).then(res => {
  523 + if (res.data.count > 0) {
  524 + this.dialogFormVisible = false
  525 + Message.success("出港运抵新增成功")
  526 + this.getList()
  527 + } else {
  528 + Message.error("数据更新失败,请检查数据")
  529 + }
  530 + })
  531 + }
  532 + })
  533 +
  534 + },
  535 +
  536 + // 重置实体
  537 + restModel() {
  538 + this.arriveModel = {
  539 + carrier: undefined,
  540 + flightno: undefined,
  541 + flightdate: undefined,
  542 + originstation: undefined,
  543 + destinationstation: undefined,
  544 + awba: undefined,
  545 + awbh: undefined,
  546 + piece: undefined,
  547 + weight: undefined,
  548 + goodsname: undefined,
  549 + customcode: undefined,
  550 + arrivetime: undefined,
  551 + }
  552 + },
  553 + // 编辑
  554 + handleEdit(row) {
  555 + this.arriveModel = Object.assign({}, row) // copy obj
  556 + this.dialogStatus = 'update'
  557 + this.dialogFormVisible = true
  558 + this.$nextTick(() => {
  559 + this.$refs.arriveFormData.clearValidate()
  560 + })
  561 + },
  562 + updateData() {
  563 + this.$refs.arriveFormData.validate(valid => {
  564 + if (valid) {
  565 + updateMT3201(this.arriveModel).then(res => {
  566 + if (res.data.count > 0) {
  567 + this.dialogFormVisible = false
  568 + Message.success("出港运抵修改成功")
  569 + this.getList()
  570 + } else {
  571 + Message.error("数据更新失败,请检查数据")
  572 + }
  573 + })
  574 + }
  575 +
  576 + })
  577 + },
  578 + //保存并发送
  579 + SaveAndSend() {
  580 +
  581 + },
  582 + // 收发明细
  583 + handleSend(row) {
  584 + const resQuery = {
  585 + carrier: row.carrier,
  586 + flightNo: row.flightno,
  587 + flightDate: row.flightdate,
  588 + awba: row.awba,
  589 + awbh: row.awbh,
  590 + messageType: 'MT3201'
  591 + }
  592 + this.dialogTableVisible = true
  593 + getResponseForParam(resQuery).then(res => {
  594 + this.detailData = res.data
  595 + })
  596 + },
  597 + // 发送舱单报
  598 + handleAwbSend() {
  599 +
  600 + },
  601 + // 发送修改报
  602 + handleAwbEdit() {
  603 +
  604 + },
  605 + //发送删除报
  606 + handleAwbDelete(row) {
  607 + this.$confirm("是否删除", "确认消息", {
  608 + distinguishCancelAndClose: true,
  609 + confirmButtonText: '删除',
  610 + cancelButtonText: '取消'
  611 + }).then(() => {
  612 + deleteByIsDelete(row).then(res => {
  613 + if (res.data.count > 0) {
  614 + this.$message({
  615 + type: 'success',
  616 + message: '删除成功'
  617 + })
  618 + this.getList()
  619 + } else {
  620 + this.$message({
  621 + type: 'danger',
  622 + message: '删除异常,请稍后重试'
  623 + })
  624 + }
  625 + })
  626 + }).catch(action => {
  627 + this.$message({
  628 + type: 'info',
  629 + message: action === 'cancel'
  630 + ? '取消删除'
  631 + : '删除取消'
  632 + })
  633 + })
  634 + },
  635 + //更改状态
  636 + handleAwbStatus(row) {
  637 + this.$confirm("是否发送更改状态", "确认消息", {
  638 + distinguishCancelAndClose: true,
  639 + confirmButtonText: '确认更改',
  640 + cancelButtonText: '取消更改'
  641 + }).then(() => {
  642 + updateStatus(row).then(res => {
  643 + if (res.data.count > 0) {
  644 + this.$message({
  645 + type: 'success',
  646 + message: '当前运单状态已更改'
  647 + })
  648 + this.getList()
  649 + } else {
  650 + this.$message({
  651 + type: 'error',
  652 + message: '状态更改失败,请稍后重试'
  653 + })
  654 + }
  655 + })
  656 +
  657 + }).catch(action => {
  658 + this.$message({
  659 + type: 'info',
  660 + message: action === 'cancel'
  661 + ? '取消状态更改'
  662 + : '状态更改取消'
  663 + })
  664 + })
  665 + },
  666 + // 携数据跳转 新增运抵
  667 + handleAddArrive() {
  668 + const row = {
  669 + 'messageType': 'MT3201'
  670 + }
  671 + this.$router.push({name: "出港航班信息", params: {scopeRow: row}})
  672 + },
  673 + handelBackStep() {
  674 + this.$router.push({name: '出港航班信息', params: {scopeRow: this.arriveModel}})
  675 + }
  676 +
  677 + }
  678 + }
  679 +
  680 +</script>
  681 +
  682 +<style>
  683 + .grid-content {
  684 + height: 36px;
  685 + line-height: 36px;
  686 + }
  687 +
  688 + .content {
  689 + border-left: 4px #409EFF solid;
  690 + padding-left: 10px;
  691 + background-color: #f9fafc;
  692 + margin-bottom: 2px
  693 + }
  694 +
  695 + .row-bg, .co {
  696 + background-color: white;
  697 + }
  698 +
  699 + .titleSpan {
  700 + font-weight: bold;
  701 + margin-right: 35px;
  702 + }
  703 +
  704 + .el-row {
  705 + margin-top: 10px;
  706 + margin-bottom: 0px;
  707 + }
  708 +
  709 + .btnFoot {
  710 + margin-top: 10px;
  711 + }
  712 +
  713 + .el-table td, .el-table th {
  714 + text-align: center
  715 + }
  716 +
  717 + .el-btn {
  718 + margin-left: 10px;
  719 + display: inline-block;
  720 + }
  721 +</style>
  722 +
  1 +<template>
  2 + <div class="app-content">
  3 + <!--<div class="app-container">-->
  4 + <div class="filter-container">
  5 + <el-input v-model="listQuery.flightNo" clearable style="width: 270px;" class="filter-item"
  6 + placeholder="航班号"/>
  7 + <el-date-picker v-model="listQuery.flightDate" clearable type="date" style="width: 270px;"
  8 + placeholder="航班日期"
  9 + class="filter-item" value-format="yyyy-MM-dd"></el-date-picker>
  10 + <el-button class="filter-item" type="primary" icon="el-icon-search" @click="handleSearch">查询</el-button>
  11 + </div>
  12 + <el-table :data="flightData" stripe style="font-size: 14px" border>
  13 + <el-table-column label="航班号" width="280px" align="center">
  14 + <template slot-scope="scope">
  15 + <span>{{ scope.row.carrier }}{{ scope.row.flightNo }}</span>
  16 + </template>
  17 + </el-table-column>
  18 + <el-table-column label="航班日期" width="280px" align="center">
  19 + <template slot-scope="scope">
  20 + <i class="el-icon-time"></i>
  21 + <span>{{ scope.row.flightDate }}</span>
  22 + </template>
  23 + </el-table-column>
  24 + <el-table-column label="始发站" width="280px" align="center">
  25 + <template slot-scope="scope">
  26 + <span>{{ scope.row.originstation }}</span>
  27 + </template>
  28 + </el-table-column>
  29 + <el-table-column label="目的站" width="280px" align="center">
  30 + <template slot-scope="scope">
  31 + <span>{{ scope.row.destinationstation }}</span>
  32 + </template>
  33 + </el-table-column>
  34 + <el-table-column label="操作" align="center">
  35 + <template slot-scope="scope">
  36 + <el-button type="primary" size="mini" @click="handleLoading(scope.row)">装载舱单</el-button>
  37 + <el-button type="primary" size="mini" @click="handleTidy(scope.row)">出港理货</el-button>
  38 + <el-button type="primary" size="mini" @click="handleArrive(scope.row)">出港运抵</el-button>
  39 + <el-button type="primary" size="mini" @click="handlePre(scope.row)">预配舱单</el-button>
  40 + </template>
  41 + </el-table-column>
  42 + </el-table>
  43 + <pagination v-show="total>0" :total="total" :page.sync="listQuery.pageSize" :limit.sync="listQuery.limitSize"
  44 + @pagination="getList"/>
  45 + </div>
  46 +
  47 +</template>
  48 +<script>
  49 + import Pagination from '@/components/Pagination'
  50 + import {getFlightListForParam} from '@/api/exitFlight'
  51 + export default {
  52 + name: "ExitFlight",
  53 + components: {Pagination},
  54 + inject: ['reload'],
  55 + data() {
  56 + return {
  57 + total: 1,
  58 + listQuery: {
  59 + pageSize: 1,
  60 + limitSize: 10,
  61 + flightNo: undefined,
  62 + flightDate: undefined
  63 + },
  64 + flightData: [],
  65 + }
  66 + },
  67 + created(){
  68 + this.getList()
  69 + },
  70 + methods: {
  71 + getList() {
  72 + getFlightListForParam(this.listQuery).then(res =>{
  73 + this.flightData = res.data.dataList
  74 + this.total = res.data.count
  75 + })
  76 + },
  77 + handleSearch() {
  78 + this.getList()
  79 + },
  80 + handleLoading(row) {
  81 + row.messageType = 'MT4201'
  82 + this.$router.push({name: '出港航班信息', params: {scopeRow: row}})
  83 + },
  84 + handleTidy(row) {
  85 + row.messageType = 'MT5201'
  86 + this.$router.push({name: '出港航班信息', params: {scopeRow: row}})
  87 + },
  88 + handleArrive(row) {
  89 + row.messageType = 'MT3201'
  90 + this.$router.push({name: '出港航班信息', params: {scopeRow: row}})
  91 + },
  92 + handlePre(row) {
  93 + row.messageType = 'MT2201'
  94 + this.$router.push({name: '出港航班信息', params: {scopeRow: row}})
  95 + }
  96 + }
  97 + }
  98 +
  99 +</script>
  100 +<style scoped>
  101 + .app-content{
  102 + margin-top: 20px;
  103 + }
  104 +</style>
  1 +<template>
  2 + <el-container>
  3 + <el-main>
  4 + <el-row>
  5 + <el-col :span="24">
  6 + <div class="grid-content"><p>请输入航班信息:</p></div>
  7 + </el-col>
  8 + </el-row>
  9 + <el-row>
  10 + <el-col :span="24">
  11 + <div class="grid-content"><h1>Please Enter The Flight Information:</h1></div>
  12 + </el-col>
  13 + </el-row>
  14 + <el-row type="flex" class="row-bg" justify="center">
  15 + <el-col :span="4">
  16 + <el-input placeholder="必填" v-model="flightno">
  17 + <template slot="prepend">航班号</template>
  18 + </el-input>
  19 + </el-col>
  20 + <el-col :span="4">
  21 + <el-date-picker
  22 + v-model="flight.flightdate"
  23 + type="date"
  24 + value-format="yyyy-MM-dd"
  25 + placeholder="选择日期">
  26 + </el-date-picker>
  27 + </el-col>
  28 + <el-col :span="4">
  29 + <el-input placeholder="必填" v-model="originstation">
  30 + <template slot="prepend">始发站</template>
  31 + </el-input>
  32 + </el-col>
  33 + <el-col :span="4" style="margin-left: 20px">
  34 + <el-input placeholder="必填" v-model="destinationstation">
  35 + <template slot="prepend">目的站</template>
  36 + </el-input>
  37 + </el-col>
  38 + <el-col :span="4" style="margin-left: 20px">
  39 + <el-input placeholder="可为空" v-model="awba">
  40 + <template slot="prepend">主单号</template>
  41 + </el-input>
  42 + </el-col>
  43 + </el-row>
  44 + <el-row>
  45 + <el-col :span="4" :offset="10">
  46 + <div class="grid-content">
  47 + <el-button type="primary" @click="nstep">下一步</el-button>
  48 + </div>
  49 + </el-col>
  50 + </el-row>
  51 + </el-main>
  52 + </el-container>
  53 +</template>
  54 +
  55 +
  56 +<script>
  57 + import {Message} from "element-ui";
  58 +
  59 + export default {
  60 + name: 'ExitFlightDesc',
  61 + data() {
  62 + return {
  63 + flight: {
  64 + flightno: undefined,
  65 + flightdate: undefined,
  66 + originstation: undefined,
  67 + destinationstation: undefined,
  68 + awba: undefined,
  69 + messageType:undefined
  70 + },
  71 + btnStatus: true
  72 + };
  73 + },
  74 + created() {
  75 + if (this.$route.params.scopeRow !== undefined) {
  76 + if(this.$route.params.scopeRow.carrier === undefined){
  77 + this.flight.flightno = this.$route.params.scopeRow.flightno
  78 + } else {
  79 + this.flight.flightno = this.$route.params.scopeRow.carrier + this.$route.params.scopeRow.flightno
  80 + }
  81 + this.flight.flightdate = this.$route.params.scopeRow.flightdate
  82 + this.flight.originstation = this.$route.params.scopeRow.originstation
  83 + this.flight.destinationstation = this.$route.params.scopeRow.destinationstation
  84 + this.flight.messageType = this.$route.params.scopeRow.messageType
  85 + if(this.$route.params.scopeRow.awba !== undefined){
  86 + this.flight.awba = this.$route.params.scopeRow.awba.replace('-','')
  87 + }
  88 +
  89 + }
  90 + },
  91 + computed:{
  92 + flightno : {
  93 + get: function () {
  94 + return this.flight.flightno
  95 + },
  96 + set: function(val){
  97 + this.flight.flightno = val.toUpperCase().trim()
  98 + }
  99 + },
  100 + originstation :{
  101 + get: function () {
  102 + return this.flight.originstation
  103 + },
  104 + set: function(val){
  105 + this.flight.originstation = val.toUpperCase().trim()
  106 + }
  107 + },
  108 + destinationstation :{
  109 + get: function () {
  110 + return this.flight.destinationstation
  111 + },
  112 + set: function(val){
  113 + this.flight.destinationstation = val.toUpperCase().trim()
  114 + }
  115 + },
  116 + awba :{
  117 + get: function () {
  118 + return this.flight.awba
  119 + },
  120 + set: function(val){
  121 + this.flight.awba = val.trim()
  122 + }
  123 + }
  124 + },
  125 + methods: {
  126 + nstep() {
  127 + if (this.flight.flightno !== undefined && this.flight.flightno !==''&&
  128 + this.flight.flightdate !== undefined &&this.flight.flightdate !== '' &&
  129 + this.flight.destinationstation !== undefined && this.flight.destinationstation !==''&&
  130 + this.flight.originstation !== undefined && this.flight.originstation !=='') {
  131 + if(this.flight.awba !== '' && this.flight.awba !== undefined){
  132 + const manifest = this.flight.awba;
  133 + const reg = /^[0-9]{11}$/
  134 + if(!reg.test(manifest)){
  135 + Message.error("主单号只支持数字并且最多11位")
  136 + return
  137 + }
  138 + const num = (manifest.substring(3,10)) % 7
  139 + if(num !== eval(manifest.substring(10))){
  140 + Message.error("主单号不符合模7校验")
  141 + return
  142 + }
  143 + } else {
  144 + this.flight.awba = undefined
  145 + }
  146 +
  147 + if(this.flight.messageType ==="MT5201"){
  148 + this.$router.push({name: '出港理货', params: {flightData: this.flight}});
  149 + }
  150 + if(this.flight.messageType ==="MT4201"){
  151 + this.$router.push({name: '出港装载', params: {flightData: this.flight}});
  152 + }
  153 + if(this.flight.messageType ==="MT3201"){
  154 + this.$router.push({name:'出港运抵',params:{flightData: this.flight}})
  155 + }
  156 + if(this.flight.messageType ==="MT2201"){
  157 + this.$router.push({name:'出港预配舱单',params:{flightData: this.flight}})
  158 + }
  159 + } else {
  160 + Message.warning("请将航班信息填写完整")
  161 + }
  162 +
  163 + }
  164 + }
  165 + };
  166 +</script>
  167 +<style scoped>
  168 + .el-container {
  169 + text-align: center
  170 + }
  171 +
  172 + .el-main {
  173 + margin: 0 auto;
  174 + height: 400px;
  175 + }
  176 +
  177 + p {
  178 + font-size: 25px;
  179 + font-weight: bold;
  180 + }
  181 +</style>
  1 +<template>
  2 + <!--<div class="app-container">-->
  3 + <div>
  4 + <div>
  5 + <el-row class="row-bg">
  6 + <el-col :span="24">
  7 + <div class="grid-content content">航班信息</div>
  8 + </el-col>
  9 + <el-col :span="24">
  10 + <div class="grid-content co">
  11 + <el-col :span="1">
  12 + <div class="grid-content"></div>
  13 + </el-col>
  14 + <el-col :span="20">
  15 + <div class="grid-content">
  16 + <span class="titleSpan">航班号:{{this.loadingQuery.carrier}}{{this.loadingQuery.flightno}}</span>
  17 + <span class="titleSpan">航班日期:{{this.loadingQuery.flightdate}}</span>
  18 + <span class="titleSpan">航段:{{this.loadingQuery.originstation}}-{{this.loadingQuery.destinationstation}}</span>
  19 + </div>
  20 + </el-col>
  21 + </div>
  22 + </el-col>
  23 + <el-col :span="24">
  24 + <div class="grid-content content">进港舱单查询</div>
  25 + </el-col>
  26 + <el-col :span="24">
  27 + <div class="grid-content co">
  28 + <el-col :span="1">
  29 + <div class="grid-content"></div>
  30 + </el-col>
  31 + <el-col :span="22">
  32 + <div class="grid-content">
  33 + <el-col :span="4">
  34 + <div class="grid-content">
  35 + <el-input v-model="loadingQuery.awba" placeholder="请输入主单号"></el-input>
  36 + </div>
  37 + </el-col>
  38 + <div class="el-btn">
  39 + <el-button type="primary" size="mini" @click="handleSearch">查询</el-button>
  40 + <el-button v-if="loadingModel.flightno === undefined && loadingData.length <1"
  41 + type="primary" size="mini" @click="handleAddLoading">新增装载
  42 + </el-button>
  43 + </div>
  44 + </div>
  45 + </el-col>
  46 + </div>
  47 + </el-col>
  48 + <el-col :span="24">
  49 + <div class="grid-content content" style="margin-top: 6px">出港装载明细</div>
  50 + </el-col>
  51 + </el-row>
  52 + <tree-table v-loading="listLoading" :data="loadingData" :eval-func="func" :expand-all="true" stripe
  53 + style="font-size: 12px" border @selection-change="handleSelectionChange">
  54 + <el-table-column label="运单号" width="160" align="center">
  55 + <template slot-scope="scope">
  56 + <span>{{scope.row.awba}}</span>
  57 + </template>
  58 + </el-table-column>
  59 + <el-table-column label="运载件数" width="70" align="center">
  60 + <template slot-scope="scope">
  61 + <span>{{scope.row.lodingpiece}}</span>
  62 + </template>
  63 + </el-table-column>
  64 + <el-table-column label="运载重量" width="70" align="center">
  65 + <template slot-scope="scope">
  66 + <span>{{scope.row.lodingweight}}</span>
  67 + </template>
  68 + </el-table-column>
  69 + <el-table-column label="货物描述" width="120" align="center">
  70 + <template slot-scope="scope">
  71 + <span>{{scope.row.goodsname}}</span>
  72 + </template>
  73 + </el-table-column>
  74 + <el-table-column label="装载时间" width="150" align="center">
  75 + <template slot-scope="scope">
  76 + <span>{{scope.row.loadingtime}}</span>
  77 + </template>
  78 + </el-table-column>
  79 + <el-table-column label="状态" width="100" align="center">
  80 + <template slot-scope="scope">
  81 + <span v-if="scope.row.status ==='01'">未发送</span>
  82 + <span v-if="scope.row.status ==='02'">已发舱单报</span>
  83 + <span v-if="scope.row.status ==='05'">舱单报退单</span>
  84 + <span v-if="scope.row.status ==='06'">舱单转人工</span>
  85 + <span v-if="scope.row.status ==='07'">舱单报申报成功</span>
  86 + <span v-if="scope.row.status ==='08'">已发舱单删除报</span>
  87 + <span v-if="scope.row.status ==='09'">舱单删除报退单</span>
  88 + <span v-if="scope.row.status ==='10'">舱单删除报转人工</span>
  89 + <span v-if="scope.row.status ==='11'">舱单删除成功</span>
  90 + <span v-if="scope.row.status ==='12'">已发舱单修改报</span>
  91 + <span v-if="scope.row.status ==='13'">舱单修改报退单</span>
  92 + <span v-if="scope.row.status ==='14'">舱单修改报转人工</span>
  93 + <span v-if="scope.row.status ==='15'">舱单修改报成功</span>
  94 + <span v-if="scope.row.status ==='16'">海关已存在</span>
  95 + </template>
  96 + </el-table-column>
  97 + <el-table-column prop="receipt" label="回执信息" width="180" align="center">
  98 + <template slot-scope="scope">
  99 + <span>{{scope.row.ext5}}</span>
  100 + </template>
  101 + </el-table-column>
  102 + <el-table-column prop="operation" label="操作" align="center">
  103 + <template slot-scope="scope">
  104 + <el-button size="mini" @click="handleSend(scope.row)">收发明细</el-button>
  105 + <el-button size="mini" type="success" @click="handleEdit(scope.row)">编辑主单
  106 + </el-button>
  107 + <el-button size="mini" type="primary" @click="handleSendAwb(scope.row)"
  108 + :disabled="scope.row.status !=='00'">发送舱单报
  109 + </el-button>
  110 + <el-button size="mini" type="danger" v-if="isAdmin" @click="handleAwbDelete(scope.row)">删除运单</el-button>
  111 + <el-button size="mini" type="warning" @click="handleAwbStatus(scope.row)"
  112 + :disabled="scope.row.status ==='00'">更改状态
  113 + </el-button>
  114 + </template>
  115 + </el-table-column>
  116 + </tree-table>
  117 + <div class="btnFoot">
  118 + <el-row>
  119 + <el-button type="primary" size="mini"
  120 + v-if="loadingModel.flightno !== undefined || loadingData.length >0"
  121 + @click="handelAddLoadingInfo">新增出港装载
  122 + </el-button>
  123 + <el-button type="primary" size="mini" v-if="loadingModel.flightno !== undefined || loadingData.length>0"
  124 + @click="handelBackStep">返回</el-button>
  125 + </el-row>
  126 + </div>
  127 + <pagination v-show="total>0" :total="total" :page.sync="loadingQuery.page" :limit.sync="loadingQuery.limit"
  128 + @pagination="getList"/>
  129 +
  130 + <el-dialog :title="dialogMap[dialogStatus]" :visible.sync="dialogFormVisible">
  131 + <el-form ref="loadingFormData" :model="loadingModel" :rules="loadingRoles" label-position="right"
  132 + label-width="90px">
  133 + <div class="grid-content content">
  134 + <span>航班信息</span>
  135 + </div>
  136 + <el-row>
  137 + <el-col :span="7.5">
  138 + <el-form-item label="主单号" prop="awba">
  139 + <el-input v-model="loadingModel.awba"></el-input>
  140 + </el-form-item>
  141 + </el-col>
  142 + <el-col :span="7.5">
  143 + <el-form-item label="承运人" prop="carrier">
  144 + <el-input v-model="carrier" :disabled="dialogStatus ==='update'"></el-input>
  145 + </el-form-item>
  146 + </el-col>
  147 + <el-col :span="7.5">
  148 + <el-form-item label="航班号" prop="flightno">
  149 + <el-input v-model="flightno" :disabled="dialogStatus ==='update'"></el-input>
  150 + </el-form-item>
  151 + </el-col>
  152 +
  153 + </el-row>
  154 + <el-row>
  155 +
  156 + <el-col :span="7.5">
  157 + <el-form-item label="起始站" prop="originstation">
  158 + <el-input v-model="originstation"
  159 + :disabled="dialogStatus ==='update'"></el-input>
  160 + </el-form-item>
  161 + </el-col>
  162 + <el-col :span="7.5">
  163 + <el-form-item label="目的站" prop="flightno">
  164 + <el-input v-model="destinationstation" :disabled="dialogStatus ==='update'"></el-input>
  165 + </el-form-item>
  166 + </el-col>
  167 + <el-col :span="7.5">
  168 + <el-form-item label="航班日期" prop="flightdate">
  169 + <el-date-picker v-model="loadingModel.flightdate" value-format="yyyy-MM-dd" type="date"
  170 + placeholder="请输入" :disabled="dialogStatus ==='update'"></el-date-picker>
  171 + </el-form-item>
  172 + </el-col>
  173 + </el-row>
  174 + <div class="grid-content content">
  175 + <span>货物信息</span>
  176 + </div>
  177 + <el-row>
  178 + <el-col :span="7.5">
  179 + <el-form-item label="装载件数" prop="piece">
  180 + <el-input v-model.number="loadingModel.lodingpiece"></el-input>
  181 + </el-form-item>
  182 + </el-col>
  183 + <el-col :span="7.5">
  184 + <el-form-item label="装载重量" prop="weight">
  185 + <el-input v-model.number="loadingModel.lodingweight"></el-input>
  186 + </el-form-item>
  187 + </el-col>
  188 + <el-col :span="7.5">
  189 + <el-form-item label="装载时间" prop="loadingtime">
  190 + <el-date-picker v-model="loadingModel.loadingtime" value-format="yyyy-MM-dd HH:mm:ss"
  191 + type="datetime"
  192 + placeholder="请输入"></el-date-picker>
  193 + </el-form-item>
  194 + </el-col>
  195 + </el-row>
  196 + <el-row>
  197 + <el-col :span="7.5">
  198 + <el-form-item label="运单件数" prop="price">
  199 + <el-input v-model="loadingModel.awbprice"></el-input>
  200 + </el-form-item>
  201 + </el-col>
  202 + <el-col :span="7.5">
  203 + <el-form-item label="运单重量" prop="weight">
  204 + <el-input v-model="loadingModel.awbweight"></el-input>
  205 + </el-form-item>
  206 + </el-col>
  207 + <el-col :span="7.5">
  208 + <el-form-item label="海关关区" prop="customcode">
  209 + <el-select v-model="loadingModel.customcode">
  210 + <el-option v-for="item in customcodeList " :key="item" :label="item"
  211 + :value="item"></el-option>
  212 + </el-select>
  213 + </el-form-item>
  214 + </el-col>
  215 + </el-row>
  216 + <el-row>
  217 + <el-col :span="7.5">
  218 + <el-form-item label="特货代码" prop="awbh">
  219 + <el-input v-model="loadingModel.specialgoods"></el-input>
  220 + </el-form-item>
  221 + </el-col>
  222 + <el-col :span="7.5">
  223 + <el-form-item label="货物描述" prop="goodsname">
  224 + <el-input v-model="goodsname" placeholder="请输入"></el-input>
  225 + </el-form-item>
  226 + </el-col>
  227 + </el-row>
  228 + </el-form>
  229 + <div slot="footer" class="dialog-footer">
  230 + <el-button @click="dialogFormVisible = false">取消</el-button>
  231 + <el-button type="primary" @click="dialogStatus==='create'?createData():updateData()">保存</el-button>
  232 + <el-button type="success" @click="handleSaveAndSend">保存并发送</el-button>
  233 + </div>
  234 + </el-dialog>
  235 + <el-dialog title="收发明细" :visible.sync="dialogTableVisible">
  236 + <el-table :data="detailData" border>
  237 + <el-table-column label="操作时间" width="150">
  238 + <template slot-scope="scope">
  239 + {{scope.row.busdate}}
  240 + </template>
  241 + </el-table-column>
  242 + <el-table-column label="航班号" width="80">
  243 + <template slot-scope="scope">
  244 + {{scope.row.carrier}}{{scope.row.flightno}}
  245 + </template>
  246 + </el-table-column>
  247 + <el-table-column label="航班日期" width="100">
  248 + <template slot-scope="scope">
  249 + {{scope.row.flightdate}}
  250 + </template>
  251 + </el-table-column>
  252 + <el-table-column label="件数" width="70">
  253 + <template slot-scope="scope">
  254 + {{scope.row.buspiece}}
  255 + </template>
  256 + </el-table-column>
  257 + <el-table-column label="重量" width="70">
  258 + <template slot-scope="scope">
  259 + {{scope.row.busweight}}
  260 + </template>
  261 + </el-table-column>
  262 + <el-table-column label="回执信息" width="">
  263 + <template slot-scope="scope">
  264 + {{scope.row.cusrestext}}
  265 + </template>
  266 + </el-table-column>
  267 + <el-table-column label="操作人" width="100">
  268 + <template slot-scope="scope">
  269 + {{scope.row.operusername}}
  270 + </template>
  271 + </el-table-column>
  272 + </el-table>
  273 + </el-dialog>
  274 + </div>
  275 + </div>
  276 +</template>
  277 +<script>
  278 + import treeTable from '@/components/TreeTable'
  279 + import treeToArray from '@/utils/customEval'
  280 + import Pagination from '@/components/Pagination'
  281 + import {getMt4201ListForParam, deleteByIsDelete, updateStatus, updateMT4201, addMt4201} from '@/api/exitLoading'
  282 + import {Message} from "element-ui";
  283 + import {validAwb, validAlphabets, validAlphabetsAndNum, validAlphabetsAndSpanceKey,validatorNum} from "@/utils/validate"
  284 + export default {
  285 + name: "ExitLoading",
  286 + components: {treeTable, Pagination},
  287 + inject: ['reload'],
  288 + data() {
  289 + const validatorAwb = (rule, value, callback) => {
  290 + if (!validAwb(value)) {
  291 + callback("请正确书写主单号")
  292 + }
  293 + callback()
  294 + }
  295 + const validatorAwbh = (rule, value, callback) => {
  296 + if (!validAlphabetsAndNum(value)) {
  297 + callback("只能输入字母和数字")
  298 + }
  299 + callback()
  300 + }
  301 + const validatorAlphabets = (rule, value, callback) => {
  302 + if (!validAlphabets(value)) {
  303 + callback("只能输入字母")
  304 + }
  305 + callback()
  306 + }
  307 + const validAlphabetsSpanceKey = (rule,value,callback) =>{
  308 + if(!validAlphabetsAndSpanceKey(value)){
  309 + callback("只能输入字母、数字、空格")
  310 + }
  311 + callback()
  312 + }
  313 + const validatorNums = (rule, value, callback) => {
  314 + if (!validatorNum(value)) {
  315 + callback("只能输入数字,并且小数位最多两位")
  316 + }
  317 + callback()
  318 + }
  319 + return {
  320 + func: treeToArray,
  321 + total: 1,
  322 + isAdmin:false,
  323 + dialogMap: {
  324 + update: '编辑出港装载',
  325 + create: '添加出港装载',
  326 + },
  327 + customcodeList: [4604, 4620],
  328 + dialogStatus: undefined,
  329 + dialogTableVisible: false,
  330 + dialogFormVisible: false,
  331 + listLoading: false,
  332 + loadingQuery: {
  333 + pageSize: 1,
  334 + limitSize: 100,
  335 + awba: undefined,
  336 + carrier: undefined,
  337 + flightno: undefined,
  338 + flightdate: undefined,
  339 + originstation: undefined,
  340 + destinationstation: undefined,
  341 + customcode: undefined
  342 + },
  343 + loadingRoles: {
  344 + awba: [{required: true, trigger: 'blur', validator: validatorAwb}],
  345 + awbh: [{required: true, trigger: 'blur', validator: validatorAwbh}],
  346 + goodsname: [{required: true, trigger: 'blur', validator: validAlphabetsSpanceKey}],
  347 + carrier: [{required: true, trigger: 'blur', validator: validatorAwbh}],
  348 + flightno: [{required: true, trigger: 'blur', validator: validatorAwbh}],
  349 + originstation: [{required: true, trigger: 'blur', validator: validatorAlphabets}],
  350 + destinationstation: [{required: true, trigger: 'blur', validator: validatorAlphabets}],
  351 + piece: [{type: 'number', required: true, trigger: 'change', message: '只能输入数字'}],
  352 + weight: [{type: 'number', required: true, trigger: 'change', message: '只能输入数字'}],
  353 + customcode:[{required: true, trigger: 'change',message:'不能为空'}]
  354 + },
  355 + loadingData: [],
  356 + detailData: [],
  357 + loadingModel: {
  358 + carrier:undefined,
  359 + flightno: undefined,
  360 + flightdate: undefined,
  361 + originstation: undefined,
  362 + destinationstation: undefined,
  363 + awba: undefined,
  364 + lodingpiece: undefined,
  365 + lodingweight: undefined,
  366 + goodsname: undefined,
  367 + customcode: undefined,
  368 + specialgoods: undefined,
  369 + loadingtime: undefined,
  370 + messageType: 'MT4201',
  371 + awbprice: undefined,
  372 + awbweight: undefined
  373 + }
  374 + }
  375 + },
  376 + created() {
  377 + if (this.$route.params.flightData !== undefined) {
  378 + // 给查询条件赋值
  379 + if (this.$route.params.flightData.awba !== undefined && this.$route.params.flightData.awba !== '') {
  380 + this.loadingQuery.awba = this.$route.params.flightData.awba.substring(0, 3) + '-' + this.$route.params.flightData.awba.substring(3)
  381 + }
  382 + this.loadingQuery.carrier = this.$route.params.flightData.flightno.substring(0, 2)
  383 + this.loadingQuery.flightno = this.$route.params.flightData.flightno.substring(2)
  384 + this.loadingQuery.flightdate = this.$route.params.flightData.flightdate
  385 + this.loadingQuery.originstation = this.$route.params.flightData.originstation
  386 + this.loadingQuery.destinationstation = this.$route.params.flightData.destinationstation
  387 + this.getList()
  388 + }
  389 + let username = JSON.parse(sessionStorage.getItem('user')).username
  390 + if(username === 'admin'){
  391 + this.isAdmin = true
  392 + }
  393 + },
  394 + computed: {
  395 + carrier: {
  396 + get: function () {
  397 + return this.loadingModel.carrier
  398 + },
  399 + set: function (val) {
  400 + this.loadingModel.carrier = val.toUpperCase().trim()
  401 + }
  402 + },
  403 + goodsname: {
  404 + get: function () {
  405 + return this.loadingModel.goodsname
  406 + },
  407 + set: function (val) {
  408 + this.loadingModel.goodsname = val.toUpperCase().trim()
  409 + }
  410 + },
  411 + flightno: {
  412 + get: function () {
  413 + return this.loadingModel.flightno
  414 + },
  415 + set: function (val) {
  416 + this.loadingModel.flightno = val.toUpperCase().trim()
  417 + }
  418 + },
  419 + originstation: {
  420 + get: function () {
  421 + return this.loadingModel.originstation
  422 + },
  423 + set: function (val) {
  424 + this.loadingModel.originstation = val.toUpperCase().trim()
  425 + }
  426 + },
  427 + destinationstation: {
  428 + get: function () {
  429 + return this.loadingModel.destinationstation
  430 + },
  431 + set: function (val) {
  432 + this.loadingModel.destinationstation = val.toUpperCase().trim()
  433 + }
  434 + }
  435 + },
  436 + methods: {
  437 + getList() {
  438 + this.listLoading = true
  439 + if (this.loadingQuery.awba !== undefined && this.loadingQuery.awba !== '') {
  440 + getMt4201ListForParam(this.loadingQuery).then(res => {
  441 + this.loadingData = res.data.dataList
  442 + this.total = res.data.count
  443 + if (res.data.count > 0) {
  444 + this.loadingQuery.carrier = this.loadingData[0].carrier
  445 + this.loadingQuery.flightno = this.loadingData[0].flightno
  446 + this.loadingQuery.flightdate = this.loadingData[0].flightdate
  447 + this.loadingQuery.originstation = this.loadingData[0].originstation
  448 + this.loadingQuery.destinationstation = this.loadingData[0].destinationstation
  449 + this.loadingQuery.customcode = this.loadingData[0].customcode
  450 + }
  451 + setTimeout(() => {
  452 + this.listLoading = false
  453 + }, 1.5 * 1000)
  454 + })
  455 + } else {
  456 + getMt4201ListForParam(this.loadingQuery).then(res => {
  457 + this.loadingData = res.data.dataList
  458 + this.total = res.data.count
  459 + setTimeout(() => {
  460 + this.listLoading = false
  461 + }, 1.5 * 1000)
  462 + })
  463 + }
  464 +
  465 + },
  466 + // 多选
  467 + handleSelectionChange() {
  468 +
  469 + },
  470 + // 查询
  471 + handleSearch() {
  472 + this.loadingQuery.carrier = undefined
  473 + this.loadingQuery.flightno = undefined
  474 + this.loadingQuery.originstation = undefined
  475 + this.loadingQuery.flightdate = undefined
  476 + this.loadingQuery.destinationstation = undefined
  477 + this.getList()
  478 + },
  479 + // 收发明细
  480 + handleSend() {
  481 + const resQuery = {
  482 + carrier: row.carrier,
  483 + flightNo: row.flightno,
  484 + flightDate: row.flightdate,
  485 + awba: row.awba,
  486 + awbh: row.awbh,
  487 + messageType: 'MT4201'
  488 + }
  489 + this.dialogTableVisible = true
  490 + getResponseForParam(resQuery).then(res => {
  491 + this.detailData = res.data
  492 + })
  493 + },
  494 + // 编辑 弹框
  495 + handleEdit(row) {
  496 + this.loadingModel = Object.assign({}, row)
  497 + console.log(this.loadingModel)
  498 + this.dialogStatus = 'update'
  499 + this.dialogFormVisible = true
  500 + this.$nextTick(() => {
  501 + this.$refs.loadingFormData.clearValidate()
  502 + })
  503 + },
  504 + // 更新数据
  505 + updateData() {
  506 + this.$refs.loadingFormData.validate(valid => {
  507 + if (valid) {
  508 + updateMT4201(this.loadingModel).then(res => {
  509 + if (res.data.count > 0) {
  510 + this.dialogFormVisible = false
  511 + Message.success("数据更新成功")
  512 + this.getList()
  513 + } else {
  514 + Message.error("数据更新失败,请检查数据")
  515 + }
  516 + })
  517 + }
  518 + })
  519 + },
  520 +
  521 + // 发送舱单报
  522 + handleSendAwb() {
  523 +
  524 + },
  525 + // 删除 发送删除报
  526 + handleAwbDelete(row) {
  527 + this.$confirm("是否删除", "确认消息", {
  528 + distinguishCancelAndClose: true,
  529 + confirmButtonText: '删除',
  530 + cancelButtonText: '取消'
  531 + }).then(() => {
  532 + deleteByIsDelete(row).then(res => {
  533 + if (res.data.count > 0) {
  534 + this.$message({
  535 + type: 'success',
  536 + message: '删除成功'
  537 + })
  538 + this.getList()
  539 + } else {
  540 + this.$message({
  541 + type: 'danger',
  542 + message: '删除异常,请稍后重试'
  543 + })
  544 + }
  545 + })
  546 + }).catch(action => {
  547 + this.$message({
  548 + type: 'info',
  549 + message: action === 'cancel'
  550 + ? '取消删除'
  551 + : '删除取消'
  552 + })
  553 + })
  554 + },
  555 + // 更改当前运单发送状态
  556 + handleAwbStatus(row) {
  557 + this.$confirm("是否发送更改状态", "确认消息", {
  558 + distinguishCancelAndClose: true,
  559 + confirmButtonText: '确认更改',
  560 + cancelButtonText: '取消更改'
  561 + }).then(() => {
  562 + updateStatus(row).then(res => {
  563 + if (res.data.count > 0) {
  564 + this.$message({
  565 + type: 'success',
  566 + message: '当前运单状态已更改'
  567 + })
  568 + this.getList()
  569 + } else {
  570 + this.$message({
  571 + type: 'error',
  572 + message: '状态更改失败,请稍后重试'
  573 + })
  574 + }
  575 + })
  576 +
  577 + }).catch(action => {
  578 + this.$message({
  579 + type: 'info',
  580 + message: action === 'cancel'
  581 + ? '取消状态更改'
  582 + : '状态更改取消'
  583 + })
  584 + })
  585 + },
  586 + // 保存并发送
  587 + handleSaveAndSend() {
  588 +
  589 + },
  590 + // 重置实体
  591 + restModel() {
  592 + this.loadingModel = {
  593 + carrier:undefined,
  594 + flightno: undefined,
  595 + flightdate: undefined,
  596 + originstation: undefined,
  597 + destinationstation: undefined,
  598 + awba: undefined,
  599 + lodingpiece: undefined,
  600 + lodingweight: undefined,
  601 + goodsname: undefined,
  602 + customcode: undefined,
  603 + specialgoods: undefined,
  604 + loadingtime: undefined,
  605 + messageType: 'MT4201',
  606 + awbprice: undefined,
  607 + awbweight: undefined
  608 + }
  609 + },
  610 + // 新增出港装载 弹框
  611 + handelAddLoadingInfo() {
  612 + this.restModel()
  613 + // 给model赋值,所使用数据是以单独单号查询数据所得
  614 + this.loadingModel.carrier = this.loadingQuery.carrier
  615 + this.loadingModel.flightdate = this.loadingQuery.flightdate
  616 + this.loadingModel.flightno = this.loadingQuery.flightno
  617 + this.loadingModel.originstation = this.loadingQuery.originstation
  618 + this.loadingModel.destinationstation = this.loadingQuery.destinationstation
  619 + this.loadingModel.customcode = this.loadingQuery.customcode
  620 + this.dialogStatus = 'create'
  621 + this.dialogFormVisible = true
  622 + this.$nextTick(() => {
  623 + this.$refs.loadingFormData.clearValidate()
  624 + })
  625 + },
  626 + // 新增出港装载 请求
  627 + createData() {
  628 + this.$refs.loadingFormData.validate(valid => {
  629 + if (valid) {
  630 + addMt4201(this.loadingModel).then(res => {
  631 + if (res.data.count > 0) {
  632 + this.dialogFormVisible = false
  633 + Message.success("新增出港装载成功")
  634 + this.getList()
  635 + } else {
  636 + Message.error("数据新增失败,请检查数据")
  637 + }
  638 + })
  639 + }
  640 + })
  641 + },
  642 + handleAddLoading() {
  643 + const row = {
  644 + 'messageType': 'MT4201'
  645 + }
  646 + this.$router.push({name: '出港航班信息', params: {scopeRow: row}})
  647 + },
  648 + handelBackStep() {
  649 + this.$router.push({name: '出港航班信息', params: {scopeRow: this.loadingModel}})
  650 + }
  651 + }
  652 + }
  653 +
  654 +</script>
  655 +<style>
  656 + .grid-content {
  657 + height: 36px;
  658 + line-height: 36px;
  659 + }
  660 +
  661 + .content {
  662 + border-left: 4px #409EFF solid;
  663 + padding-left: 10px;
  664 + background-color: #f9fafc;
  665 + margin-bottom: 2px
  666 + }
  667 +
  668 + .row-bg, .co {
  669 + background-color: white;
  670 + }
  671 +
  672 + .titleSpan {
  673 + font-weight: bold;
  674 + margin-right: 35px;
  675 + }
  676 +
  677 + .el-row {
  678 + margin-top: 10px;
  679 + margin-bottom: 0px;
  680 + }
  681 +
  682 + .btnFoot {
  683 + margin-top: 10px;
  684 + }
  685 +
  686 + .el-table td, .el-table th {
  687 + text-align: center
  688 + }
  689 +
  690 + .el-btn {
  691 + margin-left: 10px;
  692 + display: inline-block;
  693 + }
  694 +</style>