Commit 1d92efc40ec4f8e40e624430b4f3063a37ebc743
1 parent
638137f1
判断动态表单每一项必填?
Showing
3 changed files
with
33 additions
and
5 deletions
pages-sub/daily/maintain-manage/add-record.vue
| ... | ... | @@ -142,6 +142,19 @@ |
| 142 | 142 | <text>提交并结束本次任务</text> |
| 143 | 143 | </view> |
| 144 | 144 | </view> |
| 145 | + | |
| 146 | + | |
| 147 | + <!-- 强制弹窗:全部字段required=0,必须去平台配置至少一项必填 --> | |
| 148 | + <up-modal | |
| 149 | + :show="showNoRequiredModal" | |
| 150 | + title="配置校验提示" | |
| 151 | + content="请先去平台属性配置,至少配置一项为必填。" | |
| 152 | + :show-cancel-button="false" | |
| 153 | + :close-on-click-overlay="false" | |
| 154 | + @confirm="handleNoRequiredConfirm" | |
| 155 | + ></up-modal> | |
| 156 | + | |
| 157 | + | |
| 145 | 158 | <!-- uview-plus 日期时间选择器(全局复用) --> |
| 146 | 159 | <up-datetime-picker :show="datePickerShow" v-model="datePickerValue" mode="datetime" close-on-click-overlay |
| 147 | 160 | @confirm="onDateConfirm" @cancel="onDateClose" @close="onDateClose"></up-datetime-picker> |
| ... | ... | @@ -201,6 +214,7 @@ export default { |
| 201 | 214 | } |
| 202 | 215 | ], |
| 203 | 216 | }, |
| 217 | + showNoRequiredModal: false, | |
| 204 | 218 | // 动态字段列表 |
| 205 | 219 | dynamicFields: [] as any[], |
| 206 | 220 | // 日期时间选择器 |
| ... | ... | @@ -502,15 +516,28 @@ export default { |
| 502 | 516 | this.inspectFormRules[field.fieldCode] = [this.buildRequiredRule(field)] |
| 503 | 517 | } |
| 504 | 518 | } |
| 505 | - this.dynamicFields = fields | |
| 519 | + this.dynamicFields = fields | |
| 520 | + | |
| 521 | + // =========新增:校验全部字段required都等于0========= | |
| 522 | + const allNoRequired = this.dynamicFields.every(item => Number(item.required) === 0) | |
| 523 | + if(allNoRequired){ | |
| 524 | + this.showNoRequiredModal = true | |
| 525 | + } | |
| 526 | + | |
| 506 | 527 | this.$nextTick(() => { |
| 507 | 528 | this.$refs.inspectFormRef.setRules(this.inspectFormRules) |
| 508 | 529 | }) |
| 530 | + | |
| 509 | 531 | } catch (err) { |
| 510 | 532 | console.error('获取动态表单字段失败:', err) |
| 511 | 533 | uni.showToast({ title: '加载表单配置失败', icon: 'none' }) |
| 512 | 534 | } |
| 513 | 535 | }, |
| 536 | + | |
| 537 | + handleNoRequiredConfirm(){ | |
| 538 | + // 弹窗只能点确定,直接退出页面,不允许继续填报 | |
| 539 | + uni.navigateBack() | |
| 540 | + }, | |
| 514 | 541 | /** |
| 515 | 542 | * 删除图片 |
| 516 | 543 | */ |
| ... | ... | @@ -1075,10 +1102,10 @@ if (type === 1) { |
| 1075 | 1102 | } |
| 1076 | 1103 | uni.hideLoading() |
| 1077 | 1104 | // 后端 /create 只建草稿、不推进完成次数,必须再点「提交并结束」或在列表点「结束任务」才计数 |
| 1078 | - uni.showToast({ title: '已暂存,请记得结束本次养护', icon: 'none', duration: 1500 }) | |
| 1105 | + uni.showToast({ title: '已暂存,请记得结束本次养护', icon: 'none', duration: 2500 }) | |
| 1079 | 1106 | setTimeout(() => { |
| 1080 | 1107 | uni.reLaunch({ url: '/pages-sub/daily/maintain-manage/index' }) |
| 1081 | - }, 1500) | |
| 1108 | + }, 2500) | |
| 1082 | 1109 | } catch (error) { |
| 1083 | 1110 | uni.hideLoading() |
| 1084 | 1111 | // 表单校验失败时 error 是字段数组(uview-plus 已提示),不重复弹 | ... | ... |
pages-sub/daily/maintain-manage/finish-plan-detail.vue
pages-sub/daily/maintain-manage/type-list-page.vue
| ... | ... | @@ -62,7 +62,7 @@ |
| 62 | 62 | <!-- 待完成:去作业;已完成:去查看 --> |
| 63 | 63 | <view v-if="activeStatus === '1'" class="mini-btn btn-brand-solid" @click.stop="handleGoWork(item)">去作业</view> |
| 64 | 64 | <view v-else-if="activeStatus === '2'" class="mini-btn mini-btn--info" @click.stop="handleGoWorkLook(item)">去查看</view> |
| 65 | - <view v-else-if="activeStatus === '3'" class="mini-btn mini-btn--info" @click.stop="handleGoWorkLook(item)">去查看</view> | |
| 65 | + <!-- <view v-else-if="activeStatus === '3'" class="mini-btn mini-btn--info" @click.stop="handleGoWorkLook(item)">去查看</view> --> | |
| 66 | 66 | </view> |
| 67 | 67 | </view> |
| 68 | 68 | </view> |
| ... | ... | @@ -89,7 +89,7 @@ |
| 89 | 89 | <!-- ========== 结束任务二次确认弹窗 ========== --> |
| 90 | 90 | <up-modal :show="endTaskModalShow" title="提示" :closeOnClickOverlay="false" :showConfirmButton="true" |
| 91 | 91 | :showCancelButton="true" @cancel="handleEndTaskModalCancel" @confirm="confirmEndTask"> |
| 92 | - <view class="end-task-modal-content" style="font-size: 14px;"> | |
| 92 | + <view class="end-task-modal-content" style="font-size: 16px;"> | |
| 93 | 93 | <text>确定要结束吗?</text> |
| 94 | 94 | </view> |
| 95 | 95 | </up-modal> | ... | ... |