Commit 6cba22dec64e6f49a504f2ae8372df657816ff21

Authored by 刘淇
1 parent 3bea8ade

图片上传

@@ -17,6 +17,7 @@ export default { @@ -17,6 +17,7 @@ export default {
17 <style lang="scss"> 17 <style lang="scss">
18 page { 18 page {
19 background-color: #F4F4F4; 19 background-color: #F4F4F4;
  20 + color: #333;
20 } 21 }
21 @import './components/thorui/fui-css/firstui.scss'; 22 @import './components/thorui/fui-css/firstui.scss';
22 </style> 23 </style>
pages.json
@@ -296,7 +296,20 @@ @@ -296,7 +296,20 @@
296 "style": { 296 "style": {
297 "navigationBarTitleText": "录入树木" 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 \ No newline at end of file 0 \ No newline at end of file
subPackages/treePage/addTree.vue
@@ -207,14 +207,14 @@ const rules = [{ @@ -207,14 +207,14 @@ const rules = [{
207 name: "oldtreeownership", 207 name: "oldtreeownership",
208 rule: ["required"], 208 rule: ["required"],
209 msg: ["请选择权属分类"] 209 msg: ["请选择权属分类"]
210 -}, { 210 +},{
211 name: "treeImgList", 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 export default { 219 export default {
220 props: { 220 props: {
@@ -278,6 +278,8 @@ export default { @@ -278,6 +278,8 @@ export default {
278 }, 278 },
279 onReady() { 279 onReady() {
280 //开启即时校验,开启后输入即校验【参数必传】,第一参数:是否开启;第二参数:校验规则 280 //开启即时校验,开启后输入即校验【参数必传】,第一参数:是否开启;第二参数:校验规则
  281 + // 开启即时校验,参数:是否开启、校验规则
  282 + this.$refs.form && this.$refs.form.immediateValidate(true, rules);
281 // this.$refs.form && this.$refs.form.immediateValidate(true, rules) 283 // this.$refs.form && this.$refs.form.immediateValidate(true, rules)
282 }, 284 },
283 methods: { 285 methods: {
@@ -290,7 +292,11 @@ export default { @@ -290,7 +292,11 @@ export default {
290 292
291 if (e.status == 1){ 293 if (e.status == 1){
292 console.log(e) 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 console.log(this.formData.treeImgList) 300 console.log(this.formData.treeImgList)
295 console.log(this.formData.treeImgList.length) 301 console.log(this.formData.treeImgList.length)
296 } 302 }
@@ -322,6 +328,13 @@ export default { @@ -322,6 +328,13 @@ export default {
322 328
323 }, 329 },
324 submit() { 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 //注:结合FormItem校验,validate方法第三个参数必须传true 338 //注:结合FormItem校验,validate方法第三个参数必须传true
326 this.$refs.form.validate(this.formData, rules, true).then(res => { 339 this.$refs.form.validate(this.formData, rules, true).then(res => {
327 if (res.isPass) { 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 \ No newline at end of file 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 \ No newline at end of file 62 \ No newline at end of file
subPackages/treePage/treeFiles.vue
@@ -25,7 +25,9 @@ @@ -25,7 +25,9 @@
25 <view v-for="(i,index) in 7" class="teamsItem" :key="index" 25 <view v-for="(i,index) in 7" class="teamsItem" :key="index"
26 @click="teamsChange(i)" 26 @click="teamsChange(i)"
27 :class="{teamsActive:index==currentIndex}" 27 :class="{teamsActive:index==currentIndex}"
28 - >{{ i }} 28 + >
  29 + <view class="fs-ellipsis fs-pt16 fs-pb16 fs-pl8 fs-pr8">归属班组归属班组归属班组</view>
  30 +
29 </view> 31 </view>
30 </view> 32 </view>
31 <view class="full-height-col right-con"> 33 <view class="full-height-col right-con">
@@ -150,7 +152,6 @@ export default { @@ -150,7 +152,6 @@ export default {
150 } 152 }
151 153
152 .teamsItem { 154 .teamsItem {
153 - padding: 10rpx 10rpx 0;  
154 } 155 }
155 156
156 .teamsActive { 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 \ No newline at end of file 40 \ No newline at end of file