personnel_management.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. <template>
  2. <div class="body-wrapper">
  3. <el-tabs v-model="activeName">
  4. <el-tab-pane label="交接班报表" name="交接班报表">
  5. <el-form class="form-wrapper" :inline="true" :model="formInline1" style="margin-bottom: 20px;">
  6. <el-row>
  7. <el-col :span="8">
  8. <el-form-item label="车场名称: ">
  9. <el-select clearable filterable v-model="formInline1.parkId" placeholder="请选择">
  10. <el-option
  11. v-for="(item,index) in carParkingNameOptions"
  12. :key="index"
  13. :label="item.parkName"
  14. :value="item.id" />
  15. </el-select>
  16. </el-form-item>
  17. </el-col>
  18. <el-col :span="8">
  19. <el-form-item>
  20. <el-button type="primary" class="query-btn" @click="onSubmit1" icon="el-icon-search">查询</el-button>
  21. </el-form-item>
  22. <el-form-item>
  23. <el-button type="success" @click="handleAdd">添加交接班记录</el-button>
  24. </el-form-item>
  25. </el-col>
  26. </el-row>
  27. </el-form>
  28. <el-table border :row-class-name="rowClassName" :data="tableData1" v-loading="loading1">
  29. <el-table-column v-for="(item, index) in columns1" :key="index" :label="item.label" :prop="item.key">
  30. </el-table-column>
  31. <el-table-column
  32. label="操作"
  33. width="200">
  34. <template slot-scope="scope" style="display: inline-block">
  35. <el-button type="primary" @click="handleEdit(scope.row)" slot="reference">修改</el-button>
  36. <el-popconfirm title="确定删除吗?" @confirm="deleteRow(scope.row)">
  37. <el-button type="danger" slot="reference">删除</el-button>
  38. </el-popconfirm>
  39. </template>
  40. </el-table-column>
  41. </el-table>
  42. <div class="table-pagination">
  43. <el-pagination layout="total, prev, pager, next, jumper" :total="total1" @current-change="handlePageChange1"
  44. :current-page.sync="pageNum1" :page-size.sync="pageSize1">
  45. </el-pagination>
  46. </div>
  47. <el-dialog
  48. :title="title"
  49. :visible.sync="dialogVisible"
  50. width="45%"
  51. custom-class="audit-dialog">
  52. <div class="form-div">
  53. <el-form label-position="left" label-width="100px" :model="formLabelAlign">
  54. <el-form-item label="车场名称: ">
  55. <el-select filterable clearable v-model="formLabelAlign.parkId" placeholder="请选择">
  56. <el-option
  57. v-for="(item,index) in carParkingNameOptions"
  58. :key="index"
  59. :label="item.parkName"
  60. :value="item.id" />
  61. </el-select>
  62. </el-form-item>
  63. <el-form-item label="收入统计">
  64. <el-input v-model="formLabelAlign.incomeFee"></el-input>
  65. </el-form-item>
  66. <el-form-item label="停车量统计">
  67. <el-input v-model="formLabelAlign.parkingNum"></el-input>
  68. </el-form-item>
  69. <el-form-item label="异常事件统计">
  70. <el-input v-model="formLabelAlign.excptionEvent"></el-input>
  71. </el-form-item>
  72. <el-form-item label="设备情况">
  73. <el-input v-model="formLabelAlign.deviceStatus"></el-input>
  74. </el-form-item>
  75. <el-form-item label="车辆情况">
  76. <el-input v-model="formLabelAlign.vehicleStatus"></el-input>
  77. </el-form-item>
  78. <el-form-item label="交班人员: ">
  79. <el-select filterable v-model="formLabelAlign.tollmanFinishId" placeholder="请选择">
  80. <el-option
  81. v-for="(item,index) in peopleOptions"
  82. :key="index"
  83. :label="item.tollmanName"
  84. :value="item.id" />
  85. </el-select>
  86. </el-form-item>
  87. <el-form-item label="接班人员: ">
  88. <el-select filterable clearable v-model="formLabelAlign.tollmanReceiveId" placeholder="请选择">
  89. <el-option
  90. v-for="(item,index) in peopleOptions"
  91. :key="index"
  92. :label="item.tollmanName"
  93. :value="item.id" />
  94. </el-select>
  95. </el-form-item>
  96. </el-form>
  97. </div>
  98. <span slot="footer" class="dialog-footer">
  99. <el-button @click="dialogVisible = false">取 消</el-button>
  100. <el-button type="primary" @click="handleConfirm">确 定</el-button>
  101. </span>
  102. </el-dialog>
  103. </el-tab-pane>
  104. <el-tab-pane label="收费员管理" name="收费员管理">
  105. <el-form class="form-wrapper" :inline="true" :model="formInline2" style="margin-bottom: 20px;">
  106. <el-row>
  107. <el-col :span="8">
  108. <el-form-item label="收费员姓名:">
  109. <el-input v-model="formInline2.tollCollectorName" placeholder="请输入"></el-input>
  110. </el-form-item>
  111. </el-col>
  112. <el-col :span="6">
  113. <el-form-item>
  114. <el-button type="primary" class="query-btn" @click="onSubmit2" icon="el-icon-search">查询</el-button>
  115. </el-form-item>
  116. <el-form-item>
  117. <el-button type="success" @click="handleAdd2">添加</el-button>
  118. </el-form-item>
  119. </el-col>
  120. </el-row>
  121. </el-form>
  122. <el-table border :row-class-name="rowClassName" :data="tableData2" v-loading="loading2">
  123. <el-table-column v-for="(item, index) in columns2" :key="index" :label="item.label" :prop="item.key">
  124. </el-table-column>
  125. <el-table-column
  126. label="操作"
  127. width="200">
  128. <template slot-scope="scope" style="display: inline-block">
  129. <el-button type="primary" @click="handleEdit2(scope.row)" slot="reference">修改</el-button>
  130. <el-popconfirm title="确定删除吗?" @confirm="deleteRow2(scope.row)">
  131. <el-button type="danger" slot="reference">删除</el-button>
  132. </el-popconfirm>
  133. </template>
  134. </el-table-column>
  135. </el-table>
  136. <div class="table-pagination">
  137. <el-pagination layout="total, prev, pager, next, jumper" :total="total1" @current-change="handlePageChange2"
  138. :current-page.sync="pageNum2" :page-size.sync="pageSize2">
  139. </el-pagination>
  140. </div>
  141. <el-dialog
  142. :title="title"
  143. :visible.sync="dialogVisible2"
  144. width="45%"
  145. custom-class="audit-dialog">
  146. <div class="form-div">
  147. <el-form label-position="left" label-width="110px" :model="formLabelAlign2">
  148. <el-form-item label="收费员姓名">
  149. <el-input v-model="formLabelAlign2.tollmanName"></el-input>
  150. </el-form-item>
  151. <el-form-item label="出生日期">
  152. <el-date-picker
  153. v-model="formLabelAlign2.birthDay"
  154. type="date"
  155. value-format="yyyy-MM-dd HH:mm:ss"
  156. placeholder="选择日期时间">
  157. </el-date-picker>
  158. </el-form-item>
  159. <el-form-item label="岗位权限">
  160. <el-input v-model="formLabelAlign2.positionPermission"></el-input>
  161. </el-form-item>
  162. </el-form>
  163. </div>
  164. <span slot="footer" class="dialog-footer">
  165. <el-button @click="dialogVisible2 = false">取 消</el-button>
  166. <el-button type="primary" @click="handleConfirm2">确 定</el-button>
  167. </span>
  168. </el-dialog>
  169. </el-tab-pane>
  170. </el-tabs>
  171. </div>
  172. </template>
  173. <script>
  174. import api from "@/api/audit.js";
  175. import api_l from "@/api/article_liao.js";
  176. import api_z from "@/api/article_z.js";
  177. import dictionary from "@/util/dictionary";
  178. export default {
  179. components: {},
  180. data() {
  181. return {
  182. loading1: false,
  183. loading2: false,
  184. activeName: '交接班报表',
  185. columns1: [
  186. {
  187. label: '车场名称',
  188. key: 'parkName'
  189. },
  190. {
  191. label: '收入统计',
  192. key: 'incomeFee'
  193. },
  194. {
  195. label: '停车量统计',
  196. key: 'parkingNum'
  197. },
  198. {
  199. label: '异常事件统计',
  200. key: 'excptionEvent'
  201. },
  202. {
  203. label: '设备情况',
  204. key: 'deviceStatus'
  205. },
  206. {
  207. label: '车辆情况',
  208. key: 'vehicleStatus'
  209. },
  210. {
  211. label: '交班人',
  212. key: 'tollmanFinishName'
  213. },
  214. {
  215. label: '接班人',
  216. key: 'tollmanReceiveName'
  217. },
  218. ],
  219. tableData1: [],
  220. total1: 0,
  221. pageSize1: 10,
  222. pageNum1: 1,
  223. formInline1: {
  224. carParkingName: '',
  225. parkName:'',
  226. parkId:''
  227. },
  228. title: '',
  229. dialogVisible: false,
  230. carParkingNameOptions: [],
  231. peopleOptions:[],
  232. formLabelAlign: {
  233. id: '',
  234. parkId: '',
  235. tollmanFinishId: '',
  236. tollmanReceiveId: '',
  237. incomeFee: '',
  238. parkingNum: '',
  239. excptionEvent: '',
  240. deviceStatus: '',
  241. vehicleStatus: '',
  242. parkName: '',
  243. tollmanName: '',
  244. jiaobanrenyuan:'',
  245. jiebanrenyuan:''
  246. },
  247. columns2: [
  248. {
  249. label: '收费员id',
  250. key: 'id'
  251. },
  252. {
  253. label: '收费员姓名',
  254. key: 'tollmanName'
  255. },
  256. {
  257. label: '出生日期',
  258. key: 'birthDay'
  259. },
  260. {
  261. label: '岗位权限',
  262. key: 'positionPermission'
  263. },
  264. ],
  265. tableData2: [],
  266. total2: 0,
  267. pageSize2: 10,
  268. pageNum2: 1,
  269. formInline2: {
  270. tollCollectorName: '',
  271. },
  272. title2: '',
  273. dialogVisible2: false,
  274. formLabelAlign2: {
  275. id: '',
  276. parkId:'',
  277. tollmanName: '',
  278. birthDay: '',
  279. positionPermission: '',
  280. },
  281. }
  282. },
  283. mounted() {
  284. this.getTableData1()
  285. this.getTableData2()
  286. this.getCarParkingName()
  287. this.getPeople()
  288. },
  289. watch: {},
  290. methods: {
  291. rowClassName({ rowIndex }) {
  292. // 偶数行和奇数行分别返回不同的类名,也可以根据实际需求基于rowData进行条件判断
  293. return rowIndex % 2 === 0 ? 'even-row' : 'odd-row';
  294. },
  295. onSubmit1() {
  296. this.loading1 = true
  297. api_l.optPersonnelManagementShiftPage({parkId: this.formInline1.parkId}).then(res => {
  298. this.tableData1 = res.data.records
  299. this.total1 = res.data.total
  300. this.loading1 = false
  301. })
  302. },
  303. handleAdd() {
  304. this.title = '添加'
  305. this.formLabelAlign = {}
  306. this.dialogVisible = true
  307. },
  308. handleEdit(row) {
  309. this.title = '修改'
  310. this.formLabelAlign = {...row}
  311. this.dialogVisible = true
  312. },
  313. deleteRow(record) {
  314. api_l.optPersonnelManagementShiftDelete([{id: record.id}]).then(res => {
  315. this.getTableData1()
  316. })
  317. },
  318. //车场
  319. getCarParkingName() {
  320. api_z.querySelectParkListByPage().then(res => {
  321. this.carParkingNameOptions=res.data
  322. })
  323. },
  324. //人员
  325. getPeople(){
  326. api_l.optPersonnelDic({}).then(res => {
  327. this.peopleOptions = res.data || []
  328. })
  329. },
  330. handleConfirm() {
  331. if (this.title === '修改') {
  332. api_l.optPersonnelManagementShiftEdit(this.formLabelAlign).then(res => {
  333. this.$message({
  334. message: '修改成功!',
  335. type: 'success'
  336. })
  337. this.dialogVisible = false
  338. this.getTableData1()
  339. })
  340. } else {
  341. api_l.optPersonnelManagementShiftAdd(this.formLabelAlign).then(res => {
  342. this.$message({
  343. message: '修改成功!',
  344. type: 'success'
  345. })
  346. this.dialogVisible = false
  347. this.getTableData1()
  348. }
  349. )
  350. }
  351. },
  352. onSubmit2() {
  353. this.loading2 = true
  354. api_l.optPersonnelManagementBasicDetail({tollmanName: this.formInline2.tollCollectorName}).then(res => {
  355. this.tableData2 = res.data.records
  356. this.total2 = res.data.total
  357. this.loading2 = false
  358. })
  359. },
  360. handleAdd2() {
  361. this.title2 = '添加'
  362. this.formLabelAlign2.id=''
  363. this.formLabelAlign2.parkId=''
  364. this.formLabelAlign2.tollmanName=''
  365. this.formLabelAlign2.birthDay=''
  366. this.formLabelAlign2.positionPermission=''
  367. this.dialogVisible2 = true
  368. },
  369. handleEdit2(row) {
  370. this.title2 = '修改'
  371. this.formLabelAlign2 = {...row}
  372. this.dialogVisible2 = true
  373. },
  374. deleteRow2(record) {
  375. api_l.optPersonnelManagementBasicDelete([{id: record.id}]).then(res => {
  376. this.getTableData2()
  377. })
  378. },
  379. handleConfirm2() {
  380. if (this.title2 === '修改') {
  381. api_l.optPersonnelManagementShiftEdit({id: this.formLabelAlign2.id,parkId: this.formLabelAlign2.parkId,tollmanName: this.formLabelAlign2.tollmanName,birthDay: this.formLabelAlign2.birthDay,positionPermission: this.formLabelAlign2.positionPermission}).then(res => {
  382. this.dialogVisible2 = false
  383. this.getTableData2()
  384. })
  385. }else if (this.title2 === '添加') {
  386. api_l.optPersonnelManagementBasicAdd({parkId: this.formLabelAlign2.parkId,tollmanName: this.formLabelAlign2.tollmanName,birthDay: this.formLabelAlign2.birthDay,positionPermission: this.formLabelAlign2.positionPermission}).then(res => {
  387. this.dialogVisible2 = false
  388. this.getTableData2()
  389. })
  390. }
  391. },
  392. handlePageChange1() {
  393. this.getTableData1()
  394. },
  395. getTableData1() {
  396. api_l.optPersonnelManagementShiftPage().then(res => {
  397. this.tableData1 = res.data.records
  398. })
  399. },
  400. getTableData2() {
  401. api_l.optPersonnelManagementBasicDetail({}).then(res => {
  402. this.tableData2 = res.data.records
  403. })
  404. },
  405. handlePageChange2() {
  406. this.getTableData2()
  407. },
  408. }}
  409. </script>
  410. <style lang="scss" scoped>
  411. .body-wrapper {
  412. .form-wrapper {
  413. .el-form-item {
  414. margin-bottom: 0px;
  415. }
  416. }
  417. .button-block {
  418. text-align: right;
  419. margin-bottom: 20px;
  420. }
  421. .table-pagination {
  422. text-align: right;
  423. }
  424. .search-card {
  425. margin-bottom: 20px;
  426. text-align: center;
  427. .input-wrapper {
  428. width: 36%;
  429. }
  430. }
  431. .audit-dialog {
  432. .mg-bt {
  433. margin-bottom: 24px;
  434. }
  435. .label {
  436. text-align: right;
  437. }
  438. .form-div {
  439. /deep/ .el-input__inner {
  440. height: 35px;
  441. width: 99%;
  442. border: 1px solid #a6a5a5;
  443. }
  444. }
  445. }
  446. }
  447. </style>