index.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
  4. <el-form-item label="所属单位" prop="appEncode">
  5. <el-input
  6. v-model="queryParams.appEncode"
  7. placeholder="请输入所属单位"
  8. clearable
  9. @keyup.enter.native="handleQuery"
  10. />
  11. </el-form-item>
  12. <el-form-item>
  13. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  14. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  15. </el-form-item>
  16. </el-form>
  17. <el-row :gutter="10" class="mb8">
  18. <el-col :span="1.5">
  19. <el-button
  20. type="primary"
  21. icon="el-icon-plus"
  22. size="mini"
  23. @click="handleAdd"
  24. v-hasPermi="['zcustom:platPublicCar:add']"
  25. >新增</el-button>
  26. </el-col>
  27. <el-col :span="1.5">
  28. <el-button
  29. type="danger"
  30. icon="el-icon-delete"
  31. size="mini"
  32. :disabled="multiple"
  33. @click="handleDelete"
  34. v-hasPermi="['zcustom:platPublicCar:remove']"
  35. >删除</el-button>
  36. </el-col>
  37. <el-col :span="1.5">
  38. <el-button
  39. type="warning"
  40. icon="el-icon-upload"
  41. size="mini"
  42. @click="handleUpload"
  43. >导入</el-button>
  44. </el-col>
  45. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  46. </el-row>
  47. <el-table v-loading="loading" :data="platPublicCarList" @selection-change="handleSelectionChange">
  48. <el-table-column type="selection" width="55" align="center" />
  49. <el-table-column label="序号" width="50">
  50. <template slot-scope="scope">
  51. {{(scope.$index + 1) + ((queryParams.pageNum - 1) * queryParams.pageSize)}}
  52. </template>
  53. </el-table-column>
  54. <el-table-column label="所属单位" align="center" prop="appEncode" />
  55. <el-table-column label="公务车实有总数" align="center" prop="totalCarNum" />
  56. <el-table-column label="商务车数量" align="center" prop="carNumOne" />
  57. <el-table-column label="越野车数量" align="center" prop="carNumTwo" />
  58. <el-table-column label="小轿车数量" align="center" prop="carNumThree" />
  59. <el-table-column label="小型客车数量" align="center" prop="carNumFour" />
  60. <el-table-column label="大型客车数量" align="center" prop="carNumFive" />
  61. <el-table-column label="企业用车数量" align="center" prop="enterpriseCarNum" />
  62. <el-table-column label="企业负责人用车数量" align="center" prop="headCarNum" />
  63. <el-table-column label="燃油车数量" align="center" prop="oilCarNum" />
  64. <el-table-column label="新能源车数量" align="center" prop="newPowerCarNum" />
  65. <el-table-column label="公务车编制数" align="center" prop="establishmentsCarNum" />
  66. <el-table-column label="公务车年度增加数" align="center" prop="yearAddNum" />
  67. <el-table-column label="公务车年度减少数" align="center" prop="yearReduceNum" />
  68. <el-table-column label="公务车终端数" align="center" prop="terminalTotal" />
  69. <el-table-column label="公务车终端安装数" align="center" prop="terminalInstall" />
  70. <el-table-column label="公务车终端在线数" align="center" prop="terminalOnline" />
  71. <el-table-column label="处置未归档数量" align="center" prop="notArchivedNum" />
  72. <el-table-column label="未带工单数" align="center" prop="noPidNum" />
  73. <el-table-column label="超速预警数" align="center" prop="overSpeedNum" />
  74. <el-table-column label="节假日预警数" align="center" prop="holidayNum" />
  75. <el-table-column label="派车单总数" align="center" prop="pcdNum" />
  76. <el-table-column label="均车派车单数" align="center" prop="avgPcdNum" />
  77. <el-table-column label="公务车行驶总里程" align="center" prop="mileCount" />
  78. <el-table-column label="均车里程" align="center" prop="avgMile" />
  79. <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
  80. <template slot-scope="scope">
  81. <el-button
  82. size="mini"
  83. type="text"
  84. icon="el-icon-edit"
  85. @click="handleUpdate(scope.row)"
  86. v-hasPermi="['zcustom:platPublicCar:edit']"
  87. >修改</el-button>
  88. <el-button
  89. size="mini"
  90. type="text"
  91. icon="el-icon-delete"
  92. @click="handleDelete(scope.row)"
  93. v-hasPermi="['zcustom:platPublicCar:remove']"
  94. >删除</el-button>
  95. </template>
  96. </el-table-column>
  97. </el-table>
  98. <pagination
  99. v-show="total>0"
  100. :total="total"
  101. :page.sync="queryParams.pageNum"
  102. :limit.sync="queryParams.pageSize"
  103. @pagination="getList"
  104. />
  105. <!-- 添加或修改公务用车对话框 -->
  106. <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="800px" append-to-body>
  107. <el-form ref="form" :model="form" :rules="rules" label-width="150px">
  108. <el-form-item label="所属单位" prop="appEncode">
  109. <el-input v-model="form.appEncode" placeholder="请输入所属单位" />
  110. </el-form-item>
  111. <el-form-item label="公务车实有总数" prop="totalCarNum">
  112. <el-input v-model="form.totalCarNum" placeholder="请输入公务车实有总数" />
  113. </el-form-item>
  114. <el-form-item label="商务车数量" prop="carNumOne">
  115. <el-input v-model="form.carNumOne" placeholder="请输入商务车数量" />
  116. </el-form-item>
  117. <el-form-item label="越野车数量" prop="carNumTwo">
  118. <el-input v-model="form.carNumTwo" placeholder="请输入越野车数量" />
  119. </el-form-item>
  120. <el-form-item label="小轿车数量" prop="carNumThree">
  121. <el-input v-model="form.carNumThree" placeholder="请输入小轿车数量" />
  122. </el-form-item>
  123. <el-form-item label="小型客车数量" prop="carNumFour">
  124. <el-input v-model="form.carNumFour" placeholder="请输入小型客车数量" />
  125. </el-form-item>
  126. <el-form-item label="大型客车数量" prop="carNumFive">
  127. <el-input v-model="form.carNumFive" placeholder="请输入大型客车数量" />
  128. </el-form-item>
  129. <el-form-item label="企业用车数量" prop="enterpriseCarNum">
  130. <el-input v-model="form.enterpriseCarNum" placeholder="请输入企业用车数量" />
  131. </el-form-item>
  132. <el-form-item label="企业负责人用车数量" prop="headCarNum">
  133. <el-input v-model="form.headCarNum" placeholder="请输入企业负责人用车数量" />
  134. </el-form-item>
  135. <el-form-item label="燃油车数量" prop="oilCarNum">
  136. <el-input v-model="form.oilCarNum" placeholder="请输入燃油车数量" />
  137. </el-form-item>
  138. <el-form-item label="新能源车数量" prop="newPowerCarNum">
  139. <el-input v-model="form.newPowerCarNum" placeholder="请输入新能源车数量" />
  140. </el-form-item>
  141. <el-form-item label="公务车编制数" prop="establishmentsCarNum">
  142. <el-input v-model="form.establishmentsCarNum" placeholder="请输入公务车编制数" />
  143. </el-form-item>
  144. <el-form-item label="公务车年度增加数" prop="yearAddNum">
  145. <el-input v-model="form.yearAddNum" placeholder="请输入公务车年度增加数" />
  146. </el-form-item>
  147. <el-form-item label="公务车年度减少数" prop="yearReduceNum">
  148. <el-input v-model="form.yearReduceNum" placeholder="请输入公务车年度减少数" />
  149. </el-form-item>
  150. <el-form-item label="公务车终端数" prop="terminalTotal">
  151. <el-input v-model="form.terminalTotal" placeholder="请输入公务车终端数" />
  152. </el-form-item>
  153. <el-form-item label="公务车终端安装数" prop="terminalInstall">
  154. <el-input v-model="form.terminalInstall" placeholder="请输入公务车终端安装数" />
  155. </el-form-item>
  156. <el-form-item label="公务车终端在线数" prop="terminalOnline">
  157. <el-input v-model="form.terminalOnline" placeholder="请输入公务车终端在线数" />
  158. </el-form-item>
  159. <el-form-item label="处置未归档数量" prop="notArchivedNum">
  160. <el-input v-model="form.notArchivedNum" placeholder="请输入处置未归档数量" />
  161. </el-form-item>
  162. <el-form-item label="未带工单数" prop="noPidNum">
  163. <el-input v-model="form.noPidNum" placeholder="请输入未带工单数" />
  164. </el-form-item>
  165. <el-form-item label="超速预警数" prop="overSpeedNum">
  166. <el-input v-model="form.overSpeedNum" placeholder="请输入超速预警数" />
  167. </el-form-item>
  168. <el-form-item label="节假日预警数" prop="holidayNum">
  169. <el-input v-model="form.holidayNum" placeholder="请输入节假日预警数" />
  170. </el-form-item>
  171. <el-form-item label="派车单总数" prop="pcdNum">
  172. <el-input v-model="form.pcdNum" placeholder="请输入派车单总数" />
  173. </el-form-item>
  174. <el-form-item label="均车派车单数" prop="avgPcdNum">
  175. <el-input v-model="form.avgPcdNum" placeholder="请输入均车派车单数" />
  176. </el-form-item>
  177. <el-form-item label="公务车行驶总里程" prop="mileCount">
  178. <el-input v-model="form.mileCount" placeholder="请输入公务车行驶总里程" />
  179. </el-form-item>
  180. <el-form-item label="均车里程" prop="avgMile">
  181. <el-input v-model="form.avgMile" placeholder="请输入均车里程" />
  182. </el-form-item>
  183. </el-form>
  184. <div slot="footer" class="dialog-footer">
  185. <el-button type="primary" @click="submitForm">确 定</el-button>
  186. <el-button @click="cancel">取 消</el-button>
  187. </div>
  188. </el-dialog>
  189. <el-dialog title="导入json" :visible.sync="op" :close-on-click-modal="false" width="600px" append-to-body>
  190. <el-form ref="form" :rules="rules" label-width="80px">
  191. <el-form-item label="json来源">
  192. <el-select v-model="value" placeholder="请选择源接口">
  193. <el-option
  194. v-for="item in options"
  195. :key="item.value"
  196. :label="item.label"
  197. :value="item.value">
  198. </el-option>
  199. </el-select>
  200. </el-form-item>
  201. <el-form-item label="json数据">
  202. <el-input v-model="json" type="textarea" placeholder="请输入json数据" />
  203. </el-form-item>
  204. </el-form>
  205. <div slot="footer" class="dialog-footer">
  206. <el-button type="primary" @click="sure">确 定</el-button>
  207. <el-button @click="cancel">取 消</el-button>
  208. </div>
  209. </el-dialog>
  210. </div>
  211. </template>
  212. <script>
  213. import {
  214. listPlatPublicCar,
  215. getPlatPublicCar,
  216. delPlatPublicCar,
  217. addPlatPublicCar,
  218. updatePlatPublicCar,
  219. uploadJson
  220. } from '@/api/zcustom/public'
  221. export default {
  222. name: "PlatPublicCar",
  223. data() {
  224. return {
  225. value: null,
  226. options:[
  227. {
  228. value: '1',
  229. label: '资源台账-按照月度统计'
  230. }, {
  231. value: '2',
  232. label: '资源台账-按照年度统计'
  233. }, {
  234. value: '3',
  235. label: '资源台账-公务车实有数展开-1'
  236. }, {
  237. value: '4',
  238. label: '资源台账-公务车实有数展开-2'
  239. }, {
  240. value: '5',
  241. label: '资源台账-公务车实有数展开-3'
  242. }, {
  243. value: '6',
  244. label: '运行管理-公务车派车单总数'
  245. }, {
  246. value: '7',
  247. label: '监控管理-公务车终端安装率、在线率'
  248. }, {
  249. value: '8',
  250. label: '监控管理-公务车处置未归档数量'
  251. }, {
  252. value: '9',
  253. label: '监控管理-未带工单预警、超速预警数、节假日预警数'
  254. }
  255. ],
  256. json: undefined,
  257. op:false,
  258. // 根路径
  259. baseURL: process.env.VUE_APP_BASE_API,
  260. // 遮罩层
  261. loading: true,
  262. // 选中数组
  263. ids: [],
  264. // 非单个禁用
  265. single: true,
  266. // 非多个禁用
  267. multiple: true,
  268. // 显示搜索条件
  269. showSearch: true,
  270. // 总条数
  271. total: 0,
  272. // 公务用车表格数据
  273. platPublicCarList: [],
  274. // 弹出层标题
  275. title: "",
  276. // 是否显示弹出层
  277. open: false,
  278. // 查询参数
  279. queryParams: {
  280. pageNum: 1,
  281. pageSize: 10,
  282. appEncode: null,
  283. totalCarNum: null,
  284. carNumOne: null,
  285. carNumTwo: null,
  286. carNumThree: null,
  287. carNumFour: null,
  288. carNumFive: null,
  289. enterpriseCarNum: null,
  290. headCarNum: null,
  291. oilCarNum: null,
  292. newPowerCarNum: null,
  293. establishmentsCarNum: null,
  294. yearAddNum: null,
  295. yearReduceNum: null,
  296. terminalInstall: null,
  297. terminalTotal: null,
  298. terminalOnline: null,
  299. notArchivedNum: null,
  300. noPidNum: null,
  301. overSpeedNum: null,
  302. holidayNum: null,
  303. pcdNum: null,
  304. avgPcdNum: null,
  305. mileCount: null,
  306. avgMile: null
  307. },
  308. // 表单参数
  309. form: {},
  310. // 表单校验
  311. rules: {
  312. value: [
  313. { required: true, message: "来源不能为空", trigger: "blur" }
  314. ],
  315. json: [
  316. { required: true, message: "数据不能为空", trigger: "blur" }
  317. ],
  318. id: [
  319. { required: true, message: "id不能为空", trigger: "blur" }
  320. ],
  321. delFlag: [
  322. { required: true, message: "删除标志不能为空", trigger: "blur" }
  323. ],
  324. appEncode: [
  325. { required: true, message: "所属单位不能为空", trigger: "blur" }
  326. ],
  327. totalCarNum: [
  328. { required: true, message: "公务车实有总数不能为空", trigger: "blur" }
  329. ],
  330. carNumOne: [
  331. { required: true, message: "商务车数量不能为空", trigger: "blur" }
  332. ],
  333. carNumTwo: [
  334. { required: true, message: "越野车数量不能为空", trigger: "blur" }
  335. ],
  336. carNumThree: [
  337. { required: true, message: "小轿车数量不能为空", trigger: "blur" }
  338. ],
  339. carNumFour: [
  340. { required: true, message: "小型客车数量不能为空", trigger: "blur" }
  341. ],
  342. carNumFive: [
  343. { required: true, message: "大型客车数量不能为空", trigger: "blur" }
  344. ],
  345. enterpriseCarNum: [
  346. { required: true, message: "企业用车数量不能为空", trigger: "blur" }
  347. ],
  348. headCarNum: [
  349. { required: true, message: "企业负责人用车数量不能为空", trigger: "blur" }
  350. ],
  351. oilCarNum: [
  352. { required: true, message: "燃油车数量不能为空", trigger: "blur" }
  353. ],
  354. newPowerCarNum: [
  355. { required: true, message: "新能源车数量不能为空", trigger: "blur" }
  356. ],
  357. establishmentsCarNum: [
  358. { required: true, message: "公务车编制数不能为空", trigger: "blur" }
  359. ],
  360. yearAddNum: [
  361. { required: true, message: "公务车年度增加数不能为空", trigger: "blur" }
  362. ],
  363. yearReduceNum: [
  364. { required: true, message: "公务车年度减少数不能为空", trigger: "blur" }
  365. ],
  366. terminalTotal: [
  367. { required: true, message: "公务车终端数不能为空", trigger: "blur" }
  368. ],
  369. terminalInstall: [
  370. { required: true, message: "公务车终端安装数不能为空", trigger: "blur" }
  371. ],
  372. terminalOnline: [
  373. { required: true, message: "公务车终端在线数不能为空", trigger: "blur" }
  374. ],
  375. notArchivedNum: [
  376. { required: true, message: "处置未归档数量不能为空", trigger: "blur" }
  377. ],
  378. noPidNum: [
  379. { required: true, message: "未带工单数不能为空", trigger: "blur" }
  380. ],
  381. overSpeedNum: [
  382. { required: true, message: "超速预警数不能为空", trigger: "blur" }
  383. ],
  384. holidayNum: [
  385. { required: true, message: "节假日预警数不能为空", trigger: "blur" }
  386. ],
  387. pcdNum: [
  388. { required: true, message: "派车单总数不能为空", trigger: "blur" }
  389. ],
  390. avgPcdNum: [
  391. { required: true, message: "均车派车单数不能为空", trigger: "blur" }
  392. ],
  393. mileCount: [
  394. { required: true, message: "公务车行驶总里程不能为空", trigger: "blur" }
  395. ],
  396. avgMile: [
  397. { required: true, message: "均车里程不能为空", trigger: "blur" }
  398. ]
  399. }
  400. };
  401. },
  402. created() {
  403. this.getList();
  404. },
  405. methods: {
  406. sure(){
  407. const jsonString = JSON.parse(this.json)
  408. console.log(jsonString)
  409. uploadJson(this.value, jsonString).then(res => {
  410. })
  411. },
  412. /** 查询公务用车列表 */
  413. getList() {
  414. this.loading = true;
  415. listPlatPublicCar(this.queryParams).then(response => {
  416. this.platPublicCarList = response.data.records;
  417. this.total = response.data.total;
  418. this.loading = false;
  419. });
  420. },
  421. // 取消按钮
  422. cancel() {
  423. this.open = false;
  424. this.op = false;
  425. this.reset();
  426. },
  427. // 表单重置
  428. reset() {
  429. this.form = {
  430. id: null,
  431. delFlag: null,
  432. appEncode: null,
  433. totalCarNum: null,
  434. carNumOne: null,
  435. carNumTwo: null,
  436. carNumThree: null,
  437. carNumFour: null,
  438. carNumFive: null,
  439. enterpriseCarNum: null,
  440. headCarNum: null,
  441. oilCarNum: null,
  442. newPowerCarNum: null,
  443. establishmentsCarNum: null,
  444. yearAddNum: null,
  445. yearReduceNum: null,
  446. terminalTotal: null,
  447. terminalInstall: null,
  448. terminalOnline: null,
  449. notArchivedNum: null,
  450. noPidNum: null,
  451. overSpeedNum: null,
  452. holidayNum: null,
  453. pcdNum: null,
  454. avgPcdNum: null,
  455. mileCount: null,
  456. avgMile: null
  457. };
  458. this.resetForm("form");
  459. },
  460. /** 搜索按钮操作 */
  461. handleQuery() {
  462. this.queryParams.pageNum = 1;
  463. this.getList();
  464. },
  465. /** 重置按钮操作 */
  466. resetQuery() {
  467. this.resetForm("queryForm");
  468. this.handleQuery();
  469. },
  470. // 多选框选中数据
  471. handleSelectionChange(selection) {
  472. this.ids = selection.map(item => item.id)
  473. this.single = selection.length!==1
  474. this.multiple = !selection.length
  475. },
  476. /** 新增按钮操作 */
  477. handleAdd() {
  478. this.reset();
  479. this.open = true;
  480. this.title = "添加公务用车";
  481. },
  482. /** 修改按钮操作 */
  483. handleUpdate(row) {
  484. this.reset();
  485. const id = row.id || this.ids
  486. getPlatPublicCar(id).then(response => {
  487. this.form = response.data;
  488. this.open = true;
  489. this.title = "修改公务用车";
  490. });
  491. },
  492. /** 提交按钮 */
  493. submitForm() {
  494. this.$refs["form"].validate(valid => {
  495. if (valid) {
  496. if (this.form.id != null) {
  497. updatePlatPublicCar(this.form).then(response => {
  498. this.$modal.msgSuccess("修改成功");
  499. this.open = false;
  500. this.getList();
  501. });
  502. } else {
  503. addPlatPublicCar(this.form).then(response => {
  504. this.$modal.msgSuccess("新增成功");
  505. this.open = false;
  506. this.getList();
  507. });
  508. }
  509. }
  510. });
  511. },
  512. /** 删除按钮操作 */
  513. handleDelete(row) {
  514. const ids = row.id || this.ids;
  515. this.$modal.confirm('是否确认删除?').then(function() {
  516. return delPlatPublicCar(ids);
  517. }).then(() => {
  518. this.getList();
  519. this.$modal.msgSuccess("删除成功");
  520. }).catch(() => {});
  521. },
  522. /** 导入操作 */
  523. handleUpload(){
  524. this.op = true
  525. }
  526. }
  527. };
  528. </script>