Lng_GroupSet.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <template>
  2. <div>
  3. <div
  4. class="accordion"
  5. :id="'accordionExample' + index"
  6. v-for="(ele, index) in list"
  7. :key="index"
  8. >
  9. <div class="card m-auto" style="width: 500px">
  10. <div class="card-header" :id="'headingOne' + index">
  11. <h2 class="mb-0">
  12. <button
  13. class="btn btn-link btn-block text-left"
  14. type="button"
  15. data-toggle="collapse"
  16. :data-target="'#collapseOne' + index"
  17. aria-expanded="true"
  18. :aria-controls="'collapseOne' + index"
  19. >
  20. {{ ele.stationName }}
  21. </button>
  22. </h2>
  23. </div>
  24. <div
  25. :id="'collapseOne' + index"
  26. class="collapse"
  27. :aria-labelledby="'headingOne' + index"
  28. :data-parent="'#accordionExample' + index"
  29. >
  30. <div class="card-body">
  31. <el-form
  32. :model="ele"
  33. status-icon
  34. :ref="'listForm' + index"
  35. label-width="120px"
  36. class="demo-ruleForm w-75 m-auto"
  37. >
  38. <el-form-item label="结算优惠类型" prop="settlementType">
  39. <el-radio-group
  40. v-model="ele.settlementType"
  41. :disabled="!ele.editFlag"
  42. >
  43. <el-radio label="1">直降</el-radio>
  44. <el-radio label="2">折扣</el-radio>
  45. </el-radio-group>
  46. </el-form-item>
  47. <el-form-item label="结算优惠金额" prop="settlementPrice">
  48. {{ ele.settlementType == 1 ? "直降" : "折扣" }}
  49. <input
  50. type="text"
  51. class="form-control form-control-sm d-inline-block"
  52. style="width: 80px"
  53. v-model.number="ele.settlementPrice"
  54. :disabled="!ele.editFlag"
  55. />
  56. {{ ele.settlementType == 1 ? "元" : "%" }}
  57. </el-form-item>
  58. <el-form-item label="司机优惠折扣" prop="driverPrice">
  59. 折扣
  60. <input
  61. type="text"
  62. class="form-control form-control-sm d-inline-block"
  63. style="width: 80px"
  64. v-model.number="ele.driverPrice"
  65. :disabled="!ele.editFlag"
  66. />
  67. %
  68. </el-form-item>
  69. <el-form-item label="站点交易余额" prop="balance">
  70. {{ ele.balance === null ? 0 : ele.balance }}
  71. <a href="#"
  72. class="mb-2 ml-2"
  73. icon="el-icon-edit"
  74. @click="toggleBalanceFlag(ele)"
  75. >{{ !ele.balanceFlag ? "调整" : "收起" }}
  76. </a>
  77. <div class="mt-2" v-show="!!ele.balanceFlag">
  78. <select
  79. class="custom-select custom-select-sm mb-1 mr-1"
  80. :id="'inputGroupSelect' + index"
  81. style="width: 50px"
  82. :disabled="!ele.balanceFlag"
  83. v-model.number="ele.type"
  84. >
  85. <option value="+"> + </option>
  86. <option value="-"> - </option>
  87. </select>
  88. <input
  89. type="text"
  90. class="form-control form-control-sm d-inline-block"
  91. style="width: 80px"
  92. :disabled="!ele.balanceFlag"
  93. v-model.number="ele.amt"
  94. />
  95. <el-button
  96. class="btn btn-outline-dark btn-sm mb-1 ml-1"
  97. :disabled="!ele.balanceFlag"
  98. @click="changeBalance(ele, index)"
  99. >
  100. 确认
  101. </el-button>
  102. </div>
  103. </el-form-item>
  104. <el-form-item>
  105. <el-button
  106. type="primary"
  107. @click="submitForm(ele,index)"
  108. class="mr-2"
  109. :disabled="!ele.editFlag"
  110. >提交</el-button
  111. >
  112. <el-button @click="toggleEditFlag(ele,index)" >{{
  113. !ele.editFlag ? "修改" : "取消"
  114. }}</el-button>
  115. </el-form-item>
  116. </el-form>
  117. </div>
  118. </div>
  119. </div>
  120. </div>
  121. </div>
  122. </template>
  123. <script>
  124. import {
  125. getLngList,
  126. getLngSingle,
  127. updateInfo,
  128. balanceChange
  129. } from "@/api/lng";
  130. export default {
  131. name: "Lng_GroupSet",
  132. data() {
  133. return {
  134. list: [
  135. {
  136. settlementType: "1",
  137. settlementPrice: 1,
  138. driverPrice: 97,
  139. balance: 1000,
  140. },
  141. {
  142. settlementType: "1",
  143. settlementPrice: 2,
  144. driverPrice: 95,
  145. balance: 2000,
  146. },
  147. ],
  148. };
  149. },
  150. created() {
  151. this.getLngList();
  152. },
  153. methods: {
  154. getLngSingle(id, index) {
  155. return getLngSingle(id)
  156. .then((res) => {
  157. if (res.code == 200) {
  158. console.log(res.data);
  159. this.list[index] = res.data;
  160. this.list = [...this.list];
  161. } else {
  162. throw new Error("");
  163. }
  164. })
  165. .catch(() => {
  166. this.msgError("拉取气站列表失败");
  167. });
  168. },
  169. getLngList() {
  170. getLngList()
  171. .then((res) => {
  172. if (res.code == 200) {
  173. this.list = res.rows;
  174. } else {
  175. throw new Error("");
  176. }
  177. })
  178. .catch(() => {
  179. this.msgError("拉取气站列表失败");
  180. });
  181. },
  182. toggleBalanceFlag(ele) {
  183. ele.type = "+"
  184. ele.balanceFlag = !ele.balanceFlag;
  185. ele.editFlag = false;
  186. this.list = [...this.list];
  187. },
  188. toggleEditFlag(ele, index) {
  189. ele.editFlag = !ele.editFlag;
  190. ele.balanceFlag = false;
  191. if (!ele.editFlag) {
  192. this.getLngSingle(ele.id, index)
  193. }else{
  194. this.list = [...this.list];
  195. }
  196. },
  197. submitForm(ele, index){
  198. updateInfo(ele).then((res)=>{
  199. if(res.code == 200){
  200. this.getLngSingle(ele.id, index).then((res)=>{
  201. this.editFlag = false
  202. })
  203. }else{
  204. throw new Error("");
  205. }
  206. }).catch(()=>{
  207. this.msgError("修改失败,请刷新后重试")
  208. })
  209. },
  210. changeBalance(ele, index){
  211. if(!ele.type || !ele.amt || !ele.deptId || ele.amt<=0){
  212. this.msgError("请正确填写参数")
  213. return;
  214. }
  215. balanceChange({
  216. type:ele.type,
  217. amt:ele.amt,
  218. stationId: ele.deptId
  219. }).then((res)=>{
  220. if(res.code == 200){
  221. this.getLngSingle(ele.id,index).then((res)=>{
  222. ele.type = '+'
  223. ele.amt = 0
  224. ele.balanceFlag = false;
  225. })
  226. }else{
  227. throw new Error("");
  228. }
  229. }).catch(()=>{
  230. this.msgError("修改失败,请刷新后重试")
  231. })
  232. }
  233. },
  234. };
  235. </script>
  236. <style>
  237. </style>