sceneAccessGuestManage.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494
  1. <template>
  2. <div class="accessManage ">
  3. <div class="page-query-core" style="padding: 30px 15px">
  4. <Query :show="['time']" :query-data.sync="queryData" :search="search">
  5. <template #extraItem>
  6. <a-form-model-item label="访客" style="margin-left: 45px">
  7. <a-input style="width: 250px" v-model="queryData.guestName" placeholder="请输入姓名/手机号"/>
  8. </a-form-model-item>
  9. <a-form-model-item label="受访人" style="margin-left: 45px">
  10. <a-input style="width: 250px" v-model="queryData.name" placeholder="请输入姓名/手机号"/>
  11. </a-form-model-item>
  12. <a-form-model-item label="公司" style="">
  13. <a-select v-model="queryData.company" style="width: 250px">
  14. <a-select-option v-for="(item,index) in companyOptions" :key="index" :value="item.value">
  15. {{ item.label }}
  16. </a-select-option>
  17. </a-select>
  18. </a-form-model-item>
  19. <div style="height: 20px"></div>
  20. <a-form-model-item label="访问事由" style="margin-left: 15px">
  21. <a-select v-model="queryData.objective" style="width: 250px">
  22. <a-select-option v-for="(item,index) in objectiveOptions" :key="index" :value="item.value">
  23. {{ item.label }}
  24. </a-select-option>
  25. </a-select>
  26. </a-form-model-item>
  27. </template>
  28. </Query>
  29. </div>
  30. <div class="accessManage-body">
  31. <a-table :columns="tableColumns" :data-source="tableData" :pagination="true"
  32. :scroll="{ y: tableContainerHeight }" bordered>
  33. <template #action="text, record">
  34. <a-button type="link" @click="showPeopleBehaviour"> 查看 </a-button>
  35. </template>
  36. </a-table>
  37. <!--<div style="width: 100%;text-align: right;margin-top: 15px;">-->
  38. <!-- <a-pagination ref="pagination"-->
  39. <!-- :showQuickJumper="true"-->
  40. <!-- :show-size-changer="true"-->
  41. <!-- :show-total="showTotal"-->
  42. <!-- v-model="currentPage"-->
  43. <!-- :default-current="1"-->
  44. <!-- :total="500"-->
  45. <!-- @showSizeChange="onShowSizeChange"-->
  46. <!-- />-->
  47. <!--</div>-->
  48. </div>
  49. <a-modal
  50. title="行为感知"
  51. v-if="showBehaviour"
  52. :visible="showBehaviour"
  53. width="65%"
  54. @cancel="hideBehaviour"
  55. :footer="null"
  56. >
  57. <SceneAccessBehaviour :item="currItem" />
  58. </a-modal>
  59. </div>
  60. </template>
  61. <script>
  62. import Query from "@/components/common/query.vue";
  63. export default {
  64. components: {
  65. Query
  66. },
  67. data() {
  68. return {
  69. showBehaviour: false,
  70. currentPage: 1,
  71. queryData: {
  72. objective: '1',
  73. company: '0'
  74. },
  75. currItem: {},
  76. objectiveMap:new Map(),
  77. objectiveOptions: [
  78. {
  79. label: '全部',
  80. value: '0'
  81. },
  82. {
  83. label: '开会',
  84. value: '1'
  85. },
  86. {
  87. label: '交流',
  88. value: '2'
  89. },
  90. ],
  91. companyMap:new Map(),
  92. companyOptions: [
  93. {
  94. label: '全部',
  95. value: '0'
  96. },{
  97. label: '北京电信规划院',
  98. value: '1'
  99. },
  100. ],
  101. tableContainerHeight: 500,
  102. tableColumns: [
  103. {
  104. title: '序号',
  105. dataIndex: 'index',
  106. key: 'index',
  107. align: "center",
  108. width: 80,
  109. customRender: (text, record, index) => `${index + 1}`
  110. },
  111. {
  112. title: '访客',
  113. dataIndex: 'visitor',
  114. key: 'visitor',
  115. },
  116. {
  117. title: '访客手机号',
  118. dataIndex: 'visitor_phone',
  119. key: 'visitor_phone',
  120. },
  121. {
  122. title: '所属公司',
  123. dataIndex: 'department',
  124. key: 'department',
  125. },
  126. {
  127. title: '受访人',
  128. dataIndex: 'interviewee',
  129. key: 'interviewee',
  130. },
  131. {
  132. title: '访问事由',
  133. dataIndex: 'reason',
  134. key: 'reason',
  135. },
  136. {
  137. title: '受访人手机号',
  138. dataIndex: 'interviewee_phone',
  139. key: 'interviewee_phone',
  140. },
  141. {
  142. title: '通行时间',
  143. dataIndex: 'time',
  144. key: 'time',
  145. },
  146. {
  147. title: '通行方向',
  148. dataIndex: 'direction',
  149. key: 'direction',
  150. },
  151. {
  152. title: '行为感知',
  153. key: 'operation',
  154. fixed: 'right',
  155. width: 100,
  156. scopedSlots: {customRender: 'action'},
  157. },
  158. ],
  159. tableData:[],
  160. originalData: [
  161. {
  162. key: '1',
  163. visitor: "潘夏彤",
  164. visitor_phone: "13038678756",
  165. department: "北京电信规划院",
  166. time: "2022-08-26 12:00:00",
  167. reason: "开会",
  168. direction: "进入B3",
  169. interviewee: "胡八一", interviewee_phone: "15643567892",
  170. directionStatus: "进",
  171. },
  172. {
  173. key: '2',
  174. visitor: "庞慧",
  175. visitor_phone: "13038678756",
  176. department: "北京电信规划院",
  177. time: "2022-08-26 12:00:00",
  178. reason: "开会",
  179. direction: "进入1F",
  180. interviewee: "胡八一",
  181. interviewee_phone: "15643567892",
  182. directionStatus: "进",
  183. },
  184. {
  185. key: '3',
  186. visitor: "李天泽",
  187. visitor_phone: "13038678756",
  188. department: "北京电信规划院",
  189. time: "2022-08-26 12:00:00",
  190. reason: "开会",
  191. direction: "进入B2",
  192. interviewee: "张永军", interviewee_phone: "15643563892",
  193. directionStatus: "进",
  194. },
  195. {
  196. key: '4',
  197. visitor: "李天泽",
  198. visitor_phone: "13038678754",
  199. department: "北京电信规划院",
  200. time: "2022-08-26 12:00:00",
  201. reason: "开会",
  202. direction: "进入B2",
  203. interviewee: "胡八一", interviewee_phone: "15643567892",directionStatus: "进",
  204. },
  205. {
  206. key: '5',
  207. visitor: "李天泽",
  208. visitor_phone: "13038678754",
  209. department: "北京电信规划院",
  210. time: "2022-08-26 12:00:00",
  211. reason: "开会",
  212. direction: "进入B2",
  213. interviewee: "胡八一", interviewee_phone: "15643563892",directionStatus: "进",
  214. },
  215. {
  216. key: '6',
  217. visitor: "李天泽",
  218. visitor_phone: "13038678754",
  219. department: "北京电信规划院",
  220. time: "2022-08-26 12:00:00",
  221. reason: "开会",
  222. direction: "进入B2",
  223. interviewee: "胡八一", interviewee_phone: "15643563892",directionStatus: "进",
  224. },
  225. {
  226. key: '7',
  227. visitor: "李天泽",
  228. visitor_phone: "13032678754",
  229. department: "北京电信规划院",
  230. time: "2022-08-26 12:00:00",
  231. reason: "交流",
  232. direction: "进入B2",
  233. interviewee: "刘一鸣", interviewee_phone: "15943563892",directionStatus: "进",
  234. },
  235. {
  236. key: '8',
  237. visitor: "李天泽",
  238. visitor_phone: "13032678754",
  239. department: "北京电信规划院",
  240. time: "2022-08-26 12:00:00",
  241. reason: "交流",
  242. direction: "进入B2",
  243. interviewee: "刘一鸣", interviewee_phone: "15943563892",directionStatus: "进",
  244. },
  245. {
  246. key: '9',
  247. visitor: "李天泽",
  248. visitor_phone: "13032678754",
  249. department: "北京电信规划院",
  250. time: "2022-08-26 12:00:00",
  251. reason: "交流",
  252. direction: "进入B2",
  253. interviewee: "胡八一", interviewee_phone: "15943563892",directionStatus: "进",
  254. },
  255. {
  256. key: '10',
  257. visitor: "李天泽",
  258. visitor_phone: "12232678754",
  259. department: "北京电信规划院",
  260. time: "2022-08-26 12:00:00",
  261. reason: "交流",
  262. direction: "进入B2",
  263. interviewee: "胡八一", interviewee_phone: "15943563892",directionStatus: "进",
  264. },
  265. {
  266. key: '11',
  267. visitor: "李天泽",
  268. visitor_phone: "12232678754",
  269. department: "北京电信规划院",
  270. time: "2022-08-26 12:00:00",
  271. reason: "交流",
  272. direction: "出去B2",
  273. interviewee: "胡八一", interviewee_phone: "15943563892",directionStatus: "出",
  274. },
  275. {
  276. key: '12',
  277. visitor: "李天泽",
  278. visitor_phone: "12232678759",
  279. department: "北京电信规划院",
  280. time: "2022-08-26 12:00:00",
  281. reason: "交流",
  282. direction: "出去B2",
  283. interviewee: "刘一鸣", interviewee_phone: "15943463892",directionStatus: "出",
  284. },
  285. {
  286. key: '13',
  287. visitor: "李天泽",
  288. visitor_phone: "15513548219",
  289. department: "北京电信规划院",
  290. time: "2023-03-26 12:00:00",
  291. reason: "开会",
  292. direction: "进入B2",
  293. interviewee: "刘一鸣", interviewee_phone: "15943563892",directionStatus: "进",
  294. },
  295. {
  296. key: '14',
  297. visitor: "李天泽",
  298. visitor_phone: "15513548214",
  299. department: "北京电信规划院",
  300. time: "2023-03-20 12:00:00",
  301. reason: "开会",
  302. direction: "进入B2",
  303. interviewee: "刘一鸣", interviewee_phone: "15943563892",directionStatus: "进",
  304. },
  305. {
  306. key: '15',
  307. visitor: "李天泽",
  308. visitor_phone: "15511548219",
  309. department: "北京电信规划院",
  310. time: "2022-08-26 12:00:00",
  311. reason: "开会",
  312. direction: "进入B2",
  313. interviewee: "刘一鸣", interviewee_phone: "15943563892",directionStatus: "进",
  314. },
  315. {
  316. key: '16',
  317. visitor: "李天泽",
  318. visitor_phone: "15513548219",
  319. department: "北京电信规划院",
  320. time: "2022-08-26 12:00:00",
  321. reason: "开会",
  322. direction: "进入B2",
  323. interviewee: "刘一鸣", interviewee_phone: "15943563892",directionStatus: "进",
  324. },
  325. {
  326. key: '17',
  327. visitor: "李天泽",
  328. visitor_phone: "15513548219",
  329. department: "北京电信规划院",
  330. time: "2022-08-26 12:00:00",
  331. reason: "开会",
  332. direction: "进入B2",
  333. interviewee: "刘一鸣", interviewee_phone: "13943563892",directionStatus: "进",
  334. },
  335. {
  336. key: '18',
  337. visitor: "李天泽",
  338. visitor_phone: "15513548219",
  339. department: "北京电信规划院",
  340. time: "2023-03-10 12:00:00",
  341. reason: "开会",
  342. direction: "出去B1",
  343. interviewee: "刘一鸣", interviewee_phone: "15943563892",directionStatus: "出",
  344. },
  345. {
  346. key: '19',
  347. visitor: "李天泽",
  348. visitor_phone: "15513548219",
  349. department: "北京电信规划院",
  350. time: "2022-08-26 12:00:00",
  351. reason: "开会",
  352. direction: "出去B2",
  353. interviewee: "钱多多", interviewee_phone: "15942563898",directionStatus: "出",
  354. },
  355. {
  356. key: '20',
  357. visitor: "李天泽",
  358. visitor_phone: "15913548219",
  359. department: "北京电信规划院",
  360. time: "2022-08-26 12:00:00",
  361. reason: "开会",
  362. direction: "进入B2",
  363. interviewee: "钱多多", interviewee_phone: "15942563898",directionStatus: "进",
  364. },
  365. {
  366. key: '21',
  367. visitor: "李天泽",
  368. visitor_phone: "15913548219",
  369. department: "北京电信规划院",
  370. time: "2022-08-26 12:00:00",
  371. reason: "开会",
  372. direction: "进入B2",
  373. interviewee: "钱多多", interviewee_phone: "15942563898",directionStatus: "进",
  374. },
  375. ]
  376. }
  377. },
  378. mounted() {
  379. this.initData()
  380. },
  381. methods: {
  382. initData(){
  383. this.objectiveOptions.forEach((v) => {
  384. this.objectiveMap.set(v.value, v.label);
  385. });
  386. this.companyOptions.forEach((v) => {
  387. this.companyMap.set(v.value, v.label);
  388. });
  389. this.tableData = this.originalData;
  390. },
  391. showPeopleBehaviour() {
  392. this.showBehaviour = true;
  393. },
  394. hideBehaviour() {
  395. this.showBehaviour = false;
  396. },
  397. showTotal(total, range) {
  398. let pageSize = range[1]-range[0]+1;
  399. let pages = Math.ceil(total/pageSize);
  400. return '共'+total+'条数据,第 '+this.currentPage+'/'+pages+' 页';
  401. },
  402. onShowSizeChange(val) {
  403. },
  404. search(){
  405. // this.$util.asyncPromise(this.getGuestData());
  406. this.getGuestData()
  407. },
  408. getGuestData(){
  409. let guestRegex = new RegExp(this.queryData.guestName)
  410. let intervieweeRegex = new RegExp(this.queryData.name)
  411. let startDate;
  412. let endDate;
  413. if (this.queryData.timeRange) {
  414. startDate = this.queryData.timeRange.startDate;
  415. endDate = this.queryData.timeRange.endDate;
  416. }
  417. this.tableData = this.originalData.filter((item) => {
  418. if (
  419. this.queryData.guestName &&
  420. this.queryData.guestName != "" &&
  421. !nameRegex.test(item.visitor)
  422. ) {
  423. return false;
  424. }
  425. if (
  426. this.queryData.name &&
  427. this.queryData.name != "" &&
  428. !equipmentRegex.test(item.interviewee)
  429. ) {
  430. return false;
  431. }
  432. if (
  433. this.queryData.objective &&
  434. this.queryData.objective != "0" &&
  435. !(this.objectiveMap.get(this.queryData.objective) === item.reason)
  436. ) {
  437. return false;
  438. }
  439. if (
  440. this.queryData.company &&
  441. this.queryData.company != "0" &&
  442. !(
  443. this.companyMap.get(this.queryData.company) ===
  444. item.department
  445. )
  446. ) {
  447. return false;
  448. }
  449. if (
  450. this.queryData.timeRange &&
  451. this.queryData.timeRange.startDate != "" &&
  452. !(
  453. this.$moment(item.time).isSameOrAfter(startDate) &&
  454. this.$moment(item.time).isSameOrBefore(endDate)
  455. )
  456. ) {
  457. return false;
  458. }
  459. return true;
  460. });
  461. }
  462. }
  463. }
  464. </script>
  465. <style lang="less" scoped>
  466. .accessManage {
  467. width: 100%;
  468. height: 100%;
  469. .ant-form-inline .ant-form-item {
  470. margin-right: 60px;
  471. }
  472. .accessManage-body {
  473. background: white;
  474. border-radius: 4px;
  475. margin-top: 12px;
  476. padding: 15px;
  477. }
  478. }
  479. </style>