Showing
15 changed files
with
1893 additions
and
631 deletions
src/api/declareData-api.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +//获取自定义设置数据 | ||
| 4 | +/** | ||
| 5 | + * @param billNo 提运单号 | ||
| 6 | + * @param orderNo 订单编号 | ||
| 7 | + * @param logisticsNo 运单编号 | ||
| 8 | + * @param startCreateTime 创建开始时间 | ||
| 9 | + * @param endCreateTime 创建结束时间 | ||
| 10 | + * @param receiptType 回执类型 | ||
| 11 | + * @param receiptStatus 回执状态 | ||
| 12 | + * @param pageNum * | ||
| 13 | + * @param pageSize * | ||
| 14 | + */ | ||
| 15 | +export function searchDeclareData(data) { | ||
| 16 | + return request({ | ||
| 17 | + url: '/bus-customer/declareData/getDeclareDataList', | ||
| 18 | + method: 'post', | ||
| 19 | + data: data, | ||
| 20 | + }) | ||
| 21 | +} | ||
| 22 | + | ||
| 23 | +//申报数据导入 | ||
| 24 | +/** | ||
| 25 | + * @param multipartFile * 提运单号 | ||
| 26 | + */ | ||
| 27 | +export function uploadDeclareData(data) { | ||
| 28 | + let formData = new FormData | ||
| 29 | + formData.append("multipartFile", data.multipartFile); | ||
| 30 | + return request({ | ||
| 31 | + url: '/bus-customer/declareData/import', | ||
| 32 | + method: 'post', | ||
| 33 | + data: formData, | ||
| 34 | + }) | ||
| 35 | +} | ||
| 36 | + | ||
| 37 | +//数据申报 | ||
| 38 | +/** | ||
| 39 | + * @param declareIds * id list | ||
| 40 | + * @param type * | ||
| 41 | + */ | ||
| 42 | +export function declareDataUpload(data) { | ||
| 43 | + return request({ | ||
| 44 | + url: '/bus-customer/declareData/' + data.type, | ||
| 45 | + method: 'post', | ||
| 46 | + data: data.declareIds, | ||
| 47 | + }) | ||
| 48 | +} | ||
| 49 | + |
src/api/exportQuery.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +//获取自定义设置数据 | ||
| 4 | +/** | ||
| 5 | + * @param ebccode 电商企业代码 | ||
| 6 | + * @param orderNo 电商订单/海外仓订仓单编号 | ||
| 7 | + * @param returnStatus 回执状态 | ||
| 8 | + * @param createTimeStart 创建开始时间 | ||
| 9 | + * @param createTimeEnd 创建结束时间 | ||
| 10 | + * @param pageNum * | ||
| 11 | + * @param pageSize * | ||
| 12 | + */ | ||
| 13 | +export function getAllExportingBills(data) { | ||
| 14 | + return request({ | ||
| 15 | + url: '/bus-customer/exportOrder/search', | ||
| 16 | + method: 'post', | ||
| 17 | + data: data, | ||
| 18 | + }) | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +//获取自定义设置数据 | ||
| 22 | +/** | ||
| 23 | + * @param logisticsNo 物流运单编号 | ||
| 24 | + * @param logisticsCode 物流企业代码 | ||
| 25 | + * @param returnStatus 回执状态 | ||
| 26 | + * @param createTimeStart 创建开始时间 | ||
| 27 | + * @param createTimeEnd 创建结束时间 | ||
| 28 | + * @param pageNum * | ||
| 29 | + * @param pageSize * | ||
| 30 | + */ | ||
| 31 | +export function getAllExportingTransportBills(data) { | ||
| 32 | + return request({ | ||
| 33 | + url: '/bus-customer/exportWaybill/search', | ||
| 34 | + method: 'post', | ||
| 35 | + data: data, | ||
| 36 | + }) | ||
| 37 | +} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
src/api/query/query.js
deleted
100644 → 0
| 1 | -import request from '@/utils/request' | ||
| 2 | - | ||
| 3 | -/** | ||
| 4 | - */ | ||
| 5 | -export function queryBills(data) { | ||
| 6 | - return request({ | ||
| 7 | - url: '/bus-employees/rde/op/approve/check', | ||
| 8 | - method: 'post', | ||
| 9 | - data: data | ||
| 10 | - }) | ||
| 11 | -} | ||
| 12 | - | ||
| 13 | - | ||
| 14 | -/** | ||
| 15 | - * 查询菜单 | ||
| 16 | - */ | ||
| 17 | -export function getAllMenus() { | ||
| 18 | - return request({ | ||
| 19 | - url: '/menu/selectAllMenu', | ||
| 20 | - method: 'get' | ||
| 21 | - }) | ||
| 22 | -} | ||
| 23 | - | ||
| 24 | -export function getAllExportingBills(data) { | ||
| 25 | - return request({ | ||
| 26 | - url: '/bus-customer/exportOrder/search', | ||
| 27 | - method: 'post', | ||
| 28 | - data | ||
| 29 | - }) | ||
| 30 | -} | ||
| 31 | - | ||
| 32 | -export function getAllTransportBills(data) { | ||
| 33 | - return request({ | ||
| 34 | - url: '/bus-customer/exportWaybill/search', | ||
| 35 | - method: 'post', | ||
| 36 | - data | ||
| 37 | - }) | ||
| 38 | -} | ||
| 39 | - | ||
| 40 | -export function getAllListBills(data) { | ||
| 41 | - return request({ | ||
| 42 | - url: '/bus-customer/exportList/search', | ||
| 43 | - method: 'post', | ||
| 44 | - data | ||
| 45 | - }) | ||
| 46 | -} | ||
| 47 | - |
| ... | @@ -10,16 +10,16 @@ | ... | @@ -10,16 +10,16 @@ |
| 10 | 10 | ||
| 11 | <script> | 11 | <script> |
| 12 | export default { | 12 | export default { |
| 13 | - name: 'AppMain', | 13 | + name: "AppMain", |
| 14 | computed: { | 14 | computed: { |
| 15 | cachedViews() { | 15 | cachedViews() { |
| 16 | - return this.$store.state.tagsView.cachedViews | 16 | + return this.$store.state.tagsView.cachedViews; |
| 17 | }, | 17 | }, |
| 18 | key() { | 18 | key() { |
| 19 | - return this.$route.fullPath | 19 | + return this.$route.fullPath; |
| 20 | - } | 20 | + }, |
| 21 | - } | 21 | + }, |
| 22 | -} | 22 | +}; |
| 23 | </script> | 23 | </script> |
| 24 | 24 | ||
| 25 | <style lang="scss" scoped> | 25 | <style lang="scss" scoped> |
| ... | @@ -31,11 +31,11 @@ export default { | ... | @@ -31,11 +31,11 @@ export default { |
| 31 | min-width: 1080px; | 31 | min-width: 1080px; |
| 32 | position: relative; | 32 | position: relative; |
| 33 | //overflow: hidden; | 33 | //overflow: hidden; |
| 34 | - overflow: auto; | 34 | + overflow: hidden; |
| 35 | background-color: #f2f2f2; | 35 | background-color: #f2f2f2; |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | -.fixed-header+.app-main { | 38 | +.fixed-header + .app-main { |
| 39 | padding-top: 50px; | 39 | padding-top: 50px; |
| 40 | } | 40 | } |
| 41 | 41 | ||
| ... | @@ -45,7 +45,7 @@ export default { | ... | @@ -45,7 +45,7 @@ export default { |
| 45 | min-height: calc(100vh - 84px); | 45 | min-height: calc(100vh - 84px); |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | - .fixed-header+.app-main { | 48 | + .fixed-header + .app-main { |
| 49 | padding-top: 84px; | 49 | padding-top: 84px; |
| 50 | } | 50 | } |
| 51 | } | 51 | } | ... | ... |
| ... | @@ -99,12 +99,15 @@ export default { | ... | @@ -99,12 +99,15 @@ export default { |
| 99 | watch: { | 99 | watch: { |
| 100 | $route(val) { | 100 | $route(val) { |
| 101 | this.activeRoute = val; | 101 | this.activeRoute = val; |
| 102 | + this.setMainHeight(); | ||
| 102 | }, | 103 | }, |
| 103 | }, | 104 | }, |
| 104 | - mounted() { | 105 | + mounted() {}, |
| 105 | - | ||
| 106 | - }, | ||
| 107 | methods: { | 106 | methods: { |
| 107 | + setMainHeight(val) { | ||
| 108 | + document.querySelector(".main-container").style.height = | ||
| 109 | + "calc(100% - 64px)"; | ||
| 110 | + }, | ||
| 108 | handleClickOutside() { | 111 | handleClickOutside() { |
| 109 | this.$store.dispatch("app/closeSideBar", { withoutAnimation: false }); | 112 | this.$store.dispatch("app/closeSideBar", { withoutAnimation: false }); |
| 110 | }, | 113 | }, | ... | ... |
| ... | @@ -79,13 +79,13 @@ export const constantRoutes = [ | ... | @@ -79,13 +79,13 @@ export const constantRoutes = [ |
| 79 | component: Layout, | 79 | component: Layout, |
| 80 | hidden: false, | 80 | hidden: false, |
| 81 | redirect: 'index', | 81 | redirect: 'index', |
| 82 | - meta: { title: '系统管理', icon: 'fedexSystem' }, | 82 | + meta: { title: '申报数据管理', icon: 'upload' }, |
| 83 | children: [ | 83 | children: [ |
| 84 | { | 84 | { |
| 85 | path: '/reportingData', | 85 | path: '/reportingData', |
| 86 | - component: (resolve) => require(['@/views/AuditionEntrySearch/index'], resolve), | 86 | + component: (resolve) => require(['@/views/reportingData/index'], resolve), |
| 87 | hidden: false, | 87 | hidden: false, |
| 88 | - meta: { title: '申报数据管理', icon: 'api' } | 88 | + meta: { title: '申报数据管理', icon: 'upload' } |
| 89 | } | 89 | } |
| 90 | ] | 90 | ] |
| 91 | }, | 91 | }, |
| ... | @@ -94,76 +94,97 @@ export const constantRoutes = [ | ... | @@ -94,76 +94,97 @@ export const constantRoutes = [ |
| 94 | component: Layout, | 94 | component: Layout, |
| 95 | hidden: false, | 95 | hidden: false, |
| 96 | redirect: 'index', | 96 | redirect: 'index', |
| 97 | - meta: { title: '查询管理', icon: 'fedexSystem' }, | 97 | + meta: { title: '查询管理', icon: 'fedexExportIcon' }, |
| 98 | children: [ | 98 | children: [ |
| 99 | { | 99 | { |
| 100 | path: '/exportBillQuery', | 100 | path: '/exportBillQuery', |
| 101 | component: (resolve) => require(['@/views/exportBillQuery/index'], resolve), | 101 | component: (resolve) => require(['@/views/exportBillQuery/index'], resolve), |
| 102 | hidden: false, | 102 | hidden: false, |
| 103 | - meta: { title: '出口订单查询', icon: 'api' }, | 103 | + meta: { title: '出口订单查询', icon: '' }, |
| 104 | }, | 104 | }, |
| 105 | { | 105 | { |
| 106 | path: '/exportBillDetail', | 106 | path: '/exportBillDetail', |
| 107 | component: (resolve) => require(['@/views/exportBillDetail/index'], resolve), | 107 | component: (resolve) => require(['@/views/exportBillDetail/index'], resolve), |
| 108 | hidden: true, | 108 | hidden: true, |
| 109 | - meta: { title: '出口订单详情', icon: 'api' }, | 109 | + meta: { title: '出口订单详情', icon: '' }, |
| 110 | }, | 110 | }, |
| 111 | { | 111 | { |
| 112 | path: '/exportTransportDetail', | 112 | path: '/exportTransportDetail', |
| 113 | component: (resolve) => require(['@/views/exportTransportDetail/index'], resolve), | 113 | component: (resolve) => require(['@/views/exportTransportDetail/index'], resolve), |
| 114 | hidden: true, | 114 | hidden: true, |
| 115 | - meta: { title: '出口运单详情', icon: 'api' }, | 115 | + meta: { title: '出口运单详情', icon: '' }, |
| 116 | }, | 116 | }, |
| 117 | { | 117 | { |
| 118 | path: '/exportListDetail', | 118 | path: '/exportListDetail', |
| 119 | component: (resolve) => require(['@/views/exportListDetail/index'], resolve), | 119 | component: (resolve) => require(['@/views/exportListDetail/index'], resolve), |
| 120 | hidden: true, | 120 | hidden: true, |
| 121 | - meta: { title: '出口清单详情', icon: 'api' }, | 121 | + meta: { title: '出口清单详情', icon: '' }, |
| 122 | }, | 122 | }, |
| 123 | { | 123 | { |
| 124 | path: '/exportTransportBillQuery', | 124 | path: '/exportTransportBillQuery', |
| 125 | component: (resolve) => require(['@/views/exportTransportBillQuery/index'], resolve), | 125 | component: (resolve) => require(['@/views/exportTransportBillQuery/index'], resolve), |
| 126 | hidden: false, | 126 | hidden: false, |
| 127 | - meta: { title: '出口运单查询', icon: 'api' }, | 127 | + meta: { title: '出口运单查询', icon: '' }, |
| 128 | }, | 128 | }, |
| 129 | { | 129 | { |
| 130 | path: '/exportListQuery', | 130 | path: '/exportListQuery', |
| 131 | component: (resolve) => require(['@/views/exportListQuery/index'], resolve), | 131 | component: (resolve) => require(['@/views/exportListQuery/index'], resolve), |
| 132 | name: '首页', | 132 | name: '首页', |
| 133 | - meta: { title: '出口清单查询', icon: 'dashboard' } | 133 | + meta: { title: '出口清单查询', icon: '' } |
| 134 | }, | 134 | }, |
| 135 | { | 135 | { |
| 136 | path: '/listBranchQuery', | 136 | path: '/listBranchQuery', |
| 137 | component: (resolve) => require(['@/views/listBranchQuery/index'], resolve), | 137 | component: (resolve) => require(['@/views/listBranchQuery/index'], resolve), |
| 138 | name: '首页', | 138 | name: '首页', |
| 139 | hidden: false, | 139 | hidden: false, |
| 140 | - meta: { title: '清单总分单查询', icon: 'dashboard' } | 140 | + meta: { title: '清单总分单查询', icon: '' } |
| 141 | }, | 141 | }, |
| 142 | { | 142 | { |
| 143 | path: '/listBranchDetail', | 143 | path: '/listBranchDetail', |
| 144 | component: (resolve) => require(['@/views/listBranchDetail/index'], resolve), | 144 | component: (resolve) => require(['@/views/listBranchDetail/index'], resolve), |
| 145 | name: '首页', | 145 | name: '首页', |
| 146 | hidden: true, | 146 | hidden: true, |
| 147 | - meta: { title: '清单总分单详情', icon: 'dashboard' } | 147 | + meta: { title: '清单总分单详情', icon: '' } |
| 148 | }, | 148 | }, |
| 149 | { | 149 | { |
| 150 | path: '/logisticsExitDetail', | 150 | path: '/logisticsExitDetail', |
| 151 | component: (resolve) => require(['@/views/logisticsExitDetail/index'], resolve), | 151 | component: (resolve) => require(['@/views/logisticsExitDetail/index'], resolve), |
| 152 | name: '首页', | 152 | name: '首页', |
| 153 | hidden: true, | 153 | hidden: true, |
| 154 | - meta: { title: '物流离境单详情', icon: 'dashboard' } | 154 | + meta: { title: '物流离境单详情', icon: '' } |
| 155 | }, | 155 | }, |
| 156 | { | 156 | { |
| 157 | path: '/logisticsExitQuery', | 157 | path: '/logisticsExitQuery', |
| 158 | component: (resolve) => require(['@/views/logisticsExitQuery/index'], resolve), | 158 | component: (resolve) => require(['@/views/logisticsExitQuery/index'], resolve), |
| 159 | name: '首页', | 159 | name: '首页', |
| 160 | - meta: { title: '物流离境单查询', icon: 'dashboard' } | 160 | + meta: { title: '物流离境单查询', icon: '' } |
| 161 | }, | 161 | }, |
| 162 | { | 162 | { |
| 163 | path: 'index', | 163 | path: 'index', |
| 164 | component: (resolve) => require(['@/views/index'], resolve), | 164 | component: (resolve) => require(['@/views/index'], resolve), |
| 165 | name: '首页', | 165 | name: '首页', |
| 166 | - meta: { title: '出口撤销单查询', icon: 'dashboard' } | 166 | + meta: { title: '出口撤销单查询', icon: '' } |
| 167 | + } | ||
| 168 | + ] | ||
| 169 | + }, | ||
| 170 | + { | ||
| 171 | + path: '/', | ||
| 172 | + component: Layout, | ||
| 173 | + hidden: false, | ||
| 174 | + redirect: 'index', | ||
| 175 | + meta: { title: '汇总申报', icon: 'fedexSummary' }, | ||
| 176 | + children: [ | ||
| 177 | + { | ||
| 178 | + path: '/summary', | ||
| 179 | + component: (resolve) => require(['@/views/reportingData/index'], resolve), | ||
| 180 | + hidden: false, | ||
| 181 | + meta: { title: '汇总申报', icon: '' } | ||
| 182 | + }, | ||
| 183 | + { | ||
| 184 | + path: '/summaryDataSearch', | ||
| 185 | + component: (resolve) => require(['@/views/reportingData/index'], resolve), | ||
| 186 | + hidden: false, | ||
| 187 | + meta: { title: '汇总申请单查询', icon: '' } | ||
| 167 | } | 188 | } |
| 168 | ] | 189 | ] |
| 169 | }, | 190 | }, | ... | ... |
| ... | @@ -84,8 +84,8 @@ const user = { | ... | @@ -84,8 +84,8 @@ const user = { |
| 84 | reject(res) | 84 | reject(res) |
| 85 | } else { | 85 | } else { |
| 86 | if (!getToken()) { | 86 | if (!getToken()) { |
| 87 | - setToken(res.data.token) | 87 | + setToken(res.data) |
| 88 | - commit('SET_TOKEN', res.data.token) | 88 | + commit('SET_TOKEN', res.data) |
| 89 | resolve(res) | 89 | resolve(res) |
| 90 | } else { | 90 | } else { |
| 91 | resolve(res) | 91 | resolve(res) | ... | ... |
| ... | @@ -37,23 +37,23 @@ export function removeUserId() { | ... | @@ -37,23 +37,23 @@ export function removeUserId() { |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | export function setCookie(cookie) { | 39 | export function setCookie(cookie) { |
| 40 | - return localStorage.setItem('iClearLoginTIp', cookie) | 40 | + return localStorage.setItem('EcomLoginTIp', cookie) |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | export function getCookie() { | 43 | export function getCookie() { |
| 44 | - return localStorage.getItem('iClearLoginTIp') | 44 | + return localStorage.getItem('EcomLoginTIp') |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | export function setTime(date) { | 47 | export function setTime(date) { |
| 48 | - return localStorage.setItem('iClearLoginTime', date) | 48 | + return localStorage.setItem('EcomLoginTime', date) |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | export function getTime() { | 51 | export function getTime() { |
| 52 | - return localStorage.getItem('iClearLoginTime') | 52 | + return localStorage.getItem('EcomLoginTime') |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | export function removeTime() { | 55 | export function removeTime() { |
| 56 | - return localStorage.removeItem('iClearLoginTime') | 56 | + return localStorage.removeItem('EcomLoginTime') |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | export function setLoginType(type) { | 59 | export function setLoginType(type) { | ... | ... |
| ... | @@ -18,21 +18,11 @@ const mimeMap = { | ... | @@ -18,21 +18,11 @@ const mimeMap = { |
| 18 | 18 | ||
| 19 | const apiUrl = { | 19 | const apiUrl = { |
| 20 | //exl | 20 | //exl |
| 21 | - customDownloadXls: '/bus-employees/export/custom/setting',//自定义导出 | 21 | + declareDataModel: '/bus-customer/declareData/downloadTemplate', |
| 22 | - epoaDownload: '/bus-employees/port/op/download',//epoa文件下载 | ||
| 23 | - pbiListDownload: '/bus-employees/data/report/export/daily',//报表列表导出 | ||
| 24 | - pbiLogDownload: '/bus-employees/data/report/export/efficiency',//预审人员效绩统计 | ||
| 25 | - osprDownload: '/bus-employees/ospr/download',//opsr文件下载 | ||
| 26 | - portCDownload: '/bus-employees/port/op/decC/export',//C类申报导出 | ||
| 27 | - //other | ||
| 28 | - portDownloadZip: '/bus-employees/port/op/downLoadZip',//口岸异步下载 | ||
| 29 | - staffEntryDownloadZip: '/bus-employees/chm/qry/downLoadZip',//运单查询异步下载 | ||
| 30 | - entryUploadData: '/bus-customer/consignment/upload/export',//批量导入数据导出 | ||
| 31 | - entryUploadModel: '/bus-customer/upload/excel/template/downLoad',//批量上传模版导出 | ||
| 32 | - opsrDownloadZip: '/bus-employees/ospr/export',//opsr批量导出 | ||
| 33 | } | 22 | } |
| 34 | 23 | ||
| 35 | const baseUrl = process.env.VUE_APP_BASE_API | 24 | const baseUrl = process.env.VUE_APP_BASE_API |
| 25 | + | ||
| 36 | export function downLoadZip(urlStatus, str, filename, type, method, data) { | 26 | export function downLoadZip(urlStatus, str, filename, type, method, data) { |
| 37 | return new Promise((resolve, reject) => { | 27 | return new Promise((resolve, reject) => { |
| 38 | var url = '' | 28 | var url = '' |
| ... | @@ -41,6 +31,7 @@ export function downLoadZip(urlStatus, str, filename, type, method, data) { | ... | @@ -41,6 +31,7 @@ export function downLoadZip(urlStatus, str, filename, type, method, data) { |
| 41 | } else if (urlStatus == 'res') { | 31 | } else if (urlStatus == 'res') { |
| 42 | url = str | 32 | url = str |
| 43 | } | 33 | } |
| 34 | + console.log(url); | ||
| 44 | 35 | ||
| 45 | if (method == 'get' && data) { | 36 | if (method == 'get' && data) { |
| 46 | url = url + '?'; | 37 | url = url + '?'; | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | - <div> | 2 | + <div class="entrySreach"> |
| 3 | - <div class="entrySreach" ref="classCPortEntry"> | 3 | + <el-form |
| 4 | - <el-form | 4 | + class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder" |
| 5 | - class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder" | 5 | + ref="sreachForm" |
| 6 | - ref="sreachForm" | 6 | + :model="sreachFormData" |
| 7 | - :model="searchForm" | 7 | + label-position="top" |
| 8 | - label-position="top" | 8 | + size="small" |
| 9 | - size="small" | 9 | + > |
| 10 | - > | 10 | + <el-row class="row-border"> |
| 11 | - <el-row class="row-border"> | 11 | + <!-- 订单编号 --> |
| 12 | - <el-col :span="5"> | 12 | + <el-col :span="5"> |
| 13 | - <Formitem label="运单编号" prop="consignmentCode"> | 13 | + <Formitem label="订单编号" prop="orderNo"> |
| 14 | - <el-popover | 14 | + <el-popover |
| 15 | - placement="bottom" | 15 | + placement="bottom" |
| 16 | - width="320" | 16 | + width="320" |
| 17 | - trigger="manual" | 17 | + trigger="manual" |
| 18 | - popper-class="popoverconsignmentCode" | 18 | + popper-class="popoverorderNo" |
| 19 | - v-model="textareaVisible.formItemconsignmentCode" | 19 | + v-model="textareaVisible.formItemorderNo" |
| 20 | - > | 20 | + > |
| 21 | - <el-input | 21 | + <el-input |
| 22 | - name="consignmentCode-textarea" | 22 | + name="orderNo-textarea" |
| 23 | - type="textarea" | 23 | + type="textarea" |
| 24 | - :rows="5" | 24 | + :rows="5" |
| 25 | - id="popoverInputconsignmentCode" | 25 | + id="popoverInputorderNo" |
| 26 | - class="inputShadow textareaPopover" | 26 | + class="inputShadow textareaPopover" |
| 27 | - v-model="searchForm.consignmentCode" | 27 | + v-model="sreachFormData.orderNo" |
| 28 | - resize="none" | 28 | + resize="none" |
| 29 | - maxlength="13000" | 29 | + maxlength="13000" |
| 30 | - placeholder="" | ||
| 31 | - @blur="textareaBlur" | ||
| 32 | - @input="input" | ||
| 33 | - ></el-input> | ||
| 34 | - <el-input | ||
| 35 | - slot="reference" | ||
| 36 | - name="consignmentCode" | ||
| 37 | - type="textarea" | ||
| 38 | - :rows="1" | ||
| 39 | - class="inputShadow" | ||
| 40 | - id="inputInner--consignmentCode" | ||
| 41 | - v-model="searchForm.consignmentCode" | ||
| 42 | - resize="none" | ||
| 43 | - placeholder="" | ||
| 44 | - @focus="textareaFocus" | ||
| 45 | - @input="input" | ||
| 46 | - ></el-input> | ||
| 47 | - </el-popover> | ||
| 48 | - </Formitem> | ||
| 49 | - </el-col> | ||
| 50 | - <el-col :span="4"> | ||
| 51 | - <Formitem label="物流企业代码" prop="factoryCode"> | ||
| 52 | - <el-select | ||
| 53 | - type="text" | ||
| 54 | - id="inputInner--declaredPort" | ||
| 55 | - v-model="searchForm.declaredPort" | ||
| 56 | - clearable | ||
| 57 | placeholder="" | 30 | placeholder="" |
| 58 | - @change="portChange" | 31 | + @blur="textareaBlur" |
| 59 | - > | 32 | + @input="input" |
| 60 | - <el-option | 33 | + ></el-input> |
| 61 | - v-for="(item, index) in dictData.userport" | 34 | + <el-input |
| 62 | - :key="index" | 35 | + slot="reference" |
| 63 | - :label="item.name" | 36 | + name="orderNo" |
| 64 | - :value="item.name" | 37 | + type="textarea" |
| 65 | - ></el-option> | 38 | + :rows="1" |
| 66 | - </el-select> | 39 | + class="inputShadow" |
| 67 | - </Formitem> | 40 | + id="inputInner--orderNo" |
| 68 | - </el-col> | 41 | + v-model="sreachFormData.orderNo" |
| 69 | - | 42 | + resize="none" |
| 70 | - <el-col :span="4"> | ||
| 71 | - <Formitem label="回执状态" prop="receiptStatus"> | ||
| 72 | - <el-select | ||
| 73 | - type="text" | ||
| 74 | - id="inputInner--declaredPort" | ||
| 75 | - v-model="searchForm.declaredPort" | ||
| 76 | - clearable | ||
| 77 | placeholder="" | 43 | placeholder="" |
| 78 | - @change="portChange" | 44 | + @focus="textareaFocus" |
| 79 | - > | 45 | + @input="input" |
| 80 | - <el-option | 46 | + ></el-input> |
| 81 | - v-for="(item, index) in dictData.userport" | 47 | + </el-popover> |
| 82 | - :key="index" | 48 | + <el-badge |
| 83 | - :label="item.name" | 49 | + v-if=" |
| 84 | - :value="item.name" | 50 | + !textareaVisible.formItemorderNo && |
| 85 | - ></el-option> | 51 | + textareaLength({ |
| 86 | - </el-select> | 52 | + key: 'orderNo', |
| 87 | - </Formitem> | 53 | + value: sreachFormData.orderNo, |
| 88 | - </el-col> | 54 | + }) > 1 |
| 89 | - | 55 | + " |
| 90 | - <el-col :span="5"> | 56 | + type="info" |
| 91 | - <Formitem | 57 | + :value="`+${textareaLength({ |
| 92 | - label="创建时间" | 58 | + key: 'orderNo', |
| 93 | - prop="createTime" | 59 | + value: sreachFormData.orderNo, |
| 94 | - :activeType="true" | 60 | + })}`" |
| 61 | + class="item texttareaTip" | ||
| 62 | + /> | ||
| 63 | + </Formitem> | ||
| 64 | + </el-col> | ||
| 65 | + <!-- 电商企业代码 --> | ||
| 66 | + <el-col :span="5"> | ||
| 67 | + <Formitem label="电商企业代码" prop="ebccode"> | ||
| 68 | + <el-select | ||
| 69 | + type="text" | ||
| 70 | + id="inputInner--ebccode" | ||
| 71 | + v-model="sreachFormData.ebccode" | ||
| 72 | + clearable | ||
| 73 | + placeholder="" | ||
| 95 | > | 74 | > |
| 96 | - <el-date-picker | 75 | + <el-option |
| 97 | - class="inputInner--accsDataImportTime" | 76 | + v-for="(item, index) in dictData.ebccode" |
| 98 | - id="inputInner--accsDataImportTime" | 77 | + :key="index" |
| 99 | - v-model="searchForm.accsDataImportTime" | 78 | + :label="item.name" |
| 100 | - type="daterange" | 79 | + :value="item.code" |
| 101 | - format="yyyy-MM-dd" | 80 | + ></el-option> |
| 102 | - prefix-icon="none" | 81 | + </el-select> |
| 103 | - value-format="yyyyMMdd" | 82 | + </Formitem> |
| 104 | - range-separator="至" | 83 | + </el-col> |
| 105 | - start-placeholder="" | 84 | + <!-- 回执状态 --> |
| 106 | - clearable | 85 | + <el-col :span="5"> |
| 107 | - end-placeholder="" | 86 | + <Formitem label="回执状态" prop="returnStatus"> |
| 108 | - :picker-options="importTimePickerOptions" | 87 | + <el-select |
| 109 | - @blur="datePickerBlur" | 88 | + type="text" |
| 110 | - @change="accsDataImportTimeChange" | 89 | + id="inputInner--returnStatus" |
| 111 | - > | 90 | + v-model="sreachFormData.returnStatus" |
| 112 | - </el-date-picker> | 91 | + clearable |
| 113 | - </Formitem> | 92 | + placeholder="" |
| 114 | - </el-col> | 93 | + > |
| 115 | - | 94 | + <el-option |
| 116 | - <el-col :span="2"> | 95 | + v-for="(item, index) in dictData.returnStatus" |
| 117 | - <el-form-item class="textCenter"> | 96 | + :key="index" |
| 118 | - <el-button | 97 | + :label="item.name" |
| 119 | - class="entrySreachButton" | 98 | + :value="item.code" |
| 120 | - type="text" | 99 | + ></el-option> |
| 121 | - icon="el-icon-search" | 100 | + </el-select> |
| 122 | - :loading="loadings.searchLoading" | 101 | + </Formitem> |
| 123 | - @click="search(0)" | 102 | + </el-col> |
| 124 | - ></el-button> | 103 | + <!-- 创建时间 --> |
| 125 | - </el-form-item> | 104 | + <el-col :span="5"> |
| 126 | - </el-col> | 105 | + <Formitem label="创建时间" prop="createTime" :activeType="true"> |
| 127 | - | 106 | + <el-date-picker |
| 128 | - <el-col :span="4"> | 107 | + class="inputInner--createTime" |
| 129 | - <el-form-item class="textCenter"> | 108 | + id="inputInner--createTime" |
| 130 | - <el-button | 109 | + v-model="sreachFormData.createTime" |
| 131 | - icon="el-icon-refresh" | 110 | + type="daterange" |
| 132 | - size="small" | 111 | + format="yyyy-MM-dd" |
| 133 | - :loading="loadings.searchLoading" | 112 | + prefix-icon="none" |
| 134 | - @click="search(0)" | 113 | + value-format="yyyy-MM-dd" |
| 135 | - >重置 | 114 | + range-separator="至" |
| 136 | - </el-button> | 115 | + @chagne="dateChange" |
| 137 | - </el-form-item> | 116 | + /> |
| 138 | - </el-col> | 117 | + </Formitem> |
| 139 | - </el-row> | 118 | + </el-col> |
| 140 | - </el-form> | 119 | + <el-col :span="2"> |
| 141 | - </div> | 120 | + <el-form-item class="textCenter"> |
| 142 | - | 121 | + <el-button |
| 143 | - <div style="text-align: right; margin: 10px"> | 122 | + class="entrySreachButton" |
| 123 | + type="text" | ||
| 124 | + icon="el-icon-search" | ||
| 125 | + :loading="loadings.searchLoading" | ||
| 126 | + @click="search(0)" | ||
| 127 | + ></el-button> | ||
| 128 | + </el-form-item> | ||
| 129 | + </el-col> | ||
| 130 | + <el-col :span="2"> | ||
| 131 | + <el-form-item class="textCenter"> | ||
| 132 | + <el-button | ||
| 133 | + type="text" | ||
| 134 | + size="small" | ||
| 135 | + icon="el-icon-refresh" | ||
| 136 | + @click="clear" | ||
| 137 | + > | ||
| 138 | + 重置 | ||
| 139 | + </el-button> | ||
| 140 | + </el-form-item> | ||
| 141 | + </el-col> | ||
| 142 | + </el-row> | ||
| 143 | + </el-form> | ||
| 144 | + <div class="optionButton"> | ||
| 144 | <el-button | 145 | <el-button |
| 146 | + class="entrySaveButton" | ||
| 145 | size="small" | 147 | size="small" |
| 146 | - :loading="loadings.downloadLoading2" | 148 | + icon="el-icon-download" |
| 147 | - @click="downloadBpiData('log')" | 149 | + @click="downloadData" |
| 148 | > | 150 | > |
| 149 | - <svg-icon class="el-icon-user-solid" icon-class="fedexUpBlue"></svg-icon> | ||
| 150 | 导出 | 151 | 导出 |
| 151 | </el-button> | 152 | </el-button> |
| 152 | </div> | 153 | </div> |
| 153 | - | ||
| 154 | <Table | 154 | <Table |
| 155 | class="fedexDetialTable fedexSreachTable" | 155 | class="fedexDetialTable fedexSreachTable" |
| 156 | ref="entryTable" | 156 | ref="entryTable" |
| ... | @@ -160,175 +160,182 @@ | ... | @@ -160,175 +160,182 @@ |
| 160 | :border="true" | 160 | :border="true" |
| 161 | :pagination="true" | 161 | :pagination="true" |
| 162 | :order="false" | 162 | :order="false" |
| 163 | - :loading="loadings.sreachLoading" | 163 | + :loading="loadings.searchLoading" |
| 164 | :page="page.pageIndex" | 164 | :page="page.pageIndex" |
| 165 | :pageSizes="[20, 30, 50, 100]" | 165 | :pageSizes="[20, 30, 50, 100]" |
| 166 | - :totalCount="total" | 166 | + :totalCount="page.total" |
| 167 | @sizeChange="sizeChange" | 167 | @sizeChange="sizeChange" |
| 168 | @currentChange="currentChange" | 168 | @currentChange="currentChange" |
| 169 | - @rowClick="handleRowClick" | 169 | + :selection="false" |
| 170 | - :selection="true" | ||
| 171 | :selectFixed="false" | 170 | :selectFixed="false" |
| 172 | - @tableSelect="tableSelect" | ||
| 173 | - @tableSelectAll="tableSelectAll" | ||
| 174 | :rowSelectDataType="false" | 171 | :rowSelectDataType="false" |
| 175 | - :selected="selected" | ||
| 176 | > | 172 | > |
| 177 | - <template v-slot:waveName="scope"> | 173 | + <template v-slot:returnStatus="scope"> |
| 178 | - <span>{{ `${scope.row.waveName}(${scope.row.waveExt2})` }}</span> | 174 | + <span>{{ scope.row.returnStatus }}</span> |
| 175 | + </template> | ||
| 176 | + <template v-slot:orderNo="scope"> | ||
| 177 | + <el-button type="text">{{ scope.row.orderNo }}</el-button> | ||
| 179 | </template> | 178 | </template> |
| 180 | </Table> | 179 | </Table> |
| 181 | </div> | 180 | </div> |
| 182 | </template> | 181 | </template> |
| 183 | 182 | ||
| 184 | <script> | 183 | <script> |
| 185 | -import {getAllExportingBills} from "@/api/query/query"; | 184 | +import { getAllExportingBills } from "@/api/exportQuery.js"; |
| 186 | 185 | ||
| 187 | export default { | 186 | export default { |
| 188 | name: "index", | 187 | name: "index", |
| 189 | data() { | 188 | data() { |
| 190 | return { | 189 | return { |
| 191 | - searchForm: { | 190 | + sreachFormData: { |
| 192 | - declaredPort: "", | 191 | + orderNo: "", |
| 193 | - consStatus: "", | 192 | + ebccode: "", |
| 194 | - consignmentCode: "", | 193 | + returnStatus: "", |
| 195 | - accsDataImportTime: [], | 194 | + createTime: [], |
| 196 | - ownerName: "", | ||
| 197 | - consignmentHeadCode: "", | ||
| 198 | - isPushCustomsSys: "", | ||
| 199 | - waitOperStatus: "", | ||
| 200 | - declTime: [], | ||
| 201 | - }, | ||
| 202 | - selected: [], | ||
| 203 | - sizeChange(val) { | ||
| 204 | - this.page.pageSize = val; | ||
| 205 | - this.sreach(1); | ||
| 206 | - }, | ||
| 207 | - //分页 | ||
| 208 | - currentChange(val) { | ||
| 209 | - this.page.pageIndex = val.page; | ||
| 210 | - this.search(1); | ||
| 211 | - }, | ||
| 212 | - tableSelect(val) { | ||
| 213 | - this.selected = val.selection; | ||
| 214 | - }, | ||
| 215 | - tableSelectAll(val) { | ||
| 216 | - this.selected = val; | ||
| 217 | }, | 195 | }, |
| 218 | page: { | 196 | page: { |
| 219 | pageIndex: 1, | 197 | pageIndex: 1, |
| 220 | pageSize: 20, | 198 | pageSize: 20, |
| 199 | + total: 0, | ||
| 221 | }, | 200 | }, |
| 222 | tableData: [], | 201 | tableData: [], |
| 223 | - tableMaxheight: null, | ||
| 224 | - total: 0, | ||
| 225 | - dictData: { | ||
| 226 | - userport: [ | ||
| 227 | - {name: "Shanghai Port", code: "SH"}, | ||
| 228 | - {name: "Beijing Port", code: "BJ"}, | ||
| 229 | - {name: "Guangzhou Port", code: "GZ"}, | ||
| 230 | - {name: "Shenzhen Port", code: "SZ"}, | ||
| 231 | - {name: "Tianjin Port", code: "TJ"}, | ||
| 232 | - ], | ||
| 233 | - }, | ||
| 234 | - loadings: { | ||
| 235 | - searchLoading: false, | ||
| 236 | - }, | ||
| 237 | - textareaVisible: { | ||
| 238 | - formItemconsignmentCode: false, | ||
| 239 | - formItemconsignmentHeadCode: false, | ||
| 240 | - }, | ||
| 241 | headerData: [ | 202 | headerData: [ |
| 242 | { | 203 | { |
| 243 | name: "回执状态", | 204 | name: "回执状态", |
| 244 | value: "returnStatus", | 205 | value: "returnStatus", |
| 245 | - width: "150", | 206 | + width: "", |
| 246 | align: "left", | 207 | align: "left", |
| 208 | + slot: true, | ||
| 247 | }, | 209 | }, |
| 248 | { | 210 | { |
| 249 | name: "订单编号", | 211 | name: "订单编号", |
| 250 | value: "orderNo", | 212 | value: "orderNo", |
| 251 | - width: '150', | 213 | + width: "", |
| 252 | - align: 'left' | 214 | + align: "left", |
| 215 | + slot: true, | ||
| 253 | }, | 216 | }, |
| 254 | { | 217 | { |
| 255 | - name: '订单类型', | 218 | + name: "订单类型", |
| 256 | - value: 'orderType', | 219 | + value: "orderType", |
| 257 | - width: '150', | 220 | + width: "", |
| 258 | - align: 'left' | 221 | + align: "left", |
| 259 | }, | 222 | }, |
| 260 | { | 223 | { |
| 261 | - name: '电商企业代码', | 224 | + name: "电商企业代码", |
| 262 | - value: 'ebccode', | 225 | + value: "ebccode", |
| 263 | - width: '200', | 226 | + width: "", |
| 264 | - align: 'left' | 227 | + align: "left", |
| 265 | }, | 228 | }, |
| 266 | { | 229 | { |
| 267 | - name: '电商企业', | 230 | + name: "电商企业", |
| 268 | - value: 'ebcname', | 231 | + value: "ebcname", |
| 269 | - width: '200', | 232 | + width: "", |
| 270 | - align: 'left' | 233 | + align: "left", |
| 271 | }, | 234 | }, |
| 272 | { | 235 | { |
| 273 | - name: '电商平台名称', | 236 | + name: "电商平台名称", |
| 274 | - value: 'ebpname', | 237 | + value: "ebpname", |
| 275 | - width: '250', | 238 | + width: "", |
| 276 | - align: 'left' | 239 | + align: "left", |
| 277 | }, | 240 | }, |
| 278 | { | 241 | { |
| 279 | - name: '创建时间', | 242 | + name: "创建时间", |
| 280 | - value: 'createTime', | 243 | + value: "createTime", |
| 281 | - width: '150', | 244 | + width: "", |
| 282 | - align: 'left' | 245 | + align: "left", |
| 283 | }, | 246 | }, |
| 284 | { | 247 | { |
| 285 | - name: '申报企业', | 248 | + name: "申报企业", |
| 286 | - value: 'declaringEnterprise', | 249 | + value: "declaringEnterprise", |
| 287 | - width: '200', | 250 | + width: "", |
| 288 | - align: 'left' | 251 | + align: "left", |
| 289 | }, | 252 | }, |
| 290 | { | 253 | { |
| 291 | - name: '申报类型', | 254 | + name: "申报类型", |
| 292 | - value: 'declaringType', | 255 | + value: "declaringType", |
| 293 | - width: '100', | 256 | + width: "", |
| 294 | - align: 'left' | 257 | + align: "left", |
| 295 | - } | 258 | + }, |
| 296 | - ] | 259 | + ], |
| 297 | - } | 260 | + dictData: { |
| 261 | + ebccode: [], | ||
| 262 | + returnStatus: [], | ||
| 263 | + }, | ||
| 264 | + loadings: { | ||
| 265 | + searchLoading: false, | ||
| 266 | + }, | ||
| 267 | + textareaVisible: { | ||
| 268 | + formItemconsignmentCode: false, | ||
| 269 | + formItemconsignmentHeadCode: false, | ||
| 270 | + }, | ||
| 271 | + tableMaxheight: null, | ||
| 272 | + }; | ||
| 298 | }, | 273 | }, |
| 299 | created() { | 274 | created() { |
| 300 | - getAllExportingBills({ | 275 | + this.search(0); |
| 301 | - pageIndex: 1, | 276 | + }, |
| 302 | - pageSize: 20 | 277 | + mounted() { |
| 303 | - }).then((res) => { | 278 | + this.tableMaxheight = window.innerHeight - 300; |
| 304 | - console.log('res', res) | ||
| 305 | - this.tableData = res.data.value; | ||
| 306 | - this.total = res.data.totalItems; | ||
| 307 | - debugger; | ||
| 308 | - }) | ||
| 309 | }, | 279 | }, |
| 310 | methods: { | 280 | methods: { |
| 311 | - input() { | 281 | + //查询 |
| 312 | - this.$forceUpdate(); | 282 | + search(val) { |
| 283 | + this.loadings.searchLoading = true; | ||
| 284 | + if (val == 0) { | ||
| 285 | + this.page.pageIndex = 1; | ||
| 286 | + } | ||
| 287 | + let obj = this.sreachFormData; | ||
| 288 | + obj.pageIndex = this.page.pageIndex; | ||
| 289 | + obj.pageSize = this.page.pageSize; | ||
| 290 | + obj.createTimeStart = ""; | ||
| 291 | + obj.createTimeEnd = ""; | ||
| 292 | + if (obj.createTime.length > 0) { | ||
| 293 | + obj.createTimeStart = obj.createTime[0]; | ||
| 294 | + obj.createTimeEnd = obj.createTime[1]; | ||
| 295 | + } | ||
| 296 | + getAllExportingBills(obj) | ||
| 297 | + .then((res) => { | ||
| 298 | + if (res.code === "200") { | ||
| 299 | + this.tableData = res.data.value; | ||
| 300 | + this.page.total = res.data.totalItems; | ||
| 301 | + this.tableData.forEach((item, idx) => { | ||
| 302 | + item.index = idx; | ||
| 303 | + item.popoverLoading = false; | ||
| 304 | + item.returnStatusPopoverType = false; | ||
| 305 | + item.returnStatusPopoverData = false; | ||
| 306 | + }); | ||
| 307 | + } else { | ||
| 308 | + this.alertWarningMsg(res.message); | ||
| 309 | + } | ||
| 310 | + this.loadings.searchLoading = false; | ||
| 311 | + }) | ||
| 312 | + .catch((err) => { | ||
| 313 | + console.log(err); | ||
| 314 | + this.loadings.searchLoading = false; | ||
| 315 | + }); | ||
| 313 | }, | 316 | }, |
| 314 | - handleRowClick(row) { | 317 | + //重置 |
| 315 | - const declareId = row.declareId; | 318 | + clear() { |
| 316 | - this.$router.push({ | 319 | + this.sreachFormData = { |
| 317 | - path: '/exportBillDetail', | 320 | + orderNo: "", |
| 318 | - query: { | 321 | + ebccode: "", |
| 319 | - declareId | 322 | + returnStatus: "", |
| 320 | - } | 323 | + createTime: [], |
| 321 | - }); | 324 | + }; |
| 322 | }, | 325 | }, |
| 323 | - async search(val) { | 326 | + //导出 |
| 324 | - try { | 327 | + downloadData() {}, |
| 325 | - | 328 | + //文本域展示状态切换 |
| 326 | - } catch (error) { | 329 | + textareaFocus(val) { |
| 327 | - console.error("搜索出错:", error); | 330 | + this.textareaVisible["formItem" + val.target.name.split("-")[0]] = true; |
| 328 | - } finally { | 331 | + this.$nextTick(() => { |
| 329 | - // 无论成功还是失败,关闭加载状态 | 332 | + document |
| 330 | - this.loadings.sreachLoading = false; | 333 | + .querySelector("#popoverInput" + val.target.name.split("-")[0]) |
| 331 | - } | 334 | + .focus(); |
| 335 | + document.querySelector( | ||
| 336 | + "#inputInner--" + val.target.name.split("-")[0] | ||
| 337 | + ).style.display = "none"; | ||
| 338 | + }); | ||
| 332 | }, | 339 | }, |
| 333 | textareaBlur(val) { | 340 | textareaBlur(val) { |
| 334 | let inputInner = document.querySelector( | 341 | let inputInner = document.querySelector( |
| ... | @@ -349,7 +356,7 @@ export default { | ... | @@ -349,7 +356,7 @@ export default { |
| 349 | } | 356 | } |
| 350 | }); | 357 | }); |
| 351 | let arr = []; | 358 | let arr = []; |
| 352 | - this.searchForm[val.target.name.split("-")[0]] | 359 | + this.sreachFormData[val.target.name.split("-")[0]] |
| 353 | .replace(/[\n\,\;\;]/g, ",") | 360 | .replace(/[\n\,\;\;]/g, ",") |
| 354 | .replace(/[\t]/g, "") | 361 | .replace(/[\t]/g, "") |
| 355 | .split(",") | 362 | .split(",") |
| ... | @@ -358,31 +365,84 @@ export default { | ... | @@ -358,31 +365,84 @@ export default { |
| 358 | arr.push(str.trim()); | 365 | arr.push(str.trim()); |
| 359 | } | 366 | } |
| 360 | }); | 367 | }); |
| 361 | - this.searchForm[val.target.name.split("-")[0]] = arr.join("\n"); | 368 | + this.sreachFormData[val.target.name.split("-")[0]] = arr.join("\n"); |
| 362 | this.$forceUpdate(); | 369 | this.$forceUpdate(); |
| 363 | }, | 370 | }, |
| 364 | - //文本域展示状态切换 | 371 | + //文本域输入内容数量处理 |
| 365 | - textareaFocus(val) { | 372 | + textareaLength(val) { |
| 366 | - this.textareaVisible["formItem" + val.target.name.split("-")[0]] = true; | 373 | + if (val.value != "" && val.value != null) { |
| 367 | - this.$nextTick(() => { | 374 | + let arr = []; |
| 368 | - document | 375 | + val.value |
| 369 | - .querySelector("#popoverInput" + val.target.name.split("-")[0]) | 376 | + .trim() |
| 370 | - .focus(); | 377 | + .replace(/[\n\,\;\;]/g, ",") |
| 371 | - document.querySelector( | 378 | + .split(",") |
| 372 | - "#inputInner--" + val.target.name.split("-")[0] | 379 | + .forEach((item) => { |
| 373 | - ).style.display = "none"; | 380 | + if (item != "" && item != null) { |
| 374 | - }); | 381 | + arr.push(item); |
| 382 | + } | ||
| 383 | + }); | ||
| 384 | + return arr.length; | ||
| 385 | + } else { | ||
| 386 | + return 0; | ||
| 387 | + } | ||
| 375 | }, | 388 | }, |
| 376 | - } | 389 | + //分页 |
| 377 | -} | 390 | + currentChange(val) { |
| 391 | + this.page.pageNum = val.page; | ||
| 392 | + this.search(1); | ||
| 393 | + }, | ||
| 394 | + sizeChange(val) { | ||
| 395 | + this.page.pageSize = val; | ||
| 396 | + this.search(1); | ||
| 397 | + }, | ||
| 398 | + dateChange(val) {}, | ||
| 399 | + input() { | ||
| 400 | + this.$forceUpdate(); | ||
| 401 | + }, | ||
| 402 | + }, | ||
| 403 | +}; | ||
| 378 | </script> | 404 | </script> |
| 379 | 405 | ||
| 380 | <style scoped lang="scss"> | 406 | <style scoped lang="scss"> |
| 381 | @import "@/assets/styles/variables.scss"; | 407 | @import "@/assets/styles/variables.scss"; |
| 408 | +.entrySreach { | ||
| 409 | + height: 100%; | ||
| 410 | + background-color: $menuLightBg; | ||
| 411 | + | ||
| 412 | + .entrySreachButton { | ||
| 413 | + display: inline-block; | ||
| 414 | + font-size: 20px; | ||
| 415 | + color: $fedexButton !important; | ||
| 416 | + } | ||
| 417 | + | ||
| 418 | + .optionButton { | ||
| 419 | + padding: 10px; | ||
| 420 | + text-align: right; | ||
| 421 | + | ||
| 422 | + .el-button { | ||
| 423 | + color: $fedexButton; | ||
| 424 | + border-color: $fedexButton !important; | ||
| 425 | + | ||
| 426 | + svg { | ||
| 427 | + display: inline-block; | ||
| 428 | + margin-right: 5px; | ||
| 429 | + fill: $fedexButton; | ||
| 430 | + } | ||
| 431 | + } | ||
| 432 | + | ||
| 433 | + .entrySaveButton:hover, | ||
| 434 | + .entrySaveButton:focus { | ||
| 435 | + color: $menuLightBg !important; | ||
| 436 | + background-color: $fedexButton !important; | ||
| 437 | + } | ||
| 438 | + } | ||
| 439 | +} | ||
| 382 | 440 | ||
| 383 | -.entrySreachButton { | 441 | +.texttareaTip { |
| 384 | - display: inline-block; | 442 | + position: absolute; |
| 385 | - font-size: 20px; | 443 | + top: 52%; |
| 386 | - color: $fedexButton !important; | 444 | + right: 20px; |
| 445 | + transform: translate(0, -50%); | ||
| 446 | + z-index: 10; | ||
| 387 | } | 447 | } |
| 388 | </style> | 448 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | - <div> | 2 | + <div class="entrySreach"> |
| 3 | <el-form | 3 | <el-form |
| 4 | class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder" | 4 | class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder" |
| 5 | ref="sreachForm" | 5 | ref="sreachForm" |
| 6 | - :model="searchForm" | 6 | + :model="sreachFormData" |
| 7 | label-position="top" | 7 | label-position="top" |
| 8 | size="small" | 8 | size="small" |
| 9 | > | 9 | > |
| 10 | <el-row class="row-border"> | 10 | <el-row class="row-border"> |
| 11 | + <!-- 运单编号 --> | ||
| 11 | <el-col :span="5"> | 12 | <el-col :span="5"> |
| 12 | - <Formitem label="运单编号" prop="consignmentCode"> | 13 | + <Formitem label="运单编号" prop="logisticsNo"> |
| 13 | <el-popover | 14 | <el-popover |
| 14 | placement="bottom" | 15 | placement="bottom" |
| 15 | width="320" | 16 | width="320" |
| 16 | trigger="manual" | 17 | trigger="manual" |
| 17 | - popper-class="popoverconsignmentCode" | 18 | + popper-class="popoverlogisticsNo" |
| 18 | - v-model="textareaVisible.formItemconsignmentCode" | 19 | + v-model="textareaVisible.formItemlogisticsNo" |
| 19 | > | 20 | > |
| 20 | <el-input | 21 | <el-input |
| 21 | - name="consignmentCode-textarea" | 22 | + name="logisticsNo-textarea" |
| 22 | type="textarea" | 23 | type="textarea" |
| 23 | :rows="5" | 24 | :rows="5" |
| 24 | - id="popoverInputconsignmentCode" | 25 | + id="popoverInputlogisticsNo" |
| 25 | class="inputShadow textareaPopover" | 26 | class="inputShadow textareaPopover" |
| 26 | - v-model="searchForm.consignmentCode" | 27 | + v-model="sreachFormData.logisticsNo" |
| 27 | resize="none" | 28 | resize="none" |
| 28 | maxlength="13000" | 29 | maxlength="13000" |
| 29 | placeholder="" | 30 | placeholder="" |
| ... | @@ -32,79 +33,89 @@ | ... | @@ -32,79 +33,89 @@ |
| 32 | ></el-input> | 33 | ></el-input> |
| 33 | <el-input | 34 | <el-input |
| 34 | slot="reference" | 35 | slot="reference" |
| 35 | - name="consignmentCode" | 36 | + name="logisticsNo" |
| 36 | type="textarea" | 37 | type="textarea" |
| 37 | :rows="1" | 38 | :rows="1" |
| 38 | class="inputShadow" | 39 | class="inputShadow" |
| 39 | - id="inputInner--consignmentCode" | 40 | + id="inputInner--logisticsNo" |
| 40 | - v-model="searchForm.consignmentCode" | 41 | + v-model="sreachFormData.logisticsNo" |
| 41 | resize="none" | 42 | resize="none" |
| 42 | placeholder="" | 43 | placeholder="" |
| 43 | @focus="textareaFocus" | 44 | @focus="textareaFocus" |
| 44 | @input="input" | 45 | @input="input" |
| 45 | ></el-input> | 46 | ></el-input> |
| 46 | </el-popover> | 47 | </el-popover> |
| 48 | + <el-badge | ||
| 49 | + v-if=" | ||
| 50 | + !textareaVisible.formItemlogisticsNo && | ||
| 51 | + textareaLength({ | ||
| 52 | + key: 'logisticsNo', | ||
| 53 | + value: sreachFormData.logisticsNo, | ||
| 54 | + }) > 1 | ||
| 55 | + " | ||
| 56 | + type="info" | ||
| 57 | + :value="`+${textareaLength({ | ||
| 58 | + key: 'logisticsNo', | ||
| 59 | + value: sreachFormData.logisticsNo, | ||
| 60 | + })}`" | ||
| 61 | + class="item texttareaTip" | ||
| 62 | + /> | ||
| 47 | </Formitem> | 63 | </Formitem> |
| 48 | </el-col> | 64 | </el-col> |
| 49 | - <el-col :span="4"> | 65 | + <!-- 物流企业代码 --> |
| 50 | - <Formitem label="物流企业代码" prop="factoryCode"> | 66 | + <el-col :span="5"> |
| 67 | + <Formitem label="物流企业代码" prop="logisticsCode"> | ||
| 51 | <el-select | 68 | <el-select |
| 52 | type="text" | 69 | type="text" |
| 53 | - id="inputInner--declaredPort" | 70 | + id="inputInner--logisticsCode" |
| 54 | - v-model="searchForm.declaredPort" | 71 | + v-model="sreachFormData.logisticsCode" |
| 55 | clearable | 72 | clearable |
| 56 | placeholder="" | 73 | placeholder="" |
| 57 | - @change="portChange" | ||
| 58 | > | 74 | > |
| 59 | <el-option | 75 | <el-option |
| 60 | - v-for="(item, index) in dictData.userport" | 76 | + v-for="(item, index) in dictData.logisticsCode" |
| 61 | :key="index" | 77 | :key="index" |
| 62 | :label="item.name" | 78 | :label="item.name" |
| 63 | - :value="item.name" | 79 | + :value="item.code" |
| 64 | ></el-option> | 80 | ></el-option> |
| 65 | </el-select> | 81 | </el-select> |
| 66 | </Formitem> | 82 | </Formitem> |
| 67 | </el-col> | 83 | </el-col> |
| 84 | + <!-- 回执状态 --> | ||
| 68 | <el-col :span="5"> | 85 | <el-col :span="5"> |
| 69 | - <Formitem label="回执状态" prop="declaredPort"> | 86 | + <Formitem label="回执状态" prop="returnStatus"> |
| 70 | <el-select | 87 | <el-select |
| 71 | type="text" | 88 | type="text" |
| 72 | - id="inputInner--receiptStatus" | 89 | + id="inputInner--returnStatus" |
| 73 | - v-model="searchForm.receiptStatus" | 90 | + v-model="sreachFormData.returnStatus" |
| 74 | clearable | 91 | clearable |
| 75 | placeholder="" | 92 | placeholder="" |
| 76 | > | 93 | > |
| 77 | <el-option | 94 | <el-option |
| 78 | - v-for="(item, index) in dictData.userport" | 95 | + v-for="(item, index) in dictData.returnStatus" |
| 79 | :key="index" | 96 | :key="index" |
| 80 | :label="item.name" | 97 | :label="item.name" |
| 81 | - :value="item.name" | 98 | + :value="item.code" |
| 82 | ></el-option> | 99 | ></el-option> |
| 83 | </el-select> | 100 | </el-select> |
| 84 | </Formitem> | 101 | </Formitem> |
| 85 | </el-col> | 102 | </el-col> |
| 86 | - <el-col :span="4"> | 103 | + <!-- 创建时间 --> |
| 87 | - <Formitem label="创建时间" prop="receiptTime"> | 104 | + <el-col :span="5"> |
| 105 | + <Formitem label="创建时间" prop="createTime" :activeType="true"> | ||
| 88 | <el-date-picker | 106 | <el-date-picker |
| 89 | - class="inputInner--accsDataImportTime" | 107 | + class="inputInner--createTime" |
| 90 | - id="inputInner--accsDataImportTime" | 108 | + id="inputInner--createTime" |
| 91 | - v-model="searchForm.accsDataImportTime" | 109 | + v-model="sreachFormData.createTime" |
| 92 | type="daterange" | 110 | type="daterange" |
| 93 | format="yyyy-MM-dd" | 111 | format="yyyy-MM-dd" |
| 94 | prefix-icon="none" | 112 | prefix-icon="none" |
| 95 | - value-format="yyyyMMdd" | 113 | + value-format="yyyy-MM-dd" |
| 96 | range-separator="至" | 114 | range-separator="至" |
| 97 | - start-placeholder="" | 115 | + @chagne="dateChange" |
| 98 | - clearable | 116 | + /> |
| 99 | - end-placeholder="" | ||
| 100 | - :picker-options="importTimePickerOptions" | ||
| 101 | - @blur="datePickerBlur" | ||
| 102 | - @change="accsDataImportTimeChange" | ||
| 103 | - > | ||
| 104 | - </el-date-picker> | ||
| 105 | </Formitem> | 117 | </Formitem> |
| 106 | </el-col> | 118 | </el-col> |
| 107 | - | ||
| 108 | <el-col :span="2"> | 119 | <el-col :span="2"> |
| 109 | <el-form-item class="textCenter"> | 120 | <el-form-item class="textCenter"> |
| 110 | <el-button | 121 | <el-button |
| ... | @@ -116,32 +127,30 @@ | ... | @@ -116,32 +127,30 @@ |
| 116 | ></el-button> | 127 | ></el-button> |
| 117 | </el-form-item> | 128 | </el-form-item> |
| 118 | </el-col> | 129 | </el-col> |
| 119 | - | 130 | + <el-col :span="2"> |
| 120 | - <el-col :span="4"> | ||
| 121 | <el-form-item class="textCenter"> | 131 | <el-form-item class="textCenter"> |
| 122 | <el-button | 132 | <el-button |
| 123 | - icon="el-icon-refresh" | 133 | + type="text" |
| 124 | size="small" | 134 | size="small" |
| 125 | - :loading="loadings.searchLoading" | 135 | + icon="el-icon-refresh" |
| 126 | - @click="search(0)" | 136 | + @click="clear" |
| 127 | - >重置 | 137 | + > |
| 138 | + 重置 | ||
| 128 | </el-button> | 139 | </el-button> |
| 129 | </el-form-item> | 140 | </el-form-item> |
| 130 | </el-col> | 141 | </el-col> |
| 131 | </el-row> | 142 | </el-row> |
| 132 | </el-form> | 143 | </el-form> |
| 133 | - | 144 | + <div class="optionButton"> |
| 134 | - <div style="text-align: right; margin: 10px"> | ||
| 135 | <el-button | 145 | <el-button |
| 146 | + class="entrySaveButton" | ||
| 136 | size="small" | 147 | size="small" |
| 137 | - :loading="loadings.downloadLoading2" | 148 | + icon="el-icon-download" |
| 138 | - @click="downloadBpiData('log')" | 149 | + @click="downloadData" |
| 139 | > | 150 | > |
| 140 | - <svg-icon class="el-icon-user-solid" icon-class="fedexUpBlue"></svg-icon> | ||
| 141 | 导出 | 151 | 导出 |
| 142 | </el-button> | 152 | </el-button> |
| 143 | </div> | 153 | </div> |
| 144 | - | ||
| 145 | <Table | 154 | <Table |
| 146 | class="fedexDetialTable fedexSreachTable" | 155 | class="fedexDetialTable fedexSreachTable" |
| 147 | ref="entryTable" | 156 | ref="entryTable" |
| ... | @@ -151,176 +160,288 @@ | ... | @@ -151,176 +160,288 @@ |
| 151 | :border="true" | 160 | :border="true" |
| 152 | :pagination="true" | 161 | :pagination="true" |
| 153 | :order="false" | 162 | :order="false" |
| 154 | - :loading="loadings.sreachLoading" | 163 | + :loading="loadings.searchLoading" |
| 155 | :page="page.pageIndex" | 164 | :page="page.pageIndex" |
| 156 | :pageSizes="[20, 30, 50, 100]" | 165 | :pageSizes="[20, 30, 50, 100]" |
| 157 | - :totalCount="total" | 166 | + :totalCount="page.total" |
| 158 | @sizeChange="sizeChange" | 167 | @sizeChange="sizeChange" |
| 159 | @currentChange="currentChange" | 168 | @currentChange="currentChange" |
| 160 | - :selection="true" | 169 | + :selection="false" |
| 161 | :selectFixed="false" | 170 | :selectFixed="false" |
| 162 | - @rowClick="handleRowClick" | ||
| 163 | - @tableSelect="tableSelect" | ||
| 164 | - @tableSelectAll="tableSelectAll" | ||
| 165 | :rowSelectDataType="false" | 171 | :rowSelectDataType="false" |
| 166 | - :selected="selected" | ||
| 167 | > | 172 | > |
| 168 | - <template v-slot:waveName="scope"> | 173 | + <template v-slot:returnStatus="scope"> |
| 169 | - <span>{{ `${scope.row.waveName}(${scope.row.waveExt2})` }}</span> | 174 | + <span>{{ scope.row.returnStatus }}</span> |
| 175 | + </template> | ||
| 176 | + <template v-slot:logisticsNo="scope"> | ||
| 177 | + <el-button type="text">{{ scope.row.logisticsNo }}</el-button> | ||
| 170 | </template> | 178 | </template> |
| 171 | </Table> | 179 | </Table> |
| 172 | </div> | 180 | </div> |
| 173 | </template> | 181 | </template> |
| 174 | 182 | ||
| 175 | <script> | 183 | <script> |
| 176 | -import {getAllExportingBills, getAllTransportBills} from "@/api/query/query"; | 184 | +import { getAllExportingTransportBills } from "@/api/exportQuery.js"; |
| 177 | 185 | ||
| 178 | export default { | 186 | export default { |
| 179 | name: "index", | 187 | name: "index", |
| 180 | data() { | 188 | data() { |
| 181 | return { | 189 | return { |
| 182 | - searchForm: { | 190 | + sreachFormData: { |
| 183 | - declaredPort: "", | 191 | + logisticsNo: "", |
| 184 | - consStatus: "", | 192 | + logisticsCode: "", |
| 185 | - consignmentCode: "", | 193 | + returnStatus: "", |
| 186 | - accsDataImportTime: [], | 194 | + createTime: [], |
| 187 | - ownerName: "", | ||
| 188 | - consignmentHeadCode: "", | ||
| 189 | - isPushCustomsSys: "", | ||
| 190 | - waitOperStatus: "", | ||
| 191 | - declTime: [], | ||
| 192 | - }, | ||
| 193 | - loadings: { | ||
| 194 | - searchLoading: false, | ||
| 195 | }, | 195 | }, |
| 196 | page: { | 196 | page: { |
| 197 | pageIndex: 1, | 197 | pageIndex: 1, |
| 198 | pageSize: 20, | 198 | pageSize: 20, |
| 199 | - }, | 199 | + total: 0, |
| 200 | - textareaVisible: { | ||
| 201 | - formItemconsignmentCode: false, | ||
| 202 | - formItemconsignmentHeadCode: false, | ||
| 203 | - }, | ||
| 204 | - sizeChange(val) { | ||
| 205 | - this.page.pageSize = val; | ||
| 206 | - this.sreach(1); | ||
| 207 | - }, | ||
| 208 | - //分页 | ||
| 209 | - currentChange(val) { | ||
| 210 | - this.page.pageIndex = val.page; | ||
| 211 | - this.search(1); | ||
| 212 | }, | 200 | }, |
| 213 | tableData: [], | 201 | tableData: [], |
| 214 | - total: 0, | ||
| 215 | - tableMaxheight: null, | ||
| 216 | headerData: [ | 202 | headerData: [ |
| 217 | { | 203 | { |
| 218 | name: "回执状态", | 204 | name: "回执状态", |
| 219 | value: "returnStatus", | 205 | value: "returnStatus", |
| 220 | - width: "150", | 206 | + width: "", |
| 221 | align: "left", | 207 | align: "left", |
| 208 | + slot: true, | ||
| 222 | }, | 209 | }, |
| 223 | { | 210 | { |
| 224 | name: "运单编号", | 211 | name: "运单编号", |
| 225 | - value: "orderNo", | 212 | + value: "logisticsNo", |
| 226 | - width: '150', | 213 | + width: "", |
| 227 | - align: 'left' | 214 | + align: "left", |
| 215 | + slot: true, | ||
| 228 | }, | 216 | }, |
| 229 | { | 217 | { |
| 230 | - name: '物流企业代码', | 218 | + name: "物流企业代码", |
| 231 | - value: 'orderType', | 219 | + value: "logisticsCode", |
| 232 | - width: '150', | 220 | + width: "", |
| 233 | - align: 'left' | 221 | + align: "left", |
| 234 | }, | 222 | }, |
| 235 | { | 223 | { |
| 236 | - name: '物流企业名称', | 224 | + name: "物流企业名称", |
| 237 | - value: 'ebccode', | 225 | + value: "logisticsName", |
| 238 | - width: '200', | 226 | + width: "", |
| 239 | - align: 'left' | 227 | + align: "left", |
| 240 | }, | 228 | }, |
| 241 | { | 229 | { |
| 242 | - name: '主要货物信息', | 230 | + name: "主要货物信息", |
| 243 | - value: 'ebcname', | 231 | + value: "goodsInfo", |
| 244 | - width: '200', | 232 | + width: "", |
| 245 | - align: 'left' | 233 | + align: "left", |
| 246 | }, | 234 | }, |
| 247 | { | 235 | { |
| 248 | - name: '创建时间', | 236 | + name: "创建时间", |
| 249 | - value: 'createTime', | 237 | + value: "", |
| 250 | - width: '150', | 238 | + width: "", |
| 251 | - align: 'left' | 239 | + align: "left", |
| 252 | }, | 240 | }, |
| 253 | { | 241 | { |
| 254 | - name: '申报企业', | 242 | + name: "申报企业", |
| 255 | - value: 'declaringEnterprise', | 243 | + value: "", |
| 256 | - width: '200', | 244 | + width: "", |
| 257 | - align: 'left' | 245 | + align: "left", |
| 258 | }, | 246 | }, |
| 259 | { | 247 | { |
| 260 | - name: '申报类型', | 248 | + name: "申报类型", |
| 261 | - value: 'declaringType', | 249 | + value: "", |
| 262 | - width: '100', | 250 | + width: "", |
| 263 | - align: 'left' | 251 | + align: "left", |
| 264 | - } | 252 | + }, |
| 265 | ], | 253 | ], |
| 266 | dictData: { | 254 | dictData: { |
| 267 | - userport: [ | 255 | + ebccode: [], |
| 268 | - {name: "Shanghai Port", code: "SH"}, | 256 | + returnStatus: [], |
| 269 | - {name: "Beijing Port", code: "BJ"}, | ||
| 270 | - {name: "Guangzhou Port", code: "GZ"}, | ||
| 271 | - {name: "Shenzhen Port", code: "SZ"}, | ||
| 272 | - {name: "Tianjin Port", code: "TJ"}, | ||
| 273 | - ], | ||
| 274 | }, | 257 | }, |
| 275 | - } | 258 | + loadings: { |
| 259 | + searchLoading: false, | ||
| 260 | + }, | ||
| 261 | + textareaVisible: { | ||
| 262 | + formItemconsignmentCode: false, | ||
| 263 | + formItemconsignmentHeadCode: false, | ||
| 264 | + }, | ||
| 265 | + tableMaxheight: null, | ||
| 266 | + }; | ||
| 276 | }, | 267 | }, |
| 277 | created() { | 268 | created() { |
| 278 | - getAllTransportBills({ | 269 | + this.search(0); |
| 279 | - pageIndex: 1, | 270 | + }, |
| 280 | - pageSize: 20 | 271 | + mounted() { |
| 281 | - }).then((res) => { | 272 | + this.tableMaxheight = window.innerHeight - 300; |
| 282 | - console.log('res', res) | ||
| 283 | - this.tableData = res.data.value; | ||
| 284 | - this.total = res.data.totalItems; | ||
| 285 | - debugger; | ||
| 286 | - }) | ||
| 287 | }, | 273 | }, |
| 288 | methods: { | 274 | methods: { |
| 289 | - tableSelect(val) { | 275 | + //查询 |
| 290 | - this.selected = val.selection; | 276 | + search(val) { |
| 277 | + this.loadings.searchLoading = true; | ||
| 278 | + if (val == 0) { | ||
| 279 | + this.page.pageIndex = 1; | ||
| 280 | + } | ||
| 281 | + let obj = this.sreachFormData; | ||
| 282 | + obj.pageIndex = this.page.pageIndex; | ||
| 283 | + obj.pageSize = this.page.pageSize; | ||
| 284 | + obj.createTimeStart = ""; | ||
| 285 | + obj.createTimeEnd = ""; | ||
| 286 | + if (obj.createTime.length > 0) { | ||
| 287 | + obj.createTimeStart = obj.createTime[0]; | ||
| 288 | + obj.createTimeEnd = obj.createTime[1]; | ||
| 289 | + } | ||
| 290 | + if (obj.logisticsNo != null && obj.logisticsNo != "") { | ||
| 291 | + obj.logisticsNo = obj.logisticsNo.split("\n"); | ||
| 292 | + } else { | ||
| 293 | + obj.logisticsNo = []; | ||
| 294 | + } | ||
| 295 | + getAllExportingTransportBills(obj) | ||
| 296 | + .then((res) => { | ||
| 297 | + if (res.code === "200") { | ||
| 298 | + this.tableData = res.data.value; | ||
| 299 | + this.page.total = res.data.totalItems; | ||
| 300 | + this.tableData.forEach((item, idx) => { | ||
| 301 | + item.index = idx; | ||
| 302 | + item.popoverLoading = false; | ||
| 303 | + item.returnStatusPopoverType = false; | ||
| 304 | + item.returnStatusPopoverData = false; | ||
| 305 | + }); | ||
| 306 | + } else { | ||
| 307 | + this.alertWarningMsg(res.message); | ||
| 308 | + } | ||
| 309 | + this.loadings.searchLoading = false; | ||
| 310 | + }) | ||
| 311 | + .catch((err) => { | ||
| 312 | + console.log(err); | ||
| 313 | + this.loadings.searchLoading = false; | ||
| 314 | + }); | ||
| 315 | + }, | ||
| 316 | + //重置 | ||
| 317 | + clear() { | ||
| 318 | + this.sreachFormData = { | ||
| 319 | + orderNo: "", | ||
| 320 | + ebccode: "", | ||
| 321 | + returnStatus: "", | ||
| 322 | + createTime: [], | ||
| 323 | + }; | ||
| 291 | }, | 324 | }, |
| 292 | - tableSelectAll(val) { | 325 | + //导出 |
| 293 | - this.selected = val; | 326 | + downloadData() {}, |
| 327 | + //文本域展示状态切换 | ||
| 328 | + textareaFocus(val) { | ||
| 329 | + this.textareaVisible["formItem" + val.target.name.split("-")[0]] = true; | ||
| 330 | + this.$nextTick(() => { | ||
| 331 | + document | ||
| 332 | + .querySelector("#popoverInput" + val.target.name.split("-")[0]) | ||
| 333 | + .focus(); | ||
| 334 | + document.querySelector( | ||
| 335 | + "#inputInner--" + val.target.name.split("-")[0] | ||
| 336 | + ).style.display = "none"; | ||
| 337 | + }); | ||
| 294 | }, | 338 | }, |
| 295 | - handleRowClick(row) { | 339 | + textareaBlur(val) { |
| 296 | - const declareId = row.declareId; | 340 | + let inputInner = document.querySelector( |
| 297 | - this.$router.push({ | 341 | + "#inputInner--" + val.target.name.split("-")[0] |
| 298 | - path: '/exportTransportDetail', | 342 | + ); |
| 299 | - query: { | 343 | + this.textareaVisible["formItem" + val.target.name.split("-")[0]] = false; |
| 300 | - declareId | 344 | + inputInner.style.display = "block"; |
| 345 | + this.$nextTick(() => { | ||
| 346 | + inputInner.blur(); | ||
| 347 | + if ( | ||
| 348 | + inputInner.value != undefined && | ||
| 349 | + inputInner.value != "" && | ||
| 350 | + inputInner.value != null | ||
| 351 | + ) { | ||
| 352 | + inputInner.classList.add("inputFocus"); | ||
| 353 | + } else { | ||
| 354 | + inputInner.classList.remove("inputFocus"); | ||
| 301 | } | 355 | } |
| 302 | }); | 356 | }); |
| 357 | + let arr = []; | ||
| 358 | + this.sreachFormData[val.target.name.split("-")[0]] | ||
| 359 | + .replace(/[\n\,\;\;]/g, ",") | ||
| 360 | + .replace(/[\t]/g, "") | ||
| 361 | + .split(",") | ||
| 362 | + .forEach((str, index) => { | ||
| 363 | + if (str != null && str != "" && index <= 1000) { | ||
| 364 | + arr.push(str.trim()); | ||
| 365 | + } | ||
| 366 | + }); | ||
| 367 | + this.sreachFormData[val.target.name.split("-")[0]] = arr.join("\n"); | ||
| 368 | + this.$forceUpdate(); | ||
| 303 | }, | 369 | }, |
| 304 | - async search(val) { | 370 | + //文本域输入内容数量处理 |
| 305 | - try { | 371 | + textareaLength(val) { |
| 306 | - | 372 | + if (val.value != "" && val.value != null) { |
| 307 | - } catch (error) { | 373 | + let arr = []; |
| 308 | - console.error("搜索出错:", error); | 374 | + val.value |
| 309 | - } finally { | 375 | + .trim() |
| 310 | - // 无论成功还是失败,关闭加载状态 | 376 | + .replace(/[\n\,\;\;]/g, ",") |
| 311 | - this.loadings.sreachLoading = false; | 377 | + .split(",") |
| 378 | + .forEach((item) => { | ||
| 379 | + if (item != "" && item != null) { | ||
| 380 | + arr.push(item); | ||
| 381 | + } | ||
| 382 | + }); | ||
| 383 | + return arr.length; | ||
| 384 | + } else { | ||
| 385 | + return 0; | ||
| 312 | } | 386 | } |
| 313 | }, | 387 | }, |
| 314 | - } | 388 | + //分页 |
| 315 | -} | 389 | + currentChange(val) { |
| 390 | + this.page.pageNum = val.page; | ||
| 391 | + this.search(1); | ||
| 392 | + }, | ||
| 393 | + sizeChange(val) { | ||
| 394 | + this.page.pageSize = val; | ||
| 395 | + this.search(1); | ||
| 396 | + }, | ||
| 397 | + dateChange(val) {}, | ||
| 398 | + input() { | ||
| 399 | + this.$forceUpdate(); | ||
| 400 | + }, | ||
| 401 | + }, | ||
| 402 | +}; | ||
| 316 | </script> | 403 | </script> |
| 317 | 404 | ||
| 318 | <style scoped lang="scss"> | 405 | <style scoped lang="scss"> |
| 319 | @import "@/assets/styles/variables.scss"; | 406 | @import "@/assets/styles/variables.scss"; |
| 407 | +.entrySreach { | ||
| 408 | + height: 100%; | ||
| 409 | + background-color: $menuLightBg; | ||
| 410 | + | ||
| 411 | + .entrySreachButton { | ||
| 412 | + display: inline-block; | ||
| 413 | + font-size: 20px; | ||
| 414 | + color: $fedexButton !important; | ||
| 415 | + } | ||
| 416 | + | ||
| 417 | + .optionButton { | ||
| 418 | + padding: 10px; | ||
| 419 | + text-align: right; | ||
| 420 | + | ||
| 421 | + .el-button { | ||
| 422 | + color: $fedexButton; | ||
| 423 | + border-color: $fedexButton !important; | ||
| 424 | + | ||
| 425 | + svg { | ||
| 426 | + display: inline-block; | ||
| 427 | + margin-right: 5px; | ||
| 428 | + fill: $fedexButton; | ||
| 429 | + } | ||
| 430 | + } | ||
| 431 | + | ||
| 432 | + .entrySaveButton:hover, | ||
| 433 | + .entrySaveButton:focus { | ||
| 434 | + color: $menuLightBg !important; | ||
| 435 | + background-color: $fedexButton !important; | ||
| 436 | + } | ||
| 437 | + } | ||
| 438 | +} | ||
| 320 | 439 | ||
| 321 | -.entrySreachButton { | 440 | +.texttareaTip { |
| 322 | - display: inline-block; | 441 | + position: absolute; |
| 323 | - font-size: 20px; | 442 | + top: 52%; |
| 324 | - color: $fedexButton !important; | 443 | + right: 20px; |
| 444 | + transform: translate(0, -50%); | ||
| 445 | + z-index: 10; | ||
| 325 | } | 446 | } |
| 326 | </style> | 447 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div style="width: 100%; height: 100%; position: relative" v-if="imgShow"> | 2 | <div style="width: 100%; height: 100%; position: relative" v-if="imgShow"> |
| 3 | - <el-image | ||
| 4 | - :src="url" | ||
| 5 | - fit="fill" | ||
| 6 | - style="display: block; width: 100%; height: 100%; opacity: 0.9" | ||
| 7 | - lazy | ||
| 8 | - ></el-image> | ||
| 9 | <div class="model"></div> | 3 | <div class="model"></div> |
| 10 | </div> | 4 | </div> |
| 11 | </template> | 5 | </template> |
| 12 | <script> | 6 | <script> |
| 13 | -import indexBackground from "@/assets/images/indexBackground.jpg"; | ||
| 14 | -import { getLoginType } from "@/utils/auth"; | ||
| 15 | export default { | 7 | export default { |
| 16 | props: {}, | 8 | props: {}, |
| 17 | data() { | 9 | data() { |
| ... | @@ -22,36 +14,10 @@ export default { | ... | @@ -22,36 +14,10 @@ export default { |
| 22 | }; | 14 | }; |
| 23 | }, | 15 | }, |
| 24 | created() { | 16 | created() { |
| 25 | - getLoginType() ? (this.fcl = true) : (this.fcl = false); | 17 | + |
| 26 | - this.checkImgType(); | ||
| 27 | }, | 18 | }, |
| 28 | methods: { | 19 | methods: { |
| 29 | - checkImgType() { | 20 | + |
| 30 | - let interval = setInterval(() => { | ||
| 31 | - if ( | ||
| 32 | - this.$store.getters.userData.organization && | ||
| 33 | - this.$store.getters.userData.organization.code == "customer" | ||
| 34 | - // ||getToken().split(".")[0] == "2" | ||
| 35 | - ) { | ||
| 36 | - clearInterval(interval); | ||
| 37 | - if (this.fcl) { | ||
| 38 | - } else { | ||
| 39 | - this.imgShow = false; | ||
| 40 | - this.url = ""; | ||
| 41 | - this.$router.push({ | ||
| 42 | - path: "/newui_noentrySreach_parent/newui_noentrySreach_leaf", | ||
| 43 | - }); | ||
| 44 | - } | ||
| 45 | - } else if ( | ||
| 46 | - this.$store.getters.userData.organization && | ||
| 47 | - this.$store.getters.userData.organization.code != "customer" | ||
| 48 | - ) { | ||
| 49 | - clearInterval(interval); | ||
| 50 | - this.url = indexBackground; | ||
| 51 | - this.imgShow = true; | ||
| 52 | - } | ||
| 53 | - }, 500); | ||
| 54 | - }, | ||
| 55 | }, | 21 | }, |
| 56 | }; | 22 | }; |
| 57 | </script> | 23 | </script> | ... | ... |
| ... | @@ -143,7 +143,7 @@ | ... | @@ -143,7 +143,7 @@ |
| 143 | size="small" | 143 | size="small" |
| 144 | :loading="loadings.searchLoading" | 144 | :loading="loadings.searchLoading" |
| 145 | @click="search(0)" | 145 | @click="search(0)" |
| 146 | - >重置 | 146 | + >重置 |
| 147 | </el-button> | 147 | </el-button> |
| 148 | </el-form-item> | 148 | </el-form-item> |
| 149 | </el-col> | 149 | </el-col> |
| ... | @@ -156,7 +156,10 @@ | ... | @@ -156,7 +156,10 @@ |
| 156 | :loading="loadings.downloadLoading2" | 156 | :loading="loadings.downloadLoading2" |
| 157 | @click="downloadBpiData('log')" | 157 | @click="downloadBpiData('log')" |
| 158 | > | 158 | > |
| 159 | - <svg-icon class="el-icon-user-solid" icon-class="fedexUpBlue"></svg-icon> | 159 | + <svg-icon |
| 160 | + class="el-icon-user-solid" | ||
| 161 | + icon-class="fedexUpBlue" | ||
| 162 | + ></svg-icon> | ||
| 160 | 导出 | 163 | 导出 |
| 161 | </el-button> | 164 | </el-button> |
| 162 | </div> | 165 | </div> |
| ... | @@ -192,8 +195,6 @@ | ... | @@ -192,8 +195,6 @@ |
| 192 | </template> | 195 | </template> |
| 193 | 196 | ||
| 194 | <script> | 197 | <script> |
| 195 | -import {getAllExportingBills, getAllTransportBills} from "@/api/query/query"; | ||
| 196 | - | ||
| 197 | export default { | 198 | export default { |
| 198 | name: "index", | 199 | name: "index", |
| 199 | data() { | 200 | data() { |
| ... | @@ -242,86 +243,76 @@ export default { | ... | @@ -242,86 +243,76 @@ export default { |
| 242 | { | 243 | { |
| 243 | name: "提运单号", | 244 | name: "提运单号", |
| 244 | value: "orderNo", | 245 | value: "orderNo", |
| 245 | - width: '150', | 246 | + width: "150", |
| 246 | - align: 'left' | 247 | + align: "left", |
| 247 | }, | 248 | }, |
| 248 | { | 249 | { |
| 249 | - name: '运单编号', | 250 | + name: "运单编号", |
| 250 | - value: 'orderType', | 251 | + value: "orderType", |
| 251 | - width: '150', | 252 | + width: "150", |
| 252 | - align: 'left' | 253 | + align: "left", |
| 253 | }, | 254 | }, |
| 254 | { | 255 | { |
| 255 | - name: '物流企业名称', | 256 | + name: "物流企业名称", |
| 256 | - value: 'ebccode', | 257 | + value: "ebccode", |
| 257 | - width: '200', | 258 | + width: "200", |
| 258 | - align: 'left' | 259 | + align: "left", |
| 259 | }, | 260 | }, |
| 260 | { | 261 | { |
| 261 | - name: '运输方式', | 262 | + name: "运输方式", |
| 262 | - value: 'ebcname', | 263 | + value: "ebcname", |
| 263 | - width: '200', | 264 | + width: "200", |
| 264 | - align: 'left' | 265 | + align: "left", |
| 265 | }, | 266 | }, |
| 266 | { | 267 | { |
| 267 | - name: '运输工具名称', | 268 | + name: "运输工具名称", |
| 268 | - value: 'createTime', | 269 | + value: "createTime", |
| 269 | - width: '150', | 270 | + width: "150", |
| 270 | - align: 'left' | 271 | + align: "left", |
| 271 | }, | 272 | }, |
| 272 | { | 273 | { |
| 273 | - name: '航班航次号', | 274 | + name: "航班航次号", |
| 274 | - value: 'declaringEnterprise', | 275 | + value: "declaringEnterprise", |
| 275 | - width: '200', | 276 | + width: "200", |
| 276 | - align: 'left' | 277 | + align: "left", |
| 277 | }, | 278 | }, |
| 278 | { | 279 | { |
| 279 | - name: '离境时间', | 280 | + name: "离境时间", |
| 280 | - value: 'declaringEnterprise', | 281 | + value: "declaringEnterprise", |
| 281 | - width: '200', | 282 | + width: "200", |
| 282 | - align: 'left' | 283 | + align: "left", |
| 283 | }, | 284 | }, |
| 284 | { | 285 | { |
| 285 | - name: '报送类型', | 286 | + name: "报送类型", |
| 286 | - value: 'declaringEnterprise', | 287 | + value: "declaringEnterprise", |
| 287 | - width: '200', | 288 | + width: "200", |
| 288 | - align: 'left' | 289 | + align: "left", |
| 289 | }, | 290 | }, |
| 290 | { | 291 | { |
| 291 | - name: '业务状态', | 292 | + name: "业务状态", |
| 292 | - value: 'declaringType', | 293 | + value: "declaringType", |
| 293 | - width: '100', | 294 | + width: "100", |
| 294 | - align: 'left' | 295 | + align: "left", |
| 295 | }, | 296 | }, |
| 296 | { | 297 | { |
| 297 | - name: '申报日期', | 298 | + name: "申报日期", |
| 298 | - value: 'declaringType', | 299 | + value: "declaringType", |
| 299 | - width: '100', | 300 | + width: "100", |
| 300 | - align: 'left' | 301 | + align: "left", |
| 301 | - } | 302 | + }, |
| 302 | ], | 303 | ], |
| 303 | dictData: { | 304 | dictData: { |
| 304 | userport: [ | 305 | userport: [ |
| 305 | - {name: "Shanghai Port", code: "SH"}, | 306 | + { name: "Shanghai Port", code: "SH" }, |
| 306 | - {name: "Beijing Port", code: "BJ"}, | 307 | + { name: "Beijing Port", code: "BJ" }, |
| 307 | - {name: "Guangzhou Port", code: "GZ"}, | 308 | + { name: "Guangzhou Port", code: "GZ" }, |
| 308 | - {name: "Shenzhen Port", code: "SZ"}, | 309 | + { name: "Shenzhen Port", code: "SZ" }, |
| 309 | - {name: "Tianjin Port", code: "TJ"}, | 310 | + { name: "Tianjin Port", code: "TJ" }, |
| 310 | ], | 311 | ], |
| 311 | }, | 312 | }, |
| 312 | - } | 313 | + }; |
| 313 | - }, | ||
| 314 | - created() { | ||
| 315 | - getAllTransportBills({ | ||
| 316 | - pageIndex: 1, | ||
| 317 | - pageSize: 20 | ||
| 318 | - }).then((res) => { | ||
| 319 | - console.log('res', res) | ||
| 320 | - this.tableData = res.data.value; | ||
| 321 | - this.total = res.data.totalItems; | ||
| 322 | - debugger; | ||
| 323 | - }) | ||
| 324 | }, | 314 | }, |
| 315 | + created() {}, | ||
| 325 | methods: { | 316 | methods: { |
| 326 | tableSelect(val) { | 317 | tableSelect(val) { |
| 327 | this.selected = val.selection; | 318 | this.selected = val.selection; |
| ... | @@ -332,15 +323,14 @@ export default { | ... | @@ -332,15 +323,14 @@ export default { |
| 332 | handleRowClick(row) { | 323 | handleRowClick(row) { |
| 333 | const declareId = row.declareId; | 324 | const declareId = row.declareId; |
| 334 | this.$router.push({ | 325 | this.$router.push({ |
| 335 | - path: '/logisticsExitDetail', | 326 | + path: "/logisticsExitDetail", |
| 336 | query: { | 327 | query: { |
| 337 | - declareId | 328 | + declareId, |
| 338 | - } | 329 | + }, |
| 339 | }); | 330 | }); |
| 340 | }, | 331 | }, |
| 341 | async search(val) { | 332 | async search(val) { |
| 342 | try { | 333 | try { |
| 343 | - | ||
| 344 | } catch (error) { | 334 | } catch (error) { |
| 345 | console.error("搜索出错:", error); | 335 | console.error("搜索出错:", error); |
| 346 | } finally { | 336 | } finally { |
| ... | @@ -348,8 +338,8 @@ export default { | ... | @@ -348,8 +338,8 @@ export default { |
| 348 | this.loadings.sreachLoading = false; | 338 | this.loadings.sreachLoading = false; |
| 349 | } | 339 | } |
| 350 | }, | 340 | }, |
| 351 | - } | 341 | + }, |
| 352 | -} | 342 | +}; |
| 353 | </script> | 343 | </script> |
| 354 | 344 | ||
| 355 | <style scoped lang="scss"> | 345 | <style scoped lang="scss"> | ... | ... |
src/views/reportingData/dialog.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <el-dialog | ||
| 3 | + class="entryDialog classCUploadDialog" | ||
| 4 | + title="申报数据导入" | ||
| 5 | + :visible.sync="outerVisible" | ||
| 6 | + :show-close="false" | ||
| 7 | + width="35%" | ||
| 8 | + :close-on-click-modal="false" | ||
| 9 | + v-loading="loadings.dialogLoading" | ||
| 10 | + :element-loading-text="loadingText" | ||
| 11 | + @close="close" | ||
| 12 | + > | ||
| 13 | + <div class="modelItem"> | ||
| 14 | + <div class="modelItem-title"> | ||
| 15 | + <div>数据导入</div> | ||
| 16 | + <div> | ||
| 17 | + <el-button | ||
| 18 | + type="text" | ||
| 19 | + icon="el-icon-download" | ||
| 20 | + :loadings="$parent.loadings.dwonloadModelLoading" | ||
| 21 | + @click="dwonloadModelFile" | ||
| 22 | + >导入模板下载</el-button | ||
| 23 | + > | ||
| 24 | + </div> | ||
| 25 | + </div> | ||
| 26 | + <div class="uploadItem"> | ||
| 27 | + <div class="uploadbox"> | ||
| 28 | + <el-button | ||
| 29 | + size="mini" | ||
| 30 | + type="text" | ||
| 31 | + v-loading="loadings.uploadLoading" | ||
| 32 | + @click="uploadFile" | ||
| 33 | + >上传文件 | ||
| 34 | + </el-button> | ||
| 35 | + <el-upload | ||
| 36 | + class="upload-demo" | ||
| 37 | + ref="uploadFile" | ||
| 38 | + action="/manager-server/attachment/picImg" | ||
| 39 | + :http-request="fileUpload" | ||
| 40 | + :auto-upload="true" | ||
| 41 | + :show-file-list="false" | ||
| 42 | + :data="{}" | ||
| 43 | + accept=".xlsx" | ||
| 44 | + :before-upload="beforeUpload" | ||
| 45 | + :on-remove="handleRemove" | ||
| 46 | + :on-success="handleSuccess" | ||
| 47 | + :on-change="fileChange" | ||
| 48 | + :file-list="fileList" | ||
| 49 | + @clearFiles="clearFile" | ||
| 50 | + > | ||
| 51 | + </el-upload> | ||
| 52 | + </div> | ||
| 53 | + <div class="fileList" v-if="formData.file != null"> | ||
| 54 | + <div class="fileList-item"> | ||
| 55 | + <div class="uploadbox-fileName"> | ||
| 56 | + <svg-icon | ||
| 57 | + class="el-icon-user-solid" | ||
| 58 | + icon-class="exl" | ||
| 59 | + style="font-size: 18px; color: #de002e" | ||
| 60 | + /> | ||
| 61 | + <Tooltip | ||
| 62 | + :content="formData.file.name" | ||
| 63 | + :refName="formData.file.name" | ||
| 64 | + /> | ||
| 65 | + </div> | ||
| 66 | + <div class="uploadbox-option"> | ||
| 67 | + <el-popconfirm | ||
| 68 | + :title="$t('entry.upload.delTip')" | ||
| 69 | + @confirm="delTypeDFile" | ||
| 70 | + > | ||
| 71 | + <el-button slot="reference" type="text">{{ | ||
| 72 | + $t("entry.upload.del") | ||
| 73 | + }}</el-button> | ||
| 74 | + </el-popconfirm> | ||
| 75 | + </div> | ||
| 76 | + </div> | ||
| 77 | + </div> | ||
| 78 | + </div> | ||
| 79 | + </div> | ||
| 80 | + <div class="dialogOption entrySave"> | ||
| 81 | + <el-button | ||
| 82 | + class="entrySaveButton" | ||
| 83 | + :disabled="loadings.uploadLoading" | ||
| 84 | + @click="close" | ||
| 85 | + >关闭</el-button | ||
| 86 | + > | ||
| 87 | + </div> | ||
| 88 | + </el-dialog> | ||
| 89 | +</template> | ||
| 90 | + | ||
| 91 | +<script> | ||
| 92 | +import { uploadDeclareData } from "@/api/declareData-api.js"; | ||
| 93 | +export default { | ||
| 94 | + props: { | ||
| 95 | + outerVisible: { | ||
| 96 | + type: Boolean, | ||
| 97 | + default: false, | ||
| 98 | + }, | ||
| 99 | + }, | ||
| 100 | + data() { | ||
| 101 | + return { | ||
| 102 | + formData: { | ||
| 103 | + file: null, | ||
| 104 | + }, | ||
| 105 | + searchForm: {}, | ||
| 106 | + loadings: { | ||
| 107 | + dialogLoading: false, | ||
| 108 | + uploadLoading: false, | ||
| 109 | + sreachLoading: false, | ||
| 110 | + }, | ||
| 111 | + uploadType: false, | ||
| 112 | + fileList: [], | ||
| 113 | + loadingText: "数据导入中,请稍后!", | ||
| 114 | + }; | ||
| 115 | + }, | ||
| 116 | + watch: { | ||
| 117 | + outerVisible(val) { | ||
| 118 | + if (val) { | ||
| 119 | + this.uploadType = false; | ||
| 120 | + } | ||
| 121 | + }, | ||
| 122 | + }, | ||
| 123 | + methods: { | ||
| 124 | + dwonloadModelFile() { | ||
| 125 | + this.$emit("dwonloadModelFile"); | ||
| 126 | + }, | ||
| 127 | + //文件上传 | ||
| 128 | + uploadFile() { | ||
| 129 | + this.$refs.uploadFile.$refs["upload-inner"].handleClick(); | ||
| 130 | + }, | ||
| 131 | + //文件校验 | ||
| 132 | + beforeUpload(val) { | ||
| 133 | + if ( | ||
| 134 | + val.type != | ||
| 135 | + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | ||
| 136 | + ) { | ||
| 137 | + this.alertWarningMsg("请上传Excel文件!"); | ||
| 138 | + return false; | ||
| 139 | + } else { | ||
| 140 | + return true; | ||
| 141 | + } | ||
| 142 | + }, | ||
| 143 | + fileUpload(val) { | ||
| 144 | + const reader = new FileReader(); | ||
| 145 | + reader.readAsDataURL(val.file); | ||
| 146 | + reader.onload = (e) => { | ||
| 147 | + this.loadings.dialogLoading = true; | ||
| 148 | + let obj = { | ||
| 149 | + multipartFile: this.base64ConvertFile(e.target.result, val.file.name), | ||
| 150 | + }; | ||
| 151 | + | ||
| 152 | + uploadDeclareData(obj) | ||
| 153 | + .then((res) => { | ||
| 154 | + if (res.code === "200") { | ||
| 155 | + this.msgSuccess("上传成功!"); | ||
| 156 | + this.handleRemove(); | ||
| 157 | + this.close(); | ||
| 158 | + this.uploadType = true; | ||
| 159 | + } else { | ||
| 160 | + this.alertWarningMsg(res.message); | ||
| 161 | + this.loadings.dialogLoading = false; | ||
| 162 | + } | ||
| 163 | + }) | ||
| 164 | + .catch((err) => { | ||
| 165 | + console.log(err); | ||
| 166 | + this.loadings.dialogLoading = false; | ||
| 167 | + }); | ||
| 168 | + }; | ||
| 169 | + }, | ||
| 170 | + fileChange(val) {}, | ||
| 171 | + handleSuccess() {}, | ||
| 172 | + handleRemove() { | ||
| 173 | + this.fileList = []; | ||
| 174 | + }, | ||
| 175 | + clearFile() {}, | ||
| 176 | + close() { | ||
| 177 | + this.handleRemove(); | ||
| 178 | + this.$emit("close", this.uploadType); | ||
| 179 | + }, | ||
| 180 | + }, | ||
| 181 | +}; | ||
| 182 | +</script> | ||
| 183 | + | ||
| 184 | +<style lang="scss" scoped> | ||
| 185 | +@import "@/assets/styles/variables.scss"; | ||
| 186 | +.modelItem { | ||
| 187 | + width: 100%; | ||
| 188 | + .modelItem-title { | ||
| 189 | + display: flex; | ||
| 190 | + justify-content: space-between; | ||
| 191 | + margin-bottom: 5px; | ||
| 192 | + font-size: 14px; | ||
| 193 | + font-weight: 600; | ||
| 194 | + color: #333; | ||
| 195 | + } | ||
| 196 | +} | ||
| 197 | + | ||
| 198 | +.uploadItem { | ||
| 199 | + margin-bottom: 5px; | ||
| 200 | + | ||
| 201 | + .uploadbox { | ||
| 202 | + width: 100%; | ||
| 203 | + height: 40px; | ||
| 204 | + line-height: 20px; | ||
| 205 | + background-color: $formItemBackgroundColor; | ||
| 206 | + padding: 4px 8px; | ||
| 207 | + margin-top: 5px; | ||
| 208 | + display: flex; | ||
| 209 | + justify-content: space-between; | ||
| 210 | + | ||
| 211 | + .el-button { | ||
| 212 | + font-weight: 400 !important; | ||
| 213 | + } | ||
| 214 | + } | ||
| 215 | +} | ||
| 216 | + | ||
| 217 | +.fileList { | ||
| 218 | + width: 100%; | ||
| 219 | + | ||
| 220 | + .fileList-item { | ||
| 221 | + display: flex; | ||
| 222 | + justify-content: space-between; | ||
| 223 | + padding: 5px 15px 5px 5px; | ||
| 224 | + background-color: $formItemBackgroundColor; | ||
| 225 | + font-size: 14px; | ||
| 226 | + | ||
| 227 | + .uploadbox-fileName { | ||
| 228 | + display: flex; | ||
| 229 | + align-items: center; | ||
| 230 | + } | ||
| 231 | + | ||
| 232 | + .uploadbox-option { | ||
| 233 | + .fileSize { | ||
| 234 | + display: inline-block; | ||
| 235 | + color: #8e8e8e; | ||
| 236 | + font-size: 12px; | ||
| 237 | + } | ||
| 238 | + } | ||
| 239 | + | ||
| 240 | + .svg-icon { | ||
| 241 | + display: inline-block; | ||
| 242 | + color: $fedexError; | ||
| 243 | + } | ||
| 244 | + | ||
| 245 | + .text-tooltip { | ||
| 246 | + max-width: 500px; | ||
| 247 | + display: inline-block; | ||
| 248 | + margin-left: 10px; | ||
| 249 | + } | ||
| 250 | + | ||
| 251 | + .fileList-item-empty { | ||
| 252 | + display: inline-block; | ||
| 253 | + margin: 5px; | ||
| 254 | + height: max-content; | ||
| 255 | + color: #8e8e8e; | ||
| 256 | + } | ||
| 257 | + } | ||
| 258 | +} | ||
| 259 | + | ||
| 260 | +.fedexformSreachBottomBorder { | ||
| 261 | + border-top: 1px solid $fedexBorder; | ||
| 262 | + border-left: 1px solid $fedexBorder; | ||
| 263 | + border-right: 1px solid $fedexBorder; | ||
| 264 | +} | ||
| 265 | + | ||
| 266 | +.textCenter { | ||
| 267 | + .el-button { | ||
| 268 | + font-size: 20px; | ||
| 269 | + } | ||
| 270 | +} | ||
| 271 | +</style> |
src/views/reportingData/index.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div class="entrySreach" v-loading="loadings.templateLoading"> | ||
| 3 | + <div> | ||
| 4 | + <el-form | ||
| 5 | + class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder" | ||
| 6 | + ref="sreachForm" | ||
| 7 | + :model="sreachFormData" | ||
| 8 | + label-position="top" | ||
| 9 | + size="small" | ||
| 10 | + > | ||
| 11 | + <el-row class="row-border"> | ||
| 12 | + <el-col :span="5"> | ||
| 13 | + <!-- 提运单号 --> | ||
| 14 | + <Formitem label="提运单号" prop="billNo"> | ||
| 15 | + <el-input | ||
| 16 | + type="text" | ||
| 17 | + class="inputShadow" | ||
| 18 | + id="inputInner--billNo" | ||
| 19 | + resize="none" | ||
| 20 | + v-model="sreachFormData.billNo" | ||
| 21 | + clearable | ||
| 22 | + placeholder="" | ||
| 23 | + ></el-input> | ||
| 24 | + </Formitem> | ||
| 25 | + </el-col> | ||
| 26 | + <el-col :span="5"> | ||
| 27 | + <!-- 订单编号 --> | ||
| 28 | + <Formitem label="订单编号" prop="orderNo"> | ||
| 29 | + <el-select | ||
| 30 | + type="text" | ||
| 31 | + id="inputInner--orderNo" | ||
| 32 | + v-model="sreachFormData.orderNo" | ||
| 33 | + clearable | ||
| 34 | + placeholder="" | ||
| 35 | + > | ||
| 36 | + <el-option | ||
| 37 | + v-for="(item, index) in dictData.logisticsNo" | ||
| 38 | + :key="index" | ||
| 39 | + :label="item.name" | ||
| 40 | + :value="item.code" | ||
| 41 | + ></el-option> | ||
| 42 | + </el-select> | ||
| 43 | + </Formitem> | ||
| 44 | + </el-col> | ||
| 45 | + <el-col :span="5"> | ||
| 46 | + <!-- 运单编号 --> | ||
| 47 | + <Formitem label="运单编号" prop="logisticsNo"> | ||
| 48 | + <el-popover | ||
| 49 | + placement="bottom" | ||
| 50 | + width="320" | ||
| 51 | + trigger="manual" | ||
| 52 | + popper-class="popoverlogisticsNo" | ||
| 53 | + v-model="textareaVisible.formItemlogisticsNo" | ||
| 54 | + > | ||
| 55 | + <el-input | ||
| 56 | + name="logisticsNo-textarea" | ||
| 57 | + type="textarea" | ||
| 58 | + :rows="5" | ||
| 59 | + id="popoverInputlogisticsNo" | ||
| 60 | + class="inputShadow textareaPopover" | ||
| 61 | + v-model="sreachFormData.logisticsNo" | ||
| 62 | + resize="none" | ||
| 63 | + maxlength="13000" | ||
| 64 | + placeholder="" | ||
| 65 | + @blur="textareaBlur" | ||
| 66 | + @input="input" | ||
| 67 | + ></el-input> | ||
| 68 | + <el-input | ||
| 69 | + slot="reference" | ||
| 70 | + name="logisticsNo" | ||
| 71 | + type="textarea" | ||
| 72 | + :rows="1" | ||
| 73 | + class="inputShadow" | ||
| 74 | + id="inputInner--logisticsNo" | ||
| 75 | + v-model="sreachFormData.logisticsNo" | ||
| 76 | + resize="none" | ||
| 77 | + placeholder="" | ||
| 78 | + @focus="textareaFocus" | ||
| 79 | + @input="input" | ||
| 80 | + ></el-input> | ||
| 81 | + </el-popover> | ||
| 82 | + <el-badge | ||
| 83 | + v-if=" | ||
| 84 | + !textareaVisible.formItemlogisticsNo && | ||
| 85 | + textareaLength({ | ||
| 86 | + key: 'logisticsNo', | ||
| 87 | + value: sreachFormData.logisticsNo, | ||
| 88 | + }) > 1 | ||
| 89 | + " | ||
| 90 | + type="info" | ||
| 91 | + :value="`+${textareaLength({ | ||
| 92 | + key: 'logisticsNo', | ||
| 93 | + value: sreachFormData.logisticsNo, | ||
| 94 | + })}`" | ||
| 95 | + class="item texttareaTip" | ||
| 96 | + /> | ||
| 97 | + </Formitem> | ||
| 98 | + </el-col> | ||
| 99 | + <el-col :span="5"> | ||
| 100 | + <!-- 创建时间 --> | ||
| 101 | + <Formitem label="创建时间" prop="createTime" :activeType="true"> | ||
| 102 | + <el-date-picker | ||
| 103 | + class="inputInner--createTime" | ||
| 104 | + id="inputInner--createTime" | ||
| 105 | + v-model="sreachFormData.createTime" | ||
| 106 | + type="daterange" | ||
| 107 | + format="yyyy-MM-dd" | ||
| 108 | + prefix-icon="none" | ||
| 109 | + value-format="yyyy-MM-dd" | ||
| 110 | + range-separator="至" | ||
| 111 | + @chagne="dateChange" | ||
| 112 | + /> | ||
| 113 | + </Formitem> | ||
| 114 | + </el-col> | ||
| 115 | + <el-col :span="2"> | ||
| 116 | + <el-form-item class="textCenter"> | ||
| 117 | + <el-button | ||
| 118 | + class="entrySreachButton" | ||
| 119 | + type="text" | ||
| 120 | + icon="el-icon-search" | ||
| 121 | + :loading="loadings.sreachLoading" | ||
| 122 | + @click="search(0)" | ||
| 123 | + ></el-button> | ||
| 124 | + </el-form-item> | ||
| 125 | + </el-col> | ||
| 126 | + <el-col :span="2"> | ||
| 127 | + <!-- 清空查询条件--> | ||
| 128 | + <el-form-item class="textLeft textCenter"> | ||
| 129 | + <el-button | ||
| 130 | + type="text" | ||
| 131 | + size="small" | ||
| 132 | + icon="el-icon-refresh" | ||
| 133 | + @click="clear" | ||
| 134 | + > | ||
| 135 | + 重置 | ||
| 136 | + </el-button> | ||
| 137 | + </el-form-item> | ||
| 138 | + </el-col> | ||
| 139 | + </el-row> | ||
| 140 | + <el-row class="backgroundRow"> | ||
| 141 | + <el-col :span="5"> | ||
| 142 | + <!-- 回执类型 --> | ||
| 143 | + <Formitem label="回执类型" prop="receiptType"> | ||
| 144 | + <el-select | ||
| 145 | + type="text" | ||
| 146 | + id="inputInner--receiptType" | ||
| 147 | + v-model="sreachFormData.receiptType" | ||
| 148 | + clearable | ||
| 149 | + placeholder="" | ||
| 150 | + > | ||
| 151 | + <el-option | ||
| 152 | + v-for="(item, index) in dictData.receiptType" | ||
| 153 | + :key="index" | ||
| 154 | + :label="item.name" | ||
| 155 | + :value="item.code" | ||
| 156 | + ></el-option> | ||
| 157 | + </el-select> | ||
| 158 | + </Formitem> | ||
| 159 | + </el-col> | ||
| 160 | + <el-col :span="5"> | ||
| 161 | + <!-- 回执状态 --> | ||
| 162 | + <Formitem label="回执状态" prop="receiptStatus"> | ||
| 163 | + <el-select | ||
| 164 | + type="text" | ||
| 165 | + id="inputInner--receiptStatus" | ||
| 166 | + v-model="sreachFormData.receiptStatus" | ||
| 167 | + clearable | ||
| 168 | + placeholder="" | ||
| 169 | + > | ||
| 170 | + <el-option | ||
| 171 | + v-for="(item, index) in dictData.receiptStatus" | ||
| 172 | + :key="index" | ||
| 173 | + :label="item.name" | ||
| 174 | + :value="item.code" | ||
| 175 | + ></el-option> | ||
| 176 | + </el-select> | ||
| 177 | + </Formitem> | ||
| 178 | + </el-col> | ||
| 179 | + </el-row> | ||
| 180 | + </el-form> | ||
| 181 | + </div> | ||
| 182 | + <div class="optionButton"> | ||
| 183 | + <div class="optionButton-left"> | ||
| 184 | + <el-button class="entrySaveButton" size="small" @click="uploadData" | ||
| 185 | + ><svg-icon | ||
| 186 | + class="el-icon-user-solid" | ||
| 187 | + icon-class="uploadCloud" | ||
| 188 | + ></svg-icon | ||
| 189 | + >一键导入 | ||
| 190 | + </el-button> | ||
| 191 | + <el-button | ||
| 192 | + class="entrySaveButton" | ||
| 193 | + size="small" | ||
| 194 | + icon="el-icon-download" | ||
| 195 | + :loading="loadings.dwonloadModelLoading" | ||
| 196 | + @click="dwonloadModelFile" | ||
| 197 | + > | ||
| 198 | + 导入模版下载 | ||
| 199 | + </el-button> | ||
| 200 | + </div> | ||
| 201 | + <div class="optionButton-right"> | ||
| 202 | + <el-dropdown | ||
| 203 | + style="margin-right: 10px" | ||
| 204 | + size="small" | ||
| 205 | + split-button | ||
| 206 | + type="primary" | ||
| 207 | + v-loading="loadings.dropDownLoading" | ||
| 208 | + :disabled="selected.length == 0" | ||
| 209 | + @command="dropdownChange" | ||
| 210 | + @click="declareData" | ||
| 211 | + > | ||
| 212 | + <svg-icon | ||
| 213 | + class="el-icon-user-solid" | ||
| 214 | + icon-class="fedexDeclareIcon" | ||
| 215 | + ></svg-icon | ||
| 216 | + >{{ dropdownName }} | ||
| 217 | + <el-dropdown-menu slot="dropdown"> | ||
| 218 | + <el-dropdown-item :command="{ code: 'full', name: '一键申报' }" | ||
| 219 | + >一键申报</el-dropdown-item | ||
| 220 | + > | ||
| 221 | + <el-dropdown-item | ||
| 222 | + :command="{ code: 'order', name: '订单申报' }" | ||
| 223 | + ></el-dropdown-item> | ||
| 224 | + <el-dropdown-item :command="{ code: 'waybill', name: '物流单申报' }" | ||
| 225 | + >物流单申报</el-dropdown-item | ||
| 226 | + > | ||
| 227 | + <el-dropdown-item :command="{ code: 'list', name: '清单申报' }" | ||
| 228 | + >清单申报</el-dropdown-item | ||
| 229 | + > | ||
| 230 | + <el-dropdown-item | ||
| 231 | + :command="{ code: 'totalScore', name: '清单总分单申报' }" | ||
| 232 | + >清单总分单申报</el-dropdown-item | ||
| 233 | + > | ||
| 234 | + <el-dropdown-item | ||
| 235 | + :command="{ code: 'cancellation', name: '撤销单申报' }" | ||
| 236 | + >撤销单申报</el-dropdown-item | ||
| 237 | + > | ||
| 238 | + <el-dropdown-item | ||
| 239 | + :command="{ code: 'logisticsDeparture', name: '离境单申报' }" | ||
| 240 | + >离境单申报</el-dropdown-item | ||
| 241 | + > | ||
| 242 | + </el-dropdown-menu> | ||
| 243 | + </el-dropdown> | ||
| 244 | + <el-button | ||
| 245 | + class="entrySaveButton" | ||
| 246 | + size="small" | ||
| 247 | + icon="el-icon-download" | ||
| 248 | + @click="downloadData" | ||
| 249 | + > | ||
| 250 | + 导出 | ||
| 251 | + </el-button> | ||
| 252 | + </div> | ||
| 253 | + </div> | ||
| 254 | + <Table | ||
| 255 | + class="fedexDetialTable fedexSreachTable" | ||
| 256 | + ref="entryTable" | ||
| 257 | + :data="tableData" | ||
| 258 | + :headerData="headerData" | ||
| 259 | + :maxHeight="tableMaxheight" | ||
| 260 | + :border="true" | ||
| 261 | + :pagination="true" | ||
| 262 | + :order="false" | ||
| 263 | + :loading="loadings.sreachLoading" | ||
| 264 | + :page="page.pageNum" | ||
| 265 | + :pageSizes="[20, 30, 50, 100]" | ||
| 266 | + :totalCount="page.total" | ||
| 267 | + @sizeChange="sizeChange" | ||
| 268 | + @currentChange="currentChange" | ||
| 269 | + :selection="true" | ||
| 270 | + :selectFixed="false" | ||
| 271 | + @tableSelect="tableSelect" | ||
| 272 | + @tableSelectAll="tableSelectAll" | ||
| 273 | + :rowSelectDataType="false" | ||
| 274 | + @cellClick="cellClick" | ||
| 275 | + :selected="selected" | ||
| 276 | + > | ||
| 277 | + <template v-slot:orderReceiptStatus="scope"> | ||
| 278 | + <el-popover | ||
| 279 | + :popper-class="`poppercustoms${scope.row.consignmentId} portLogPopper`" | ||
| 280 | + placement="left" | ||
| 281 | + :visible-arrow="false" | ||
| 282 | + title="" | ||
| 283 | + width="750" | ||
| 284 | + trigger="manual" | ||
| 285 | + v-model="scope.row.orderReceiptStatusPopoverType" | ||
| 286 | + > | ||
| 287 | + <div style="text-align: right"> | ||
| 288 | + <i | ||
| 289 | + class="el-icon-close" | ||
| 290 | + style="cursor: pointer; font-size: 20px; font-weight: 700" | ||
| 291 | + @click.stop="popoverClose" | ||
| 292 | + ></i> | ||
| 293 | + </div> | ||
| 294 | + <div v-loading="scope.row.popoverLoading"> | ||
| 295 | + <div> | ||
| 296 | + <span style="font-weight: 700; color: #515a6e">订单编号:</span | ||
| 297 | + >{{ scope.row.orderno }} | ||
| 298 | + </div> | ||
| 299 | + <Table | ||
| 300 | + ref="customsClearanceReceiptStatusTable" | ||
| 301 | + class="fedexDetialTable mt20" | ||
| 302 | + :data="scope.row.orderReceiptStatusPopoverData" | ||
| 303 | + :headerData="receiptDataHead" | ||
| 304 | + :selection="false" | ||
| 305 | + :selectFixed="false" | ||
| 306 | + :order="false" | ||
| 307 | + :border="true" | ||
| 308 | + :rowSelectDataType="false" | ||
| 309 | + :loading="loadings.logTableLoading" | ||
| 310 | + :pagination="false" | ||
| 311 | + :page="1" | ||
| 312 | + :pageSizes="[20, 30, 50, 100]" | ||
| 313 | + :totalCount="0" | ||
| 314 | + :emptyText="$t('portEntry.emptyText')" | ||
| 315 | + height="350px" | ||
| 316 | + maxHeight="500px" | ||
| 317 | + rowKey="id" | ||
| 318 | + > | ||
| 319 | + <template v-slot:createTime="scoped"> | ||
| 320 | + <span>{{ formatDate(scoped.row.createTime) }}</span> | ||
| 321 | + </template> | ||
| 322 | + </Table> | ||
| 323 | + </div> | ||
| 324 | + <el-button | ||
| 325 | + slot="reference" | ||
| 326 | + type="text" | ||
| 327 | + @click.stop="popoverChange(scope.row, 'orderReceiptStatus')" | ||
| 328 | + >{{ | ||
| 329 | + scope.row.orderReceiptStatus == null || | ||
| 330 | + scope.row.orderReceiptStatus == "" | ||
| 331 | + ? "-" | ||
| 332 | + : scope.row.orderReceiptStatus | ||
| 333 | + }}</el-button | ||
| 334 | + > | ||
| 335 | + </el-popover> | ||
| 336 | + </template> | ||
| 337 | + <template v-slot:logisticsReceiptStatus="scope"> | ||
| 338 | + <span>{{ | ||
| 339 | + scope.row.orderReceiptStatus == null || | ||
| 340 | + scope.row.orderReceiptStatus == "" | ||
| 341 | + ? "-" | ||
| 342 | + : scope.row.orderReceiptStatus | ||
| 343 | + }}</span> | ||
| 344 | + </template> | ||
| 345 | + <template v-slot:listReceiptStatus="scope"> | ||
| 346 | + <span>{{ | ||
| 347 | + scope.row.orderReceiptStatus == null || | ||
| 348 | + scope.row.orderReceiptStatus == "" | ||
| 349 | + ? "-" | ||
| 350 | + : scope.row.orderReceiptStatus | ||
| 351 | + }}</span> | ||
| 352 | + </template> | ||
| 353 | + </Table> | ||
| 354 | + <DialogVue | ||
| 355 | + :outerVisible="outerVisible" | ||
| 356 | + @dwonloadModelFile="dwonloadModelFile" | ||
| 357 | + @close="close" | ||
| 358 | + /> | ||
| 359 | + </div> | ||
| 360 | +</template> | ||
| 361 | + | ||
| 362 | +<script> | ||
| 363 | +import { searchDeclareData, declareDataUpload } from "@/api/declareData-api.js"; | ||
| 364 | +import DialogVue from "./dialog.vue"; | ||
| 365 | +export default { | ||
| 366 | + name: "", | ||
| 367 | + components: { | ||
| 368 | + DialogVue, | ||
| 369 | + }, | ||
| 370 | + data() { | ||
| 371 | + return { | ||
| 372 | + sreachFormData: { | ||
| 373 | + billNo: "", | ||
| 374 | + logisticsNo: "", | ||
| 375 | + orderNo: "", | ||
| 376 | + receiptStatus: null, | ||
| 377 | + receiptType: null, | ||
| 378 | + createTime: [], | ||
| 379 | + }, | ||
| 380 | + page: { | ||
| 381 | + pageNum: 1, | ||
| 382 | + pageSize: 20, | ||
| 383 | + total: 0, | ||
| 384 | + }, | ||
| 385 | + tableData: [], | ||
| 386 | + headerData: [ | ||
| 387 | + { | ||
| 388 | + name: "提运单号", | ||
| 389 | + value: "billNo", | ||
| 390 | + width: "", | ||
| 391 | + align: "left", | ||
| 392 | + }, | ||
| 393 | + { | ||
| 394 | + name: "物流运单号", | ||
| 395 | + value: "logisticsWaybillNumber", | ||
| 396 | + width: "", | ||
| 397 | + align: "left", | ||
| 398 | + }, | ||
| 399 | + { | ||
| 400 | + name: "订单编号", | ||
| 401 | + value: "orderno", | ||
| 402 | + width: "", | ||
| 403 | + align: "left", | ||
| 404 | + }, | ||
| 405 | + { | ||
| 406 | + name: "电商企业", | ||
| 407 | + value: "ebccode", | ||
| 408 | + width: "", | ||
| 409 | + align: "left", | ||
| 410 | + }, | ||
| 411 | + { | ||
| 412 | + name: "订单回执", | ||
| 413 | + value: "orderReceiptStatus", | ||
| 414 | + width: "", | ||
| 415 | + align: "left", | ||
| 416 | + slot: true, | ||
| 417 | + }, | ||
| 418 | + { | ||
| 419 | + name: "收款单回执", | ||
| 420 | + value: "", | ||
| 421 | + width: "", | ||
| 422 | + align: "left", | ||
| 423 | + slot: true, | ||
| 424 | + }, | ||
| 425 | + { | ||
| 426 | + name: "物流单回执", | ||
| 427 | + value: "logisticsReceiptStatus", | ||
| 428 | + width: "", | ||
| 429 | + align: "left", | ||
| 430 | + slot: true, | ||
| 431 | + }, | ||
| 432 | + { | ||
| 433 | + name: "清单回执", | ||
| 434 | + value: "listReceiptStatus", | ||
| 435 | + width: "", | ||
| 436 | + align: "left", | ||
| 437 | + slot: true, | ||
| 438 | + }, | ||
| 439 | + { | ||
| 440 | + name: "清单总分单回执", | ||
| 441 | + value: "", | ||
| 442 | + width: "", | ||
| 443 | + align: "left", | ||
| 444 | + slot: true, | ||
| 445 | + }, | ||
| 446 | + ], | ||
| 447 | + receiptDataHead: [ | ||
| 448 | + { | ||
| 449 | + name: "回执状态", | ||
| 450 | + value: "", | ||
| 451 | + width: "", | ||
| 452 | + align: "left", | ||
| 453 | + }, | ||
| 454 | + { | ||
| 455 | + name: "状态时间", | ||
| 456 | + value: "", | ||
| 457 | + width: "", | ||
| 458 | + align: "left", | ||
| 459 | + }, | ||
| 460 | + { | ||
| 461 | + name: "回执描述", | ||
| 462 | + value: "", | ||
| 463 | + width: "", | ||
| 464 | + align: "left", | ||
| 465 | + }, | ||
| 466 | + ], | ||
| 467 | + selected: [], | ||
| 468 | + dictData: { | ||
| 469 | + logisticsNo: [], | ||
| 470 | + receiptStatus: [], | ||
| 471 | + receiptType: [], | ||
| 472 | + }, | ||
| 473 | + loadings: { | ||
| 474 | + templateLoading: false, | ||
| 475 | + sreachLoading: false, | ||
| 476 | + dwonloadModelLoading: false, | ||
| 477 | + dropDownLoading: false, | ||
| 478 | + }, | ||
| 479 | + textareaVisible: {}, | ||
| 480 | + tableMaxheight: null, | ||
| 481 | + outerVisible: false, | ||
| 482 | + dropdownName: "一键申报", | ||
| 483 | + dropdownCode: "full", | ||
| 484 | + }; | ||
| 485 | + }, | ||
| 486 | + created() { | ||
| 487 | + this.search(0); | ||
| 488 | + }, | ||
| 489 | + mounted() { | ||
| 490 | + this.tableMaxheight = window.innerHeight - 300; | ||
| 491 | + }, | ||
| 492 | + methods: { | ||
| 493 | + //查询申报数据 | ||
| 494 | + search(val) { | ||
| 495 | + this.loadings.sreachLoading = true; | ||
| 496 | + this.selected = []; | ||
| 497 | + if (val == 0) { | ||
| 498 | + this.page.pageNum = 1; | ||
| 499 | + } | ||
| 500 | + let obj = this.sreachFormData; | ||
| 501 | + obj.pageNum = this.page.pageNum; | ||
| 502 | + obj.pageSize = this.page.pageSize; | ||
| 503 | + obj.startCreateTime = ""; | ||
| 504 | + obj.endCreateTime = ""; | ||
| 505 | + if (this.sreachFormData.createTime.length > 0) { | ||
| 506 | + obj.startCreateTime = obj.createTime[0]; | ||
| 507 | + obj.endCreateTime = obj.createTime[1]; | ||
| 508 | + } | ||
| 509 | + searchDeclareData(obj) | ||
| 510 | + .then((res) => { | ||
| 511 | + if (res.code === "200") { | ||
| 512 | + this.tableData = res.data.value; | ||
| 513 | + this.page.total = res.data.totalItems; | ||
| 514 | + this.tableData.forEach((item, idx) => { | ||
| 515 | + item.index = idx; | ||
| 516 | + item.popoverLoading = false; | ||
| 517 | + item.orderReceiptStatusPopoverType = false; | ||
| 518 | + item.listReceiptStatusPopoverType = false; | ||
| 519 | + item.logisticsReceiptStatusPopoverType = false; | ||
| 520 | + item.orderReceiptStatusPopoverData = []; | ||
| 521 | + item.listReceiptStatusPopoverData = []; | ||
| 522 | + item.logisticsReceiptStatusPopoverData = []; | ||
| 523 | + }); | ||
| 524 | + } else { | ||
| 525 | + this.alertWarningMsg(res.message); | ||
| 526 | + } | ||
| 527 | + this.loadings.sreachLoading = false; | ||
| 528 | + }) | ||
| 529 | + .catch((err) => { | ||
| 530 | + console.log(err); | ||
| 531 | + this.loadings.sreachLoading = false; | ||
| 532 | + }); | ||
| 533 | + }, | ||
| 534 | + //重置数据 | ||
| 535 | + clear() { | ||
| 536 | + this.sreachFormData = { | ||
| 537 | + billNo: "", | ||
| 538 | + logisticsNo: "", | ||
| 539 | + orderNo: "", | ||
| 540 | + receiptStatus: null, | ||
| 541 | + receiptType: null, | ||
| 542 | + createTime: [], | ||
| 543 | + }; | ||
| 544 | + }, | ||
| 545 | + //上传申报数据 | ||
| 546 | + uploadData() { | ||
| 547 | + this.outerVisible = true; | ||
| 548 | + }, | ||
| 549 | + //下载模板 | ||
| 550 | + dwonloadModelFile() { | ||
| 551 | + this.loadings.dwonloadModelLoading = true; | ||
| 552 | + this.fileDownload | ||
| 553 | + .downLoadZip( | ||
| 554 | + "api", | ||
| 555 | + "declareDataModel", | ||
| 556 | + "申报数据模板.xlsx", | ||
| 557 | + "xlsx", | ||
| 558 | + "get" | ||
| 559 | + ) | ||
| 560 | + .finally(() => { | ||
| 561 | + this.loadings.dwonloadModelLoading = false; | ||
| 562 | + }); | ||
| 563 | + }, | ||
| 564 | + //导出 | ||
| 565 | + downloadData() {}, | ||
| 566 | + //申报 | ||
| 567 | + declareData() { | ||
| 568 | + this.loadings.dropDownLoading = true; | ||
| 569 | + let obj = { | ||
| 570 | + declareIds: [], | ||
| 571 | + type: this.dropdownCode, | ||
| 572 | + }; | ||
| 573 | + this.selected.forEach((item) => { | ||
| 574 | + obj.declareIds.push(item.declareId); | ||
| 575 | + }); | ||
| 576 | + declareDataUpload(obj) | ||
| 577 | + .then((res) => { | ||
| 578 | + if (res.code === "200") { | ||
| 579 | + this.alertSuccessMsg(res.message); | ||
| 580 | + } else { | ||
| 581 | + this.alertWarningMsg(res.message); | ||
| 582 | + } | ||
| 583 | + this.loadings.dropDownLoading = false; | ||
| 584 | + }) | ||
| 585 | + .catch((err) => { | ||
| 586 | + console.log(err); | ||
| 587 | + this.loadings.dropDownLoading = false; | ||
| 588 | + }); | ||
| 589 | + }, | ||
| 590 | + //切换申报模式 | ||
| 591 | + dropdownChange(val) { | ||
| 592 | + this.dropdownName = val.name; | ||
| 593 | + this.dropdownCode = val.code; | ||
| 594 | + }, | ||
| 595 | + close(val) { | ||
| 596 | + if (val) { | ||
| 597 | + this.search(1); | ||
| 598 | + } | ||
| 599 | + this.outerVisible = false; | ||
| 600 | + }, | ||
| 601 | + //弹框关闭 | ||
| 602 | + popoverClose(val) { | ||
| 603 | + this.tableData.forEach((item) => { | ||
| 604 | + item.popoverLoading = false; | ||
| 605 | + item.orderReceiptStatusPopoverType = false; | ||
| 606 | + item.listReceiptStatusPopoverType = false; | ||
| 607 | + item.logisticsReceiptStatusPopoverType = false; | ||
| 608 | + item.orderReceiptStatusPopoverData = []; | ||
| 609 | + item.listReceiptStatusPopoverData = []; | ||
| 610 | + item.logisticsReceiptStatusPopoverData = []; | ||
| 611 | + }); | ||
| 612 | + this.$refs.entryTable.$refs.tables.$refs.bodyWrapper.style.overflowY = | ||
| 613 | + "auto"; | ||
| 614 | + }, | ||
| 615 | + //弹框状态改版 | ||
| 616 | + popoverChange(data, type) { | ||
| 617 | + this.popoverClose(type); | ||
| 618 | + let arr = JSON.parse(JSON.stringify(this.tableData)); | ||
| 619 | + arr.forEach((item) => { | ||
| 620 | + item[`${type}PopoverData`] = []; | ||
| 621 | + if (data.declareId != item.declareId) { | ||
| 622 | + item[`${type}PopoverLoading`] = false; | ||
| 623 | + item[`${type}PopoverType`] = false; | ||
| 624 | + } else { | ||
| 625 | + item[`${type}PopoverLoading`] = true; | ||
| 626 | + item[`${type}PopoverType`] = !JSON.parse( | ||
| 627 | + JSON.stringify(item[`${type}PopoverType`]) | ||
| 628 | + ); | ||
| 629 | + } | ||
| 630 | + }); | ||
| 631 | + if (!data[`${type}PopoverType`]) { | ||
| 632 | + this.$refs.entryTable.$refs.tables.$refs.bodyWrapper.style.overflowY = | ||
| 633 | + "hidden"; | ||
| 634 | + } else { | ||
| 635 | + this.$refs.entryTable.$refs.tables.$refs.bodyWrapper.style.overflowY = | ||
| 636 | + "auto"; | ||
| 637 | + } | ||
| 638 | + // this.searchLog({ | ||
| 639 | + // tableData: arr, | ||
| 640 | + // data: data, | ||
| 641 | + // type: !data[`${type}PopoverType`], | ||
| 642 | + // status: type, | ||
| 643 | + // }); | ||
| 644 | + this.$nextTick(() => { | ||
| 645 | + document.getElementsByClassName("el-table__row").forEach((dom1, i) => { | ||
| 646 | + if (i == data.idx) { | ||
| 647 | + dom1.classList.add("activeRow"); | ||
| 648 | + } else { | ||
| 649 | + dom1.classList.remove("hover-row"); | ||
| 650 | + dom1.classList.remove("activeRow"); | ||
| 651 | + } | ||
| 652 | + }); | ||
| 653 | + let interval = setInterval(() => { | ||
| 654 | + if ( | ||
| 655 | + document.getElementsByClassName(`popper${type}${data.declareId}`) | ||
| 656 | + .length == 1 | ||
| 657 | + ) { | ||
| 658 | + clearInterval(interval); | ||
| 659 | + } | ||
| 660 | + document | ||
| 661 | + .getElementsByClassName(`popper${type}${data.declareId}`) | ||
| 662 | + .forEach((dom, index) => { | ||
| 663 | + if (index > 0) { | ||
| 664 | + dom.style.display = "none"; | ||
| 665 | + dom.remove(); | ||
| 666 | + } | ||
| 667 | + }); | ||
| 668 | + }, 100); | ||
| 669 | + }); | ||
| 670 | + }, | ||
| 671 | + tableSelect(val) { | ||
| 672 | + this.selected = val.selection; | ||
| 673 | + }, | ||
| 674 | + tableSelectAll(val) { | ||
| 675 | + this.selected = val; | ||
| 676 | + }, | ||
| 677 | + //分页 | ||
| 678 | + currentChange(val) { | ||
| 679 | + this.page.pageNum = val.page; | ||
| 680 | + this.search(1); | ||
| 681 | + }, | ||
| 682 | + sizeChange(val) { | ||
| 683 | + this.page.pageSize = val; | ||
| 684 | + this.search(1); | ||
| 685 | + }, | ||
| 686 | + cellClick() {}, | ||
| 687 | + //文本域展示状态切换 | ||
| 688 | + textareaFocus(val) { | ||
| 689 | + this.textareaVisible["formItem" + val.target.name.split("-")[0]] = true; | ||
| 690 | + this.$nextTick(() => { | ||
| 691 | + document | ||
| 692 | + .querySelector("#popoverInput" + val.target.name.split("-")[0]) | ||
| 693 | + .focus(); | ||
| 694 | + document.querySelector( | ||
| 695 | + "#inputInner--" + val.target.name.split("-")[0] | ||
| 696 | + ).style.display = "none"; | ||
| 697 | + }); | ||
| 698 | + }, | ||
| 699 | + textareaBlur(val) { | ||
| 700 | + let inputInner = document.querySelector( | ||
| 701 | + "#inputInner--" + val.target.name.split("-")[0] | ||
| 702 | + ); | ||
| 703 | + this.textareaVisible["formItem" + val.target.name.split("-")[0]] = false; | ||
| 704 | + inputInner.style.display = "block"; | ||
| 705 | + this.$nextTick(() => { | ||
| 706 | + inputInner.blur(); | ||
| 707 | + if ( | ||
| 708 | + inputInner.value != undefined && | ||
| 709 | + inputInner.value != "" && | ||
| 710 | + inputInner.value != null | ||
| 711 | + ) { | ||
| 712 | + inputInner.classList.add("inputFocus"); | ||
| 713 | + } else { | ||
| 714 | + inputInner.classList.remove("inputFocus"); | ||
| 715 | + } | ||
| 716 | + }); | ||
| 717 | + let arr = []; | ||
| 718 | + this.sreachFormData[val.target.name.split("-")[0]] | ||
| 719 | + .replace(/[\n\,\;\;]/g, ",") | ||
| 720 | + .replace(/[\t]/g, "") | ||
| 721 | + .split(",") | ||
| 722 | + .forEach((str, index) => { | ||
| 723 | + if (str != null && str != "" && index <= 1000) { | ||
| 724 | + arr.push(str.trim()); | ||
| 725 | + } | ||
| 726 | + }); | ||
| 727 | + this.sreachFormData[val.target.name.split("-")[0]] = arr.join("\n"); | ||
| 728 | + this.$forceUpdate(); | ||
| 729 | + }, | ||
| 730 | + //文本域输入内容数量处理 | ||
| 731 | + textareaLength(val) { | ||
| 732 | + if (val.value != "" && val.value != null) { | ||
| 733 | + let arr = []; | ||
| 734 | + val.value | ||
| 735 | + .trim() | ||
| 736 | + .replace(/[\n\,\;\;]/g, ",") | ||
| 737 | + .split(",") | ||
| 738 | + .forEach((item) => { | ||
| 739 | + if (item != "" && item != null) { | ||
| 740 | + arr.push(item); | ||
| 741 | + } | ||
| 742 | + }); | ||
| 743 | + return arr.length; | ||
| 744 | + } else { | ||
| 745 | + return 0; | ||
| 746 | + } | ||
| 747 | + }, | ||
| 748 | + input() { | ||
| 749 | + this.$forceUpdate(); | ||
| 750 | + }, | ||
| 751 | + dateChange(val) {}, | ||
| 752 | + }, | ||
| 753 | +}; | ||
| 754 | +</script> | ||
| 755 | + | ||
| 756 | +<style lang="scss" scoped> | ||
| 757 | +@import "@/assets/styles/variables.scss"; | ||
| 758 | +.entrySreach { | ||
| 759 | + height: 100%; | ||
| 760 | + background-color: $menuLightBg; | ||
| 761 | + | ||
| 762 | + .entrySreachButton { | ||
| 763 | + display: inline-block; | ||
| 764 | + font-size: 20px; | ||
| 765 | + color: $fedexButton !important; | ||
| 766 | + } | ||
| 767 | + | ||
| 768 | + .optionButton { | ||
| 769 | + padding: 10px; | ||
| 770 | + text-align: right; | ||
| 771 | + display: flex; | ||
| 772 | + justify-content: space-between; | ||
| 773 | + | ||
| 774 | + .el-button { | ||
| 775 | + color: $fedexButton; | ||
| 776 | + border-color: $fedexButton !important; | ||
| 777 | + | ||
| 778 | + svg { | ||
| 779 | + display: inline-block; | ||
| 780 | + margin-right: 5px; | ||
| 781 | + fill: $fedexButton; | ||
| 782 | + } | ||
| 783 | + } | ||
| 784 | + | ||
| 785 | + .entrySaveButton:hover, | ||
| 786 | + .entrySaveButton:focus { | ||
| 787 | + color: $menuLightBg !important; | ||
| 788 | + background-color: $fedexButton !important; | ||
| 789 | + } | ||
| 790 | + } | ||
| 791 | +} | ||
| 792 | + | ||
| 793 | +.texttareaTip { | ||
| 794 | + position: absolute; | ||
| 795 | + top: 52%; | ||
| 796 | + right: 20px; | ||
| 797 | + transform: translate(0, -50%); | ||
| 798 | + z-index: 10; | ||
| 799 | +} | ||
| 800 | +</style> |
-
Please register or login to post a comment