作者 唐俊升

新增智能海关页面

  1 +import http from "../http";
  2 +import axios from "axios";
  3 +let baseUrl = 'hg-server-customai'
  4 +
  5 +//导入excel
  6 +export const importExcel = params => { return http.postExcelData(`${baseUrl}/business/report/importFile`, params); };
  7 +//查询列表
  8 +export const fetchData = params => { return axios.get(`${baseUrl}/business/report/selectList`, { params: params }); };
  9 +//导入更新excel文件
  10 +export const importUpdateExcel = params => { return http.postExcelData(`${baseUrl}/business/report/updateFile`, params); };
@@ -221,6 +221,9 @@ import yqdeclare from './views/airtransport/yqdeclare.vue' @@ -221,6 +221,9 @@ import yqdeclare from './views/airtransport/yqdeclare.vue'
221 // 邮件风控 221 // 邮件风控
222 import MailRisk from './views/mail_risk/index.vue' 222 import MailRisk from './views/mail_risk/index.vue'
223 223
  224 +// AI智慧关务
  225 +import AiCoustoms from "./views/AiCoustoms/AiCoustoms.vue";
  226 +
224 let routes = [ 227 let routes = [
225 { 228 {
226 path: '/login', 229 path: '/login',
@@ -805,7 +808,15 @@ let routes = [ @@ -805,7 +808,15 @@ let routes = [
805 {path:'/yqdeclare',component:yqdeclare,name:'预确报申报'} 808 {path:'/yqdeclare',component:yqdeclare,name:'预确报申报'}
806 ] 809 ]
807 }, 810 },
808 - 811 + {
  812 + path: '/ai',
  813 + component: HomeNew,
  814 + name: '智慧关务',
  815 + iconCls: 'el-icon-collection',
  816 + children: [
  817 + {path: '/AiCoustoms', component: AiCoustoms, name: 'Ai智慧关务'}
  818 + ]
  819 + },
809 { 820 {
810 path: '*', 821 path: '*',
811 hidden: true, 822 hidden: true,
  1 +<template>
  2 + <div>
  3 + <!-- 上传Excel按钮 -->
  4 + <el-row :gutter="24">
  5 + <el-col :span="4">
  6 + <el-upload
  7 + class="upload-demo"
  8 + action=""
  9 + :before-upload="beforeUpload"
  10 + :http-request="uploadExcel"
  11 + :show-file-list="false">
  12 + <el-button size="medium" type="success">导入数据</el-button>
  13 + </el-upload>
  14 + </el-col>
  15 + <el-col :span="4">
  16 + <el-upload
  17 + class="upload-demo"
  18 + action=""
  19 + :before-upload="beforeUpload"
  20 + :http-request="uploadUpdateExcel"
  21 + :show-file-list="false">
  22 + <el-button size="medium" type="success">更新数据</el-button>
  23 + </el-upload>
  24 + </el-col>
  25 + <el-button size="medium" @click="fetchData" type="primary">查询</el-button>
  26 + </el-row>
  27 + <!-- 数据列表 -->
  28 + <el-row :gutter="24">
  29 + <el-col :span="24">
  30 + <el-table :data="tableData" border style="width: 100%">
  31 + <el-table-column prop="staId" label="标识码"></el-table-column>
  32 + <el-table-column prop="iEPort" label="进出境关区"></el-table-column>
  33 + <el-table-column prop="iEPortCn" label="关区中文名称"></el-table-column>
  34 + <el-table-column prop="tradeCo" label="境内收发货人"></el-table-column>
  35 + <el-table-column prop="ownerCode" label="消费使用单位/生产销售单位"></el-table-column>
  36 + <el-table-column prop="districtCode" label="境内目的地/货源地"></el-table-column>
  37 + <el-table-column prop="districtCodeCn" label="境内目的地/货源地中文名称"></el-table-column>
  38 + <el-table-column prop="trafMode" label="运输方式"></el-table-column>
  39 + <el-table-column prop="trafModeCn" label="运输方式中文名称"></el-table-column>
  40 + <el-table-column prop="tradeMode" label="监管方式"></el-table-column>
  41 + <el-table-column prop="tradeModeCn" label="监管方式中文名称"></el-table-column>
  42 + <el-table-column prop="cutMode" label="征免性质"></el-table-column>
  43 + <el-table-column prop="cutModeCn" label="征免性质中文名称"></el-table-column>
  44 + <el-table-column prop="tradeCountry" label="启抵国"></el-table-column>
  45 + <el-table-column prop="tradeCountryCn" label="启抵国中文名称"></el-table-column>
  46 + <el-table-column prop="originCountry" label="产终国"></el-table-column>
  47 + <el-table-column prop="originCountryCn" label="产终国中文名称"></el-table-column>
  48 + <el-table-column prop="licenseNo" label="许可证编号"></el-table-column>
  49 + <el-table-column prop="manualNo" label="备案号"></el-table-column>
  50 + <el-table-column prop="grossWt" label="毛重"></el-table-column>
  51 + <el-table-column prop="endDate" label="结关日期"></el-table-column>
  52 + <el-table-column prop="codeT" label="商品编号"></el-table-column>
  53 + <el-table-column prop="codeS" label="附加编号"></el-table-column>
  54 + <el-table-column prop="qty1" label="第一数量"></el-table-column>
  55 + <el-table-column prop="unit1" label="第一计量单位"></el-table-column>
  56 + <el-table-column prop="unit1Cn" label="第一计量单位中文名称"></el-table-column>
  57 + <el-table-column prop="qty2" label="第二数量"></el-table-column>
  58 + <el-table-column prop="unit2" label="第二计量单位"></el-table-column>
  59 + <el-table-column prop="unit2Cn" label="第二计量单位中文名称"></el-table-column>
  60 + <el-table-column prop="rmb" label="人民币"></el-table-column>
  61 + <el-table-column prop="usd" label="美元值"></el-table-column>
  62 + <el-table-column prop="dutyMode" label="征免方式"></el-table-column>
  63 + <el-table-column prop="dutyModeCn" label="征免方式中文名称"></el-table-column>
  64 + <el-table-column prop="dutax" label="实征税款"></el-table-column>
  65 + <el-table-column prop="realDuty" label="实征关税"></el-table-column>
  66 + <el-table-column prop="dutaxCut" label="减免税"></el-table-column>
  67 + <el-table-column prop="dutyCut" label="减免关税"></el-table-column>
  68 + <el-table-column prop="empty" label="空白项"></el-table-column>
  69 + <el-table-column prop="gName" label="商品名称"></el-table-column>
  70 + <el-table-column prop="gModel" label="规格型号"></el-table-column>
  71 + <el-table-column prop="selType" label="分类通关"></el-table-column>
  72 + <el-table-column prop="createtime" label="导入时间"></el-table-column>
  73 + <el-table-column prop="opter" label="操作账户"></el-table-column>
  74 + </el-table>
  75 + </el-col>
  76 + <el-col :span="24">
  77 + <el-pagination
  78 + size="medium"
  79 + @size-change="handleSizeChange"
  80 + @current-change="handleCurrentChange"
  81 + :current-page="query.pageNum"
  82 + :page-sizes="[10, 20, 30, 40]"
  83 + :page-size="query.pageSize"
  84 + layout="total, sizes, prev, pager, next, jumper"
  85 + :total="total">
  86 + </el-pagination>
  87 + </el-col>
  88 + </el-row>
  89 + </div>
  90 +</template>
  91 +
  92 +<script>
  93 +
  94 +import {importExcel, fetchData, importUpdateExcel} from "../../api/AiCustoms/AiCustoms";
  95 +
  96 +export default {
  97 + data() {
  98 + return {
  99 + tableData: [],
  100 + total: 0, // 总数据量
  101 + query: {
  102 + pageNum: 1,
  103 + pageSize: 10
  104 + },
  105 + }
  106 + },
  107 + mounted() {
  108 + this.fetchData()
  109 + },
  110 + methods: {
  111 + fetchData() {
  112 + fetchData(this.query).then((response) => {
  113 + const res = response.data
  114 + if (res.code !== '200') {
  115 + return this.$message.error('获取消息收发记录,失败!')
  116 + }
  117 + // 获取列表数据
  118 + this.tableData = res.data.list
  119 + // 获取列表的总记录数
  120 + this.total = res.data.total
  121 + this.$message.success('获取消息收发记录,成功!');
  122 + }).catch(error => {
  123 + // 关闭加载
  124 + this.$message.error(error.toString())
  125 + })
  126 + },
  127 + uploadExcel({ file, onSuccess, onError }){
  128 + // 生成 FormData 对象
  129 + const formData = new FormData();
  130 + formData.append('file', file);
  131 + const loading = this.$loading({
  132 + lock: true,
  133 + text: 'Loading',
  134 + spinner: 'el-icon-loading',
  135 + background: 'rgba(0, 0, 0, 0.7)'
  136 + });
  137 + importExcel(formData).then((response) => {
  138 + const res = response.data
  139 + if (res.code !== '200') {
  140 + return this.$message.error(res.msg);
  141 + }
  142 + this.$message.success(res.msg);
  143 + loading.close();
  144 + this.fetchData();
  145 + onSuccess(response.data); // 调用 onSuccess 回调通知上传成功
  146 + }).catch(error => {
  147 + // 关闭加载
  148 + loading.close();
  149 + this.$message.error(error.toString())
  150 + onError(error); // 调用 onError 回调通知上传失败
  151 + })
  152 + },
  153 + uploadUpdateExcel({ file, onSuccess, onError }){
  154 + // 生成 FormData 对象
  155 + const formData = new FormData();
  156 + formData.append('file', file);
  157 + const loading = this.$loading({
  158 + lock: true,
  159 + text: 'Loading',
  160 + spinner: 'el-icon-loading',
  161 + background: 'rgba(0, 0, 0, 0.7)'
  162 + });
  163 + importUpdateExcel(formData).then((response) => {
  164 + const res = response.data
  165 + if (res.code !== '200') {
  166 + return this.$message.error(res.msg);
  167 + }
  168 + this.$message.success(res.msg);
  169 + loading.close();
  170 + this.fetchData();
  171 + onSuccess(response.data); // 调用 onSuccess 回调通知上传成功
  172 + }).catch(error => {
  173 + // 关闭加载
  174 + loading.close();
  175 + this.$message.error(error.toString())
  176 + onError(error); // 调用 onError 回调通知上传失败
  177 + })
  178 + },
  179 + handleSizeChange(val) {
  180 + this.query.pageSize=val;
  181 + this.fetchData()
  182 + },
  183 + handleCurrentChange(val) {
  184 + this.query.pageNum=val;
  185 + this.fetchData()
  186 + }
  187 + }
  188 +}
  189 +</script>