Commit 6cba22dec64e6f49a504f2ae8372df657816ff21

Authored by 刘淇
1 parent 3bea8ade

图片上传

... ... @@ -17,6 +17,7 @@ export default {
17 17 <style lang="scss">
18 18 page {
19 19 background-color: #F4F4F4;
  20 + color: #333;
20 21 }
21 22 @import './components/thorui/fui-css/firstui.scss';
22 23 </style>
... ...
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
1   -<script>
2   -
3   -
4   -export default {
5   - name: "treeFiles"
6   -}
7   -</script>
8   -
9   -<template>
10   -<view>treeFiles</view>
11   -</template>
12   -
13   -<style scoped>
14   -
15   -</style>
16 0 \ No newline at end of file
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
... ...