index.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. :model="queryParams"
  5. ref="queryForm"
  6. size="small"
  7. :inline="true"
  8. v-show="showSearch"
  9. label-width="68px"
  10. >
  11. <!-- <el-form-item label="起步价" prop="baseFare">
  12. <el-input
  13. v-model="queryParams.baseFare"
  14. placeholder="请输入起步价"
  15. clearable
  16. @keyup.enter.native="handleQuery"
  17. />
  18. </el-form-item>
  19. <el-form-item label="起步距离" prop="baseDistance">
  20. <el-input
  21. v-model="queryParams.baseDistance"
  22. placeholder="请输入起步距离"
  23. clearable
  24. @keyup.enter.native="handleQuery"
  25. />
  26. </el-form-item>
  27. <el-form-item label="超出起步价后每公里费用" prop="additionalFarePer">
  28. <el-input
  29. v-model="queryParams.additionalFarePer"
  30. placeholder="请输入超出起步价后每公里费用"
  31. clearable
  32. @keyup.enter.native="handleQuery"
  33. />
  34. </el-form-item> -->
  35. <!-- <el-form-item label="部门名称" prop="deptName">
  36. <el-input
  37. v-model="queryParams.deptName"
  38. placeholder="请输入部门名称"
  39. clearable
  40. @keyup.enter.native="handleQuery"
  41. />
  42. </el-form-item> -->
  43. <el-form-item label="城市:">
  44. <el-select
  45. v-model="queryParams.deptName"
  46. placeholder="请选择"
  47. @change="handleSelection"
  48. >
  49. <el-option
  50. v-for="item in options"
  51. :key="item.deptId"
  52. :label="item.deptName"
  53. :value="item.deptName"
  54. >
  55. </el-option>
  56. </el-select>
  57. </el-form-item>
  58. <el-form-item>
  59. <el-button
  60. type="primary"
  61. icon="el-icon-search"
  62. size="mini"
  63. @click="handleQuery"
  64. >搜索</el-button
  65. >
  66. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  67. >重置</el-button
  68. >
  69. </el-form-item>
  70. </el-form>
  71. <el-row :gutter="10" class="mb8">
  72. <el-col :span="1.5">
  73. <el-button
  74. type="primary"
  75. plain
  76. icon="el-icon-plus"
  77. size="mini"
  78. @click="handleAdd"
  79. v-hasPermi="['system:setting:add']"
  80. >新增</el-button
  81. >
  82. </el-col>
  83. <!-- <el-col :span="1.5">
  84. <el-button
  85. type="success"
  86. plain
  87. icon="el-icon-edit"
  88. size="mini"
  89. :disabled="single"
  90. @click="handleUpdate"
  91. v-hasPermi="['system:setting:edit']"
  92. >修改</el-button>
  93. </el-col>
  94. <el-col :span="1.5">
  95. <el-button
  96. type="danger"
  97. plain
  98. icon="el-icon-delete"
  99. size="mini"
  100. :disabled="multiple"
  101. @click="handleDelete"
  102. v-hasPermi="['system:setting:remove']"
  103. >删除</el-button>
  104. </el-col>
  105. <el-col :span="1.5">
  106. <el-button
  107. type="warning"
  108. plain
  109. icon="el-icon-download"
  110. size="mini"
  111. @click="handleExport"
  112. v-hasPermi="['system:setting:export']"
  113. >导出</el-button>
  114. </el-col> -->
  115. <right-toolbar
  116. :showSearch.sync="showSearch"
  117. @queryTable="getList"
  118. ></right-toolbar>
  119. </el-row>
  120. <el-table
  121. v-loading="loading"
  122. :data="settingList"
  123. @selection-change="handleSelectionChange"
  124. >
  125. <!-- <el-table-column type="selection" width="55" align="center" /> -->
  126. <el-table-column label="编号" align="center" prop="id" />
  127. <el-table-column label="部门名称" align="center" prop="deptName" />
  128. <el-table-column label="起步价" align="center" prop="baseFare" />
  129. <el-table-column label="起步距离" align="center" prop="baseDistance" />
  130. <el-table-column
  131. label="超出起步价后每公里费用"
  132. align="center"
  133. prop="additionalFarePer"
  134. />
  135. <el-table-column label="是否启用" align="center" prop="enable">
  136. <template slot-scope="scope">
  137. {{ scope.row.enable === 0 ? '已停用' :'已启用 '}}
  138. <!-- <el-switch
  139. v-model="scope.row.enable"
  140. inline-prompt
  141. :active-value="1"
  142. :inactive-value="0"
  143. @change="changeStatus(scope.row)"
  144. ></el-switch> -->
  145. </template>
  146. </el-table-column>
  147. <!-- <el-table-column label="部门id" align="center" prop="deptId" /> -->
  148. <!-- <el-table-column label="是否删除0否1是" align="center" prop="isDelete" /> -->
  149. <el-table-column
  150. label="操作"
  151. align="center"
  152. class-name="small-padding fixed-width"
  153. >
  154. <template slot-scope="scope">
  155. <el-button
  156. size="mini"
  157. type="text"
  158. icon="el-icon-edit"
  159. @click="handleUpdate(scope.row)"
  160. v-hasPermi="['system:setting:edit']"
  161. >修改</el-button
  162. >
  163. <el-button
  164. size="mini"
  165. type="text"
  166. icon="el-icon-delete"
  167. @click="handleDelete(scope.row)"
  168. v-hasPermi="['system:setting:remove']"
  169. >删除</el-button
  170. >
  171. </template>
  172. </el-table-column>
  173. </el-table>
  174. <pagination
  175. v-show="total > 0"
  176. :total="total"
  177. :page.sync="queryParams.pageNum"
  178. :limit.sync="queryParams.pageSize"
  179. @pagination="getList"
  180. />
  181. <!-- 添加或修改车费设置对话框 -->
  182. <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
  183. <el-form ref="form" :model="form" :rules="rules" label-width="180px">
  184. <el-form-item label="起步价" prop="baseFare">
  185. <el-input v-model="form.baseFare" placeholder="请输入起步价" />
  186. </el-form-item>
  187. <el-form-item label="起步距离" prop="baseDistance">
  188. <el-input v-model="form.baseDistance" placeholder="请输入起步距离" />
  189. </el-form-item>
  190. <el-form-item label="超出起步价后每公里费用" prop="additionalFarePer">
  191. <el-input
  192. v-model="form.additionalFarePer"
  193. placeholder="请输入超出起步价后每公里费用"
  194. />
  195. </el-form-item>
  196. <el-form-item label="城市:">
  197. <el-select
  198. v-model="form.deptName"
  199. placeholder="请选择"
  200. @change="handleSelectionChange"
  201. >
  202. <el-option
  203. v-for="item in options"
  204. :key="item.deptId"
  205. :label="item.deptName"
  206. :value="item"
  207. >
  208. </el-option>
  209. </el-select>
  210. </el-form-item>
  211. <el-form-item label="是否启用" prop="enable">
  212. <el-switch
  213. v-model="enable"
  214. active-text="启用"
  215. inactive-text="关闭"
  216. change
  217. >
  218. </el-switch>
  219. </el-form-item>
  220. <!-- <el-form-item label="部门id" prop="deptId">
  221. <el-input v-model="form.deptId" placeholder="请输入部门id" />
  222. </el-form-item> -->
  223. <!-- <el-form-item label="部门名称" prop="deptName">
  224. <el-input v-model="form.deptName" placeholder="请输入部门名称" />
  225. </el-form-item> -->
  226. <!-- <el-form-item label="是否删除0否1是" prop="isDelete">
  227. <el-input v-model="form.isDelete" placeholder="请输入是否删除0否1是" />
  228. </el-form-item> -->
  229. </el-form>
  230. <div slot="footer" class="dialog-footer">
  231. <el-button type="primary" @click="submitForm">确 定</el-button>
  232. <el-button @click="cancel">取 消</el-button>
  233. </div>
  234. </el-dialog>
  235. </div>
  236. </template>
  237. <script>
  238. import {
  239. farelist,
  240. getSetting,
  241. delSetting,
  242. addSetting,
  243. updateSetting,
  244. } from "@/api/system/setting";
  245. import { getDept } from "@/api/system/js";
  246. export default {
  247. name: "Setting",
  248. data() {
  249. return {
  250. // 遮罩层
  251. loading: true,
  252. // 选中数组
  253. ids: [],
  254. // 非单个禁用
  255. single: true,
  256. // 非多个禁用
  257. multiple: true,
  258. // 显示搜索条件
  259. showSearch: true,
  260. // 总条数
  261. total: 0,
  262. // 车费设置表格数据
  263. settingList: [],
  264. // 弹出层标题
  265. title: "",
  266. // 是否显示弹出层
  267. open: false,
  268. // 查询参数
  269. queryParams: {
  270. pageNum: 1,
  271. pageSize: 10,
  272. baseFare: null,
  273. baseDistance: null,
  274. additionalFarePer: null,
  275. enable: null,
  276. deptId: null,
  277. deptName: null,
  278. isDelete: null,
  279. },
  280. // 表单参数
  281. form: {},
  282. // 表单校验
  283. rules: {},
  284. options: [],
  285. enable: false,
  286. };
  287. },
  288. created() {
  289. this.getList();
  290. },
  291. mounted() {
  292. this.getDeptList();
  293. },
  294. methods: {
  295. changeStatus(row) {
  296. this.form.additionalFarePer = row.additionalFarePer
  297. this.form.baseDistance = row.baseDistance
  298. this.form.baseFare = row.baseFare
  299. this.form.enable = row.enable
  300. this.form.deptId = row.deptId
  301. this.form.deptName = row.deptName
  302. this.form.id = row.id
  303. updateSetting(this.form).then((res) => {
  304. if(res.code == 200){
  305. this.$modal.msgSuccess("修改成功");
  306. this.resetQuery()
  307. return true
  308. }else{
  309. this.$modal.msgError(res.msg);
  310. this.resetQuery()
  311. return false
  312. }
  313. });
  314. },
  315. change(row) {},
  316. // 获取部门
  317. getDeptList() {
  318. getDept().then((res) => {
  319. this.options = res.data;
  320. });
  321. },
  322. //选择部门
  323. handleSelectionChange(val) {
  324. this.form.deptId = val.deptId;
  325. this.form.deptName = val.deptName;
  326. },
  327. /** 提交按钮 */
  328. submitForm() {
  329. // this.enable == true ? this.form.enable = 0:this.form.enable = 1
  330. // addSetting(this.form).then((res) => {
  331. // if(res.code == 200){
  332. // this.$modal.msgSuccess("新增成功");
  333. // this.getList()
  334. // }else{
  335. // this.$modal.msgError(res.msg);
  336. // this.getList()
  337. // }
  338. // });
  339. // this.$refs["form"].validate((valid) => {
  340. // if (valid) {
  341. if (this.form.id != null) {
  342. this.enable == true ? (this.form.enable = 1) : (this.form.enable = 0);
  343. updateSetting(this.form).then((response) => {
  344. this.$modal.msgSuccess("修改成功");
  345. this.open = false;
  346. this.getList();
  347. });
  348. } else {
  349. this.enable == true ? (this.form.enable = 1) : (this.form.enable = 0);
  350. addSetting(this.form).then((response) => {
  351. this.$modal.msgSuccess("新增成功");
  352. this.open = false;
  353. this.getList();
  354. });
  355. }
  356. // }
  357. // });
  358. },
  359. /** 查询车费设置列表 */
  360. getList() {
  361. this.loading = true;
  362. farelist(this.queryParams).then((response) => {
  363. this.settingList = response.data.records;
  364. this.total = response.data.total;
  365. this.loading = false;
  366. });
  367. },
  368. // 取消按钮
  369. cancel() {
  370. this.open = false;
  371. this.reset();
  372. },
  373. // 表单重置
  374. reset() {
  375. this.form = {
  376. id: null,
  377. baseFare: null,
  378. baseDistance: null,
  379. additionalFarePer: null,
  380. enable: null,
  381. deptId: null,
  382. deptName: null,
  383. createTime: null,
  384. updateTime: null,
  385. isDelete: null,
  386. };
  387. this.resetForm("form");
  388. },
  389. /** 搜索按钮操作 */
  390. handleQuery() {
  391. this.queryParams.pageNum = 1;
  392. this.queryParams.pageSize = 10;
  393. this.getList();
  394. },
  395. /** 重置按钮操作 */
  396. resetQuery() {
  397. this.queryParams = {
  398. id: null,
  399. baseFare: null,
  400. baseDistance: null,
  401. additionalFarePer: null,
  402. enable: null,
  403. deptId: null,
  404. deptName: null,
  405. createTime: null,
  406. updateTime: null,
  407. isDelete: null,
  408. };
  409. this.handleQuery();
  410. },
  411. //多选框选中数据
  412. handleSelection(selection) {
  413. this.queryParams.deptId = selection.deptId;
  414. // this.ids = selection.map((item) => item.id);
  415. // this.single = selection.length !== 1;
  416. // this.multiple = !selection.length;
  417. },
  418. /** 新增按钮操作 */
  419. handleAdd() {
  420. this.reset();
  421. this.open = true;
  422. this.title = "添加车费设置";
  423. },
  424. /** 修改按钮操作 */
  425. handleUpdate(row) {
  426. this.reset();
  427. this.open = true;
  428. this.form.additionalFarePer = row.additionalFarePer
  429. this.form.baseDistance = row.baseDistance
  430. this.form.baseFare = row.baseFare
  431. row.enable == 0 ? this.enable = false : this.enable = true
  432. this.form.deptId = row.deptId
  433. this.form.deptName = row.deptName
  434. this.form.id = row.id
  435. this.title = "修改车费设置";
  436. },
  437. /** 删除按钮操作 */
  438. handleDelete(row) {
  439. // const ids = row.id || this.ids;
  440. let idList = []
  441. idList.push(row.id)
  442. this.$modal
  443. .confirm('是否确认删除车费设置编号为"' + row.id + '"的数据项?')
  444. .then(function () {
  445. return delSetting(idList);
  446. })
  447. .then(() => {
  448. this.getList();
  449. this.$modal.msgSuccess("删除成功");
  450. })
  451. .catch(() => {});
  452. },
  453. /** 导出按钮操作 */
  454. handleExport() {
  455. this.download(
  456. "system/setting/export",
  457. {
  458. ...this.queryParams,
  459. },
  460. `setting_${new Date().getTime()}.xlsx`
  461. );
  462. },
  463. },
  464. };
  465. </script>