index.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="订单号" prop="orderNo">
  5. <el-input
  6. v-model="queryParams.orderNo"
  7. placeholder="请输入订单号"
  8. clearable
  9. size="small"
  10. @keyup.enter.native="handleQuery"
  11. />
  12. </el-form-item>
  13. <el-form-item label="加油枪号" prop="oilGun">
  14. <el-input
  15. v-model="queryParams.oilGun"
  16. placeholder="请输入加油枪号"
  17. clearable
  18. size="small"
  19. @keyup.enter.native="handleQuery"
  20. />
  21. </el-form-item>
  22. <el-form-item label="油品名称" prop="oilName">
  23. <el-input
  24. v-model="queryParams.oilName"
  25. placeholder="请输入油品名称"
  26. clearable
  27. size="small"
  28. @keyup.enter.native="handleQuery"
  29. />
  30. </el-form-item>
  31. <!-- <el-form-item label="用户id(消费者)" prop="consumerId">-->
  32. <!-- <el-input-->
  33. <!-- v-model="queryParams.consumerId"-->
  34. <!-- placeholder="请输入用户id(消费者)"-->
  35. <!-- clearable-->
  36. <!-- size="small"-->
  37. <!-- @keyup.enter.native="handleQuery"-->
  38. <!-- />-->
  39. <!-- </el-form-item>-->
  40. <el-form-item label="消费者" prop="consumer">
  41. <el-input
  42. v-model="queryParams.consumer"
  43. placeholder="请输入消费者"
  44. clearable
  45. size="small"
  46. @keyup.enter.native="handleQuery"
  47. />
  48. </el-form-item>
  49. <el-form-item label="金额" prop="amt">
  50. <el-input
  51. v-model="queryParams.amt"
  52. placeholder="请输入金额"
  53. clearable
  54. size="small"
  55. @keyup.enter.native="handleQuery"
  56. />
  57. </el-form-item>
  58. <el-form-item label="油站id" prop="stationId">
  59. <el-input
  60. v-model="queryParams.stationId"
  61. placeholder="请输入油站id"
  62. clearable
  63. size="small"
  64. @keyup.enter.native="handleQuery"
  65. />
  66. </el-form-item>
  67. <el-form-item label="支付状态" prop="status">
  68. <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
  69. <el-option
  70. v-for="dict in payStatusOptions"
  71. :key="dict.dictValue"
  72. :label="dict.dictLabel"
  73. :value="dict.dictValue"
  74. ></el-option>
  75. </el-select>
  76. </el-form-item>
  77. <el-form-item label="加油升数" prop="orderLiters">
  78. <el-input
  79. v-model="queryParams.orderLiters"
  80. placeholder="请输入加油升数"
  81. clearable
  82. size="small"
  83. @keyup.enter.native="handleQuery"
  84. />
  85. </el-form-item>
  86. <el-form-item label="支付类型" prop="payType">
  87. <el-select v-model="queryParams.payType" placeholder="请选择支付类型" clearable size="small">
  88. <el-option
  89. v-for="dict in payTypeOptions"
  90. :key="dict.dictValue"
  91. :label="dict.dictLabel"
  92. :value="dict.dictValue"
  93. ></el-option>
  94. </el-select>
  95. </el-form-item>
  96. <el-form-item label="支付方式" prop="payWay">
  97. <el-select v-model="queryParams.payWay" placeholder="请选择支付类型" clearable size="small">
  98. <el-option
  99. v-for="dict in payWayOptions"
  100. :key="dict.dictValue"
  101. :label="dict.dictLabel"
  102. :value="dict.dictValue"
  103. ></el-option>
  104. </el-select>
  105. </el-form-item>
  106. <el-form-item label="支付时间" prop="payDate">
  107. <el-date-picker clearable size="small" style="width: 200px"
  108. v-model="queryParams.payDate"
  109. type="date"
  110. value-format="yyyy-MM-dd"
  111. placeholder="选择支付时间">
  112. </el-date-picker>
  113. </el-form-item>
  114. <el-form-item label="加油员" prop="oilPersonnel">
  115. <el-input
  116. v-model="queryParams.oilPersonnel"
  117. placeholder="请输入加油员"
  118. clearable
  119. size="small"
  120. @keyup.enter.native="handleQuery"
  121. />
  122. </el-form-item>
  123. <el-form-item label="创建时间" prop="createdDate">
  124. <el-date-picker clearable size="small" style="width: 200px"
  125. v-model="queryParams.createdDate"
  126. type="date"
  127. value-format="yyyy-MM-dd"
  128. placeholder="选择创建时间">
  129. </el-date-picker>
  130. </el-form-item>
  131. <el-form-item label="订单类型" prop="orderType">
  132. <el-select v-model="queryParams.orderType" placeholder="请选择订单类型" clearable size="small">
  133. <el-option label="请选择字典生成" value="" />
  134. </el-select>
  135. </el-form-item>
  136. <el-form-item>
  137. <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  138. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  139. </el-form-item>
  140. </el-form>
  141. <el-row :gutter="10" class="mb8">
  142. <!-- <el-col :span="1.5">-->
  143. <!-- <el-button-->
  144. <!-- type="primary"-->
  145. <!-- icon="el-icon-plus"-->
  146. <!-- size="mini"-->
  147. <!-- @click="handleAdd"-->
  148. <!-- v-hasPermi="['station:order:add']"-->
  149. <!-- >新增</el-button>-->
  150. <!-- </el-col>-->
  151. <!-- <el-col :span="1.5">-->
  152. <!-- <el-button-->
  153. <!-- type="success"-->
  154. <!-- icon="el-icon-edit"-->
  155. <!-- size="mini"-->
  156. <!-- :disabled="single"-->
  157. <!-- @click="handleUpdate"-->
  158. <!-- v-hasPermi="['station:order:edit']"-->
  159. <!-- >修改</el-button>-->
  160. <!-- </el-col>-->
  161. <el-col :span="1.5">
  162. <el-button
  163. type="danger"
  164. icon="el-icon-delete"
  165. size="mini"
  166. :disabled="multiple"
  167. @click="handleDelete"
  168. v-hasPermi="['station:order:remove']"
  169. >删除</el-button>
  170. </el-col>
  171. <el-col :span="1.5">
  172. <el-button
  173. type="warning"
  174. icon="el-icon-download"
  175. size="mini"
  176. @click="handleExport"
  177. v-hasPermi="['station:order:export']"
  178. >导出</el-button>
  179. </el-col>
  180. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  181. </el-row>
  182. <el-table v-loading="loading" :data="orderList" @selection-change="handleSelectionChange">
  183. <el-table-column type="selection" width="55" align="center" />
  184. <el-table-column v-if="false" label="订单id" align="center" prop="orderId" />
  185. <el-table-column label="订单号" width="200" align="center" prop="orderNo" />
  186. <el-table-column label="加油枪号" align="center" prop="oilGun" />
  187. <el-table-column label="油品名称" align="center" prop="oilName" />
  188. <el-table-column v-if="false" label="用户id(消费者)" align="center" prop="consumerId" />
  189. <el-table-column label="消费者" width="120" align="center" prop="consumer" />
  190. <el-table-column label="金额" align="center" prop="amt" />
  191. <el-table-column label="加油升数" align="center" prop="orderLiters" />
  192. <el-table-column v-if="false" label="油站id" align="center" prop="stationId" />
  193. <el-table-column label="状态" align="center" prop="status" :formatter="statusFotmat"/>
  194. <el-table-column label="支付类型" align="center" prop="payType" :formatter="payTypeFotmat"/>
  195. <el-table-column label="支付方式" align="center" prop="payWay" :formatter="payWayFotmat"/>
  196. <el-table-column label="订单类型" align="center" prop="orderType" />
  197. <el-table-column label="加油员" align="center" prop="oilPersonnel" />
  198. <el-table-column label="创建时间" align="center" prop="createdDate" width="150">
  199. <template slot-scope="scope">
  200. <span>{{ parseTime(scope.row.createdDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
  201. </template>
  202. </el-table-column>
  203. <el-table-column label="支付时间" align="center" prop="payDate" width="150">
  204. <template slot-scope="scope">
  205. <span>{{ parseTime(scope.row.payDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
  206. </template>
  207. </el-table-column>
  208. <el-table-column label="订单类型" align="center" prop="orderType" v-if="false" />
  209. <el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
  210. <template slot-scope="scope">
  211. <!-- <el-button-->
  212. <!-- size="mini"-->
  213. <!-- type="text"-->
  214. <!-- icon="el-icon-edit"-->
  215. <!-- @click="handleUpdate(scope.row)"-->
  216. <!-- v-hasPermi="['station:order:edit']"-->
  217. <!-- >修改</el-button>-->
  218. <el-button
  219. size="mini"
  220. type="text"
  221. icon="el-icon-delete"
  222. @click="handleDelete(scope.row)"
  223. v-hasPermi="['station:order:remove']"
  224. >删除</el-button>
  225. </template>
  226. </el-table-column>
  227. </el-table>
  228. <pagination
  229. v-show="total>0"
  230. :total="total"
  231. :page.sync="queryParams.pageNum"
  232. :limit.sync="queryParams.pageSize"
  233. @pagination="getList"
  234. />
  235. <!-- 添加或修改订单支付对话框 -->
  236. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  237. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  238. <el-form-item label="订单号" prop="orderNo">
  239. <el-input v-model="form.orderNo" placeholder="请输入订单号" />
  240. </el-form-item>
  241. <el-form-item label="加油枪号" prop="oilGun">
  242. <el-input v-model="form.oilGun" placeholder="请输入加油枪号" />
  243. </el-form-item>
  244. <el-form-item label="油品名称" prop="oilName">
  245. <el-input v-model="form.oilName" placeholder="请输入油品名称" />
  246. </el-form-item>
  247. <el-form-item label="用户id(消费者)" prop="consumerId">
  248. <el-input v-model="form.consumerId" placeholder="请输入用户id(消费者)" />
  249. </el-form-item>
  250. <el-form-item label="消费者" prop="consumer">
  251. <el-input v-model="form.consumer" placeholder="请输入消费者" />
  252. </el-form-item>
  253. <el-form-item label="金额" prop="amt">
  254. <el-input v-model="form.amt" placeholder="请输入金额" />
  255. </el-form-item>
  256. <el-form-item label="油站id" prop="stationId">
  257. <el-input v-model="form.stationId" placeholder="请输入油站id" />
  258. </el-form-item>
  259. <el-form-item label="状态">
  260. <el-radio-group v-model="form.status">
  261. <el-radio label="1">请选择字典生成</el-radio>
  262. </el-radio-group>
  263. <el-select v-model="form.status" placeholder="请选择支付类型:随行付:sxf">
  264. <el-option
  265. v-for="dict in payStatusOptions"
  266. :key="dict.dictValue"
  267. :label="dict.dictLabel"
  268. :value="dict.dictValue"
  269. ></el-option>
  270. </el-select>
  271. </el-form-item>
  272. <el-form-item label="加油升数" prop="orderLiters">
  273. <el-input v-model="form.orderLiters" placeholder="请输入加油升数" />
  274. </el-form-item>
  275. <el-form-item label="支付类型" prop="payType">
  276. <el-select v-model="form.payType" placeholder="请选择支付类型:随行付:sxf">
  277. <el-option
  278. v-for="dict in payTypeOptions"
  279. :key="dict.dictValue"
  280. :label="dict.dictLabel"
  281. :value="dict.dictValue"
  282. ></el-option>
  283. </el-select>
  284. </el-form-item>
  285. <el-form-item label="支付方式" prop="payWay">
  286. <el-select v-model="form.payWay" multiple placeholder="请选择">
  287. <el-option
  288. v-for="dict in payWayOptions"
  289. :key="dict.dictValue"
  290. :label="dict.dictLabel"
  291. :value="dict.dictValue"
  292. ></el-option>
  293. </el-select>
  294. </el-form-item>
  295. <el-form-item label="支付时间" prop="payDate">
  296. <el-date-picker clearable size="small" style="width: 200px"
  297. v-model="form.payDate"
  298. type="date"
  299. value-format="yyyy-MM-dd"
  300. placeholder="选择支付时间">
  301. </el-date-picker>
  302. </el-form-item>
  303. <el-form-item label="加油员" prop="oilPersonnel">
  304. <el-input v-model="form.oilPersonnel" placeholder="请输入加油员" />
  305. </el-form-item>
  306. <el-form-item label="创建时间" prop="createdDate">
  307. <el-date-picker clearable size="small" style="width: 200px"
  308. v-model="form.createdDate"
  309. type="date"
  310. value-format="yyyy-MM-dd"
  311. placeholder="选择创建时间">
  312. </el-date-picker>
  313. </el-form-item>
  314. <el-form-item label="订单类型" prop="orderType">
  315. <el-select v-model="form.orderType" placeholder="请选择订单类型">
  316. <el-option label="请选择字典生成" value="" />
  317. </el-select>
  318. </el-form-item>
  319. </el-form>
  320. <div slot="footer" class="dialog-footer">
  321. <el-button type="primary" @click="submitForm">确 定</el-button>
  322. <el-button @click="cancel">取 消</el-button>
  323. </div>
  324. </el-dialog>
  325. </div>
  326. </template>
  327. <script>
  328. import { listOrder, getOrder, delOrder, addOrder, updateOrder, exportOrder } from "@/api/station/order";
  329. export default {
  330. name: "Order",
  331. data() {
  332. return {
  333. // 遮罩层
  334. loading: true,
  335. // 选中数组
  336. ids: [],
  337. // 非单个禁用
  338. single: true,
  339. // 非多个禁用
  340. multiple: true,
  341. // 显示搜索条件
  342. showSearch: true,
  343. // 总条数
  344. total: 0,
  345. // 订单支付表格数据
  346. orderList: [],
  347. //字典
  348. payTypeOptions:[],
  349. payWayOptions:[],
  350. payStatusOptions:[],
  351. // 弹出层标题
  352. title: "",
  353. // 是否显示弹出层
  354. open: false,
  355. // 查询参数
  356. queryParams: {
  357. pageNum: 1,
  358. pageSize: 10,
  359. orderNo: null,
  360. oilGun: null,
  361. oilName: null,
  362. consumerId: null,
  363. consumer: null,
  364. amt: null,
  365. stationId: null,
  366. status: null,
  367. orderLiters: null,
  368. payType: null,
  369. payWay: null,
  370. payDate: null,
  371. oilPersonnel: null,
  372. createdDate: null,
  373. orderType: null
  374. },
  375. // 表单参数
  376. form: {},
  377. // 表单校验
  378. rules: {
  379. }
  380. };
  381. },
  382. created() {
  383. this.getList();
  384. //字典
  385. this.getDicts("pay_type").then(response => {
  386. this.payTypeOptions = response.data;
  387. });
  388. this.getDicts("pay_way").then(response => {
  389. this.payWayOptions = response.data;
  390. });
  391. this.getDicts("pay_status").then(response => {
  392. this.payStatusOptions = response.data;
  393. });
  394. },
  395. methods: {
  396. payTypeFotmat(row, column){
  397. if(row.payType === 'sxf'){
  398. return '随行付'
  399. }
  400. },
  401. payWayFotmat(row, column){
  402. if(row.payWay === '02'){
  403. return '公众号'
  404. }else if(row.payWay === '03'){
  405. return '小程序'
  406. }
  407. },
  408. //statusFotmat
  409. statusFotmat(row, column){
  410. if(row.status === '0'){
  411. return '未支付'
  412. }else if(row.status === '1'){
  413. return '已支付'
  414. }
  415. },
  416. //orderTypeFotmat
  417. // orderTypeFotmat(row, column){
  418. // if(row.orderType === '1'){
  419. // return '柴油'
  420. // }else if(row.orderType === '2'){
  421. // return '汽油'
  422. // }
  423. // },
  424. /** 查询订单支付列表 */
  425. getList() {
  426. this.loading = true;
  427. listOrder(this.queryParams).then(response => {
  428. this.orderList = response.rows;
  429. this.total = response.total;
  430. this.loading = false;
  431. });
  432. },
  433. // 取消按钮
  434. cancel() {
  435. this.open = false;
  436. this.reset();
  437. },
  438. // 表单重置
  439. reset() {
  440. this.form = {
  441. orderId: null,
  442. orderNo: null,
  443. oilGun: null,
  444. oilName: null,
  445. consumerId: null,
  446. consumer: null,
  447. amt: null,
  448. stationId: null,
  449. status: "0",
  450. orderLiters: null,
  451. payType: null,
  452. payWay: null,
  453. payDate: null,
  454. oilPersonnel: null,
  455. createdDate: null,
  456. orderType: 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.orderId)
  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 orderId = row.orderId || this.ids
  486. getOrder(orderId).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.orderId != null) {
  497. updateOrder(this.form).then(response => {
  498. this.msgSuccess("修改成功");
  499. this.open = false;
  500. this.getList();
  501. });
  502. } else {
  503. addOrder(this.form).then(response => {
  504. this.msgSuccess("新增成功");
  505. this.open = false;
  506. this.getList();
  507. });
  508. }
  509. }
  510. });
  511. },
  512. /** 删除按钮操作 */
  513. handleDelete(row) {
  514. const orderIds = row.orderId || this.ids;
  515. this.$confirm('是否确认删除订单支付编号为"' + orderIds + '"的数据项?', "警告", {
  516. confirmButtonText: "确定",
  517. cancelButtonText: "取消",
  518. type: "warning"
  519. }).then(function() {
  520. return delOrder(orderIds);
  521. }).then(() => {
  522. this.getList();
  523. this.msgSuccess("删除成功");
  524. })
  525. },
  526. /** 导出按钮操作 */
  527. handleExport() {
  528. const queryParams = this.queryParams;
  529. this.$confirm('是否确认导出所有订单支付数据项?', "警告", {
  530. confirmButtonText: "确定",
  531. cancelButtonText: "取消",
  532. type: "warning"
  533. }).then(function() {
  534. return exportOrder(queryParams);
  535. }).then(response => {
  536. this.download(response.msg);
  537. })
  538. }
  539. }
  540. };
  541. </script>