Browse Source

未查验通过旅客信息

CzRger 2 weeks ago
parent
commit
40c3217241

+ 106 - 58
src/views/guest-check-info-manage/guest-check-pass-no/detail.vue

@@ -16,7 +16,12 @@
                 <el-row>
                   <el-col :span="6">
                     <el-form-item label="查验时间" prop="name">
-                      <el-input v-model="state.form.name" />
+                      <el-date-picker
+                        type="datetime"
+                        value-format="YYYY-MM-DD HH:mm:ss"
+                        v-model="state.form.checkTime"
+                        placeholder=""
+                      />
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
@@ -35,8 +40,8 @@
                     </el-form-item>
                   </el-col>
                   <el-col :span="12">
-                    <el-form-item label="查验未通过原因" prop="xxx">
-                      <el-input v-model="state.form.xxx" type="textarea" :rows="4" />
+                    <el-form-item label="查验未通过原因" prop="checkResultSm">
+                      <el-input v-model="state.form.checkResultSm" type="textarea" :rows="4" />
                     </el-form-item>
                   </el-col>
                 </el-row>
@@ -46,13 +51,18 @@
           <cacp-group-container title="查验过程记录" v-loading="state.loading">
             <template #content>
               <el-timeline>
-                <el-timeline-item v-for="(activity, index) in activities" :key="index" type="primary" :hollow="true">
+                <el-timeline-item
+                  v-for="(activity, index) in state.form.checks"
+                  :key="index"
+                  type="primary"
+                  :hollow="true"
+                >
                   <div style="display: flex; align-items: center">
                     <div style="width: 200px">
-                      {{ activity.content }}
+                      {{ activity.checkStep }}
                     </div>
                     <div>
-                      {{ activity.timestamp }}
+                      {{ dayjs(activity.createTime).format('YYYY-MM-DD HH:mm:ss') }}
                     </div>
                   </div>
                 </el-timeline-item>
@@ -69,42 +79,56 @@
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
-                    <el-form-item label="性别" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                    <el-form-item label="性别" prop="gender">
+                      <el-select v-model="state.form.gender" placeholder="请选择" clearable>
+                        <el-option
+                          v-for="item in AppStore.getDict('lvke_sex').list"
+                          :key="item.dictValue"
+                          :label="item.dictLabel"
+                          :value="item.dictValue"
+                        />
+                      </el-select>
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
-                    <el-form-item label="年龄" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                    <el-form-item label="年龄" prop="age">
+                      <el-input v-model="state.form.age" />
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
-                    <el-form-item label="证件号码" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                    <el-form-item label="证件号码" prop="idNo">
+                      <el-input v-model="state.form.idNo" />
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
                     <el-form-item label="证件类型" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                      <!--                      <el-input v-model="state.form.xxx" />-->
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
-                    <el-form-item label="国籍" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                    <el-form-item label="国籍" prop="nationality">
+                      <el-select v-model="state.form.nationality" placeholder="请选择" clearable>
+                        <el-option
+                          v-for="item in AppStore.getDict('lvke_city').list"
+                          :key="item.dictValue"
+                          :label="item.dictLabel"
+                          :value="item.dictValue"
+                        />
+                      </el-select>
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
-                    <el-form-item label="航班/车次号" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                    <el-form-item label="航班/车次号" prop="travelNo">
+                      <el-input v-model="state.form.travelNo" />
                     </el-form-item>
                   </el-col>
                   <el-col :span="12">
                     <el-form-item label="照片" prop="xxx">
-                      <DoubleImg
-                        left="http://8.130.72.63:18077/dataset/1760153238262_011998d6-401a-46e5-bf48-1236732a50cc.jpeg"
-                        right="http://8.130.72.63:18077/dataset/1758075579710_c4acf55d-f8c6-4ac2-8249-b3b19d7ebf06.jpg"
-                        :similar="25.65"
-                      />
+                      <!--                      <DoubleImg-->
+                      <!--                        left="http://8.130.72.63:18077/dataset/1760153238262_011998d6-401a-46e5-bf48-1236732a50cc.jpeg"-->
+                      <!--                        right="http://8.130.72.63:18077/dataset/1758075579710_c4acf55d-f8c6-4ac2-8249-b3b19d7ebf06.jpg"-->
+                      <!--                        :similar="25.65"-->
+                      <!--                      />-->
                     </el-form-item>
                   </el-col>
                 </el-row>
@@ -117,32 +141,32 @@
                 <el-row>
                   <el-col :span="6">
                     <el-form-item label="出发港口" prop="name">
-                      <el-input v-model="state.form.name" />
+                      <!--                      <el-input v-model="state.form.name" />-->
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
                     <el-form-item label="通道号" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                      <!--                      <el-input v-model="state.form.xxx" />-->
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
                     <el-form-item label="场站编码" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                      <!--                      <el-input v-model="state.form.xxx" />-->
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
                     <el-form-item label="卡口类型" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                      <!--                      <el-input v-model="state.form.xxx" />-->
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
                     <el-form-item label="是否布控" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                      <!--                      <el-input v-model="state.form.xxx" />-->
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
                     <el-form-item label="采集时间" prop="xxx">
-                      <el-input v-model="state.form.xxx" />
+                      <!--                      <el-input v-model="state.form.xxx" />-->
                     </el-form-item>
                   </el-col>
                 </el-row>
@@ -151,57 +175,81 @@
           </cacp-group-container>
           <cacp-group-container title="行李物品信息" v-loading="state.loading">
             <template #content>
-              <el-table :data="state.tableData" style="width: 100%" max-height="400px">
+              <el-table :data="state.form.goods" style="width: 100%" max-height="400px">
                 <el-table-column type="index" label="序号" width="50" />
-                <el-table-column property="product.name" label="物品类别" />
-                <el-table-column property="profession" label="物品细类" />
-                <el-table-column property="name" label="物品名称" />
-                <el-table-column property="product.desc" label="物品产地" />
-                <el-table-column property="createName" label="重量(千克)" />
-                <el-table-column property="createTime" label="品牌" />
-                <el-table-column property="modification" label="规格型号" />
-                <el-table-column property="modifiTime" label="单价" />
-                <el-table-column property="modifiTime" label="币种" />
-                <el-table-column property="modifiTime" label="数量" />
-                <el-table-column property="modifiTime" label="数量单位" />
-                <el-table-column property="modifiTime" label="发票/许可证" />
+                <el-table-column property="goodCategory" label="物品类别" min-width="100" />
+                <el-table-column property="goodSubclass" label="物品细类" min-width="100" />
+                <el-table-column property="goodName" label="物品名称" min-width="100" />
+                <el-table-column property="goodPlace" label="物品产地" min-width="100" />
+                <el-table-column property="weight" label="重量(千克)" min-width="100" />
+                <el-table-column property="brand" label="品牌" min-width="100" />
+                <el-table-column property="specModel" label="规格型号" min-width="100" />
+                <el-table-column property="price" label="单价" min-width="100" />
+                <el-table-column property="currency" label="币种" min-width="100" />
+                <el-table-column property="quantity" label="数量" min-width="100" />
+                <el-table-column property="unit" label="数量单位" min-width="100" />
+                <el-table-column property="license" label="发票/许可证" min-width="100" fixed="right">
+                  <template #default="scope">
+                    <el-link
+                      v-if="scope.row.license"
+                      type="primary"
+                      @click="
+                        () => {
+                          state.imgs.list = scope.row.license.split(',')
+                          state.imgs.show = true
+                        }
+                      "
+                    >
+                      查看
+                    </el-link>
+                  </template>
+                </el-table-column>
               </el-table>
             </template>
           </cacp-group-container>
         </el-scrollbar>
       </div>
     </div>
+    <el-image-viewer
+      v-if="state.imgs.show"
+      :url-list="state.imgs.list"
+      :initial-index="0"
+      @close="state.imgs.show = false"
+    />
   </div>
 </template>
 <script lang="ts" setup>
 import { SuccessResultCode } from '@cacp/ui'
-import { ElMessage } from 'element-plus'
 import { onMounted, reactive } from 'vue'
 import DoubleImg from '@/components/double-img.vue'
+import { passengerinfoDetail } from '@/apis/lvke'
+import dayjs from 'dayjs'
+import { useAppStore } from '@/stores'
 
+const AppStore = useAppStore()
 const props = defineProps({
   transfer: {}
 })
 const state = reactive<any>({
-  form: {},
+  form: {
+    goods: [],
+    checks: []
+  },
   loading: false,
-  tableData: []
+  imgs: {
+    show: false,
+    list: []
+  }
 })
-const activities = [
-  {
-    content: 'Event start',
-    timestamp: '2018-04-15'
-  },
-  {
-    content: 'Approved',
-    timestamp: '2018-04-13'
-  },
-  {
-    content: 'Success',
-    timestamp: '2018-04-11'
+const initData = async () => {
+  const res: any = await passengerinfoDetail({ id: props.transfer.id, queryType: 2 })
+  if (res.code === SuccessResultCode) {
+    state.form = res.data
   }
-]
-onMounted(() => {})
+}
+onMounted(() => {
+  initData()
+})
 </script>
 <style scoped lang="less">
 .detail {

+ 82 - 144
src/views/guest-check-info-manage/guest-check-pass-no/index.vue

@@ -13,10 +13,10 @@
           <el-form-item label="姓名" prop="name">
             <el-input v-model="state.form.name"></el-input>
           </el-form-item>
-          <el-form-item label="性别" prop="xxx">
-            <el-select v-model="state.form.xxx" placeholder="请选择" clearable>
+          <el-form-item label="性别" prop="gender">
+            <el-select v-model="state.form.gender" placeholder="请选择" clearable>
               <el-option
-                v-for="item in state.options.xxx"
+                v-for="item in AppStore.getDict('lvke_sex').list"
                 :key="item.dictValue"
                 :label="item.dictLabel"
                 :value="item.dictValue"
@@ -26,27 +26,27 @@
           <el-form-item label="证件号码" prop="idNo">
             <el-input v-model="state.form.idNo"></el-input>
           </el-form-item>
-          <el-form-item label="证件类型" prop="certType">
-            <el-select
-              v-model="state.form.certType"
-              placeholder="请选择"
-              clearable
-              multiple
-              collapse-tags
-              collapse-tags-tooltip
-            >
-              <el-option
-                v-for="item in state.options.certType"
-                :key="item.dictValue"
-                :label="item.dictLabel"
-                :value="item.dictValue"
-              />
-            </el-select>
+          <el-form-item label="证件类型" prop="xxx">
+            <!--            <el-select-->
+            <!--              v-model="state.form.certType"-->
+            <!--              placeholder="请选择"-->
+            <!--              clearable-->
+            <!--              multiple-->
+            <!--              collapse-tags-->
+            <!--              collapse-tags-tooltip-->
+            <!--            >-->
+            <!--              <el-option-->
+            <!--                v-for="item in state.options.certType"-->
+            <!--                :key="item.dictValue"-->
+            <!--                :label="item.dictLabel"-->
+            <!--                :value="item.dictValue"-->
+            <!--              />-->
+            <!--            </el-select>-->
           </el-form-item>
           <el-form-item label="国籍" prop="nationality">
             <el-select v-model="state.form.nationality" placeholder="请选择" clearable>
               <el-option
-                v-for="item in state.options.nationality"
+                v-for="item in AppStore.getDict('lvke_city').list"
                 :key="item.dictValue"
                 :label="item.dictLabel"
                 :value="item.dictValue"
@@ -56,77 +56,39 @@
           <el-form-item label="居住地" prop="address">
             <el-input v-model="state.form.address"></el-input>
           </el-form-item>
-          <el-form-item label="车次/航班号" prop="idNo">
-            <el-input v-model="state.form.address"></el-input>
+          <el-form-item label="车次/航班号" prop="travelNo">
+            <el-input v-model="state.form.travelNo"></el-input>
           </el-form-item>
-          <el-form-item label="查验地点" prop="port">
-            <el-select
-              v-model="state.form.port"
-              placeholder="请选择"
-              clearable
-              multiple
-              collapse-tags
-              collapse-tags-tooltip
-            >
-              <el-option
-                v-for="item in state.options.port"
-                :key="item.dictValue"
-                :label="item.dictLabel"
-                :value="item.dictValue"
-              />
-            </el-select>
+          <el-form-item label="查验地点" prop="checkPlace">
+            <el-input v-model="state.form.checkPlace"></el-input>
           </el-form-item>
-          <el-form-item label="航/车次(班)日期" prop="startTime">
-            <el-date-picker
-              type="datetime"
-              value-format="YYYY-MM-DD HH:mm:ss"
-              v-model="state.form.startTime"
-              placeholder=""
-            />
+          <el-form-item label="航/车次(班)日期" prop="travelTimeStart">
+            <el-date-picker type="date" value-format="YYYY-MM-DD" v-model="state.form.travelTimeStart" placeholder="" />
           </el-form-item>
-          <el-form-item label="到" prop="endTime">
-            <el-date-picker
-              type="datetime"
-              value-format="YYYY-MM-DD HH:mm:ss"
-              v-model="state.form.endTime"
-              placeholder=""
-            />
+          <el-form-item label="到" prop="travelTimeEnd">
+            <el-date-picker type="date" value-format="YYYY-MM-DD" v-model="state.form.travelTimeEnd" placeholder="" />
           </el-form-item>
-          <el-form-item label="查验日期" prop="startTime">
+          <el-form-item label="查验时间" prop="checkTimeStart">
             <el-date-picker
               type="datetime"
               value-format="YYYY-MM-DD HH:mm:ss"
-              v-model="state.form.startTime"
+              v-model="state.form.checkTimeStart"
               placeholder=""
             />
           </el-form-item>
-          <el-form-item label="到" prop="endTime">
+          <el-form-item label="到" prop="checkTimeEnd">
             <el-date-picker
               type="datetime"
               value-format="YYYY-MM-DD HH:mm:ss"
-              v-model="state.form.endTime"
+              v-model="state.form.checkTimeEnd"
               placeholder=""
             />
           </el-form-item>
-          <el-form-item label="未查验通过原因" prop="port">
-            <el-select
-              v-model="state.form.port"
-              placeholder="请选择"
-              clearable
-              multiple
-              collapse-tags
-              collapse-tags-tooltip
-            >
-              <el-option
-                v-for="item in state.options.port"
-                :key="item.dictValue"
-                :label="item.dictLabel"
-                :value="item.dictValue"
-              />
-            </el-select>
+          <el-form-item label="未查验通过原因" prop="checkReason">
+            <el-input v-model="state.form.checkReason"></el-input>
           </el-form-item>
-          <el-form-item label="查验人" prop="address">
-            <el-input v-model="state.form.address"></el-input>
+          <el-form-item label="查验人" prop="checkBy">
+            <el-input v-model="state.form.checkBy"></el-input>
           </el-form-item>
           <template #buttonGroup>
             <el-button type="primary" @click="onSearch">查询</el-button>
@@ -142,27 +104,30 @@
         @on-page-change="onPageChange"
         @on-size-change="onSizeChange"
         :secondaryColSpan="24"
-        @selection-change="onSelectionChange"
       >
-        <el-table-column type="index" label="序号" width="50" />
         <el-table-column type="selection" width="36" fixed="left" />
-        <el-table-column property="areaCode" label="姓名" min-width="100" />
-        <el-table-column property="code" label="性别" min-width="100" />
-        <el-table-column property="funcType" label="年龄" min-width="100" />
-        <el-table-column property="xxx" label="证件号码" min-width="100" />
-        <el-table-column property="xxx" label="证件类型" min-width="100" />
-        <el-table-column property="xxx" label="国籍" min-width="100" />
-        <el-table-column property="xxx" label="居住地" min-width="100" />
-        <el-table-column property="xxx" label="车次/航班号" min-width="100" />
-        <el-table-column property="createTime" label="航/车次(班)日期" min-width="160">
-          <template #default="scope">{{ scope.row.createTime.toLocaleString() }}</template>
+        <el-table-column type="index" label="序号" width="50" fixed="left" />
+        <el-table-column property="name" label="姓名" width="100" fixed="left" />
+        <el-table-column property="gender" label="性别" min-width="100">
+          <template #default="scope">{{ AppStore.getDict('lvke_sex').map.get(scope.row.gender) }}</template>
+        </el-table-column>
+        <el-table-column property="age" label="年龄" min-width="100" />
+        <el-table-column property="idNo" label="证件号码" min-width="160" />
+        <el-table-column property="xxx" label="证件类型" min-width="160">
+          <!--          <template #default="scope">{{ AppStore.getDict('lvke_sex').map.get(scope.row.gender) }}</template>-->
         </el-table-column>
-        <el-table-column property="createTime" label="查验时间" min-width="160">
-          <template #default="scope">{{ scope.row.createTime.toLocaleString() }}</template>
+        <el-table-column property="nationality" label="国籍" min-width="100">
+          <template #default="scope">{{ AppStore.getDict('lvke_city').map.get(scope.row.nationality) }}</template>
         </el-table-column>
-        <el-table-column property="xxx" label="查验地点" min-width="100" />
-        <el-table-column property="xxx" label="未查验通过原因" min-width="100" />
-        <el-table-column property="xxx" label="查验人" min-width="100" />
+        <el-table-column property="address" label="居住地" min-width="160" />
+        <el-table-column property="travelNo" label="车次/航班号" min-width="100" />
+        <el-table-column property="travelTime" label="航/车次(班)日期" min-width="160" />
+        <el-table-column property="checkTime" label="查验时间" min-width="160">
+          <template #default="scope">{{ dayjs(scope.row.checkTime).format('YYYY-MM-DD HH:mm:ss') }}</template>
+        </el-table-column>
+        <el-table-column property="checkPlace" label="查验地点" min-width="100" />
+        <el-table-column property="checkReason" label="未查验通过原因" min-width="100" />
+        <el-table-column property="checkBy" label="查验人" min-width="100" />
       </cacp-complex-table>
     </cacp-search-layout>
   </template>
@@ -176,19 +141,15 @@ import { ElMessage } from 'element-plus'
 import { SuccessResultCode, useLoading, type TableAction, useComplexTable } from '@cacp/ui'
 import config from '@/config'
 import detail from './detail.vue'
+import { useAppStore } from '@/stores'
+import dayjs from 'dayjs'
+import { passengerinfoExport, passengerinfoPage } from '@/apis/lvke'
 
+const AppStore = useAppStore()
 const { loading, setLoading } = useLoading()
 const { tableData, tablePagination, setPagination, setPageIndex, setPageSizes } = useComplexTable(config)
 const state = reactive<any>({
   form: {},
-  options: {
-    xxx: [{ name: '男', code: 1 }],
-    certType: [{ name: '身份证', code: 1 }],
-    port: [{ name: '新海港', code: 1 }],
-    status: [{ name: '已查验', code: 1 }],
-    nationality: [{ name: '中国', code: 1 }],
-    control: [{ name: '是', code: 1 }]
-  },
   detail: {
     show: false,
     transfer: {}
@@ -220,47 +181,36 @@ function onPageChange(currentPage: number) {
 }
 const onQuery = async () => {
   setLoading(true)
-  // const res = await typicalOneQuery({
-  //   ...state.form,
-  //   pageIndex: tablePagination.currentPage,
-  //   pageSize: tablePagination.pageSize
-  // })
-  const res = {
-    code: '0',
-    data: {
-      pageNum: 1,
-      pageSize: 20,
-      size: 20,
-      pages: 3,
-      total: 56,
-      list: [
-        {
-          id: '460000200103174428',
-          status: 1,
-          areaCode: '上海 上海市 510000',
-          code: 3643,
-          funcType: '创建',
-          xxx: '常磊',
-          createTime: '1974-06-02 15:53:23',
-          lastModified: '1988-07-20 05:47:55'
-        }
-      ]
-    }
-  }
+  const res: any = await passengerinfoPage({
+    ...state.form,
+    pageIndex: tablePagination.currentPage,
+    pageSize: tablePagination.pageSize,
+    queryType: 2,
+    checkStatus: 1
+  })
   if (res.code === SuccessResultCode) {
     setPagination(res.data)
   }
   setLoading(false)
 }
-
-const onSelectionChange = (arr) => {
-  console.log(arr)
-}
-const onExport = () => {
+const onExport = async () => {
+  const res: any = await passengerinfoExport({
+    ...state.form,
+    pageIndex: tablePagination.currentPage,
+    pageSize: tablePagination.pageSize,
+    queryType: 2,
+    checkStatus: 2
+  })
+  const blob = new Blob([res])
+  const url = URL.createObjectURL(blob)
+  const a = document.createElement('a')
+  a.href = url
+  a.download = '未查验通过旅客信息.xlsx'
+  a.click()
   ElMessage.success('导出成功!')
 }
 const onView = (row: any) => {
-  state.detail.transfer.row = row
+  state.detail.transfer = { id: row.id }
   state.detail.show = true
 }
 const actions: TableAction[] = [
@@ -281,19 +231,7 @@ const actions: TableAction[] = [
     onclick: onView
   }
 ]
-// const handleCommand1 = (command: string) => {
-//   ElMessage.success('点击了' + command)
-// }
-
-// async function getAreaCodesData() {
-//   const res = await getAreaCodes()
-//   if (res.code === SuccessResultCode) {
-//     options.value = res.data
-//   }
-// }
-
 onMounted(() => {
-  // getAreaCodesData()
   onQuery()
 })
 </script>

+ 6 - 2
src/views/guest-check-info-manage/guest-check-pass/detail.vue

@@ -16,7 +16,12 @@
                 <el-row>
                   <el-col :span="6">
                     <el-form-item label="查验时间" prop="checkTime">
-                      <el-input v-model="state.form.checkTime" />
+                      <el-date-picker
+                        type="datetime"
+                        value-format="YYYY-MM-DD HH:mm:ss"
+                        v-model="state.form.checkTime"
+                        placeholder=""
+                      />
                     </el-form-item>
                   </el-col>
                   <el-col :span="6">
@@ -252,7 +257,6 @@ const initData = async () => {
 onMounted(() => {
   initData()
 })
-onMounted(() => {})
 </script>
 <style scoped lang="less">
 .detail {