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 | ... | ... |