|
|
@@ -7,7 +7,7 @@
|
|
|
height="90%"
|
|
|
border-radius="12"
|
|
|
@close="cancel"
|
|
|
- :custom-style="{ width: '90vw' }"
|
|
|
+ :custom-style="{ width: '90vw', maxHeight: '90vh', overflow: 'auto' }"
|
|
|
>
|
|
|
<view class="submit-verify-container">
|
|
|
<view class="header">
|
|
|
@@ -248,33 +248,37 @@
|
|
|
width="80%"
|
|
|
height="70%"
|
|
|
border-radius="12"
|
|
|
- @close="backVisible = false"
|
|
|
+ z-index="20080"
|
|
|
+ @close="closeBackDialog"
|
|
|
:custom-style="{ width: '90vw' }"
|
|
|
>
|
|
|
<view class="back-container">
|
|
|
<view class="header">
|
|
|
<text class="title">驳回</text>
|
|
|
- <u-icon name="close" size="24" @click="backVisible = false" />
|
|
|
+ <u-icon name="close" size="24" @click="closeBackDialog" />
|
|
|
</view>
|
|
|
|
|
|
<scroll-view scroll-y class="content" :show-scrollbar="false">
|
|
|
<!-- 驳回节点 -->
|
|
|
- <view class="form-item">
|
|
|
- <text class="label">驳回节点</text>
|
|
|
- <u-picker
|
|
|
- v-model="backForm.nodeCode"
|
|
|
- mode="selector"
|
|
|
- :range="taskNodeList"
|
|
|
- range-key="nodeName"
|
|
|
- @change="handleBackNodeChange"
|
|
|
- >
|
|
|
- <u-input
|
|
|
- v-model="selectedBackNodeName"
|
|
|
- placeholder="请选择驳回节点"
|
|
|
- readonly
|
|
|
- suffix-icon="arrow-down"
|
|
|
- />
|
|
|
- </u-picker>
|
|
|
+ <view class="form-item horizontal-item">
|
|
|
+ <text class="label horizontal-label">驳回节点</text>
|
|
|
+ <view class="horizontal-control">
|
|
|
+ <u-picker
|
|
|
+ :columns="[taskNodeList]"
|
|
|
+ keyName="nodeName"
|
|
|
+ :defaultIndex="[selectedBackNodeIndex]"
|
|
|
+ :show="showBackNodePicker"
|
|
|
+ :closeOnClickOverlay="true"
|
|
|
+ @confirm="onBackNodeConfirm"
|
|
|
+ @cancel="onBackNodeClose"
|
|
|
+ ></u-picker>
|
|
|
+ <view class="picker-input" @click="showBackNodePicker = true">
|
|
|
+ <text class="picker-text">
|
|
|
+ {{ selectedBackNodeName || '请选择驳回节点' }}
|
|
|
+ </text>
|
|
|
+ <u-icon name="arrow-down" size="16" color="#c0c4cc"></u-icon>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
|
|
|
<!-- 消息提醒 -->
|
|
|
@@ -342,7 +346,7 @@
|
|
|
</u-button>
|
|
|
<u-button
|
|
|
type="info"
|
|
|
- @click="backVisible = false"
|
|
|
+ @click="closeBackDialog"
|
|
|
class="action-btn cancel-btn"
|
|
|
>
|
|
|
取消
|
|
|
@@ -359,6 +363,7 @@
|
|
|
width="90%"
|
|
|
height="60%"
|
|
|
border-radius="12"
|
|
|
+ z-index="20080"
|
|
|
@close="deleteSignatureVisible = false"
|
|
|
>
|
|
|
<view class="delete-signature-container">
|
|
|
@@ -425,6 +430,8 @@ export default {
|
|
|
backButtonDisabled: true,
|
|
|
taskNodeList: [],
|
|
|
selectedBackNodeName: '',
|
|
|
+ selectedBackNodeIndex: 0,
|
|
|
+ showBackNodePicker: false,
|
|
|
nickName: {},
|
|
|
nodeCode: '',
|
|
|
buttonObj: {
|
|
|
@@ -650,6 +657,7 @@ export default {
|
|
|
this.backLoading = false;
|
|
|
this.backButtonDisabled = false;
|
|
|
if (this.taskNodeList.length > 0) {
|
|
|
+ this.selectedBackNodeIndex = 0;
|
|
|
this.backForm.nodeCode = this.taskNodeList[0].nodeCode;
|
|
|
this.selectedBackNodeName = this.taskNodeList[0].nodeName;
|
|
|
}
|
|
|
@@ -663,11 +671,26 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- // 退回节点变化
|
|
|
- handleBackNodeChange(e) {
|
|
|
- const index = e.detail.value;
|
|
|
- this.backForm.nodeCode = this.taskNodeList[index].nodeCode;
|
|
|
- this.selectedBackNodeName = this.taskNodeList[index].nodeName;
|
|
|
+ // 确认选择驳回节点
|
|
|
+ onBackNodeConfirm(e) {
|
|
|
+ const { indexs, value } = e;
|
|
|
+ this.selectedBackNodeIndex = indexs[0];
|
|
|
+ this.backForm.nodeCode = value[0].nodeCode;
|
|
|
+ this.selectedBackNodeName = value[0].nodeName;
|
|
|
+ this.showBackNodePicker = false;
|
|
|
+ },
|
|
|
+
|
|
|
+ // 取消选择驳回节点
|
|
|
+ onBackNodeClose() {
|
|
|
+ this.showBackNodePicker = false;
|
|
|
+ },
|
|
|
+
|
|
|
+ // 关闭退回弹窗
|
|
|
+ closeBackDialog() {
|
|
|
+ this.backVisible = false;
|
|
|
+ this.showBackNodePicker = false;
|
|
|
+ this.selectedBackNodeIndex = 0;
|
|
|
+ this.selectedBackNodeName = '';
|
|
|
},
|
|
|
|
|
|
// 退回流程
|
|
|
@@ -689,7 +712,7 @@ export default {
|
|
|
|
|
|
if (response.code === 200) {
|
|
|
this.visible = false;
|
|
|
- this.backVisible = false;
|
|
|
+ this.closeBackDialog();
|
|
|
this.$emit('submitCallback');
|
|
|
uni.showToast({
|
|
|
title: '操作成功',
|
|
|
@@ -1055,21 +1078,30 @@ export default {
|
|
|
// 显示确认对话框
|
|
|
showConfirm(content) {
|
|
|
return new Promise((resolve) => {
|
|
|
- // 临时隐藏主弹窗,避免层级冲突
|
|
|
+ // 临时隐藏所有弹窗,避免层级冲突
|
|
|
const originalVisible = this.visible;
|
|
|
+ const originalBackVisible = this.backVisible;
|
|
|
+ const originalDeleteSignatureVisible = this.deleteSignatureVisible;
|
|
|
+
|
|
|
this.visible = false;
|
|
|
+ this.backVisible = false;
|
|
|
+ this.deleteSignatureVisible = false;
|
|
|
|
|
|
uni.showModal({
|
|
|
title: '提示',
|
|
|
content,
|
|
|
success: (res) => {
|
|
|
- // 恢复主弹窗显示状态
|
|
|
+ // 恢复所有弹窗显示状态
|
|
|
this.visible = originalVisible;
|
|
|
+ this.backVisible = originalBackVisible;
|
|
|
+ this.deleteSignatureVisible = originalDeleteSignatureVisible;
|
|
|
resolve(res);
|
|
|
},
|
|
|
fail: () => {
|
|
|
- // 恢复主弹窗显示状态
|
|
|
+ // 恢复所有弹窗显示状态
|
|
|
this.visible = originalVisible;
|
|
|
+ this.backVisible = originalBackVisible;
|
|
|
+ this.deleteSignatureVisible = originalDeleteSignatureVisible;
|
|
|
resolve({ confirm: false });
|
|
|
},
|
|
|
});
|
|
|
@@ -1146,6 +1178,12 @@ export default {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
gap: 16rpx;
|
|
|
+ max-height: 200rpx;
|
|
|
+ overflow-y: auto;
|
|
|
+ padding: 8rpx;
|
|
|
+ border: 1rpx solid #e6e6e6;
|
|
|
+ border-radius: 8rpx;
|
|
|
+ background-color: #fafafa;
|
|
|
}
|
|
|
|
|
|
.copy-tag {
|
|
|
@@ -1300,4 +1338,50 @@ export default {
|
|
|
padding: 0 24rpx;
|
|
|
font-size: 24rpx;
|
|
|
}
|
|
|
+
|
|
|
+.picker-input {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ height: 80rpx;
|
|
|
+ padding: 0 24rpx;
|
|
|
+ background-color: #f8f9fa;
|
|
|
+ border: 1rpx solid #e6e6e6;
|
|
|
+ border-radius: 8rpx;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.picker-input:active {
|
|
|
+ background-color: #f0f0f0;
|
|
|
+}
|
|
|
+
|
|
|
+.picker-text {
|
|
|
+ flex: 1;
|
|
|
+ font-size: 28rpx;
|
|
|
+ color: #333;
|
|
|
+}
|
|
|
+
|
|
|
+.picker-text:empty::before {
|
|
|
+ content: attr(placeholder);
|
|
|
+ color: #999;
|
|
|
+}
|
|
|
+
|
|
|
+.horizontal-item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 20rpx;
|
|
|
+}
|
|
|
+
|
|
|
+.horizontal-label {
|
|
|
+ flex-shrink: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.horizontal-control {
|
|
|
+ flex: 1;
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+.horizontal-control .picker-input {
|
|
|
+ width: 80% !important;
|
|
|
+}
|
|
|
</style>
|