环卫车小程序前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

252 lines
7.3 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. <template>
  2. <view>
  3. <view class="se-w-vw-100 se-h-500">
  4. <u-swiper :radius="0" :list="list" :height="250" :autoplay="false"></u-swiper>
  5. </view>
  6. <view class="se-py-20 se-flex se-bgc-white">
  7. <view class="se-w-vw-90 se-pl-30">
  8. <view class=" se-c-black se-fw-6 se-fs-32">
  9. {{detail.goodsName}}
  10. </view>
  11. <view class="se-display-ib se-c-red se-fs-32 se-br-8 se-px-10 se-py-5">
  12. {{detail.price}}
  13. </view>
  14. </view>
  15. <view class="se-pr-30 se-flex se-flex-v-c">
  16. <text>浏览量{{detail.views}}+</text>
  17. <!-- <button style="justify-content: center;" class="se-w-140 se-flex se-flex-ai-c se-h-60 se-lh-60 se-fs-22 se-bgc-green se-c-white se-py-0 se-br-30 se-px-20 se-m-0" open-type="share">
  18. <uv-icon name="share" color="#fff"></uv-icon>
  19. <text class="se-fs-20 se-pl-5">分享</text>
  20. </button> -->
  21. </view>
  22. </view>
  23. <view class="se-mt-20 se-bgc-white se-px-20 se-py-10 se-ta-l se-c-black se-py-20 se-flex se-flex-ai-c se-fs-24">
  24. <text>型号:</text>
  25. <text class="se-ml-10">{{detail.model}}</text>
  26. </view>
  27. <view class="se-pt-20">
  28. <view class="se-p-20 se-c-black se-fs-28">
  29. 产品参数
  30. </view>
  31. <view>
  32. <u-parse :content="detail.detail"></u-parse>
  33. </view>
  34. </view>
  35. <view class="se-pos-fixed se-bgc-white se-b-ts se-w-vw-100 se-h-160" style="bottom: 0px;left: 0rpx;">
  36. <view class=" se-flex se-flex-h-sb se-py-20">
  37. <button style="justify-content: center;" class="default-btn se-w-140 se-flex se-flex-v-c se-fs-22 se-c-black se-py-0 se-br-30 se-px-20 se-m-0" open-type="share">
  38. <u-icon name="share" color="#000"></u-icon>
  39. <text class="se-fs-20 se-pl-5 se-c-black">分享</text>
  40. </button>
  41. <view class="se-flex se-flex-ai-c se-px-40 se-py-20">
  42. <view @click="onCustomerService()" class="se-flex se-flex-ai-c se-px-60 se-h-60 se-c-green se-fs-24 se-c-black se-b" style="border-radius: 30rpx 0 0 30rpx;">
  43. 联系电话
  44. </view>
  45. <view @click="open()" class="se-flex se-flex-ai-c se-px-60 se-h-60 se-bgc-green se-fs-24 se-c-white se-b" style="border-radius: 0 30rpx 30rpx 0;">
  46. 预约看车
  47. </view>
  48. </view>
  49. </view>
  50. </view>
  51. <u-popup :show="show" @close="close" @open="open">
  52. <u--form labelPosition="left" :model="form" :rules="rules" ref="uForm" labelWidth="80">
  53. <view class="se-bgc-white se-pt-40 se-pb-80">
  54. <view class="se-px-40 se-py-20 se-c-black se-fs-30 se-fw-6">
  55. 预约租车
  56. </view>
  57. <view class="se-px-20 se-pb-20 se-mx-20 se-bgc-white se-br-20">
  58. <u-form-item class="se-py-20" label="联系姓名" prop="name" borderBottom>
  59. <u--input v-model="form.name" border="none" placeholder="请输入联系姓名"></u--input>
  60. </u-form-item>
  61. <u-form-item class="se-py-20" label="联系电话" prop="mobile" borderBottom>
  62. <u--input v-model="form.mobile" type="number" border="none" placeholder="请输入联系电话"></u--input>
  63. </u-form-item>
  64. <u-form-item label="所在地区" prop="area" @click="handleAreaChange()">
  65. <u--input readonly v-model="form.address" placeholder="请选择地址" border="bottom"></u--input>
  66. <u-icon slot="right" name="arrow-right"></u-icon>
  67. </u-form-item>
  68. <!-- <u-form-item class="se-py-20" label="所在地区" prop="address" borderBottom>
  69. <u--input v-model="form.address" type="text" border="none" placeholder="请输入所在地区"></u--input>
  70. </u-form-item> -->
  71. <u-form-item>
  72. <view @click="submit"
  73. class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-28 se-c-white se-bgc-green">
  74. <text>确认</text>
  75. </view>
  76. </u-form-item>
  77. </view>
  78. </view>
  79. </u--form>
  80. </u-popup>
  81. </view>
  82. </template>
  83. <script>
  84. import { queryGoodsById,addOrder } from "@/common/api.js"
  85. import QQMapWX from "@/util/qqmap-wx-jssdk.min.js"
  86. export default{
  87. data(){
  88. return{
  89. show:false,
  90. list:[
  91. // 'https://cdn.uviewui.com/uview/swiper/swiper1.png',
  92. // 'https://cdn.uviewui.com/uview/swiper/swiper2.png',
  93. // 'https://cdn.uviewui.com/uview/swiper/swiper3.png',
  94. ],
  95. form:{
  96. name:"",
  97. mobile:"",
  98. address: '',
  99. latitude:"",
  100. longitude:"",
  101. },
  102. rules:{
  103. name: [
  104. {
  105. required: true,
  106. message: '请输入联系姓名',
  107. trigger: ['blur', 'change']
  108. }
  109. ],
  110. mobile:[
  111. {
  112. required: true,
  113. message: '请输入联系电话',
  114. trigger: ['blur', 'change']
  115. }
  116. ],
  117. address: [
  118. {
  119. required: true,
  120. message: '请选择地址',
  121. trigger: ['blur', 'change']
  122. }
  123. ]
  124. },
  125. id:null,
  126. detail:{}
  127. }
  128. },
  129. onLoad(options) {
  130. this.id = options.goodsId
  131. this.onDetail()
  132. },
  133. methods:{
  134. onDetail(){
  135. let that = this
  136. queryGoodsById({goodsId:that.id}).then(response=>{
  137. console.info("queryGoodsById",response)
  138. let items = response.result
  139. if(items.image){
  140. items.image.split(',').forEach(item=>{
  141. that.list.push({
  142. url: item,
  143. type: 'image'
  144. })
  145. })
  146. }
  147. that.detail = items
  148. }).catch(error=>{
  149. })
  150. },
  151. submit() {
  152. this.$refs.uForm.validate().then(res => {
  153. // uni.$u.toast('校验通过')
  154. this.onAddOrder()
  155. }).catch(errors => {
  156. uni.$u.toast('校验失败')
  157. })
  158. },
  159. onAddOrder(){
  160. let that = this
  161. let params ={
  162. goodsId:that.detail.id,
  163. area:that.form.address,
  164. name:that.form.name,
  165. phone:that.form.mobile,
  166. typeId:that.detail.cartypeId
  167. }
  168. addOrder(params).then(response=>{
  169. uni.$u.toast(response.message)
  170. that.close()
  171. uni.navigateTo({
  172. url:"/pages_subpack/success/index"
  173. })
  174. }).catch(error=>{
  175. })
  176. },
  177. onCustomerService(){
  178. let that = this
  179. // let obj = that.$utils.getkeyContent('phone')
  180. if (uni.canIUse('makePhoneCall')) {
  181. uni.makePhoneCall({
  182. phoneNumber:String(that.detail.phone),
  183. success: function () {
  184. console.log('拨打电话成功');
  185. },
  186. fail: function () {
  187. console.log('拨打电话失败');
  188. }
  189. });
  190. } else {
  191. console.log('你的设备不支持拨打电话功能');
  192. }
  193. },
  194. open() {
  195. this.show = true
  196. },
  197. close() {
  198. this.show = false
  199. },
  200. handleAreaChange(){
  201. const that = this;
  202. wx.chooseLocation({
  203. // type: 'wgs84',
  204. success: function (res) {
  205. const qqmapsdk = new QQMapWX({
  206. key: 'TT7BZ-Z3LW4-KOAUB-KWHOA-SBJJ6-Y5B6R' // 必填
  207. });
  208. uni.showLoading({
  209. title:"获取中...."
  210. })
  211. qqmapsdk.reverseGeocoder({
  212. location: {
  213. latitude: res.latitude,
  214. longitude: res.longitude
  215. },
  216. success: function(response) {
  217. console.log('逆地理编码结果:', response);
  218. uni.hideLoading()
  219. that.form.longitude = response.result.location.lng
  220. that.form.latitude = response.result.location.lat
  221. that.form.address = response.result.address
  222. },
  223. fail: function(error) {
  224. uni.hideLoading()
  225. console.error('逆地理编码失败:', error);
  226. }
  227. });
  228. }
  229. })
  230. // this.$refs.citySelectRef.open()
  231. },
  232. }
  233. }
  234. </script>
  235. <style>
  236. page{
  237. background-color: #f5f5f5;
  238. }
  239. </style>
  240. <style lang="scss" scoped>
  241. .default-btn{
  242. background-color: transparent;
  243. }
  244. .default-btn::after{
  245. content: "";
  246. border: none;
  247. }
  248. </style>