Blame view

subPackages/treePage/addTree.vue 15.2 KB
c7744156   刘淇   录入树木
1
2
  <template>
    <view class="container">
b951d827   刘淇   树木详情
3
      <tui-form ref="form"  :show-message="false" :model="formData">
3bea8ade   刘淇   图片上传
4
        <tui-form-item asterisk label="名称" prop="treetype">
c7744156   刘淇   录入树木
5
          <tui-input padding="0" :borderBottom="false" placeholder="请输入名称" maxlength="30"
3bea8ade   刘淇   图片上传
6
                     v-model="formData.treetype"></tui-input>
c7744156   刘淇   录入树木
7
8
9
        </tui-form-item>
  
        <tui-row>
3bea8ade   刘淇   图片上传
10
11
12
13
          <tui-col :span="12">
            <tui-form-item label="高度" asterisk prop="treeheight" :position="3">
              <tui-input padding="0" :borderBottom="false" placeholder="请输入" textRight maxlength="10"
                         v-model="formData.treeheight"></tui-input>
c7744156   刘淇   录入树木
14
              <template v-slot:right>
c872bdb3   刘淇   树木详情
15
                <text style="padding-left: 12rpx;color:#ccc;font-size:14px;">米</text>
c7744156   刘淇   录入树木
16
17
18
              </template>
            </tui-form-item>
          </tui-col>
3bea8ade   刘淇   图片上传
19
20
          <tui-col :span="12">
            <tui-form-item label="胸径" asterisk prop="dbh" :position="3">
c7744156   刘淇   录入树木
21
              <tui-input padding="0" :borderBottom="false" placeholder="请输入" textRight maxlength="10"
3bea8ade   刘淇   图片上传
22
                         v-model="formData.dbh"></tui-input>
c7744156   刘淇   录入树木
23
              <template v-slot:right>
c872bdb3   刘淇   树木详情
24
                <text style="padding-left: 12rpx;color:#ccc;font-size:14px">厘米</text>
c7744156   刘淇   录入树木
25
26
27
28
29
30
31
32
33
34
35
              </template>
            </tui-form-item>
          </tui-col>
        </tui-row>
  
  
        <tui-form-item
            asterisk
            label="位置"
            class="location-form-item"
            @click="openMap"
3bea8ade   刘淇   图片上传
36
            prop="growlocation"
c7744156   刘淇   录入树木
37
38
        >
          <tui-input padding="0" :borderBottom="false" placeholder="请选择" disabled
3bea8ade   刘淇   图片上传
39
                     v-model="formData.growlocation"></tui-input>
c7744156   刘淇   录入树木
40
41
42
          <template v-slot:right>
            <tui-icon name="gps" :size="20"></tui-icon>
          </template>
c7744156   刘淇   录入树木
43
44
        </tui-form-item>
  
21397afd   刘淇   树 新增
45
46
        <tui-col :span="12">
          <tui-form-item
b951d827   刘淇   树木详情
47
              label="经度"
21397afd   刘淇   树 新增
48
              class="location-form-item"
21397afd   刘淇   树 新增
49
              prop="latitude"
c872bdb3   刘淇   树木详情
50
              :bottomBorder="false"
21397afd   刘淇   树 新增
51
          >
b951d827   刘淇   树木详情
52
            {{ formData.longitude }}
21397afd   刘淇   树 新增
53
54
55
56
          </tui-form-item>
        </tui-col>
        <tui-col :span="12">
          <tui-form-item
c872bdb3   刘淇   树木详情
57
              :bottomBorder="false"
b951d827   刘淇   树木详情
58
              label="纬度"
21397afd   刘淇   树 新增
59
              class="location-form-item"
21397afd   刘淇   树 新增
60
61
              prop="latitude"
          >
b951d827   刘淇   树木详情
62
            {{ formData.latitude }}
21397afd   刘淇   树 新增
63
64
65
66
67
68
69
70
71
72
73
          </tui-form-item>
        </tui-col>
  
  
        <tui-form-item asterisk label="管护单位" prop="managedutyunit">
  
          <tui-input padding="0" :borderBottom="false" placeholder="请输入" maxlength="30"
                     v-model="formData.managedutyunit"></tui-input>
  
          <!--        <tui-input padding="0" :borderBottom="false" placeholder="请选择" disabled-->
          <!--                   backgroundColor="transparent" v-model="formData.managedutyunit"></tui-input>-->
c7744156   刘淇   录入树木
74
        </tui-form-item>
b951d827   刘淇   树木详情
75
        <tui-form-item asterisk label="权属分类" arrow highlight prop="oldtreeownershipText" @click="pickerShow">
c7744156   刘淇   录入树木
76
          <tui-input padding="0" :borderBottom="false" placeholder="请选择" disabled
b951d827   刘淇   树木详情
77
                     backgroundColor="transparent" v-model="formData.oldtreeownershipText"></tui-input>
c7744156   刘淇   录入树木
78
        </tui-form-item>
c7744156   刘淇   录入树木
79
  
3bea8ade   刘淇   图片上传
80
        <tui-form-item label="图片信息" asterisk prop="treeImgList">
c7744156   刘淇   录入树木
81
          <!-- 使用ThorUI的tui-upload组件 -->
21397afd   刘淇   树 新增
82
          <!--           @remove="handleRemove"   :multiple="true"    :value="formData.treeImgList"-->
c7744156   刘淇   录入树木
83
84
85
          <tui-upload
              :height="140"
              :width="140"
21397afd   刘淇   树 新增
86
              :value="formData.treeImgListFile"
c7744156   刘淇   录入树木
87
88
              :serverUrl="serverURL" :header="{'Authorization': userToken}"
              @complete="handleComplete"
f2ecd120   刘淇   树 修改
89
              @remove="handleRemove"
c7744156   刘淇   录入树木
90
              :limit="3"
c7744156   刘淇   录入树木
91
              accept="image/*"
21397afd   刘淇   树 新增
92
93
94
95
          >
            <!-- 自定义上传按钮 -->
            <view class="upload-btn">
              <tui-icon name="plus" size="32" color="#999"></tui-icon>
21397afd   刘淇   树 新增
96
            </view>
3bea8ade   刘淇   图片上传
97
          </tui-upload>
c7744156   刘淇   录入树木
98
99
        </tui-form-item>
  
c7744156   刘淇   录入树木
100
101
102
103
104
105
106
107
108
109
110
        <!-- 动画区域(初始隐藏) -->
        <view
            class="animated-area"
            :style="{
          height: isShow ? contentHeight + 'px' : '0',
          opacity: isShow ? 1 : 0,
          overflow: 'hidden'
        }"
        >
  
          <tui-row>
3bea8ade   刘淇   图片上传
111
112
            <tui-col :span="12">
              <tui-form-item label="拉丁文" prop="latinname">
c7744156   刘淇   录入树木
113
                <tui-input padding="0" :borderBottom="false" placeholder="请输入" maxlength="30"
3bea8ade   刘淇   图片上传
114
                           v-model="formData.latinname"></tui-input>
c7744156   刘淇   录入树木
115
116
              </tui-form-item>
            </tui-col>
3bea8ade   刘淇   图片上传
117
            <tui-col :span="12">
b951d827   刘淇   树木详情
118
              <tui-form-item label="级别" arrow highlight prop="treeleveltext" @click="pickerLevelShow">
3bea8ade   刘淇   图片上传
119
                <tui-input padding="0" :borderBottom="false" placeholder="请选择" disabled
b951d827   刘淇   树木详情
120
                           backgroundColor="transparent" v-model="formData.treeleveltext"></tui-input>
3bea8ade   刘淇   图片上传
121
              </tui-form-item>
c7744156   刘淇   录入树木
122
123
124
            </tui-col>
          </tui-row>
  
3bea8ade   刘淇   图片上传
125
          <tui-form-item label="生长环境" prop="growthenvironment">
c7744156   刘淇   录入树木
126
            <tui-input padding="0" :borderBottom="false" placeholder="请输入" maxlength="50"
3bea8ade   刘淇   图片上传
127
                       v-model="formData.growthenvironment"></tui-input>
c7744156   刘淇   录入树木
128
129
130
131
          </tui-form-item>
  
  
          <tui-row>
3bea8ade   刘淇   图片上传
132
133
134
135
            <tui-col :span="12">
              <tui-form-item label="预估树龄" prop="estimationtreeage" :position="3">
                <tui-input padding="0" :borderBottom="false" placeholder="请输入" textRight maxlength="10"
                           v-model="formData.estimationtreeage"></tui-input>
c7744156   刘淇   录入树木
136
                <template v-slot:right>
c872bdb3   刘淇   树木详情
137
                  <text style="padding-left: 12rpx;color:#ccc;font-size: 14px">年</text>
c7744156   刘淇   录入树木
138
139
140
                </template>
              </tui-form-item>
            </tui-col>
3bea8ade   刘淇   图片上传
141
142
143
144
            <tui-col :span="12">
              <tui-form-item label="干周" prop="weekday" :position="3">
                <tui-input padding="0" :borderBottom="false" placeholder="请输入" textRight maxlength="10"
                           v-model="formData.weekday"></tui-input>
c7744156   刘淇   录入树木
145
                <template v-slot:right>
c872bdb3   刘淇   树木详情
146
                  <text style="padding-left: 12rpx;color:#ccc;font-size: 14px">厘米</text>
c7744156   刘淇   录入树木
147
148
149
150
151
152
153
                </template>
              </tui-form-item>
            </tui-col>
          </tui-row>
  
  
          <tui-row>
3bea8ade   刘淇   图片上传
154
155
156
157
            <tui-col :span="12">
              <tui-form-item label="东西冠幅" prop="canopyeastwest" :position="3">
                <tui-input padding="0" :borderBottom="false" placeholder="请输入" textRight maxlength="10"
                           v-model="formData.canopyeastwest"></tui-input>
c7744156   刘淇   录入树木
158
                <template v-slot:right>
c872bdb3   刘淇   树木详情
159
                  <text style="padding-left: 12rpx;color:#ccc">米</text>
c7744156   刘淇   录入树木
160
161
162
                </template>
              </tui-form-item>
            </tui-col>
3bea8ade   刘淇   图片上传
163
164
165
166
            <tui-col :span="12">
              <tui-form-item label="南北冠幅" prop="canopysouthnorth" :position="3">
                <tui-input padding="0" :borderBottom="false" placeholder="请输入" textRight maxlength="10"
                           v-model="formData.canopysouthnorth"></tui-input>
c7744156   刘淇   录入树木
167
                <template v-slot:right>
c872bdb3   刘淇   树木详情
168
                  <text style="padding-left: 12rpx;color:#ccc;font-size: 14px">米</text>
c7744156   刘淇   录入树木
169
170
171
172
173
174
                </template>
              </tui-form-item>
            </tui-col>
          </tui-row>
  
  
c7744156   刘淇   录入树木
175
176
177
178
179
180
181
182
183
184
185
186
        </view>
  
        <!-- 触发按钮 -->
        <tui-button
            @click="toggleArea"
            type="primary"
            :loading="false"
            height="80rpx"
            plain
        >
          {{ isShow ? '- 隐藏区域' : '+ 显示区域' }}
        </tui-button>
b951d827   刘淇   树木详情
187
      </tui-form>
c7744156   刘淇   录入树木
188
  
b951d827   刘淇   树木详情
189
      <view style="height: 60px;width: 100%"></view>
c7744156   刘淇   录入树木
190
  
b951d827   刘淇   树木详情
191
192
193
      <view class="tui-btn__box">
        <tui-button bold @click="submit">提交</tui-button>
      </view>
21397afd   刘淇   树 新增
194
195
196
197
198
199
      <tui-picker :show="show" :pickerData="treeOwnershipData" textField="dictLabel" valueField="dictValue"
                  @hide="pickerHide" @change="pickerChange">
      </tui-picker>
  
      <tui-picker :show="levelshow" :pickerData="treeLevelData" textField="dictLabel" valueField="dictValue"
                  @hide="pickerLevelHide" @change="pickerLevelChange">
c7744156   刘淇   录入树木
200
201
202
203
204
      </tui-picker>
    </view>
  </template>
  
  <script>
b951d827   刘淇   树木详情
205
  import { uploadURL, OSSURL } from '@/config/app'
21397afd   刘淇   树 新增
206
  import { treeOwnership, addTree, treeLevelReq } from "@/api/tree";
c7744156   刘淇   录入树木
207
  const rules = [{
3bea8ade   刘淇   图片上传
208
    name: "treetype",
c7744156   刘淇   录入树木
209
    rule: ["required"],
3bea8ade   刘淇   图片上传
210
211
212
    msg: ["请输入名称"]
  }, {
    name: "treeheight",
21397afd   刘淇   树 新增
213
    rule: ["required", "maxLength:10", "isAmount"],
c872bdb3   刘淇   树木详情
214
    msg: ["请输入树高", "数高不能超过10个字符", "请输入正确"]
c7744156   刘淇   录入树木
215
  }, {
3bea8ade   刘淇   图片上传
216
    name: "dbh",
21397afd   刘淇   树 新增
217
218
    rule: ["required", "maxLength:10", "isAmount"],
    msg: ["请输入胸径", "胸径不能超过10个字符", "请输入正确"]
c7744156   刘淇   录入树木
219
  }, {
21397afd   刘淇   树 新增
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
    name: "estimationtreeage",
    rule: ["maxLength:10", "isAmount"],
    msg: ["胸径不能超过10个字符", "请输入正确"]
  },
    {
      name: "weekday",
      rule: ["maxLength:10", "isAmount"],
      msg: ["胸径不能超过10个字符", "请输入正确"]
    },
    {
      name: "canopyeastwest",
      rule: ["maxLength:10", "isAmount"],
      msg: ["胸径不能超过10个字符", "请输入正确"]
    },
    {
      name: "canopysouthnorth",
      rule: ["maxLength:10", "isAmount"],
      msg: ["胸径不能超过10个字符", "请输入正确"]
    }, {
      name: "growlocation",
      rule: ["required"],
      msg: ["请地图选择位置"]
    }, {
      name: "managedutyunit",
      rule: ["required"],
c872bdb3   刘淇   树木详情
245
      msg: ["请输入管护单位"]
21397afd   刘淇   树 新增
246
    }, {
b951d827   刘淇   树木详情
247
      name: "oldtreeownershipText",
21397afd   刘淇   树 新增
248
249
250
251
252
253
254
255
256
257
258
      rule: ["required"],
      msg: ["请选择权属分类"]
    }, {
      name: "treeImgListFile",
      rule: ["required", "custom"], // 增加required强制必选
      msg: ["请上传图片", "请至少上传一张图片"], // 对应两个规则的提示
      custom: function (value) {
        // 即使required通过,再校验数组长度
        return value.length > 0;
      }
    }];
c7744156   刘淇   录入树木
259
260
261
262
263
264
265
266
267
268
269
270
271
  export default {
    props: {
      // 外部传入的已上传图片列表
      value: {
        type: Array,
        default: () => []
      }
    },
    data() {
      return {
        isShow: false,       // 控制区域显示/隐藏
        contentHeight: 200,    // 内容区域高度
        serverURL: uploadURL,
21397afd   刘淇   树 新增
272
273
        treeOwnershipData: [],
        treeLevelData: [], // 级别
c7744156   刘淇   录入树木
274
        show: false,
21397afd   刘淇   树 新增
275
        levelshow: false,
c7744156   刘淇   录入树木
276
277
        //仅对部分数据进行收集演示
        formData: {
3bea8ade   刘淇   图片上传
278
279
280
281
282
283
284
285
          //数名
          treetype: '',
          //树高
          treeheight: '',
          //胸径
          dbh: '',
          //级别
          treelevel: '',
b951d827   刘淇   树木详情
286
          treeleveltext:'',
3bea8ade   刘淇   图片上传
287
288
289
290
          //权属单位
          managedutyunit: '',
          //权属分类
          oldtreeownership: '',
b951d827   刘淇   树木详情
291
          oldtreeownershipText:'',
3bea8ade   刘淇   图片上传
292
293
          latinname: '', // 拉丁名
          estimationtreeage: '', // 估测树龄
21397afd   刘淇   树 新增
294
          canopysouthnorth: '', // 冠幅南北
3bea8ade   刘淇   图片上传
295
296
          canopyeastwest: '', // 冠幅东西
          weekday: '', // 干周
21397afd   刘淇   树 新增
297
          growlocation: '', // 位置
3bea8ade   刘淇   图片上传
298
          growthenvironment: '', // 生长环境
21397afd   刘淇   树 新增
299
300
          treeImgList: [], // 图片信息
          treeImgListFile: [], // 图片信息
c7744156   刘淇   录入树木
301
302
          address: '',      // 位置名称
          latitude: '',     // 纬度
21397afd   刘淇   树 新增
303
304
          longitude: '',     // 经度
          road: ''
c7744156   刘淇   录入树木
305
        },
c7744156   刘淇   录入树木
306
307
      }
    },
b951d827   刘淇   树木详情
308
    watch: {},
c7744156   刘淇   录入树木
309
310
    onReady() {
      //开启即时校验,开启后输入即校验【参数必传】,第一参数:是否开启;第二参数:校验规则
6cba22de   刘淇   图片上传
311
312
      // 开启即时校验,参数:是否开启、校验规则
      this.$refs.form && this.$refs.form.immediateValidate(true, rules);
c7744156   刘淇   录入树木
313
314
      // this.$refs.form && this.$refs.form.immediateValidate(true, rules)
    },
21397afd   刘淇   树 新增
315
316
317
318
319
320
321
    onLoad(options) {
      treeLevelReq().then(res => {
        this.treeLevelData = res.data
      })
      this.formData.road = options.roadId
      this.treeOwnership()
    },
c7744156   刘淇   录入树木
322
    methods: {
b951d827   刘淇   树木详情
323
      // 权属分类
21397afd   刘淇   树 新增
324
325
326
327
328
329
      treeOwnership() {
        treeOwnership().then(res => {
          console.log(res)
          this.treeOwnershipData = res.data
        })
      },
c7744156   刘淇   录入树木
330
331
332
333
334
335
      // 切换显示/隐藏状态
      toggleArea() {
        this.isShow = !this.isShow;
      },
      // 上传完成回调
      handleComplete(e) {
21397afd   刘淇   树 新增
336
        if (e.status == 1) {
3bea8ade   刘淇   图片上传
337
          console.log(e)
6cba22de   刘淇   图片上传
338
          // this.formData.treeImgList.push(e.imgArr);
21397afd   刘淇   树 新增
339
340
          console.log(e.imgArr[0])
          this.formData.treeImgListFile = e.imgArr
b951d827   刘淇   树木详情
341
          this.formData.treeImgList = e.imgArr.map(item => OSSURL + item);
21397afd   刘淇   树 新增
342
343
          console.log(this.formData.treeImgList)
          // baseURL
6cba22de   刘淇   图片上传
344
345
          // 手动触发treeImgList字段的校验
          this.$refs.form.validateField("treeImgList");
21397afd   刘淇   树 新增
346
        }
3bea8ade   刘淇   图片上传
347
        // this.formData.treeImgList = e.imgArr;
c7744156   刘淇   录入树木
348
349
350
351
352
353
        // 根据实际接口返回格式调整
        // this.currentFiles.push(e.data);
      },
      // 删除图片回调
      handleRemove(index) {
        // 从列表中移除
3bea8ade   刘淇   图片上传
354
        this.formData.treeImgList.splice(index, 1);
f2ecd120   刘淇   树 修改
355
        this.formData.treeImgListFile.splice(index, 1);
3bea8ade   刘淇   图片上传
356
        console.log(this.formData.treeImgList.length)
c7744156   刘淇   录入树木
357
      },
c7744156   刘淇   录入树木
358
359
360
361
362
363
364
365
      pickerShow() {
        this.show = true
      },
      pickerHide() {
        this.show = false
      },
      pickerChange(e) {
        console.log(e)
b951d827   刘淇   树木详情
366
367
        this.formData.oldtreeownership = e.dictValue
        this.formData.oldtreeownershipText = e.dictLabel
21397afd   刘淇   树 新增
368
369
370
371
372
373
374
375
376
      },
      pickerLevelShow() {
        this.levelshow = true
      },
      pickerLevelHide() {
        this.levelshow = false
      },
      pickerLevelChange(e) {
        console.log(e)
b951d827   刘淇   树木详情
377
378
379
        this.formData.treelevel = e.dictValue
        this.formData.treeleveltext = e.dictLabel
  
c7744156   刘淇   录入树木
380
381
      },
      submit() {
6cba22de   刘淇   图片上传
382
383
384
385
        // 3. 打印提交时的数据
        console.log("提交时treeImgList:", this.formData.treeImgList);
        // 手动校验图片
        if (!this.formData.treeImgList || this.formData.treeImgList.length === 0) {
21397afd   刘淇   树 新增
386
          uni.showToast({title: "请上传图片", icon: "none"});
6cba22de   刘淇   图片上传
387
388
          return; // 阻止提交
        }
c7744156   刘淇   录入树木
389
390
391
392
393
        //注:结合FormItem校验,validate方法第三个参数必须传true
        this.$refs.form.validate(this.formData, rules, true).then(res => {
          if (res.isPass) {
            console.log(this.formData)
            console.log('校验通过!')
21397afd   刘淇   树 新增
394
395
396
397
398
399
400
401
            // addTree()
            addTree({data: {...this.formData}}).then(res => {
              console.log(res)
              if (res.code == '200') {
                uni.showToast({title: "新增成功", icon: "none"});
                uni.$tui.href(`/subPackages/treePage/treeRecord?roadId=${this.formData.road}`)
              }
            })
c7744156   刘淇   录入树木
402
403
404
405
406
407
408
409
410
411
412
413
414
415
          } else {
            console.log(res)
          }
        }).catch(errors => {
          console.log(errors)
        })
      },
      // 打开地图选择
      openMap() {
        // 如果已有位置信息,默认显示该位置,否则使用当前位置
        const options = {
          latitude: this.formData.latitude ? Number(this.formData.latitude) : '',
          longitude: this.formData.longitude ? Number(this.formData.longitude) : '',
          scale: 16,        // 地图缩放级别
3bea8ade   刘淇   图片上传
416
417
          name: this.formData.growlocation || '',  // 位置名称
          address: this.formData.growlocation || '' // 详细地址
c7744156   刘淇   录入树木
418
419
420
421
422
        };
        // 调用微信小程序地图选择API
        uni.chooseLocation({
          ...options,
          success: (res) => {
3bea8ade   刘淇   图片上传
423
            console.log(res)
c7744156   刘淇   录入树木
424
            // 选择成功后更新位置信息
3bea8ade   刘淇   图片上传
425
426
427
            this.formData.growlocation = res.address
            this.formData.latitude = res.latitude
            this.formData.longitude = res.longitude
c7744156   刘淇   录入树木
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
          },
          fail: (err) => {
            console.error('地图选择失败', err);
            if (err.errMsg.includes('auth deny')) {
              uni.showToast({
                title: '请授权位置权限',
                icon: 'none'
              });
            }
          }
        });
      }
    }
  }
  </script>
  
  <style>
c872bdb3   刘淇   树木详情
445
446
  
  
c7744156   刘淇   录入树木
447
448
449
450
451
452
453
  
  .tui-btn__box {
    width: 100%;
    position: fixed;
    bottom: 0;
  }
  
c7744156   刘淇   录入树木
454
455
456
457
458
459
  /* 动画区域样式 */
  .animated-area {
    height: 200rpx;
    transition: all 0.3s ease-out; /* 动画过渡效果 */
  }
  </style>