作者 xudada

单证申报

1 import http from "../http"; 1 import http from "../http";
2 2
3 let baseUrl = 'air-server-transport' 3 let baseUrl = 'air-server-transport'
4 - 4 +let baseUrlResultMsg = 'air-server-transport/transport/returnmsg'
  5 +//查询海关代码,机场代码
5 export const selectBycustomcode = params => { return http.get(`${baseUrl}/transport/customcode/selectBycustomcode`, params); }; 6 export const selectBycustomcode = params => { return http.get(`${baseUrl}/transport/customcode/selectBycustomcode`, params); };
6 -export const selectPrePlanConfig = params => { return http.post(`${baseUrl}/selectPrePlanConfig`, params); }; 7 +export const selectByairportcode = params => { return http.get(`${baseUrl}/transport/airportcode/selectByairportcode`, params); };
  8 +//在港动态信息
  9 +export const insertSelective = params => { return http.post(`${baseUrl}/transport/aircraftStaying/insertSelective`, params); };
  10 +export const updateByPrimaryKeySelective = params => { return http.post(`${baseUrl}/transport/aircraftStaying/updateByPrimaryKeySelective`, params); };
  11 +export const selectLists = params => { return http.get(`${baseUrl}/transport/aircraftStaying/selectLists`, params); };
  12 +export const sendAircraftstaying = params => { return http.post(`${baseUrl}/transport/aircraftStaying/sendAircraftstaying`, params); };
  13 +
  14 +
  15 +//查询回执列表
  16 +export const selectReturnMsgList=params=>{return http.get(`${baseUrlResultMsg}/selectReturnMsg`, params);};
  17 +
  18 +//单证申报
  19 +export const selectBillLists = params => { return http.get(`${baseUrl}/transport/bill/selectBillLists`, params); };
  20 +export const insertSelectiveBill = params => { return http.post(`${baseUrl}/transport/bill/insertSelectiveBill`, params); };
  21 +export const updateByPrimaryKeySelectiveBill = params => { return http.post(`${baseUrl}/transport/bill/updateByPrimaryKeySelectiveBill`, params); };
  22 +export const sendBillSdeclare = params => { return http.post(`${baseUrl}/transport/bill/sendBillSdeclare`, params); };
  23 +
  24 +
7 25
8 26
9 27
@@ -214,6 +214,7 @@ import Rate from './views/zhidan/rate.vue' @@ -214,6 +214,7 @@ import Rate from './views/zhidan/rate.vue'
214 //运输工具2.0 214 //运输工具2.0
215 import zaigang from './views/airtransport/zaigang.vue' 215 import zaigang from './views/airtransport/zaigang.vue'
216 import gongtui from './views/airtransport/gongtui.vue' 216 import gongtui from './views/airtransport/gongtui.vue'
  217 +import danzheng from './views/airtransport/danzheng.vue'
217 218
218 let routes = [ 219 let routes = [
219 { 220 {
@@ -784,7 +785,8 @@ let routes = [ @@ -784,7 +785,8 @@ let routes = [
784 iconCls:'el-icon-goods', 785 iconCls:'el-icon-goods',
785 children:[ 786 children:[
786 {path:'/gongtui',component:gongtui,name:'供退物料申报'}, 787 {path:'/gongtui',component:gongtui,name:'供退物料申报'},
787 - {path:'/zaigang',component:zaigang,name:'在港动态申报'} 788 + {path:'/zaigang',component:zaigang,name:'在港动态申报'},
  789 + {path:'/danzheng',component:danzheng,name:'单证申报'}
788 ] 790 ]
789 }, 791 },
790 792
  1 +<template>
  2 + <div>
  3 + <el-row :gutter="10">
  4 + <el-col :span="4">
  5 + <el-input
  6 + placeholder="航空器注册编号"
  7 + v-model="query.aircraftNo"
  8 + size="medium"
  9 + clearable>
  10 + </el-input>
  11 + </el-col>
  12 + <el-col :span="4">
  13 + <el-input
  14 + placeholder="进出境(港)航班号"
  15 + v-model="query.flightNo"
  16 + size="medium"
  17 + clearable>
  18 + </el-input>
  19 + </el-col>
  20 + <el-col :span="8">
  21 + <div class="block">
  22 + <el-date-picker
  23 + v-model="flightdate"
  24 + type="daterange"
  25 + :picker-options="pickerOptions"
  26 + range-separator="至"
  27 + start-placeholder="开始日期"
  28 + end-placeholder="结束日期"
  29 + value-format="yyyy-MM-dd"
  30 + size="medium"
  31 + align="right">
  32 + </el-date-picker>
  33 + </div>
  34 + </el-col>
  35 + <el-col :span="2">
  36 + <el-button size="medium" type="primary" @click="selectList" plain>查询</el-button>
  37 + </el-col>
  38 + <el-col :span="2">
  39 + <el-button size="medium" type="success" @click="addForm()" plain>新增</el-button>
  40 + </el-col>
  41 + </el-row>
  42 + <el-row :gutter="10">
  43 + <el-table
  44 + :data="tableData"
  45 + style="width: 100%"
  46 + row-key="uuid"
  47 + :expand-row-keys="expandedRowKeys"
  48 + border
  49 + stripe>
  50 + <el-table-column
  51 + align="center"
  52 + fixed="left"
  53 + label="信息操作"
  54 + width="80">
  55 + <template slot-scope="scope">
  56 + <el-button @click="ediForm(scope.row)" type="text" size="small">编辑</el-button>
  57 + </template>
  58 + </el-table-column>
  59 + <el-table-column type="expand" label="详细信息">
  60 + <template v-slot:default="{ row }">
  61 + <el-table
  62 + :data="row.billpersonList"
  63 + style="width: 70%;margin-left: 75px;margin-top: 10px"
  64 + row-key="autoId"
  65 + stripe
  66 + border
  67 + >
  68 + <el-table-column prop="name" label="姓名" />
  69 + <el-table-column width="80" prop="gender" label="性别">
  70 + <template slot-scope="scope">
  71 + {{ scope.row.gender === 'M' ? '男' : '女' }}
  72 + </template>
  73 + </el-table-column>
  74 + <el-table-column width="80" prop="nationality" label="国籍" />
  75 + <el-table-column label="职务">
  76 + <template slot-scope="scope">
  77 + {{ {
  78 + '1': '航线机长',
  79 + '2': '副驾驶',
  80 + '3': '乘务长',
  81 + '4': '安全员',
  82 + '5': '乘务员',
  83 + '6': '机械师',
  84 + '7': '随行人员',
  85 + '8': '工程师',
  86 + '9': '装载员',
  87 + '10': '押运员',
  88 + '11': '其它随机人员'
  89 + }[scope.row.gareer] || scope.row.gareer }}
  90 + </template>
  91 + </el-table-column>
  92 + <el-table-column prop="certType" :formatter="formatType" label="证件类型" />
  93 + <el-table-column prop="ceterNo" label="证件号" />
  94 + </el-table>
  95 + </template>
  96 + </el-table-column>
  97 + <el-table-column
  98 + prop="messageid"
  99 + label="编号"
  100 + width="320">
  101 + </el-table-column>
  102 +
  103 + <el-table-column
  104 + prop="aircraftNo"
  105 + label="航空器注册编号"
  106 + width="100">
  107 + </el-table-column>
  108 + <el-table-column
  109 + prop="arrivalno"
  110 + label="海关关区"
  111 + width="100">
  112 + </el-table-column>
  113 + <el-table-column
  114 + prop="flightNo"
  115 + label="进境(港)航班号"
  116 + width="120">
  117 + </el-table-column>
  118 + <el-table-column
  119 + prop="flightDate"
  120 + label="航班日期"
  121 + width="100">
  122 + </el-table-column>
  123 + <el-table-column
  124 + label="进出类型"
  125 + width="100">
  126 + <template slot-scope="scope">
  127 + {{ scope.row.accessFlag === 'D' ? '出港' : '进港' }}
  128 + </template>
  129 + </el-table-column>
  130 + <el-table-column
  131 + prop="arrivaldatetime"
  132 + label="出入(境)时间"
  133 + width="140">
  134 + </el-table-column>
  135 + <el-table-column
  136 + prop="statusMsg"
  137 + label="海关状态"
  138 + width="120">
  139 + </el-table-column>
  140 + <el-table-column
  141 + fixed="right"
  142 + label="操作"
  143 + width="200">
  144 + <template slot-scope="scope">
  145 + <el-button @click="returnlist(scope.row)" type="text" size="small">查看</el-button>
  146 + <el-button @click="sendstying(scope.row,2)" type="text" size="small">申报</el-button>
  147 + <el-button @click="sendstying(scope.row,5)" type="text" size="small">修改</el-button>
  148 + <el-button @click="sendstying(scope.row,3)" type="text" size="small">删除</el-button>
  149 + </template>
  150 + </el-table-column>
  151 + </el-table>
  152 + </el-row>
  153 + <el-row :gutter="10">
  154 + <div class="block">
  155 + <el-pagination
  156 + @size-change="handleSizeChange"
  157 + @current-change="handleCurrentChange"
  158 + :current-page="query.pageNum"
  159 + :page-sizes="[100, 200, 300, 400]"
  160 + :page-size="query.pageSize"
  161 + layout="total, sizes, prev, pager, next, jumper"
  162 + :total="total">
  163 + </el-pagination>
  164 + </div>
  165 + </el-row>
  166 + <el-row :gutter="10">
  167 + <el-dialog
  168 + title="回执列表"
  169 + :visible.sync="returnVisible"
  170 + width="55%"
  171 + :before-close="handleClose">
  172 + <el-table :data="gridData">
  173 + <el-table-column property="sendtime" label="操作时间" ></el-table-column>
  174 + <el-table-column property="createBy" label="操作人" ></el-table-column>
  175 + <el-table-column property="flightNo" label="航班号"></el-table-column>
  176 + <el-table-column property="flightDate" label="航班日期" ></el-table-column>
  177 + <el-table-column property="receiptContent" label="回执内容" ></el-table-column>
  178 + </el-table>
  179 + </el-dialog>
  180 + </el-row>
  181 + <el-row :gutter="10">
  182 + <el-dialog
  183 + :title="'单证信息'+textMap[dialogStatus]"
  184 + :visible.sync="dialogVisible"
  185 + width="80%"
  186 + center>
  187 + <el-form :model="form" :rules="rules" ref="form" label-width="130px">
  188 + <el-row :gutter="10">
  189 + <el-col :span="6">
  190 + <el-form-item label="航空注册器编号" prop="aircraftNo">
  191 + <el-input v-model="form.aircraftNo"></el-input>
  192 + </el-form-item>
  193 + </el-col>
  194 + <el-col :span="6">
  195 + <el-form-item label="航班号" prop="flightNo">
  196 + <el-input v-model="form.flightNo"></el-input>
  197 + </el-form-item>
  198 + </el-col>
  199 + <el-col :span="6">
  200 + <el-form-item label="航班日期" prop="flightDate" style="width: 100%;">
  201 + <div class="block">
  202 + <el-date-picker
  203 + v-model="form.flightDate"
  204 + type="datetime"
  205 + value-format="yyyy-MM-dd"
  206 + placeholder="yyyy-MM-dd"
  207 + style="width: 100%;">
  208 + </el-date-picker>
  209 + </div>
  210 + </el-form-item>
  211 + </el-col>
  212 + <el-col :span="6">
  213 + <el-form-item label="进出标识" prop="accessFlag">
  214 + <el-select v-model="form.accessFlag">
  215 + <el-option label="进港" value="A"></el-option>
  216 + <el-option label="出港" value="D"></el-option>
  217 + </el-select>
  218 + </el-form-item>
  219 + </el-col>
  220 + </el-row>
  221 + <el-row :gutter="10">
  222 + <el-col :span="6">
  223 + <el-form-item label="进出港口" prop="arrivalAirport">
  224 + <el-select v-model="form.arrivalAirport"
  225 + filterable
  226 + allow-create
  227 + default-first-option
  228 + remote
  229 + :remote-method="getAirportCode"
  230 + :loading="loading" placeholder="请选择">
  231 + <el-option
  232 + v-for="item in airportcodes"
  233 + :key="item.airportid"
  234 + :label="item.airportid"
  235 + :value="item.airportid">
  236 + <span style="float: left">{{ item.airportid }}</span>
  237 + <span style="float: right; color: #8492a6; font-size: 13px">-{{ item.airportname}}</span>
  238 + </el-option>
  239 + </el-select>
  240 + </el-form-item>
  241 + </el-col>
  242 + <el-col :span="6">
  243 + <el-form-item label="海关关区" prop="arrivalno">
  244 + <el-select v-model="form.arrivalno"
  245 + filterable
  246 + allow-create
  247 + default-first-option
  248 + remote
  249 + :remote-method="getCustomCode"
  250 + :loading="loading" placeholder="请选择">
  251 + <el-option
  252 + v-for="item in customcodes"
  253 + :key="item.customcode"
  254 + :label="item.customcode"
  255 + :value="item.customcode">
  256 + <span style="float: left">{{ item.customcode }}</span>
  257 + <span style="float: right; color: #8492a6; font-size: 13px">-{{ item.customname }}</span>
  258 + </el-option>
  259 + </el-select>
  260 + </el-form-item>
  261 + </el-col>
  262 + <el-col :span="6">
  263 + <el-form-item label="进出境时间" prop="arrivaldatetime" style="width: 100%;">
  264 + <el-date-picker
  265 + v-model="form.arrivaldatetime"
  266 + type="datetime"
  267 + value-format="yyyy-MM-dd HH:mm:ss"
  268 + placeholder="yyyy-MM-dd HH:mm:ss"
  269 + style="width: 100%;">
  270 + </el-date-picker>
  271 + </el-form-item>
  272 + </el-col>
  273 + <el-col :span="6">
  274 + <el-form-item label="机组人数" prop="aircrewSum">
  275 + <el-input v-model="form.aircrewSum"></el-input>
  276 + </el-form-item>
  277 + </el-col>
  278 + </el-row>
  279 + <el-row :guter="10">
  280 + <el-col :span="6">
  281 + <el-form-item label="国际旅客人数" prop="interPassengerSum">
  282 + <el-input v-model="form.interPassengerSum"></el-input>
  283 + </el-form-item>
  284 + </el-col>
  285 + <el-col :span="6">
  286 + <el-form-item label="国际行李件数" prop="interBaggageNum">
  287 + <el-input v-model="form.interBaggageNum"></el-input>
  288 + </el-form-item>
  289 + </el-col>
  290 + <el-col :span="6">
  291 + <el-form-item label="货邮件数" prop="goodsNum">
  292 + <el-input v-model="form.goodsNum"></el-input>
  293 + </el-form-item>
  294 + </el-col>
  295 + <el-col :span="6">
  296 + <el-form-item label="货邮重量(千克)" prop="goodsQuantity">
  297 + <el-input v-model="form.goodsQuantity"></el-input>
  298 + </el-form-item>
  299 + </el-col>
  300 + </el-row>
  301 + <el-row :guter="10">
  302 + <el-col :span="6">
  303 + <el-form-item label="是否有健康异常" prop="remark">
  304 + <el-select v-model="form.remark">
  305 + <el-option label="是" value="T"></el-option>
  306 + <el-option label="否" value="F"></el-option>
  307 + </el-select>
  308 + </el-form-item>
  309 + </el-col>
  310 + <el-col :span="6">
  311 + <el-form-item label="是否发现病媒生物" prop="remark1">
  312 + <el-select v-model="form.remark2">
  313 + <el-option label="是" value="T"></el-option>
  314 + <el-option label="否" value="F"></el-option>
  315 + </el-select>
  316 + </el-form-item>
  317 + </el-col>
  318 + <el-col :span="6">
  319 + <el-form-item label="是否发现外来有害生物" prop="remark2">
  320 + <el-select v-model="form.remark2">
  321 + <el-option label="是" value="T"></el-option>
  322 + <el-option label="否" value="F"></el-option>
  323 + </el-select>
  324 + </el-form-item>
  325 + </el-col>
  326 + <el-col :span="6">
  327 + <el-form-item label="是否有有效灭蚊证明" prop="remark3">
  328 + <el-select v-model="form.remark3">
  329 + <el-option label="是" value="T"></el-option>
  330 + <el-option label="否" value="F"></el-option>
  331 + </el-select>
  332 + </el-form-item>
  333 + </el-col>
  334 + </el-row>
  335 + <el-row :guter="10">
  336 + <el-col :span="18">
  337 + <el-form-item label="备注">
  338 + <el-input v-model="form.meno"></el-input>
  339 + </el-form-item>
  340 + </el-col>
  341 + <el-col :span="6">
  342 + <el-form-item label="">
  343 + <el-button @click="dialogVisible=false">取消</el-button>
  344 + <el-button type="primary" @click="dialogStatus==='create'?createData('form'):updateData('form')">暂存</el-button>
  345 + </el-form-item>
  346 + </el-col>
  347 + </el-row>
  348 + </el-form>
  349 + <el-divider content-position="left"><span style="color: #1d8ce0">机组人员信息</span>
  350 + <el-divider direction="vertical"></el-divider>
  351 + <el-button type="primary" @click="addBillperson">新增机组人员</el-button>
  352 + <el-divider direction="vertical"></el-divider></el-divider>
  353 +
  354 + <el-table
  355 + :data="tableChldren"
  356 + style="width: 80%;margin-left: 75px;margin-top: 10px"
  357 + row-key="autoId"
  358 + stripe
  359 + border>
  360 + <el-table-column prop="name" label="姓名" />
  361 + <el-table-column width="80" prop="gender" label="性别">
  362 + <template slot-scope="scope">
  363 + {{ scope.row.gender === 'M' ? '男' : '女' }}
  364 + </template>
  365 + </el-table-column>
  366 + <el-table-column width="80" prop="nationality" label="国籍" />
  367 + <el-table-column label="职务">
  368 + <template slot-scope="scope">
  369 + {{ {
  370 + '1': '航线机长',
  371 + '2': '副驾驶',
  372 + '3': '乘务长',
  373 + '4': '安全员',
  374 + '5': '乘务员',
  375 + '6': '机械师',
  376 + '7': '随行人员',
  377 + '8': '工程师',
  378 + '9': '装载员',
  379 + '10': '押运员',
  380 + '11': '其它随机人员'
  381 + }[scope.row.gareer] || scope.row.gareer }}
  382 + </template>
  383 + </el-table-column>
  384 + <el-table-column prop="certType" :formatter="formatType" label="证件类型" />
  385 + <el-table-column prop="ceterNo" label="证件号" />
  386 + <el-table-column
  387 + fixed="right"
  388 + label="操作"
  389 + width="50">
  390 + <template slot-scope="scope">
  391 + <el-button @click.native.prevent="deleteRow(scope.$index, tableChldren)" type="text" size="small">删除</el-button>
  392 + </template>
  393 + </el-table-column>
  394 + </el-table>
  395 + </el-dialog>
  396 + <el-dialog title="机组人员添加" :visible.sync="dialogFormVisible" width="70%"
  397 + center>
  398 + <el-form :model="billperson" :rules="rules" ref="billperson" label-width="100px">
  399 + <el-row :gutter="10">
  400 + <el-col :span="6">
  401 + <el-form-item label="姓名" prop="name">
  402 + <el-input v-model="billperson.name"></el-input>
  403 + </el-form-item>
  404 + </el-col>
  405 + <el-col :span="6">
  406 + <el-form-item label="性别" prop="gender">
  407 + <el-select v-model="billperson.gender">
  408 + <el-option label="男" value="M"></el-option>
  409 + <el-option label="女" value="F"></el-option>
  410 + </el-select>
  411 + </el-form-item>
  412 + </el-col>
  413 + <el-col :span="6">
  414 + <el-form-item label="国籍" prop="nationality">
  415 + <el-select v-model="billperson.nationality"
  416 + filterable
  417 + @click.native="getCountry"
  418 + @change="selectChange"
  419 + default-first-option
  420 + :loading="loading" placeholder="请选择"
  421 + style="text-transform:uppercase">
  422 + <el-option
  423 + v-for="item in countryOptions"
  424 + :key="item.countryid"
  425 + :label="item.countryid+'-'+item.countrydescchn"
  426 + :value="item.countryid">
  427 + <span style="float: left">{{ item.countryid }}</span>
  428 + <span style="float: right; color: #8492a6; font-size: 13px">{{ item.countrydescchn }}</span>
  429 + </el-option>
  430 + </el-select>
  431 + </el-form-item>
  432 + </el-col>
  433 + <el-col :span="6">
  434 + <el-form-item label="职务" prop="gareer">
  435 + <el-select v-model="billperson.gareer" placeholder="请选择">
  436 + <el-option label="1-航线机长" value="1"></el-option>
  437 + <el-option label="2-副驾驶" value="2"></el-option>
  438 + <el-option label="3-乘务长" value="3"></el-option>
  439 + <el-option label="4-安全员" value="4"></el-option>
  440 + <el-option label="5-乘务员" value="5"></el-option>
  441 + <el-option label="6-机械师" value="6"></el-option>
  442 + <el-option label="7-随行人员" value="7"></el-option>
  443 + <el-option label="8-工程师" value="8"></el-option>
  444 + <el-option label="9-装载员" value="9"></el-option>
  445 + <el-option label="10-押运员" value="10"></el-option>
  446 + <el-option label="11-其它随机人员" value="11"></el-option>
  447 + </el-select>
  448 + </el-form-item>
  449 + </el-col>
  450 + <el-col :span="6">
  451 + <el-form-item label="证件类型" prop="certType">
  452 + <el-select v-model="billperson.certType"
  453 + filterable
  454 + @click.native="getCreden"
  455 + :loading="loading" placeholder="请选择">
  456 + <el-option
  457 + v-for="item in certOptions"
  458 + :key="item.serialno"
  459 + :label="item.serialno+'-'+item.credenname"
  460 + :value="item.serialno">
  461 + <span style="float: left">{{ item.serialno }}</span>
  462 + <span style="float: right; color: #8492a6; font-size: 13px">{{ item.credenname }}</span>
  463 + </el-option>
  464 + </el-select>
  465 + </el-form-item>
  466 + </el-col>
  467 + <el-col :span="6">
  468 + <el-form-item label="证件号码" prop="ceterNo">
  469 + <el-input v-model="billperson.ceterNo" placeholder="请输入"></el-input>
  470 + </el-form-item>
  471 + </el-col>
  472 + <el-col :span="6">
  473 + <el-form-item label="备注" prop="meno">
  474 + <el-input v-model="billperson.meno" placeholder="请输入"></el-input>
  475 + </el-form-item>
  476 + </el-col>
  477 + <el-col :span="6">
  478 + <el-form-item>
  479 + <el-button type="primary" @click="addRow('billperson')">添加</el-button>
  480 + </el-form-item>
  481 + </el-col>
  482 + </el-row>
  483 +
  484 + </el-form>
  485 + </el-dialog>
  486 + </el-row>
  487 + </div>
  488 +</template>
  489 +<script>
  490 + import {
  491 + insertSelectiveBill,
  492 + selectBillLists,
  493 + selectByairportcode,
  494 + selectBycustomcode,
  495 + selectReturnMsgList, sendBillSdeclare, updateByPrimaryKeySelectiveBill
  496 + } from "../../api/transport/transport2.0";
  497 + import {selectCountry, selectCreden} from "../../api/transport";
  498 +
  499 + export default{
  500 + data(){
  501 + return{
  502 + certOptions:[],
  503 + countryOptions:[],
  504 + countryid:'',
  505 + dialogFormVisible:false,
  506 + tableChldren:[],
  507 + dialogVisible: false,
  508 + dialogStatus:'',
  509 + textMap:{
  510 + update: '编辑',
  511 + create: '新增'
  512 + },
  513 + tableData:[],
  514 + expandedRowKeys: [],
  515 + query:{
  516 + aircraftNo:'',
  517 + flightNo:'',
  518 + starttime:'',
  519 + endtime:'',
  520 + pageNum:0,
  521 + pageSize:10,
  522 + },
  523 + form: {
  524 + uuid: '',
  525 + aircraftNo: '',
  526 + flightNo: '',
  527 + flightDate: '', // Use JavaScript Date object
  528 + accessFlag: 'A',
  529 + departureAirport: '',
  530 + departuredatetime: '', // Use JavaScript Date object
  531 + departureno: '',
  532 + arrivalAirport: '',
  533 + arrivaldatetime: '', // Use JavaScript Date object
  534 + arrivalno: '',
  535 + aircrewSum: 0,
  536 + interPassengerSum: 0,
  537 + localePassengerSum: 0,
  538 + interBaggageNum: 0,
  539 + localeBaggageNum: 0,
  540 + goodsNum: 0,
  541 + goodsQuantity: 0,
  542 + cargoBillNum: 0,
  543 + passengerPage: 0,
  544 + aircrewBillNum: 0,
  545 + aircrewCargoBillNum: 0,
  546 + arrivalPosition: '',
  547 + bussinessType: '',
  548 + messageid: '',
  549 + status: '',
  550 + statusMsg: '',
  551 + meno: '',
  552 + createTime: '', // Use JavaScript Date object
  553 + createBy: '',
  554 + updateTime: '', // Use JavaScript Date object
  555 + updateBy: '',
  556 + isDelete: '',
  557 + remark: 'F',
  558 + remark1: 'F',
  559 + remark2: 'F',
  560 + remark3: 'F',
  561 + billpersonList: [] // Array of objects that represent the AIR_BILLPERSON model
  562 + },
  563 + billperson: {
  564 + autoId: '',
  565 + name: '',
  566 + gender: '',
  567 + gareer: '', // Note: This might be a typo in the original Java class. It should probably be "career".
  568 + nationality: '',
  569 + certType: '',
  570 + ceterNo: '', // Note: This might also be a typo. It should probably be "centerNo" or "certNo".
  571 + createTime: '', // Use JavaScript Date object
  572 + createBy: '',
  573 + updateTime: '', // Use JavaScript Date object
  574 + updateBy: '',
  575 + meno: '',
  576 + isDelete: '0',
  577 + billsId: ''
  578 + },
  579 + flightdate:['2021-11-17', '2024-12-24'],
  580 + pickerOptions: {
  581 + shortcuts: [{
  582 + text: '最近一周',
  583 + onClick(picker) {
  584 + const end = new Date();
  585 + const start = new Date();
  586 + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  587 + picker.$emit('pick', [start, end]);
  588 + }
  589 + }, {
  590 + text: '最近一个月',
  591 + onClick(picker) {
  592 + const end = new Date();
  593 + const start = new Date();
  594 + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  595 + picker.$emit('pick', [start, end]);
  596 + }
  597 + }, {
  598 + text: '最近三个月',
  599 + onClick(picker) {
  600 + const end = new Date();
  601 + const start = new Date();
  602 + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  603 + picker.$emit('pick', [start, end]);
  604 + }
  605 + }]
  606 + },
  607 + total:0,
  608 + returnVisible:false,
  609 + gridData:[],
  610 + customcodes:[],
  611 + airportcodes:[],
  612 + loading:false,
  613 + rules: {
  614 + aircraftNo: [
  615 + { required: true, message: '航空注册器编号不可为空', trigger: 'blur' }
  616 + ],
  617 + flightNo: [
  618 + { required: true, message: '航班号不可为空', trigger: 'blur' }
  619 + ],
  620 + flightDate: [
  621 + { required: true, message: '航班日期不可为空', trigger: 'blur' }
  622 + ],
  623 + arrivalAirport: [
  624 + { required: true, message: '进出港口不可为空', trigger: 'blur' }
  625 + ],
  626 + arrivalno: [
  627 + { required: true, message: '海关关区不可为空', trigger: 'blur' }
  628 + ],
  629 + arrivaldatetime: [
  630 + { required: true, message: '进出境时间不可为空', trigger: 'blur' }
  631 + ],
  632 + aircrewSum: [
  633 + { required: true, message: '机组人数不可为空', trigger: 'blur' }
  634 + ],
  635 + interPassengerSum: [
  636 + { required: true, message: '国际旅客不可为空', trigger: 'blur' }
  637 + ],
  638 + interBaggageNum: [
  639 + { required: true, message: '国际行李件数不可为空', trigger: 'blur' }
  640 + ],
  641 + name: [
  642 + { required: true, message: '机组人员姓名不可为空', trigger: 'blur' }
  643 + ],
  644 + nationality: [
  645 + { required: true, message: '机组人员国籍不可为空', trigger: 'blur' }
  646 + ],
  647 + gender: [
  648 + { required: true, message: '机组人员性别不可为空', trigger: 'blur' }
  649 + ],
  650 + gareer: [
  651 + { required: true, message: '机组人员职务不可为空', trigger: 'blur' }
  652 + ],
  653 + certType: [
  654 + { required: true, message: '机组人员类型不可为空', trigger: 'blur' }
  655 + ],
  656 + ceterNo: [
  657 + { required: true, message: '机组人员证件号不可为空', trigger: 'blur' }
  658 + ],
  659 + },
  660 + }
  661 + },
  662 + methods:{
  663 + addBillperson(){
  664 + this.dialogFormVisible = true;
  665 + },
  666 + addRow(formName) {
  667 + this.$refs[formName].validate((valid) => {
  668 + if (valid) {
  669 + const newMember = {
  670 + autoId: this.tableChldren.length > 0 ? this.tableChldren[this.tableChldren.length - 1].autoId + 1 : 1,
  671 + name: this.billperson.name,
  672 + gender: this.billperson.gender,
  673 + nationality: this.billperson.nationality,
  674 + gareer: this.billperson.gareer,
  675 + certType: this.billperson.certType,
  676 + ceterNo: this.billperson.ceterNo,
  677 + meno:this.billperson.meno,
  678 + createTime: '', // Use JavaScript Date object
  679 + createBy: '',
  680 + updateTime: '', // Use JavaScript Date object
  681 + updateBy: '',
  682 + isDelete: '0',
  683 + billsId: ''
  684 + };
  685 + this.tableChldren.push(newMember);
  686 + this.resetForm();
  687 + this.dialogFormVisible = false;
  688 + } else {
  689 + return false;
  690 + }
  691 + });
  692 + },
  693 + resetForm() {
  694 + this.billperson.name = '';
  695 + this.billperson.gender = '';
  696 + this.billperson.nationality = '';
  697 + this.billperson.gareer = '';
  698 + this.billperson.certType = '';
  699 + this.billperson.ceterNo = '';
  700 + },
  701 + deleteRow(index, rows) {
  702 + rows.splice(index, 1);
  703 + },
  704 + //暂存新增
  705 + createData(formName){
  706 + this.$refs[formName].validate((valid) => {
  707 + if (valid) {
  708 + this.form.departuredatetime=this.form.arrivaldatetime;
  709 + this.form.departureAirport=this.form.arrivalAirport;
  710 + insertSelectiveBill(this.form).then(res =>{
  711 + let response=res.data;
  712 + if(response.code=='200'){
  713 + this.dialogVisible=false;
  714 + this.$message.success(response.msg);
  715 + this.getList();
  716 + }else{
  717 + this.$message.error(response.msg)
  718 + }
  719 + });
  720 + } else {
  721 + return false;
  722 + }
  723 + });
  724 + },
  725 + //暂存更新
  726 + updateData(formName){
  727 + this.$refs[formName].validate((valid) => {
  728 + if (valid) {
  729 + this.form.departuredatetime=this.form.arrivaldatetime;
  730 + this.form.departureAirport=this.form.arrivalAirport;
  731 + updateByPrimaryKeySelectiveBill(this.form).then(res =>{
  732 + let response=res.data;
  733 + if(response.code=='200'){
  734 + this.dialogVisible=false;
  735 + Object.assign(this.$data, this.$options.data());
  736 + this.$message.success(response.msg);
  737 + this.getList();
  738 + }else{
  739 + this.$message.error(response.msg)
  740 + }
  741 + });
  742 + } else {
  743 + return false;
  744 + }
  745 + });
  746 + },
  747 + selectList(){
  748 + if(this.flightdate !== null && this.flightdate !== ""){
  749 + this.query.starttime = this.flightdate[0];
  750 + this.query.endtime = this.flightdate[1];
  751 + }else{
  752 + return this.$message.error('请选取时间区间')
  753 + }
  754 + selectBillLists(this.query).then((response) => {
  755 + const res = response.data
  756 + if (res.code !== '200') {
  757 + this.loading = false;
  758 + return this.$message.error('获取消息收发记录,失败!')
  759 + }
  760 + // 获取列表数据
  761 + this.tableData = res.data.list
  762 + //this.expandedRowKeys = this.tableData.map(item => item.uuid);
  763 + // 获取列表的总记录数
  764 + this.total = res.data.total
  765 + this.loading = false;
  766 + this.$message.success('获取消息收发记录,成功!');
  767 + }).catch(error => {
  768 + // 关闭加载
  769 + this.$message.error(error.toString())
  770 + })
  771 + },
  772 + addForm(){
  773 + this.dialogVisible=true;
  774 + this.dialogStatus='create';
  775 + this.form={
  776 + uuid: '',
  777 + aircraftNo: '',
  778 + flightNo: '',
  779 + flightDate: '', // Use JavaScript Date object
  780 + accessFlag: 'A',
  781 + departureAirport: '',
  782 + departuredatetime: '', // Use JavaScript Date object
  783 + departureno: '',
  784 + arrivalAirport: '',
  785 + arrivaldatetime: '', // Use JavaScript Date object
  786 + arrivalno: '',
  787 + aircrewSum: 0,
  788 + interPassengerSum: 0,
  789 + localePassengerSum: 0,
  790 + interBaggageNum: 0,
  791 + localeBaggageNum: 0,
  792 + goodsNum: 0,
  793 + goodsQuantity: 0,
  794 + cargoBillNum: 0,
  795 + passengerPage: 0,
  796 + aircrewBillNum: 0,
  797 + aircrewCargoBillNum: 0,
  798 + arrivalPosition: '',
  799 + bussinessType: '',
  800 + messageid: '',
  801 + status: '',
  802 + statusMsg: '',
  803 + meno: '',
  804 + createTime: '', // Use JavaScript Date object
  805 + createBy: '',
  806 + updateTime: '', // Use JavaScript Date object
  807 + updateBy: '',
  808 + isDelete: '',
  809 + remark: 'F',
  810 + remark1: 'F',
  811 + remark2: 'F',
  812 + remark3: 'F',
  813 + billpersonList: [] // Array of objects that represent the AIR_BILLPERSON model
  814 + };
  815 + this.tableChldren=this.form.billpersonList;
  816 + },
  817 + ediForm(row){
  818 + this.dialogVisible=true;
  819 + this.dialogStatus='update';
  820 + this.form=row;
  821 + this.tableChldren=row.billpersonList;
  822 + },
  823 + sendstying(row,FunctionCode){
  824 + const params = {
  825 + row: row,
  826 + FunctionCode: FunctionCode
  827 + };
  828 + sendBillSdeclare(params).then(res =>{
  829 + let response=res.data;
  830 + if(response.code=='200'){
  831 + this.selectList();
  832 + this.$message.success(response.msg)
  833 + }else{
  834 + this.$message.error(response.msg)
  835 + }
  836 + });
  837 + },
  838 + formatType: function(row,column){
  839 + return row.certType=='06'?'一次有效台湾居民来往大陆通行证':row.certType=='11'?'外交护照':row.certType=='12'?'公务护照'
  840 + :row.certType=='13'?'因公普通护照':row.certType=='14'?'普通护照':row.certType=='15'?'中华人民共和国旅行证'
  841 + :row.certType=='16'?'五年有效台湾居民往来大陆通行证':row.certType=='17'?'海员证':row.certType=='20'?'中华人民共和国出入境通行证'
  842 + :row.certType=='21'?'前往港澳通行证(16页,多次有效)':row.certType=='22'?'前往港澳通行证(8页,一次有效)'
  843 + :row.certType=='23'?'前往港澳通行证':row.certType=='24'?'港澳同胞回乡证或港澳居民来往内地通行证'
  844 + :row.certType=='25'?'大陆居民来往台湾通行证':row.certType=='30'?'外国人出入境通行证':row.certType=='38'?'中华人民共和国回国证明'
  845 + :row.certType=='70'?'香港特别行政区护照':row.certType=='71'?'澳门特别行政区护照'
  846 + :row.certType=='72'?'因公往来香港澳门特别行政区通行证(官员)'
  847 + :row.certType=='73'?'因公往来香港澳门特别行政区通行证(普通)':row.certType=='74'?'中华人民共和国居民身份证':row.certType=='75'?'其他证件'
  848 + :row.certType=='98'?'其他因私证件(包括联合国通行证等)'
  849 + :row.certType=='99'?'其他因私证件(包括难民证等)':'';
  850 + },
  851 + handleSizeChange(val) {
  852 + this.query.pageSize=val;
  853 + this.selectList();
  854 + },
  855 + handleCurrentChange(val) {
  856 + this.query.pageNum=val;
  857 + this.selectList();
  858 + },
  859 + //查询回执列表
  860 + returnlist(row){
  861 + this.gridData=[];
  862 + let params={messageid:row.messageid};
  863 + selectReturnMsgList(params).then(res=>{
  864 + let response=res.data.data;
  865 + this.gridData=response;
  866 + });
  867 + this.returnVisible=true;
  868 + },
  869 + handleClose() {
  870 + this.returnVisible=false;
  871 + },
  872 + //获取关区代码
  873 + getCustomCode:function(query){
  874 + this.customcodes=[];
  875 + let params={customcode:query};
  876 + this.loading = true;
  877 + selectBycustomcode(params).then(res =>{
  878 + if (res !== '') {
  879 + setTimeout(() => {
  880 + this.loading = false;
  881 + this.customcodes=res.data.data;
  882 + }, 200);
  883 + } else {
  884 + this.customcodes = [];
  885 + }
  886 +
  887 + });
  888 + },
  889 + //获取机场代码
  890 + getAirportCode:function(query){
  891 + this.airportcodes=[];
  892 + let params={airportid:query};
  893 + this.loading = true;
  894 + selectByairportcode(params).then(res =>{
  895 + if (res !== '') {
  896 + setTimeout(() => {
  897 + this.loading = false;
  898 + this.airportcodes=res.data.data;
  899 + }, 200);
  900 + } else {
  901 + this.airportcodes = [];
  902 + }
  903 +
  904 + });
  905 + },
  906 + /*获取国籍*/
  907 + getCountry:function(query){
  908 + this.countryOptions=[];
  909 + let params={countryid:query};
  910 + this.loading = true;
  911 + selectCountry(params).then(res =>{
  912 + if (res!=null) {
  913 + console.log(res.data.data)
  914 + setTimeout(() => {
  915 + this.loading = false;
  916 + this.countryOptions=res.data.data;
  917 + }, 200);
  918 + } else {
  919 + this.countryOptions = [];
  920 + }
  921 +
  922 + });
  923 + },
  924 + selectChange:function(val){
  925 + console.log(val)
  926 + this.$emit('tellFarther',val);
  927 + },
  928 + /*获取证件*/
  929 + getCreden:function(query){
  930 + this.certOptions=[];
  931 + let params={serialno:query};
  932 + this.loading = true;
  933 + selectCreden(params).then(res =>{
  934 + if (res!=null) {
  935 + console.log(res.data.data)
  936 + setTimeout(() => {
  937 + this.loading = false;
  938 + this.certOptions=res.data.data;
  939 + }, 200);
  940 + } else {
  941 + this.certOptions = [];
  942 + }
  943 +
  944 + });
  945 + },
  946 + },
  947 + mounted() {
  948 + this.expandedRowKeys = this.tableData.map(item => item.uuid);
  949 + }
  950 + }
  951 +</script>
@@ -20,19 +20,20 @@ @@ -20,19 +20,20 @@
20 <el-col :span="8"> 20 <el-col :span="8">
21 <div class="block"> 21 <div class="block">
22 <el-date-picker 22 <el-date-picker
23 - v-model="query.flightdate" 23 + v-model="flightdate"
24 type="daterange" 24 type="daterange"
25 :picker-options="pickerOptions" 25 :picker-options="pickerOptions"
26 range-separator="至" 26 range-separator="至"
27 start-placeholder="开始日期" 27 start-placeholder="开始日期"
28 end-placeholder="结束日期" 28 end-placeholder="结束日期"
  29 + value-format="yyyy-MM-dd"
29 size="medium" 30 size="medium"
30 align="right"> 31 align="right">
31 </el-date-picker> 32 </el-date-picker>
32 </div> 33 </div>
33 </el-col> 34 </el-col>
34 <el-col :span="2"> 35 <el-col :span="2">
35 - <el-button size="medium" type="primary" plain>查询</el-button> 36 + <el-button size="medium" type="primary" @click="selectList" plain>查询</el-button>
36 </el-col> 37 </el-col>
37 <el-col :span="2"> 38 <el-col :span="2">
38 <el-button size="medium" type="success" @click="addForm()" plain>新增</el-button> 39 <el-button size="medium" type="success" @click="addForm()" plain>新增</el-button>
@@ -44,7 +45,15 @@ @@ -44,7 +45,15 @@
44 border 45 border
45 style="width: 100%"> 46 style="width: 100%">
46 <el-table-column 47 <el-table-column
47 - fixed 48 + align="center"
  49 + fixed="left"
  50 + label="信息操作"
  51 + width="80">
  52 + <template slot-scope="scope">
  53 + <el-button @click="ediForm(scope.row)" type="text" size="small">编辑</el-button>
  54 + </template>
  55 + </el-table-column>
  56 + <el-table-column
48 prop="messageid" 57 prop="messageid"
49 label="编号" 58 label="编号"
50 width="320"> 59 width="320">
@@ -67,21 +76,22 @@ @@ -67,21 +76,22 @@
67 <el-table-column 76 <el-table-column
68 prop="flightdate" 77 prop="flightdate"
69 label="航班日期" 78 label="航班日期"
70 - width="200"> 79 + width="100">
71 </el-table-column> 80 </el-table-column>
72 <el-table-column 81 <el-table-column
73 - prop="status" 82 + prop="statusmsg"
74 label="海关状态" 83 label="海关状态"
75 width="120"> 84 width="120">
76 </el-table-column> 85 </el-table-column>
77 <el-table-column 86 <el-table-column
78 fixed="right" 87 fixed="right"
79 label="操作" 88 label="操作"
80 - width="140"> 89 + width="200">
81 <template slot-scope="scope"> 90 <template slot-scope="scope">
82 - <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>  
83 - <el-button type="text" size="small">编辑</el-button>  
84 - <el-button type="text" size="small">删除</el-button> 91 + <el-button @click="returnlist(scope.row)" type="text" size="small">查看</el-button>
  92 + <el-button @click="sendstying(scope.row,2)" type="text" size="small">申报</el-button>
  93 + <el-button @click="sendstying(scope.row,5)" type="text" size="small">修改</el-button>
  94 + <el-button @click="sendstying(scope.row,3)" type="text" size="small">删除</el-button>
85 </template> 95 </template>
86 </el-table-column> 96 </el-table-column>
87 </el-table> 97 </el-table>
@@ -91,11 +101,11 @@ @@ -91,11 +101,11 @@
91 <el-pagination 101 <el-pagination
92 @size-change="handleSizeChange" 102 @size-change="handleSizeChange"
93 @current-change="handleCurrentChange" 103 @current-change="handleCurrentChange"
94 - :current-page="currentPage4" 104 + :current-page="query.pageNum"
95 :page-sizes="[100, 200, 300, 400]" 105 :page-sizes="[100, 200, 300, 400]"
96 - :page-size="100" 106 + :page-size="query.pageSize"
97 layout="total, sizes, prev, pager, next, jumper" 107 layout="total, sizes, prev, pager, next, jumper"
98 - :total="400"> 108 + :total="total">
99 </el-pagination> 109 </el-pagination>
100 </div> 110 </div>
101 </el-row> 111 </el-row>
@@ -104,11 +114,11 @@ @@ -104,11 +114,11 @@
104 :visible.sync="dialogVisible" 114 :visible.sync="dialogVisible"
105 width="80%" 115 width="80%"
106 center> 116 center>
107 - <el-form :model="form" label-width="130px">  
108 - <el-divider content-position="left">报给单位</el-divider> 117 + <el-form :model="form" :rules="rules" ref="form" label-width="130px">
  118 + <el-divider content-position="left"><span style="color: #1d8ce0">报给单位</span></el-divider>
109 <el-row :gutter="20"> 119 <el-row :gutter="20">
110 <el-col :span="6"> 120 <el-col :span="6">
111 - <el-form-item label="海关关区"> 121 + <el-form-item label="海关关区" prop="customcode">
112 <el-select v-model="form.customcode" 122 <el-select v-model="form.customcode"
113 filterable 123 filterable
114 allow-create 124 allow-create
@@ -128,52 +138,99 @@ @@ -128,52 +138,99 @@
128 </el-form-item> 138 </el-form-item>
129 </el-col> 139 </el-col>
130 </el-row> 140 </el-row>
131 - <el-divider content-position="left">航空器信息</el-divider> 141 + <el-divider content-position="left"><span style="color: #1d8ce0">航空器信息</span></el-divider>
132 <el-row :gutter="20"> 142 <el-row :gutter="20">
133 <el-col :span="6"> 143 <el-col :span="6">
134 - <el-form-item label="航空器注册编号"> 144 + <el-form-item label="航空器注册编号" prop="aircraftno">
135 <el-input v-model="form.aircraftno"></el-input> 145 <el-input v-model="form.aircraftno"></el-input>
136 </el-form-item> 146 </el-form-item>
137 </el-col> 147 </el-col>
138 <el-col :span="6"> 148 <el-col :span="6">
139 <el-form-item label="注册海关关区"> 149 <el-form-item label="注册海关关区">
140 - <el-input v-model="form.registeredcustom"></el-input> 150 + <el-select v-model="form.registeredcustom"
  151 + filterable
  152 + allow-create
  153 + default-first-option
  154 + remote
  155 + :remote-method="getCustomCode2"
  156 + :loading="loading" placeholder="请选择">
  157 + <el-option
  158 + v-for="item in customcodes2"
  159 + :key="item.customcode"
  160 + :label="item.customcode"
  161 + :value="item.customcode">
  162 + <span style="float: left">{{ item.customcode }}</span>
  163 + <span style="float: right; color: #8492a6; font-size: 13px">-{{ item.customname }}</span>
  164 + </el-option>
  165 + </el-select>
141 </el-form-item> 166 </el-form-item>
142 </el-col> 167 </el-col>
143 <el-col :span="6"> 168 <el-col :span="6">
144 <el-form-item label="航空器备案类型"> 169 <el-form-item label="航空器备案类型">
145 - <el-input v-model="form.aircrafttype"></el-input> 170 + <el-select v-model="form.aircrafttype" placeholder="请选择">
  171 + <el-option label="通用航空器" value="1"></el-option>
  172 + <el-option label="航线航空器" value="2"></el-option>
  173 + </el-select>
146 </el-form-item> 174 </el-form-item>
  175 +
147 </el-col> 176 </el-col>
148 </el-row> 177 </el-row>
149 - <el-divider content-position="left">在港申报信息</el-divider> 178 + <el-divider content-position="left"><span style="color: #1d8ce0">在港申报信息</span></el-divider>
150 <el-row :gutter="20"> 179 <el-row :gutter="20">
151 <el-col :span="6"> 180 <el-col :span="6">
152 - <el-form-item label="进境(港)航班号"> 181 + <el-form-item label="进境(港)航班号" prop="flightno">
153 <el-input v-model="form.flightno"></el-input> 182 <el-input v-model="form.flightno"></el-input>
154 </el-form-item> 183 </el-form-item>
155 </el-col> 184 </el-col>
156 <el-col :span="6"> 185 <el-col :span="6">
157 - <el-form-item label="航班日期">  
158 - <el-input v-model="form.flightdate"></el-input> 186 + <el-form-item label="航班日期" prop="flightdate" style="width: 100%;">
  187 + <div class="block">
  188 + <el-date-picker
  189 + v-model="form.flightdate"
  190 + value-format="yyyy-MM-dd"
  191 + type="date"
  192 + placeholder="选择日期"
  193 + style="width: 100%;"
  194 + ></el-date-picker>
  195 + </div>
159 </el-form-item> 196 </el-form-item>
160 </el-col> 197 </el-col>
161 <el-col :span="6"> 198 <el-col :span="6">
162 - <el-form-item label="停靠港">  
163 - <el-input v-model="form.callport"></el-input> 199 + <el-form-item label="停靠港" prop="callport" style="width: 100%;">
  200 + <el-select v-model="form.callport"
  201 + filterable
  202 + allow-create
  203 + default-first-option
  204 + remote
  205 + :remote-method="getAirportCode"
  206 + :loading="loading" placeholder="请选择">
  207 + <el-option
  208 + v-for="item in airportcodes"
  209 + :key="item.airportid"
  210 + :label="item.airportid"
  211 + :value="item.airportid">
  212 + <span style="float: left">{{ item.airportid }}</span>
  213 + <span style="float: right; color: #8492a6; font-size: 13px">-{{ item.airportname}}</span>
  214 + </el-option>
  215 + </el-select>
164 </el-form-item> 216 </el-form-item>
165 </el-col> 217 </el-col>
166 <el-col :span="6"> 218 <el-col :span="6">
167 - <el-form-item label="停机位"> 219 + <el-form-item label="停机位" prop="callarea">
168 <el-input v-model="form.callarea"></el-input> 220 <el-input v-model="form.callarea"></el-input>
169 </el-form-item> 221 </el-form-item>
170 </el-col> 222 </el-col>
171 </el-row> 223 </el-row>
172 - <el-divider content-position="left">备注信息</el-divider> 224 + <el-divider content-position="left"><span style="color: #1d8ce0">备注信息</span></el-divider>
173 <el-row :gutter="20"> 225 <el-row :gutter="20">
174 <el-col :span="6"> 226 <el-col :span="6">
175 <el-form-item label="滞留原因"> 227 <el-form-item label="滞留原因">
176 - <el-input v-model="form.reasons"></el-input> 228 + <el-select v-model="form.reasons" placeholder="请选择">
  229 + <el-option label="移泊" value="1"></el-option>
  230 + <el-option label="待命" value="2"></el-option>
  231 + <el-option label="维修" value="3"></el-option>
  232 + <el-option label="其它" value="4"></el-option>
  233 + </el-select>
177 </el-form-item> 234 </el-form-item>
178 </el-col> 235 </el-col>
179 <el-col :span="6"> 236 <el-col :span="6">
@@ -187,26 +244,47 @@ @@ -187,26 +244,47 @@
187 <el-col :span="12" :offset="6"> 244 <el-col :span="12" :offset="6">
188 <el-form-item> 245 <el-form-item>
189 <el-button @click="dialogVisible=false">取消</el-button> 246 <el-button @click="dialogVisible=false">取消</el-button>
190 - <el-button type="primary">暂存</el-button> 247 + <el-button type="primary" @click="dialogStatus==='create'?createData('form'):updateData('form')">暂存</el-button>
191 </el-form-item> 248 </el-form-item>
192 </el-col> 249 </el-col>
193 </el-row> 250 </el-row>
194 </el-form> 251 </el-form>
195 </el-dialog> 252 </el-dialog>
  253 + <el-dialog
  254 + title="回执列表"
  255 + :visible.sync="returnVisible"
  256 + width="55%"
  257 + :before-close="handleClose">
  258 + <el-table :data="gridData">
  259 + <el-table-column property="sendtime" label="操作时间" ></el-table-column>
  260 + <el-table-column property="createBy" label="操作人" ></el-table-column>
  261 + <el-table-column property="flightNo" label="航班号"></el-table-column>
  262 + <el-table-column property="flightDate" label="航班日期" ></el-table-column>
  263 + <el-table-column property="receiptContent" label="回执内容" ></el-table-column>
  264 + </el-table>
  265 + </el-dialog>
196 </div> 266 </div>
197 </template> 267 </template>
198 <script> 268 <script>
199 - import {selectBycustomcode} from "../../api/transport/transport2.0"; 269 + import {selectBycustomcode,selectByairportcode,selectLists,insertSelective,updateByPrimaryKeySelective,
  270 + selectReturnMsgList,sendAircraftstaying} from "../../api/transport/transport2.0";
200 271
201 export default { 272 export default {
202 data(){ 273 data(){
203 return{ 274 return{
  275 + returnVisible:false,
204 query:{ 276 query:{
205 aircraftno:'', 277 aircraftno:'',
206 flightno:'', 278 flightno:'',
207 - flightdate:'' 279 + flightdate:'',
  280 + starttime:'',
  281 + endtime:'',
  282 + pageNum:0,
  283 + pageSize:10
208 }, 284 },
209 customcodes:[], 285 customcodes:[],
  286 + customcodes2:[],
  287 + airportcodes:[],
210 form:{ 288 form:{
211 uuid:'', 289 uuid:'',
212 customcode:'', 290 customcode:'',
@@ -224,6 +302,26 @@ @@ -224,6 +302,26 @@
224 statusmsg:'', 302 statusmsg:'',
225 messageid:'' 303 messageid:''
226 }, 304 },
  305 + rules: {
  306 + customcode: [
  307 + { required: true, message: '海关关区不可为空', trigger: 'blur' }
  308 + ],
  309 + aircraftno: [
  310 + { required: true, message: '航空器注册编号不可为空', trigger: 'blur' }
  311 + ],
  312 + flightno: [
  313 + { required: true, message: '进境(港)航班号不可为空', trigger: 'blur' }
  314 + ],
  315 + flightdate: [
  316 + { required: true, message: '航班日期不可为空', trigger: 'blur' }
  317 + ],
  318 + callport: [
  319 + { required: true, message: '停靠港不可为空', trigger: 'blur' }
  320 + ],
  321 + callarea: [
  322 + { required: true, message: '停机位不可为空', trigger: 'blur' }
  323 + ]
  324 + },
227 dialogVisible: false, 325 dialogVisible: false,
228 currentPage4: 4, 326 currentPage4: 4,
229 textMap:{ 327 textMap:{
@@ -231,6 +329,9 @@ @@ -231,6 +329,9 @@
231 create: '新增' 329 create: '新增'
232 }, 330 },
233 dialogStatus:'', 331 dialogStatus:'',
  332 + loading:false,
  333 + flightdate:'',
  334 + total:0,
234 pickerOptions: { 335 pickerOptions: {
235 shortcuts: [{ 336 shortcuts: [{
236 text: '最近一周', 337 text: '最近一周',
@@ -258,17 +359,120 @@ @@ -258,17 +359,120 @@
258 } 359 }
259 }] 360 }]
260 }, 361 },
261 - tableData: [{  
262 - messageid: 'CN_CAM006_1P2_460470678920X20211028075151',  
263 - aircraftno: 'N345UP',  
264 - flightno: '5X174',  
265 - callport: 'CGO',  
266 - flightdate: '2024-11-15',  
267 - status: '01'  
268 - }] 362 + tableData: [],
  363 + gridData:[]
269 } 364 }
270 }, 365 },
271 methods:{ 366 methods:{
  367 + sendstying(row,FunctionCode){
  368 + const params = {
  369 + row: row,
  370 + FunctionCode: FunctionCode
  371 + };
  372 + sendAircraftstaying(params).then(res =>{
  373 + let response=res.data;
  374 + if(response.code=='200'){
  375 + this.selectList();
  376 + this.$message.success(response.msg)
  377 + }else{
  378 + this.$message.error(response.msg)
  379 + }
  380 + });
  381 + },
  382 + //查询回执列表
  383 + returnlist(row){
  384 + this.gridData=[];
  385 + let params={messageid:row.messageid};
  386 + selectReturnMsgList(params).then(res=>{
  387 + let response=res.data.data;
  388 + this.gridData=response;
  389 + });
  390 + this.returnVisible=true;
  391 + },
  392 + handleClose() {
  393 + this.returnVisible=false;
  394 + },
  395 + //暂存新增
  396 + createData(formName){
  397 + this.$refs[formName].validate((valid) => {
  398 + if (valid) {
  399 + insertSelective(this.form).then(res =>{
  400 + let response=res.data;
  401 + if(response.code=='200'){
  402 + this.dialogVisible=false;
  403 + this.$message.success(response.msg)
  404 + }else{
  405 + this.$message.error(response.msg)
  406 + }
  407 + });
  408 + } else {
  409 + return false;
  410 + }
  411 + });
  412 + },
  413 + //暂存更新
  414 + updateData(formName){
  415 + this.$refs[formName].validate((valid) => {
  416 + if (valid) {
  417 + updateByPrimaryKeySelective(this.form).then(res =>{
  418 + let response=res.data;
  419 + if(response.code=='200'){
  420 + this.dialogVisible=false;
  421 + Object.assign(this.$data, this.$options.data());
  422 + this.$message.success(response.msg)
  423 + }else{
  424 + this.$message.error(response.msg)
  425 + }
  426 + });
  427 + } else {
  428 + return false;
  429 + }
  430 + });
  431 + },
  432 + //查询列表
  433 + selectList(){
  434 + if(this.flightdate !== null && this.flightdate !== ""){
  435 + this.query.starttime = this.flightdate[0];
  436 + this.query.endtime = this.flightdate[1];
  437 + }else{
  438 + return this.$message.error('请选取时间区间')
  439 + }
  440 + this.loading = true;
  441 + selectLists(this.query).then((response) => {
  442 + const res = response.data
  443 + if (res.code !== '200') {
  444 + this.loading = false;
  445 + return this.$message.error('获取消息收发记录,失败!')
  446 + }
  447 + // 获取列表数据
  448 + this.tableData = res.data.list
  449 + // 获取列表的总记录数
  450 + this.total = res.data.total
  451 + this.loading = false;
  452 + this.$message.success('获取消息收发记录,成功!');
  453 + }).catch(error => {
  454 + // 关闭加载
  455 + this.$message.error(error.toString())
  456 + })
  457 +
  458 + },
  459 + //获取机场代码
  460 + getAirportCode:function(query){
  461 + this.airportcodes=[];
  462 + let params={airportid:query};
  463 + this.loading = true;
  464 + selectByairportcode(params).then(res =>{
  465 + if (res !== '') {
  466 + setTimeout(() => {
  467 + this.loading = false;
  468 + this.airportcodes=res.data.data;
  469 + }, 200);
  470 + } else {
  471 + this.airportcodes = [];
  472 + }
  473 +
  474 + });
  475 + },
272 //获取关区代码 476 //获取关区代码
273 getCustomCode:function(query){ 477 getCustomCode:function(query){
274 this.customcodes=[]; 478 this.customcodes=[];
@@ -286,20 +490,43 @@ @@ -286,20 +490,43 @@
286 490
287 }); 491 });
288 }, 492 },
  493 + getCustomCode2:function(query){
  494 + this.customcodes2=[];
  495 + let params={customcode:query};
  496 + this.loading = true;
  497 + selectBycustomcode(params).then(res =>{
  498 + if (res !== '') {
  499 + setTimeout(() => {
  500 + this.loading = false;
  501 + this.customcodes2=res.data.data;
  502 + }, 200);
  503 + } else {
  504 + this.customcodes2 = [];
  505 + }
  506 +
  507 + });
  508 + },
289 //新增 509 //新增
290 addForm(){ 510 addForm(){
291 this.dialogVisible=true; 511 this.dialogVisible=true;
292 this.dialogStatus='create'; 512 this.dialogStatus='create';
293 }, 513 },
  514 + //编辑
  515 + ediForm(row){
  516 + this.dialogVisible=true;
  517 + this.dialogStatus='update';
  518 + this.form=row;
  519 + },
294 handleClick(row) { 520 handleClick(row) {
295 - console.log(row);  
296 }, 521 },
297 //分页 522 //分页
298 handleSizeChange(val) { 523 handleSizeChange(val) {
299 - console.log(`每页 ${val} 条`); 524 + this.query.pageSize=val;
  525 + this.selectList();
300 }, 526 },
301 handleCurrentChange(val) { 527 handleCurrentChange(val) {
302 - console.log(`当前页: ${val}`); 528 + this.query.pageNum=val;
  529 + this.selectList();
303 } 530 }
304 } 531 }
305 } 532 }