Commit 6cba22dec64e6f49a504f2ae8372df657816ff21
1 parent
3bea8ade
图片上传
Showing
8 changed files
with
185 additions
and
25 deletions
App.vue
pages.json
| ... | ... | @@ -296,7 +296,20 @@ |
| 296 | 296 | "style": { |
| 297 | 297 | "navigationBarTitleText": "录入树木" |
| 298 | 298 | } |
| 299 | + }, | |
| 300 | + { | |
| 301 | + "path": "treePage/editTree", | |
| 302 | + "style": { | |
| 303 | + "navigationBarTitleText": "修改树木" | |
| 304 | + } | |
| 305 | + }, | |
| 306 | + { | |
| 307 | + "path": "treePage/treeDeatil", | |
| 308 | + "style": { | |
| 309 | + "navigationBarTitleText": "树木详情" | |
| 310 | + } | |
| 299 | 311 | } |
| 312 | + | |
| 300 | 313 | ] |
| 301 | 314 | } |
| 302 | 315 | ], | ... | ... |
pages/work/treePage/treeFiles.vue deleted
subPackages/treePage/addTree.vue
| ... | ... | @@ -207,14 +207,14 @@ const rules = [{ |
| 207 | 207 | name: "oldtreeownership", |
| 208 | 208 | rule: ["required"], |
| 209 | 209 | msg: ["请选择权属分类"] |
| 210 | -}, { | |
| 210 | +},{ | |
| 211 | 211 | name: "treeImgList", |
| 212 | - // 自定义验证函数处理数组类型 | |
| 213 | - rule: [(value) => { | |
| 214 | - // 验证逻辑:数组长度至少为1 | |
| 215 | - return Array.isArray(value) && value.length > 0; | |
| 216 | - }], | |
| 217 | - msg: ["请上传图片"] | |
| 212 | + rule: ["required", "custom"], // 增加required强制必选 | |
| 213 | + msg: ["请上传图片", "请至少上传一张图片"], // 对应两个规则的提示 | |
| 214 | + custom: function(value) { | |
| 215 | + // 即使required通过,再校验数组长度 | |
| 216 | + return value.length > 0; | |
| 217 | + } | |
| 218 | 218 | }]; |
| 219 | 219 | export default { |
| 220 | 220 | props: { |
| ... | ... | @@ -278,6 +278,8 @@ export default { |
| 278 | 278 | }, |
| 279 | 279 | onReady() { |
| 280 | 280 | //开启即时校验,开启后输入即校验【参数必传】,第一参数:是否开启;第二参数:校验规则 |
| 281 | + // 开启即时校验,参数:是否开启、校验规则 | |
| 282 | + this.$refs.form && this.$refs.form.immediateValidate(true, rules); | |
| 281 | 283 | // this.$refs.form && this.$refs.form.immediateValidate(true, rules) |
| 282 | 284 | }, |
| 283 | 285 | methods: { |
| ... | ... | @@ -290,7 +292,11 @@ export default { |
| 290 | 292 | |
| 291 | 293 | if (e.status == 1){ |
| 292 | 294 | console.log(e) |
| 293 | - this.formData.treeImgList.push(e.imgArr); | |
| 295 | + // this.formData.treeImgList.push(e.imgArr); | |
| 296 | + | |
| 297 | + this.formData.treeImgList = e.imgArr; | |
| 298 | + // 手动触发treeImgList字段的校验 | |
| 299 | + this.$refs.form.validateField("treeImgList"); | |
| 294 | 300 | console.log(this.formData.treeImgList) |
| 295 | 301 | console.log(this.formData.treeImgList.length) |
| 296 | 302 | } |
| ... | ... | @@ -322,6 +328,13 @@ export default { |
| 322 | 328 | |
| 323 | 329 | }, |
| 324 | 330 | submit() { |
| 331 | + // 3. 打印提交时的数据 | |
| 332 | + console.log("提交时treeImgList:", this.formData.treeImgList); | |
| 333 | + // 手动校验图片 | |
| 334 | + if (!this.formData.treeImgList || this.formData.treeImgList.length === 0) { | |
| 335 | + uni.showToast({ title: "请上传图片", icon: "none" }); | |
| 336 | + return; // 阻止提交 | |
| 337 | + } | |
| 325 | 338 | //注:结合FormItem校验,validate方法第三个参数必须传true |
| 326 | 339 | this.$refs.form.validate(this.formData, rules, true).then(res => { |
| 327 | 340 | if (res.isPass) { | ... | ... |
subPackages/treePage/editTree.vue
0 → 100644
| 1 | + | |
| 2 | +<template> | |
| 3 | + | |
| 4 | + <view class="container"> | |
| 5 | + <tui-tab :tabs="tabs" scroll @change="tabChange"></tui-tab> | |
| 6 | + | |
| 7 | + | |
| 8 | + <view class="content-container"> | |
| 9 | + <view v-if="currentName === '基本信息'">xiugai基本信息</view> | |
| 10 | + | |
| 11 | + <treeLog v-if="currentName === '变更日志'" :logId="id" /> | |
| 12 | + </view> | |
| 13 | + </view> | |
| 14 | + | |
| 15 | +</template> | |
| 16 | +<script > | |
| 17 | +import treeLog from "./treeLog.vue"; | |
| 18 | +export default { | |
| 19 | + components:{treeLog}, | |
| 20 | + name: "editTree", | |
| 21 | + data(){ | |
| 22 | + return{ | |
| 23 | + tabs:['基本信息','变更日志',], | |
| 24 | + currentName:'基本信息', | |
| 25 | + id:'' | |
| 26 | + } | |
| 27 | + }, | |
| 28 | + onLoad(options){ | |
| 29 | + this.id = options.id | |
| 30 | + }, | |
| 31 | + methods:{ | |
| 32 | + tabChange(i){ | |
| 33 | + console.log(i.item.name) | |
| 34 | + this.currentName = i.item.name | |
| 35 | + } | |
| 36 | + } | |
| 37 | +} | |
| 38 | +</script> | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | +<style scoped> | |
| 43 | +.content-container{ | |
| 44 | + padding-top: 20rpx; | |
| 45 | +} | |
| 46 | + | |
| 47 | +</style> | |
| 0 | 48 | \ No newline at end of file | ... | ... |
subPackages/treePage/treeDetail.vue
0 → 100644
| 1 | +<script lang="ts"> | |
| 2 | +import {defineComponent} from 'vue' | |
| 3 | + | |
| 4 | +export default defineComponent({ | |
| 5 | + name: "treeDetail" | |
| 6 | +}) | |
| 7 | +</script> | |
| 8 | + | |
| 9 | +<template> | |
| 10 | + <template> | |
| 11 | + | |
| 12 | + <view class="container"> | |
| 13 | + <tui-tab :tabs="tabs" scroll @change="tabChange"></tui-tab> | |
| 14 | + | |
| 15 | + | |
| 16 | + <view class="content-container"> | |
| 17 | + <view v-if="currentName === '基本信息'">xiugai基本信息</view> | |
| 18 | + | |
| 19 | + <treeLog v-if="currentName === '变更日志'" :logId="id" /> | |
| 20 | + </view> | |
| 21 | + </view> | |
| 22 | + | |
| 23 | + </template> | |
| 24 | + <script > | |
| 25 | + import treeLog from "./treeLog.vue"; | |
| 26 | + export default { | |
| 27 | + components:{treeLog}, | |
| 28 | + name: "editTree", | |
| 29 | + data(){ | |
| 30 | + return{ | |
| 31 | + tabs:['基本信息','变更日志',], | |
| 32 | + currentName:'基本信息', | |
| 33 | + id:'' | |
| 34 | + } | |
| 35 | + }, | |
| 36 | + onLoad(options){ | |
| 37 | + this.id = options.id | |
| 38 | + }, | |
| 39 | + methods:{ | |
| 40 | + tabChange(i){ | |
| 41 | + console.log(i.item.name) | |
| 42 | + this.currentName = i.item.name | |
| 43 | + } | |
| 44 | + } | |
| 45 | + } | |
| 46 | + </script> | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + <style scoped> | |
| 51 | + .content-container{ | |
| 52 | + padding-top: 20rpx; | |
| 53 | + } | |
| 54 | + | |
| 55 | + </style> | |
| 56 | + | |
| 57 | +</template> | |
| 58 | + | |
| 59 | +<style scoped> | |
| 60 | + | |
| 61 | +</style> | |
| 0 | 62 | \ No newline at end of file | ... | ... |
subPackages/treePage/treeFiles.vue
| ... | ... | @@ -25,7 +25,9 @@ |
| 25 | 25 | <view v-for="(i,index) in 7" class="teamsItem" :key="index" |
| 26 | 26 | @click="teamsChange(i)" |
| 27 | 27 | :class="{teamsActive:index==currentIndex}" |
| 28 | - >{{ i }} | |
| 28 | + > | |
| 29 | + <view class="fs-ellipsis fs-pt16 fs-pb16 fs-pl8 fs-pr8">归属班组归属班组归属班组</view> | |
| 30 | + | |
| 29 | 31 | </view> |
| 30 | 32 | </view> |
| 31 | 33 | <view class="full-height-col right-con"> |
| ... | ... | @@ -150,7 +152,6 @@ export default { |
| 150 | 152 | } |
| 151 | 153 | |
| 152 | 154 | .teamsItem { |
| 153 | - padding: 10rpx 10rpx 0; | |
| 154 | 155 | } |
| 155 | 156 | |
| 156 | 157 | .teamsActive { | ... | ... |
subPackages/treePage/treeLog.vue
0 → 100644
| 1 | +<script> | |
| 2 | + | |
| 3 | + | |
| 4 | +export default { | |
| 5 | + name: "treeLog", | |
| 6 | + props: { | |
| 7 | + logId: { | |
| 8 | + type: String, | |
| 9 | + required: true | |
| 10 | + } | |
| 11 | + }, | |
| 12 | + data() { | |
| 13 | + return {} | |
| 14 | + }, | |
| 15 | + watch: { | |
| 16 | + logId: { | |
| 17 | + immediate: true, | |
| 18 | + handler(newVal, oldVal) { | |
| 19 | + if (newVal !== oldVal) { | |
| 20 | + this.initLog() | |
| 21 | + } | |
| 22 | + } | |
| 23 | + } | |
| 24 | + }, | |
| 25 | + methods: { | |
| 26 | + async initLog() { | |
| 27 | + } | |
| 28 | + } | |
| 29 | +} | |
| 30 | +</script> | |
| 31 | + | |
| 32 | +<template> | |
| 33 | + <view>log</view> | |
| 34 | + | |
| 35 | +</template> | |
| 36 | + | |
| 37 | +<style scoped> | |
| 38 | + | |
| 39 | +</style> | |
| 0 | 40 | \ No newline at end of file | ... | ... |