环卫车小程序前端代码
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.

313 lines
8.1 KiB

7 months ago
  1. <template>
  2. <view class="se-m-20 se-p-20 se-br-10">
  3. <u--form labelPosition="left" :model="form" :rules="rules" ref="uForm" labelWidth="80">
  4. <u-form-item labelWidth="0">
  5. <view class="se-fs-26 se-c-black se-py-10">
  6. 请选择您要发布的车辆类型
  7. </view>
  8. <view class="se-flex se-flex-ai-c se-flex-ff-rw">
  9. <view class="se-py-10 se-px-30 se-fs-22 se-br-10 se-mr-15 se-mt-10" :class="item.select ? 'se-bgc-green se-c-white se-b-green' : 'se-b se-c-text'" @click="handleType(index)" v-for="(item,index) in typeList" :key="index">
  10. {{item.text}}
  11. </view>
  12. </view>
  13. </u-form-item>
  14. <u-form-item label="产品名称">
  15. <view class="se-flex se-flex-h-c">
  16. <u--input v-model="form.title" type="text" class="se-w-200" placeholder="请填写产品名称"></u--input>
  17. </view>
  18. </u-form-item>
  19. <u-form-item label="区域" prop="area">
  20. <u--input readonly v-model="form.area" placeholder="请选择地址" border="bottom"></u--input>
  21. <u-icon slot="right" name="arrow-right"></u-icon>
  22. </u-form-item>
  23. <u-form-item label="时间" prop="date">
  24. <u--input v-model="form.date" placeholder="请填写时间"></u--input>
  25. </u-form-item>
  26. <u-form-item label="公里数" prop="distance">
  27. <u--input v-model="form.distance" placeholder="请填写时间"></u--input>
  28. </u-form-item>
  29. <u-form-item label="租赁价格" prop="price">
  30. <u--input v-model="form.price" placeholder="请填写价格"></u--input>
  31. <div slot="right" class="se-c-green">/</div>
  32. </u-form-item>
  33. <u-form-item label="联系人" prop="contacts">
  34. <u--input v-model="form.contacts" placeholder="请填写联系人"></u--input>
  35. </u-form-item>
  36. <u-form-item label="联系人电话" prop="phone">
  37. <u--input v-model="form.phone" placeholder="请填写电话"></u--input>
  38. </u-form-item>
  39. <u-form-item prop="file" labelWidth="0">
  40. <view class="se-flex se-flex-v-sa">
  41. <view class="se-py-20 se-w-p-100 se-flex">
  42. 车辆照片()
  43. </view>
  44. <view class="se-py-20 se-w-p-100">
  45. <u-upload :fileList="form.fileFrontList" @afterRead="afterFront" @delete="delFront" :maxCount="1"></u-upload>
  46. </view>
  47. </view>
  48. </u-form-item>
  49. <u-form-item prop="file" labelWidth="0">
  50. <view class="se-flex se-flex-v-sa">
  51. <view class="se-py-20 se-w-p-100 se-flex">
  52. 车辆照片()
  53. </view>
  54. <view class="se-py-20 se-w-p-100">
  55. <u-upload :fileList="form.fileBackList" @afterRead="afterBack" @delete="delBack" :maxCount="1"></u-upload>
  56. </view>
  57. </view>
  58. </u-form-item>
  59. <u-form-item prop="file" labelWidth="0">
  60. <view class="se-flex se-flex-v-sa">
  61. <view class="se-py-20 se-w-p-100 se-flex">
  62. 车辆照片()
  63. </view>
  64. <view class="se-py-20 se-w-p-100">
  65. <u-upload :fileList="form.fileLeftList" @afterRead="afterLeft" @delete="delLeft" :maxCount="1"></u-upload>
  66. </view>
  67. </view>
  68. </u-form-item>
  69. <u-form-item prop="file" labelWidth="0">
  70. <view class="se-flex se-flex-v-sa">
  71. <view class="se-py-20 se-w-p-100 se-flex">
  72. 车辆照片()
  73. </view>
  74. <view class="se-py-20 se-w-p-100">
  75. <u-upload :fileList="form.fileRightList" @afterRead="afterRight" @delete="delRight" :maxCount="1"></u-upload>
  76. </view>
  77. </view>
  78. </u-form-item>
  79. <u-form-item prop="file" labelWidth="0">
  80. <view class="se-flex se-flex-v-sa">
  81. <view class="se-py-20 se-w-p-100 se-flex">
  82. 车辆照片(驾驶室)
  83. </view>
  84. <view class="se-py-20 se-w-p-100">
  85. <u-upload :fileList="form.fileCabList" @afterRead="afterCab" @delete="delCab" :maxCount="1"></u-upload>
  86. </view>
  87. </view>
  88. </u-form-item>
  89. <u-form-item label="车辆介绍" labelPosition="top" prop="introduce">
  90. <u--textarea v-model="form.introduce" class="se-mt-20" count
  91. placeholder="请填写车辆介绍"></u--textarea>
  92. </u-form-item>
  93. <u-form-item>
  94. <view class="se-px-20 se-pt-20">
  95. <view class="se-px-20 se-pb-80 se-fs-20 se-flex">
  96. <view @click="onSubmit"
  97. 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">
  98. <text>发布订单</text>
  99. </view>
  100. </view>
  101. </view>
  102. </u-form-item>
  103. </u--form>
  104. </view>
  105. </template>
  106. <script>
  107. export default {
  108. components:{
  109. },
  110. data() {
  111. return {
  112. typeList:[
  113. {
  114. text:"新车",
  115. value:"xin",
  116. select:true
  117. },
  118. {
  119. text:"二手车",
  120. value:"ershouche",
  121. select:false
  122. },
  123. {
  124. text:"租赁车辆",
  125. value:"all",
  126. select:false
  127. }
  128. ],
  129. form: {
  130. title:"",//产品名称
  131. area:"",//区域
  132. address:'',
  133. date:"",//时间
  134. distance:"",//距离
  135. price:"",//价格
  136. contacts:"",//联系人
  137. phone:"",//联系人电话
  138. fileFrontList:[],//车辆照片前
  139. fileBackList:[],//车辆照片后
  140. fileLeftList:[],//车辆照片左
  141. fileRightList:[],//车辆照片右
  142. fileCabList:[],//车辆照片 驾驶室
  143. introduce:"",//车辆介绍
  144. },
  145. rules: {
  146. title:[
  147. {
  148. type: 'string',
  149. required: true,
  150. message: '请填写产品名称',
  151. trigger: ['blur', 'change']
  152. }
  153. ],
  154. area:[
  155. {
  156. type: 'string',
  157. required: true,
  158. message: '请选择所在地区',
  159. trigger: ['blur', 'change']
  160. }
  161. ],
  162. date:[
  163. {
  164. type: 'string',
  165. required: true,
  166. message: '请填写时间',
  167. trigger: ['blur', 'change']
  168. }
  169. ],
  170. distance:[
  171. {
  172. type: 'string',
  173. required: true,
  174. message: '请填写公里数',
  175. trigger: ['blur', 'change']
  176. }
  177. ],
  178. price:[
  179. {
  180. type: 'string',
  181. required: true,
  182. message: '请填写价格',
  183. trigger: ['blur', 'change']
  184. }
  185. ],
  186. contacts:[
  187. {
  188. type: 'string',
  189. required: true,
  190. message: '请填写联系人',
  191. trigger: ['blur', 'change']
  192. }
  193. ],
  194. phone:[
  195. {
  196. type: 'string',
  197. required: true,
  198. message: '请填写联系电话',
  199. trigger: ['blur', 'change']
  200. }
  201. ],
  202. }
  203. }
  204. },
  205. onLoad(options) {
  206. },
  207. watch: {
  208. },
  209. methods: {
  210. handleType(index){
  211. this.typeList.forEach(items=>{
  212. items.select = false
  213. })
  214. this.typeList[index].select = !this.typeList[index].select
  215. },
  216. // 前
  217. delFront(event) {
  218. this.form.fileFrontList.splice(event.index, 1)
  219. },
  220. async afterFront(e) {
  221. let self = this
  222. e.file.forEach(file => {
  223. self.$Oss.ossUpload(file.url).then(url => {
  224. self.form.fileFrontList.push({
  225. url
  226. })
  227. })
  228. })
  229. },
  230. // 后
  231. delBack(event) {
  232. this.form.fileBackList.splice(event.index, 1)
  233. },
  234. async afterBack(e) {
  235. let self = this
  236. e.file.forEach(file => {
  237. self.$Oss.ossUpload(file.url).then(url => {
  238. self.form.fileBackList.push({
  239. url
  240. })
  241. })
  242. })
  243. },
  244. // 左
  245. delLeft(event) {
  246. this.form.fileLeftList.splice(event.index, 1)
  247. },
  248. async afterLeft(e) {
  249. let self = this
  250. e.file.forEach(file => {
  251. self.$Oss.ossUpload(file.url).then(url => {
  252. self.form.fileLeftList.push({
  253. url
  254. })
  255. })
  256. })
  257. },
  258. // 左
  259. delRight(event) {
  260. this.form.fileRightList.splice(event.index, 1)
  261. },
  262. async afterRight(e) {
  263. let self = this
  264. e.file.forEach(file => {
  265. self.$Oss.ossUpload(file.url).then(url => {
  266. self.form.fileRightList.push({
  267. url
  268. })
  269. })
  270. })
  271. },
  272. // 车辆照片(驾驶室)
  273. delCab(event) {
  274. this.form.fileCabList.splice(event.index, 1)
  275. },
  276. async afterCab(e) {
  277. let self = this
  278. e.file.forEach(file => {
  279. self.$Oss.ossUpload(file.url).then(url => {
  280. self.form.fileCabList.push({
  281. url
  282. })
  283. })
  284. })
  285. },
  286. onSubmit() {
  287. console.info(this.form)
  288. uni.navigateTo({
  289. url:"/pages_subpack/success/index"
  290. })
  291. this.$refs.uForm.validate().then(res => {
  292. uni.$u.toast('校验通过')
  293. }).catch(errors => {
  294. // uni.$u.toast('校验失败')
  295. })
  296. }
  297. },
  298. onReady() {
  299. this.$refs.uForm.setRules(this.rules)
  300. }
  301. }
  302. </script>
  303. <style>
  304. page {
  305. background-color: transparent;
  306. forced-color-adjust: none;
  307. }
  308. </style>