chenqilong 1 år sedan
förälder
incheckning
69a4950966
1 ändrade filer med 174 tillägg och 39 borttagningar
  1. 174 39
      src/pages/issue/index.vue

+ 174 - 39
src/pages/issue/index.vue

@@ -5,6 +5,9 @@
     <view>
       <u-popup :show="show" :overlay="false">
         <view class="pop">
+          <view class="contentXZ"> 
+            <u-parse :content="content"></u-parse>
+          </view><br><br><br><br><br>
           <view class="bottom-container">
             <u-button @click="handleAgree" text="我已知晓" color="#5298ff" shape="circle"></u-button>
           </view>
@@ -12,18 +15,18 @@
       </u-popup>
     </view>
     <!-- ---------- -->
-    <view class="content">
-      <u--form labelPosition="top" labelWidth="150" :model="form" :rules="rules" ref="uForm">
-        <u-form-item label="商品名称" prop="form.title" borderBottom ref="item1">
+    <view v-if="!show" class="content">
+      <u--form labelPosition="top" labelWidth="150" :model="form" :rules="rules" ref="form">
+        <u-form-item label="商品名称" prop="title" required borderBottom ref="title">
           <u--input v-model="form.title" placeholder="请输入商品名称" border="none"></u--input>
         </u-form-item>
-        <u-form-item label="商品描述" prop="form.content" borderBottom ref="item1">
+        <u-form-item label="商品描述" prop="content" required borderBottom ref="item1">
           <u--input v-model="form.content" placeholder="请输入" border="none"></u--input>
         </u-form-item>
-        <u-form-item label="商品图片" prop="form.name" borderBottom ref="item1">
-          <zj-upload key="cp" @getFiles="getFiles" :fileList="fileList" :count="1" />
+        <u-form-item label="商品图片" prop="" required borderBottom ref="item1">
+          <zj-upload key="cp" @getFiles="getFiles" :fileList="fileList" :count="9" />
         </u-form-item>
-        <u-form-item labelPosition="left" label="商品分类" prop="form.categoryId" borderBottom ref="item1">
+        <u-form-item labelPosition="left" required label="商品分类" prop="categoryId" borderBottom ref="item1">
           <u-radio-group v-model="form.categoryId" placement="column">
             <u-radio
               v-for="(v, i) in categoryList"
@@ -35,20 +38,20 @@
             </u-radio>
           </u-radio-group>
         </u-form-item>
-        <u-form-item label="所在位置" labelPosition="left" prop="form.name" borderBottom ref="item1">
+        <u-form-item label="所在位置" labelPosition="left" prop="" required borderBottom ref="item1">
           <view @click="handleDW" class="letText">
             <text v-if="form.address">{{ form.address }}</text>
             <text v-if="!form.address">请选择定位</text>
             <u-icon name="arrow-right"></u-icon>
           </view>
         </u-form-item>
-        <u-form-item label="商品价格(含运费) " labelPosition="left" prop="form.amount" borderBottom ref="item1">
+        <u-form-item label="商品价格(含运费) " labelPosition="left" required prop="amount" borderBottom ref="item1">
           <u--input v-model="form.amount" inputAlign="right" placeholder="请输入数字" border="none"></u--input>
         </u-form-item>
-        <u-form-item label="上架数量" labelPosition="left" prop="form.num" borderBottom ref="item1">
+        <u-form-item label="上架数量" labelPosition="left" required prop="num" borderBottom ref="item1">
           <u--input v-model="form.num" inputAlign="right" placeholder="请输入" border="none"></u--input>
         </u-form-item>
-        <u-form-item label="商品品牌" labelPosition="left" prop="form.brand" borderBottom ref="item1">
+        <u-form-item label="商品品牌" labelPosition="left" prop="brand" borderBottom ref="item1">
           <u--input
             v-model="form.brand"
             inputAlign="right"
@@ -56,10 +59,10 @@
             border="none"
           ></u--input>
         </u-form-item>
-        <u-form-item label="功率(W)" labelPosition="left" prop="form.power" borderBottom ref="item1">
+        <u-form-item label="功率(W)" labelPosition="left" prop="power" borderBottom ref="item1">
           <u--input v-model="form.power" inputAlign="right" placeholder="请输入" border="none"></u--input>
         </u-form-item>
-        <u-form-item labelPosition="left" label="能效标识" prop="form.energy" borderBottom ref="item1">
+        <u-form-item labelPosition="left" label="能效标识" prop="energy" borderBottom ref="item1">
           <u-radio-group v-model="form.energy" placement="column">
             <u-radio
               v-for="(v, i) in dictList"
@@ -71,9 +74,11 @@
             </u-radio>
           </u-radio-group>
         </u-form-item>
-        <u-form-item label="制造日期" labelPosition="left" prop="form.goodsCreateTime" borderBottom ref="item1">
+        <u-form-item label="制造日期" labelPosition="left" prop="goodsCreateTime" borderBottom ref="item1">
           <view class="letText" @click="handleTime">
-            <text v-if="form.goodsCreateTime">{{ form.goodsCreateTime || '' }}</text>
+            <text v-if="form.goodsCreateTime">{{
+              form.goodsCreateTime.split('-')[0] + '-' + form.goodsCreateTime.split('-')[1] || ''
+            }}</text>
             <text v-if="!form.goodsCreateTime">请选择</text>
             <u-icon name="arrow-right"></u-icon>
           </view>
@@ -120,46 +125,156 @@ export default {
         brand: '',
         power: '',
         energy: '',
+        province: '',
+        city: '',
+        area: '',
+        street: '',
         goodsCreateTime: ''
       },
+      rules: {
+        title: [
+          {
+            required: true,
+            message: '必传',
+            trigger: ['change', 'blur']
+          }
+        ],
+        content: [
+          {
+            required: true,
+            message: '必传',
+            trigger: ['change', 'blur']
+          }
+        ],
+        categoryId: [
+          {
+            required: true,
+            message: '必传',
+            trigger: ['change', 'blur']
+          }
+        ],
+        amount: [
+          {
+            required: true,
+            message: '必传',
+            trigger: ['change', 'blur']
+          }
+        ],
+        num: [
+          {
+            required: true,
+            message: '必传',
+            trigger: ['change', 'blur']
+          }
+        ],
+        power: [
+          {
+            required: true,
+            message: '必传',
+            trigger: ['change', 'blur']
+          }
+        ],
+        energy: [
+          {
+            required: true,
+            message: '必传',
+            trigger: ['change', 'blur']
+          }
+        ],
+        goodsCreateTime: [
+          {
+            required: true,
+            message: '必传',
+            trigger: ['change', 'blur']
+          }
+        ]
+      },
       time: Number(new Date()),
-      rules: {},
       categoryList: [],
       dictList: [],
       fileList: [],
-      url:''
+      url: [],
+      content: ''
     }
   },
+  onReady() {
+    //如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
+    this.$refs.form.setRules(this.rules)
+  },
   onShow() {
+    this.getConfig()
     this.getList()
     this.getDictList()
   },
   methods: {
+    getConfig() {
+      this.$api
+        .get('/app/config/detail-by-type', {
+          configType: '4'
+        })
+        .then(res => {
+          this.content = res.data.content
+        })
+        .catch(() => {})
+    },
     getFiles(value) {
-      console.log(value, 67676)
-      this.fileList = 
-      this.url = value[0]
+      this.url = []
+      value.forEach(v => {
+        this.url.push({
+          imgUrl: v
+        })
+      })
     },
     submin() {
-      this.form.categoryName = this.categoryList.find(v => v.categoryId === this.form.categoryId)?.categoryName ?? ''
-      let params = {
-        ...this.form,
-        goodsFiles: [
-          {
-            goodsId: '',
-            imgUrl: this.url,
+      this.$refs.form
+        .validate()
+        .then(valid => {
+          if (valid) {
+            this.form.categoryName =
+              this.categoryList.find(v => v.categoryId === this.form.categoryId)?.categoryName ?? ''
+            let params = {
+              ...this.form,
+              goodsFiles: this.url
+            }
+            this.$api
+              .post('/goods/add', params)
+              .then(res => {
+                this.form = {
+                  title: '',
+                  content: '',
+                  categoryName: '',
+                  categoryId: '',
+                  lng: '',
+                  lat: '',
+                  address: '',
+                  amount: '',
+                  num: '',
+                  brand: '',
+                  power: '',
+                  province: '',
+                  city: '',
+                  area: '',
+                  street: '',
+                  energy: '',
+                  goodsCreateTime: ''
+                }
+                this.$refs.form.clearValidate()
+                this.show = true
+                this.$navToPage(
+                  {
+                    url: '/pages/index/index'
+                  },
+                  'switchTab'
+                )
+              })
+              .catch(() => {})
           }
-        ]
-      }
-      this.$api
-        .post('/goods/add',params)
-        .then(res => {
-            console.log(res);
-            this.$navToPage({
-              url: '/pages/index/index'
-            }, 'switchTab')
         })
-        .catch(() => {})
+        .catch(err => {
+          this.$toast('缺少必要参数,请检查')
+        })
+
+      return
     },
     //获取商品分类数据
     async getList() {
@@ -177,7 +292,6 @@ export default {
           dictCode: '能效'
         })
         .then(res => {
-          console.log(res)
           this.dictList = res.data
         })
         .catch(() => {})
@@ -188,6 +302,16 @@ export default {
           this.form.lng = res.longitude
           this.form.lat = res.latitude
           this.form.address = res.address
+          this.$api
+            .post(`/lbs/amap/region/query?lng=${res.longitude}&lat=${res.latitude}`)
+            .then(res => {
+              console.log(res)
+              this.form.province = res.data.provinceName
+              this.form.city = res.data.cityName
+              this.form.area = res.data.areaName
+              this.form.street = res.data.name
+            })
+            .catch(() => {})
         }
       })
     },
@@ -221,10 +345,21 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+.contentXZ {
+  padding: 20px;
+}
 .pop {
+  overflow: auto;
   //   padding: 0 20rpx;
-  height: calc(100vh - 44px);
+  /* #ifdef H5 */
+  // height: calc(100vh - 44px);
+  height: 100vh;
+  /* #endif */
+  /* #ifndef H5 */
+  height: 100vh;
+  /* #endif */
 }
+
 .content {
   padding: 0 40rpx;
   margin: 20rpx 0;