Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

select-car.vue 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <view class="selectCar-box">
  3. <view v-if="state.list.length>0" @click="choose(i,item)" class="item" v-for="(item,i) in state.list" :key="i">
  4. <view class="iten-left">
  5. <image :src="`${$imgUrl}che.png`" mode="aspectFill"></image>
  6. <text>{{item.vehiclePlate}}</text>
  7. </view>
  8. <view class="choose-item">
  9. <view class="active" v-if="flag==i">
  10. </view>
  11. </view>
  12. </view>
  13. <view v-else class="flex">
  14. 暂无车辆订单信息
  15. </view>
  16. </view>
  17. </template>
  18. <script lang="ts" setup>
  19. import {
  20. reactive,
  21. ref
  22. } from "vue"
  23. import {
  24. navTo, msg
  25. } from "@/utils/utils"
  26. import {
  27. onLoad,
  28. onShow
  29. } from "@dcloudio/uni-app";
  30. import {
  31. orderList,
  32. workOrderList,
  33. searchVehicleInfo
  34. } from "@/utils/network/api.js";
  35. import {
  36. request
  37. } from "@/utils/network/request.js";
  38. import {
  39. getItem,
  40. StorageKeys,
  41. setItem
  42. } from "@/utils/storage";
  43. import {
  44. stringToJson
  45. } from "@/utils/network/encryption";
  46. const state = reactive({
  47. list: [],
  48. businessType: "",
  49. customerId: "",
  50. vehiclePlate: "",
  51. vehiclePlateColor: ""
  52. });
  53. onLoad(() => {
  54. state.businessType = getItem('key')['DASP_PUSH_TYPE'][0]['code']
  55. quanCheckActionTrue().then((item : any) => {
  56. state.list = item.data
  57. console.log(item)
  58. })
  59. });
  60. const searchVehicleInfoQuery = (vehicleId) => {
  61. const options = {
  62. type: 2,
  63. data: {
  64. vehicleId: vehicleId
  65. },
  66. method: "POST",
  67. showLoading: true,
  68. };
  69. return new Promise(async (resolve, reject) => {
  70. const res = await request(searchVehicleInfo, options);
  71. const data = stringToJson(res.bizContent);
  72. resolve(data);
  73. }).catch((error) => {
  74. reject(error);
  75. });
  76. }
  77. const quanCheckActionTrue = () => {
  78. let source = ""
  79. // #ifdef MP-ALIPAY
  80. source = "ALI"
  81. // #endif
  82. // #ifdef MP-WEIXIN
  83. source = "WECHAT"
  84. // #endif
  85. var data = {
  86. opId: getItem(StorageKeys.OpenId),
  87. source: source,
  88. tabIndex: '0',
  89. orderStep: '11',
  90. isValueCard: '',
  91. orderStatus: "1",
  92. isAfter: true,
  93. };
  94. const options = {
  95. type: 2,
  96. data: data,
  97. method: "POST",
  98. showLoading: true,
  99. };
  100. return new Promise(async (resolve, reject) => {
  101. const res = await request(orderList, options);
  102. const data = stringToJson(res.bizContent);
  103. resolve(data);
  104. }).catch((error) => {
  105. reject(error);
  106. });
  107. }
  108. const flag = ref('0')
  109. const choose = (i, item) => {
  110. let id = item.id
  111. searchVehicleInfoQuery(item.vehicleId).then((item : any) => {
  112. console.log("====", item.vehicles[0])
  113. state.customerId = item.vehicles[0]['customerId']
  114. state.vehiclePlate = item.vehicles[0]['vehiclePlate']
  115. state.vehiclePlateColor = item.vehicles[0]['vehiclePlateColor']
  116. isWorkOrder().then((item : any) => {
  117. console.log("查询是否有工单", item)
  118. if (item.data) {
  119. if (item.data[0]['status'] == '0') {
  120. navTo(`/subpackage/after-sale/equipment-upgrade/upgrade-confirm?id=${id}&workId=${item.data[0]['id']}`)
  121. }
  122. } else {
  123. msg('暂无工单')
  124. }
  125. })
  126. })
  127. }
  128. const isWorkOrder = () => {
  129. var data = {
  130. vehiclePlate: state.vehiclePlate,
  131. vehiclePlateColor: state.vehiclePlateColor,
  132. customerId: state.customerId,
  133. };
  134. const options = {
  135. type: 2,
  136. data: data,
  137. method: "POST",
  138. showLoading: true,
  139. };
  140. return new Promise(async (resolve, reject) => {
  141. const res = await request(workOrderList, options);
  142. const data = stringToJson(res.bizContent);
  143. resolve(data);
  144. }).catch((error) => {
  145. reject(error);
  146. });
  147. }
  148. </script>
  149. <style>
  150. page {
  151. width: 100%;
  152. height: 100%;
  153. background-color: #EEF7F7;
  154. }
  155. </style>
  156. <style lang="scss" scoped>
  157. .flex {
  158. display: flex;
  159. justify-content: center;
  160. }
  161. .selectCar-box {
  162. // width: 100%;
  163. height: 100%;
  164. padding: 30rpx;
  165. .item {
  166. padding: 20rpx;
  167. display: flex;
  168. justify-content: space-between;
  169. align-items: center;
  170. height: 130rpx;
  171. background: #FFFFFF;
  172. box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8);
  173. border-radius: 20rpx;
  174. margin-bottom: 30rpx;
  175. .iten-left {
  176. display: flex;
  177. align-items: center;
  178. image {
  179. width: 150rpx;
  180. height: 90rpx;
  181. }
  182. text {
  183. margin-left: 20rpx;
  184. font-size: 32rpx;
  185. font-family: Noto Sans S Chinese;
  186. font-weight: 400;
  187. color: #333333;
  188. }
  189. }
  190. .choose-item {
  191. width: 44rpx;
  192. height: 44rpx;
  193. background: #FFFFFF;
  194. border: 2rpx solid #00B38B;
  195. border-radius: 50%;
  196. margin-right: 20rpx;
  197. display: flex;
  198. justify-content: center;
  199. align-items: center;
  200. box-sizing: content-box;
  201. }
  202. .active {
  203. width: 34rpx;
  204. height: 34rpx;
  205. background: #00B38B;
  206. border-radius: 50%;
  207. }
  208. }
  209. }
  210. </style>