index.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="检查人员" prop="inspectUserName">
  5. <el-input v-model="queryParams.inspectUserName" placeholder="请输入检查人员" clearable @keyup.enter="handleQuery" />
  6. </el-form-item>
  7. <el-form-item label="查获时间" prop="seizureTime">
  8. <!-- <el-date-picker clearable v-model="queryParams.seizureTime" type="date" value-format="YYYY-MM-DD"
  9. placeholder="请选择查获时间">
  10. </el-date-picker>-->
  11. <el-date-picker clearable v-model="dateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
  12. start-placeholder="开始日期" end-placeholder="结束日期">
  13. </el-date-picker>
  14. </el-form-item>
  15. <el-form-item label="安检位置" prop="regionalName">
  16. <el-input v-model="queryParams.regionalName" placeholder="请输入安检位置" clearable @keyup.enter="handleQuery" />
  17. </el-form-item>
  18. <el-form-item label="查获班组" prop="inspectTeamName">
  19. <el-input v-model="queryParams.inspectTeamName" placeholder="请输入查获班组" clearable @keyup.enter="handleQuery" />
  20. </el-form-item>
  21. <el-form-item label="流程状态" prop="processStatus">
  22. <el-select v-model="queryParams.processStatus" placeholder="请选择流程状态" clearable style="width: 200px">
  23. <el-option v-for="dict in process_status" :key="dict.value" :label="dict.label" :value="dict.value" />
  24. </el-select>
  25. </el-form-item>
  26. <el-form-item label="开机指令" prop="powerOnInstruction">
  27. <el-select v-model="queryParams.powerOnInstruction" placeholder="请选择开机指令" clearable style="width: 200px">
  28. <el-option label="指令" :value="0" />
  29. <el-option label="非指令" :value="1" />
  30. </el-select>
  31. </el-form-item>
  32. <!-- <el-form-item label="违禁类型" prop="forbiddenTypeText">
  33. <el-input v-model="queryParams.forbiddenTypeText" placeholder="请输入违禁品类型" clearable @keyup.enter="handleQuery" />
  34. </el-form-item>
  35. <el-form-item label="查获部位" prop="checkPositionSpecific">
  36. <el-input v-model="queryParams.checkPositionSpecific" placeholder="请输入查获部位" clearable
  37. @keyup.enter="handleQuery" />
  38. </el-form-item>
  39. <el-form-item label="处理方式" prop="handlingMethodDesc">
  40. <el-input v-model="queryParams.handlingMethodDesc" placeholder="请输入处理方式" clearable @keyup.enter="handleQuery" />
  41. </el-form-item>
  42. <el-form-item label="是否有意隐匿" prop="regionalName">
  43. <el-input v-model="queryParams.inspectTeamName" placeholder="请输入通道名称" clearable @keyup.enter="handleQuery" />
  44. </el-form-item> -->
  45. <el-form-item>
  46. <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
  47. <el-button icon="Refresh" @click="resetQuery">重置</el-button>
  48. </el-form-item>
  49. </el-form>
  50. <el-row :gutter="10" class="mb8">
  51. <!-- <el-col :span="1.5">
  52. <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['item:record:add']">新增</el-button>
  53. </el-col>
  54. <el-col :span="1.5">
  55. <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
  56. v-hasPermi="['item:record:edit']">修改</el-button>
  57. </el-col>
  58. <el-col :span="1.5">
  59. <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
  60. v-hasPermi="['item:record:remove']">删除</el-button>
  61. </el-col> -->
  62. <el-col :span="1.5">
  63. <el-button type="warning" plain icon="Download" @click="handleExport"
  64. v-hasPermi="['item:record:export']">导出</el-button>
  65. </el-col>
  66. <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
  67. </el-row>
  68. <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange">
  69. <el-table-column type="selection" width="55" align="center" />
  70. <el-table-column label="安检员" align="center" prop="inspectUserName" />
  71. <el-table-column label="查获时间" align="center" prop="seizureTime" width="180">
  72. <template #default="scope">
  73. <span>{{ parseTime(scope.row.seizureTime, '{y}-{m}-{d}') }}</span>
  74. </template>
  75. </el-table-column>
  76. <el-table-column label="安检位置" align="center" prop="regionalName">
  77. <template #default="scope">
  78. <span>{{ `${scope.row.terminlName}/${scope.row.regionalName}/${scope.row.channelName}` }}</span>
  79. </template>
  80. </el-table-column>
  81. <el-table-column label="安检岗位" align="center" prop="checkMethodDesc" />
  82. <el-table-column label="查获班组" align="center" prop="inspectTeamName" />
  83. <el-table-column label="上报班组" align="center" prop="attendanceTeamName" />
  84. <el-table-column label="流程状态" align="center" prop="processStatus">
  85. <template #default="scope">
  86. <dict-tag :options="process_status" :value="scope.row.processStatus" />
  87. </template>
  88. </el-table-column>
  89. <!-- <el-table-column label="违禁品类型" align="center" prop="categoryNameTwo" />
  90. <el-table-column label="数量" align="center" prop="quantity" />
  91. <el-table-column label="查获部位" align="center" prop="customLocation" />
  92. <el-table-column label="具体位置" align="center" prop="checkPositionSpecific" />
  93. <el-table-column label="处理方式" align="center" prop="handlingMethodDesc" />
  94. <el-table-column label="是否有意隐匿" align="center" prop="isActiveConcealment" />
  95. <el-table-column label="旅客姓名" align="center" prop="passengerName" />
  96. <el-table-column label="旅客身份证号" align="center" prop="passengerCard" />
  97. <el-table-column label="航班号" align="center" prop="passengerFlight" /> -->
  98. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  99. <template #default="scope">
  100. <!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['item:record:edit']">修改</el-button>
  101. <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['item:record:remove']">删除</el-button> -->
  102. <el-button link type="info" icon="View" @click="handleDetail(scope.row)"
  103. v-hasPermi="['check:checkRecord:query']">详情</el-button>
  104. </template>
  105. </el-table-column>
  106. </el-table>
  107. <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
  108. v-model:limit="queryParams.pageSize" @pagination="getList" />
  109. <!-- 添加或修改查获记录对话框 -->
  110. <el-dialog :title="title" v-model="open" width="800px" append-to-body>
  111. <el-form ref="recordRef" :model="form" :rules="rules" label-width="9em" disabled>
  112. <el-form-item label="违禁品类别/类型" prop="channelCode">
  113. <el-input
  114. :value="`${form.itemSeizureItemsList[0].categoryNameOne} / ${form.itemSeizureItemsList[0].categoryNameTwo}`"
  115. placeholder="- -" />
  116. </el-form-item>
  117. <!-- <el-form-item label="违禁品名称" prop="channelCode">
  118. <el-input v-model="form.itemSeizureItemsList[0].itemName" placeholder="" />
  119. </el-form-item> -->
  120. <el-form-item label="数量" prop="channelCode">
  121. <el-input v-model="form.itemSeizureItemsList[0].quantity" placeholder="-" />
  122. </el-form-item>
  123. <!-- <el-form-item label="查获部位" prop="channelCode">
  124. <el-input v-model="form.itemSeizureItemsList[0].checkPositionNameOne" placeholder="" />
  125. </el-form-item> -->
  126. <el-form-item label="部位类别/类型" prop="channelCode">
  127. <el-input
  128. :value="`${form.itemSeizureItemsList[0].checkPositionNameOne} / ${form.itemSeizureItemsList[0].checkPositionNameTwo}`"
  129. placeholder="- -" />
  130. </el-form-item>
  131. <!-- <el-form-item label="具体位置" prop="channelCode">
  132. <el-input v-model="form.itemSeizureItemsList[0].checkPositionSpecific" placeholder="" />
  133. </el-form-item> -->
  134. <el-form-item label="处理方式" prop="channelCode">
  135. <el-input v-model="form.itemSeizureItemsList[0].handlingMethodDesc" placeholder="-" />
  136. </el-form-item>
  137. <el-form-item label="是否隐匿夹带" prop="channelCode">
  138. <el-select v-model="form.itemSeizureItemsList[0].isActiveConcealment" placeholder="-">
  139. <el-option label="否" :value="0" />
  140. <el-option label="是" :value="1" />
  141. </el-select>
  142. </el-form-item>
  143. <el-form-item label="是否常见违禁品" prop="commonContraband">
  144. <el-select v-model="form.itemSeizureItemsList[0].commonContraband" placeholder="-">
  145. <el-option label="否" :value="0" />
  146. <el-option label="是" :value="1" />
  147. </el-select>
  148. </el-form-item>
  149. <el-form-item label="违禁品描述" prop="contrabandDesc">
  150. <el-input v-model="form.itemSeizureItemsList[0].contrabandDesc" placeholder="-" />
  151. </el-form-item>
  152. <el-form-item label="开机指令" prop="powerOnInstruction">
  153. <el-select v-model="form.powerOnInstruction" placeholder="-">
  154. <el-option label="指令" :value="0" />
  155. <el-option label="非指令" :value="1" />
  156. </el-select>
  157. </el-form-item>
  158. <el-form-item label="X光开机员" prop="xrayOperatorName">
  159. <el-input v-model="form.xrayOperatorName" placeholder="-" />
  160. </el-form-item>
  161. <!-- <el-form-item label="旅客姓名" prop="passengerName">
  162. <el-input v-model="form.passengerName" placeholder="请输入旅客姓名" />
  163. </el-form-item>
  164. <el-form-item label="旅客身份证号" prop="passengerCard">
  165. <el-input v-model="form.passengerCard" placeholder="请输入旅客身份证号" />
  166. </el-form-item>
  167. <el-form-item label="航班号" prop="passengerFlight">
  168. <el-input v-model="form.passengerFlight" placeholder="-" />
  169. </el-form-item> -->
  170. </el-form>
  171. <template #footer>
  172. <div class="dialog-footer">
  173. <!-- <el-button type="primary" @click="submitForm">确 定</el-button> -->
  174. <el-button @click="cancel">取 消</el-button>
  175. </div>
  176. </template>
  177. </el-dialog>
  178. </div>
  179. </template>
  180. <script setup name="Record">
  181. import { listRecord, getRecord, delRecord, addRecord, updateRecord } from "@/api/item/record"
  182. import { onMounted } from 'vue'
  183. import { useDict } from '@/utils/dict'
  184. const { proxy } = getCurrentInstance()
  185. const recordList = ref([])
  186. const open = ref(false)
  187. const loading = ref(true)
  188. const showSearch = ref(true)
  189. const ids = ref([])
  190. const single = ref(true)
  191. const multiple = ref(true)
  192. const total = ref(0)
  193. const title = ref("")
  194. const dateRange = ref([])
  195. const { process_status } = useDict('process_status')
  196. const data = reactive({
  197. form: {},
  198. queryParams: {
  199. pageNum: 1,
  200. pageSize: 10,
  201. channelCode: null,
  202. seizureTime: null,
  203. checkMethod: null,
  204. attendanceId: null,
  205. attendanceTeamName: null,
  206. attendanceDepartmentName: null,
  207. attendanceStationName: null,
  208. channelName: null,
  209. regionalName: null,
  210. terminlName: null,
  211. passengerName: null,
  212. passengerGender: null,
  213. passengerCard: null,
  214. passengerFlight: null,
  215. inspectTeamId: null,
  216. inspectTeamName: null,
  217. powerOnInstruction: null,
  218. processStatus: null,
  219. inspectDepartmentId: null,
  220. inspectDepartmentName: null,
  221. inspectStationId: null,
  222. inspectStationName: null,
  223. checkMethodDesc: null,
  224. passengerGenderDesc: null,
  225. inspectUserName: null
  226. },
  227. rules: {
  228. channelCode: [
  229. { required: true, message: "通道编码不能为空", trigger: "blur" }
  230. ],
  231. seizureTime: [
  232. { required: true, message: "查获时间不能为空", trigger: "blur" }
  233. ],
  234. checkMethod: [
  235. { required: true, message: "检查岗位不能为空", trigger: "blur" }
  236. ],
  237. attendanceId: [
  238. { required: true, message: "考勤记录ID不能为空", trigger: "blur" }
  239. ],
  240. attendanceTeamId: [
  241. { required: true, message: "考勤班组ID不能为空", trigger: "blur" }
  242. ],
  243. attendanceTeamName: [
  244. { required: true, message: "考勤班组名称不能为空", trigger: "blur" }
  245. ],
  246. attendanceDepartmentId: [
  247. { required: true, message: "考勤主管ID不能为空", trigger: "blur" }
  248. ],
  249. attendanceDepartmentName: [
  250. { required: true, message: "考勤主管名称不能为空", trigger: "blur" }
  251. ],
  252. attendanceStationId: [
  253. { required: true, message: "考勤机构站ID不能为空", trigger: "blur" }
  254. ],
  255. attendanceStationName: [
  256. { required: true, message: "考勤机构站名称不能为空", trigger: "blur" }
  257. ],
  258. channelName: [
  259. { required: true, message: "通道名称不能为空", trigger: "blur" }
  260. ],
  261. regionalCode: [
  262. { required: true, message: "区域编码不能为空", trigger: "blur" }
  263. ],
  264. regionalName: [
  265. { required: true, message: "区域名称不能为空", trigger: "blur" }
  266. ],
  267. terminlCode: [
  268. { required: true, message: "航站楼编码不能为空", trigger: "blur" }
  269. ],
  270. terminlName: [
  271. { required: true, message: "航站楼名称不能为空", trigger: "blur" }
  272. ],
  273. inspectTeamId: [
  274. { required: true, message: "查获人班组ID不能为空", trigger: "blur" }
  275. ],
  276. inspectTeamName: [
  277. { required: true, message: "查获人班组名称不能为空", trigger: "blur" }
  278. ],
  279. inspectDepartmentId: [
  280. { required: true, message: "查获人主管ID不能为空", trigger: "blur" }
  281. ],
  282. inspectDepartmentName: [
  283. { required: true, message: "查获人主管名称不能为空", trigger: "blur" }
  284. ],
  285. inspectStationId: [
  286. { required: true, message: "查获人机构站ID不能为空", trigger: "blur" }
  287. ],
  288. inspectStationName: [
  289. { required: true, message: "查获人机构站名称不能为空", trigger: "blur" }
  290. ],
  291. checkMethodDesc: [
  292. { required: true, message: "检查岗位名称不能为空", trigger: "blur" }
  293. ],
  294. passengerGenderDesc: [
  295. { required: true, message: "旅客性别名称不能为空", trigger: "blur" }
  296. ],
  297. inspectUserName: [
  298. { required: true, message: "检查人员名称不能为空", trigger: "blur" }
  299. ]
  300. }
  301. })
  302. const { queryParams, form, rules } = toRefs(data)
  303. /** 查询查获记录列表 */
  304. function getList() {
  305. loading.value = true;
  306. let params = {
  307. ...queryParams.value,
  308. beginTime: dateRange.value[0],
  309. endTime: dateRange.value[1]
  310. }
  311. listRecord(params).then(response => {
  312. recordList.value = response.rows
  313. total.value = response.total
  314. loading.value = false
  315. })
  316. }
  317. // 取消按钮
  318. function cancel() {
  319. open.value = false
  320. reset()
  321. }
  322. // 表单重置
  323. function reset() {
  324. form.value = {
  325. tenantId: null,
  326. revision: null,
  327. createBy: null,
  328. createTime: null,
  329. updateBy: null,
  330. updateTime: null,
  331. inspectUserId: null,
  332. channelCode: null,
  333. seizureTime: null,
  334. checkMethod: null,
  335. remark: null,
  336. attendanceId: null,
  337. id: null,
  338. attendanceTeamId: null,
  339. attendanceTeamName: null,
  340. attendanceDepartmentId: null,
  341. attendanceDepartmentName: null,
  342. attendanceStationId: null,
  343. attendanceStationName: null,
  344. channelName: null,
  345. regionalCode: null,
  346. regionalName: null,
  347. terminlCode: null,
  348. terminlName: null,
  349. passengerName: null,
  350. passengerGender: null,
  351. itemSeizureItemsList: [{}],
  352. passengerCard: null,
  353. passengerFlight: null,
  354. inspectTeamId: null,
  355. inspectTeamName: null,
  356. inspectDepartmentId: null,
  357. inspectDepartmentName: null,
  358. inspectStationId: null,
  359. inspectStationName: null,
  360. checkMethodDesc: null,
  361. passengerGenderDesc: null,
  362. inspectUserName: null
  363. }
  364. proxy.resetForm("recordRef")
  365. }
  366. /** 搜索按钮操作 */
  367. function handleQuery() {
  368. queryParams.value.pageNum = 1
  369. getList()
  370. }
  371. /** 重置按钮操作 */
  372. function resetQuery() {
  373. proxy.resetForm("queryRef")
  374. handleQuery()
  375. }
  376. // 多选框选中数据
  377. function handleSelectionChange(selection) {
  378. ids.value = selection.map(item => item.id)
  379. single.value = selection.length != 1
  380. multiple.value = !selection.length
  381. }
  382. /** 新增按钮操作 */
  383. function handleAdd() {
  384. reset()
  385. open.value = true
  386. title.value = "添加查获记录"
  387. }
  388. /** 修改按钮操作 */
  389. function handleUpdate(row) {
  390. reset()
  391. const _id = row.id || ids.value
  392. getRecord(_id).then(response => {
  393. form.value = response.data
  394. open.value = true
  395. title.value = "修改查获记录"
  396. })
  397. }
  398. /** 查看详情 */
  399. function handleDetail(row) {
  400. reset()
  401. const _id = row.id || ids.value
  402. getRecord(_id).then(response => {
  403. form.value = response.data
  404. open.value = true
  405. title.value = "详情"
  406. })
  407. }
  408. /** 提交按钮 */
  409. function submitForm() {
  410. proxy.$refs["recordRef"].validate(valid => {
  411. if (valid) {
  412. if (form.value.id != null) {
  413. updateRecord(form.value).then(response => {
  414. proxy.$modal.msgSuccess("修改成功")
  415. open.value = false
  416. getList()
  417. })
  418. } else {
  419. addRecord(form.value).then(response => {
  420. proxy.$modal.msgSuccess("新增成功")
  421. open.value = false
  422. getList()
  423. })
  424. }
  425. }
  426. })
  427. }
  428. /** 删除按钮操作 */
  429. function handleDelete(row) {
  430. const _ids = row.id || ids.value
  431. proxy.$modal.confirm('是否确认删除数据项?').then(function () {
  432. return delRecord(_ids)
  433. }).then(() => {
  434. getList()
  435. proxy.$modal.msgSuccess("删除成功")
  436. }).catch(() => { })
  437. }
  438. /** 导出按钮操作 */
  439. function handleExport() {
  440. proxy.download('item/record/export', {
  441. ...queryParams.value
  442. }, `record_${new Date().getTime()}.xlsx`)
  443. }
  444. onMounted(() => {
  445. getList()
  446. })
  447. </script>