sceneAccessGuestManage.vue 14 KB

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