3a097696dbc536ad29ccf60b7cf381a08e1bebf0..f2ce587e752798a2a454e0f029069b4e82a41bc8
2025-06-27 lyh
增加提交样式,新增批量处理dnc审签
f2ce58 对比 | 目录
2025-06-27 lyh
修改工作流
82b238 对比 | 目录
已修改12个文件
1099 ■■■■ 文件已修改
src/views/flowable/workflow/FlowTodo.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/assignEquipmentFileStream/AssignEquipmentFileStreamHandle.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleForm.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/dispatchFile/DispatchFileHandle.vue 237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/guideCardBatch/GuideCardBatchHandle.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/inboundOrder/InboundOrderHandle.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/lossBound/lossBoundHandle.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/outBoundOrder/OutBoundOrderHandle.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/sparePartApply/SparePartApplyHandle.vue 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/standardizedProcess/StandardizedProcessHandle.vue 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/stocktakingBound/stocktakingBoundHandle.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/FlowTodo.vue
@@ -580,6 +580,26 @@
      } else if (categorySet.has('WEEK_MAINTENANCE')) {
        this.$refs.weenMaintenanceBatchApprovalModalRef.handleDetail(this.selectionRows[0])
        this.$refs.weenMaintenanceBatchApprovalModalRef.title = this.selectionRows[0].name
      }else if (categorySet.has('ggApproval')){
        let ids = ''
        for (let a = 0; a < this.selectedRowKeys.length; a++) {
          ids += this.selectedRowKeys[a] + ','
        }
        getAction(this.url.isSameNode + '?taskIds=' + ids).then((res) => {
          if (res.success) {
            let taskDefKey = res.result
            this.selectBachData.taskIds = ids
            this.selectBachData.taskDefKey = taskDefKey
            this.$refs.modalFormDispatchFileBatch.title = '批量处理'
            this.$refs.modalFormDispatchFileBatch.edit(this.selectBachData)
            this.$refs.modalFormDispatchFileBatch.disableSubmit = false
          } else {
            this.$notification.warning({
              message: '消息',
              description: res.message
            })
          }
        })
      }
    },
src/views/flowable/workflow/assignEquipmentFileStream/AssignEquipmentFileStreamHandle.vue
@@ -139,8 +139,20 @@
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button  @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button @click="submitForm">提 交</a-button>
            <a-button
              @click="handleQueXiaoTask"
              icon="close"
              :disabled="isSubmitting"
              :class="{'disabled-btn': isSubmitting}"
            >取消</a-button>
            <a-button
              @click="submitForm"
              type="primary"
              :disabled="isSubmitting"
              :loading="isSubmitting"
            >
              提 交
            </a-button>
          </div>
        </a-form-model>
      </div>
@@ -209,7 +221,8 @@
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
      workflowSource: [],
      isSubmitting: false,
    }
  },
  created() {
@@ -243,12 +256,27 @@
        alert('无法加载图片,请稍后再试。')
      }
    },
    handleQueXiaoTask(){
      this.visible = false
      this.routeReload()
    handleQueXiaoTask() {
      // 如果正在提交,阻止取消操作
      if (this.isSubmitting) return;
      this.visible = false;
      this.routeReload();
    },
    submitForm () {
      // 如果正在提交,阻止重复点击
      if (this.isSubmitting) return;
      // 开启全局禁选
      this.isSubmitting = true;
      document.body.classList.add('submitting');
      const that = this;
      // 定义一个恢复状态的函数
      const resetState = () => {
        that.isSubmitting = false;
        document.body.classList.remove('submitting');
      };
      if (!that.assignFileStream.auditType==null || that.assignFileStream.auditType===undefined){
          this.$message.warning('请选择处理类型!')
          return false;
@@ -262,6 +290,10 @@
      }
      // 触发表单验证
      this.form.validateFields((err, values) => {
        if (err) {
          resetState(); // 验证失败,恢复状态
          return;
        }
        if (!err) {
          that.confirmLoading = true;
          let url=this.url.auditGuideCardBatch
@@ -285,9 +317,15 @@
            }else{
              that.$message.warning(res.message);
            }
          }).finally(() => {
            that.confirmLoading = false;
          })
            .catch((error) => {
              console.error(error);
              that.$message.error('提交失败');
            })
            .finally(() => {
              that.confirmLoading = false;
              resetState(); // 请求结束,恢复状态
            });
        }
      })
    },
@@ -317,6 +355,45 @@
}
</script>
<style scoped>
/* 全局禁选样式 - 作用于整个页面 */
html.submitting,
html.submitting body {
  pointer-events: none !important;
  cursor: wait !important;
}
/* 蒙层效果增强 */
html.submitting::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.5);
  z-index: 9998;
}
/* 加载指示器 - 更明显的视觉反馈 */
html.submitting::after {
  content: '提交中...';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #1890ff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 9999;
}
/* 禁用状态按钮样式 */
.disabled-btn {
  opacity: 0.6;
  cursor: not-allowed !important;
}
.shallow-hr {
  border: 0;
  height: 1px; /* 分界线的高度 */
src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue
@@ -158,8 +158,20 @@
            </a-col>
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button  @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button @click="submitForm">提 交</a-button>
            <a-button
              @click="handleQueXiaoTask"
              icon="close"
              :disabled="isSubmitting"
              :class="{'disabled-btn': isSubmitting}"
            >取消</a-button>
            <a-button
              @click="submitForm"
              type="primary"
              :disabled="isSubmitting"
              :loading="isSubmitting"
            >
              提 交
            </a-button>
          </div>
        </a-form-model>
      </div>
@@ -249,7 +261,8 @@
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
      workflowSource: [],
      isSubmitting: false,
    }
  },
  created() {
@@ -283,12 +296,28 @@
        alert('无法加载图片,请稍后再试。')
      }
    },
    handleQueXiaoTask(){
      this.visible = false
      this.routeReload()
    handleQueXiaoTask() {
      // 如果正在提交,阻止取消操作
      if (this.isSubmitting) return;
      this.visible = false;
      this.routeReload();
    },
    submitForm () {
      // 如果正在提交,阻止重复点击
      if (this.isSubmitting) return;
      // 开启全局禁选
      this.isSubmitting = true;
      document.body.classList.add('submitting');
      const that = this;
      // 定义一个恢复状态的函数
      const resetState = () => {
        that.isSubmitting = false;
        document.body.classList.remove('submitting');
      };
      if (!that.assignFileStream.status==null || that.assignFileStream.status===undefined){
        this.$message.warning('请选择审批状态!')
        return false;
@@ -299,6 +328,10 @@
      }
      // 触发表单验证
      this.form.validateFields((err, values) => {
        if (err) {
          resetState(); // 验证失败,恢复状态
          return;
        }
        if (!err) {
          that.confirmLoading = true;
          let url=this.url.approve
@@ -326,11 +359,15 @@
            }else{
              that.$message.warning(res.message);
            }
          }).finally(() => {
            that.confirmLoading = false;
          }).catch((error) => {
            console.error(error);
            that.$message.error('提交失败');
          })
            .finally(() => {
              that.confirmLoading = false;
              resetState(); // 请求结束,恢复状态
            });
        }
      })
    },
    getAllApproveData(item) {
@@ -359,6 +396,45 @@
}
</script>
<style scoped>
/* 全局禁选样式 - 作用于整个页面 */
html.submitting,
html.submitting body {
  pointer-events: none !important;
  cursor: wait !important;
}
/* 蒙层效果增强 */
html.submitting::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.5);
  z-index: 9998;
}
/* 加载指示器 - 更明显的视觉反馈 */
html.submitting::after {
  content: '提交中...';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #1890ff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 9999;
}
/* 禁用状态按钮样式 */
.disabled-btn {
  opacity: 0.6;
  cursor: not-allowed !important;
}
.shallow-hr {
  border: 0;
  height: 1px; /* 分界线的高度 */
src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleForm.vue
@@ -146,9 +146,8 @@
              httpAction(url,flowTaskVo,method).then((res)=>{
                if(res.success){
                  that.$message.success(res.message);
                  that.valid = false
                  //刷新表格
                  that.$emit('searchReset')
                  that.visible = false;
                  that.$emit('searchReset');
                }else{
                  that.$message.warning(res.message);
                }
src/views/flowable/workflow/dispatchFile/DispatchFileHandle.vue
@@ -119,8 +119,20 @@
            </a-col>
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button  @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button @click="submitForm">提 交</a-button>
            <a-button
            @click="handleQueXiaoTask"
            icon="close"
            :disabled="isSubmitting"
            :class="{'disabled-btn': isSubmitting}"
          >取消</a-button>
            <a-button
              @click="submitForm"
              type="primary"
              :disabled="isSubmitting"
              :loading="isSubmitting"
            >
              提 交
            </a-button>
          </div>
        </a-form-model>
      </div>
@@ -191,7 +203,8 @@
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
      workflowSource: [],
      isSubmitting: false,
    }
  },
  created() {
@@ -225,94 +238,133 @@
        alert('无法加载图片,请稍后再试。')
      }
    },
    handleQueXiaoTask(){
      this.visible = false
      this.routeReload()
    handleQueXiaoTask() {
      // 如果正在提交,阻止取消操作
      if (this.isSubmitting) return;
      this.visible = false;
      this.routeReload();
    },
    submitForm () {
    submitForm() {
      // 如果正在提交,阻止重复点击
      if (this.isSubmitting) return;
      // 开启全局禁选
      this.isSubmitting = true;
      document.body.classList.add('submitting');
      const that = this;
      if (that.selectShenpiData.taskDefKey ==='task_prepare'){
        // 触发表单验证-重新启动
      // 定义一个恢复状态的函数
      const resetState = () => {
        that.isSubmitting = false;
        document.body.classList.remove('submitting');
      };
      // 处理task_prepare分支
      if (that.selectShenpiData.taskDefKey === 'task_prepare') {
        this.form.validateFields((err, values) => {
          if (!err) {
            that.confirmLoading = true;
            let url=this.url.saveDispatchFile;
            let method = 'post';
            let flowTaskVo = {}
            flowTaskVo.comment =that.assignFileStream.approveContent;
            flowTaskVo.dataId = this.selectShenpiData.dataId
            flowTaskVo.instanceId = this.selectShenpiData.procInstId
            flowTaskVo.taskId = this.selectShenpiData.id
            console.log("表单提交数据",flowTaskVo)
            httpAction(url,flowTaskVo,method).then((res)=>{
              if(res.success){
          if (err) {
            resetState(); // 验证失败,恢复状态
            return;
          }
          that.confirmLoading = true;
          let url = that.url.saveDispatchFile;
          let method = 'post';
          let flowTaskVo = {
            comment: that.assignFileStream.approveContent,
            dataId: that.selectShenpiData.dataId,
            instanceId: that.selectShenpiData.procInstId,
            taskId: that.selectShenpiData.id
          };
          console.log("表单提交数据", flowTaskVo);
          httpAction(url, flowTaskVo, method)
            .then((res) => {
              if (res.success) {
                that.$message.success(res.message);
                that.visible = false
                //刷新表格
                that.$emit('searchReset')
              }else{
                that.visible = false;
                that.$emit('searchReset');
              } else {
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
            })
          }
        })
        //跳出方法
        return false;
      }else {
        if (!that.assignFileStream.status==null || that.assignFileStream.status===undefined){
          this.$message.warning('请选择处理类型!')
          return false;
            .catch((error) => {
              console.error(error);
              that.$message.error('提交失败');
            })
            .finally(() => {
              that.confirmLoading = false;
              resetState(); // 请求结束,恢复状态
            });
        });
      } else {
        // 处理其他任务分支
        // 先检查处理类型和意见
        if (!that.assignFileStream.status) {
          that.$message.warning('请选择处理类型!');
          resetState();
          return;
        }
      }
      if (!that.assignFileStream.approveContent==null || that.assignFileStream.approveContent===undefined) {
        this.$message.warning('请输入处理意见!')
        return false;
      }
      // 触发表单验证
      this.form.validateFields((err, values) => {
        if (!err) {
        if (!that.assignFileStream.approveContent) {
          that.$message.warning('请输入处理意见!');
          resetState();
          return;
        }
        // 进行表单验证
        this.form.validateFields((err, values) => {
          if (err) {
            resetState();
            return;
          }
          that.confirmLoading = true;
          let url=this.url.approve
          let url = that.url.approve;
          let method = 'post';
          let handle =that.assignFileStream.status === '1';
          let flowTaskVo = {}
          switch (that.selectShenpiData.taskDefKey){
          let handle = that.assignFileStream.status === '1';
          let flowTaskVo = {
            comment: that.assignFileStream.approveContent,
            dataId: that.selectShenpiData.dataId,
            taskId: that.selectShenpiData.id,
            userId: that.selectShenpiData.assignee,
            instanceId: that.selectShenpiData.procInstId,
            values: that.selectShenpiData.variables
          };
          switch (that.selectShenpiData.taskDefKey) {
            case "task_approve":
              flowTaskVo.ratify=handle;
              flowTaskVo.ratify = handle;
              break;
            case "task_cut":
              flowTaskVo.cut=handle;
              flowTaskVo.cut = handle;
              break;
            case "task_finalize":
              flowTaskVo.stereotype=handle;
              flowTaskVo.stereotype = handle;
              break;
          }
          if (that.selectShenpiData.taskDefKey ==='task_proofread'){
            flowTaskVo.proofreadStatus =that.assignFileStream.status;
          if (that.selectShenpiData.taskDefKey === 'task_proofread') {
            flowTaskVo.proofreadStatus = that.assignFileStream.status;
          }
          flowTaskVo.comment =that.assignFileStream.approveContent;
          flowTaskVo.dataId = this.selectShenpiData.dataId
          flowTaskVo.taskId = this.selectShenpiData.id
          flowTaskVo.userId = this.selectShenpiData.assignee
          flowTaskVo.instanceId = this.selectShenpiData.procInstId
          flowTaskVo.values = this.selectShenpiData.variables
          console.log("表单提交数据",flowTaskVo)
          httpAction(url,flowTaskVo,method).then((res)=>{
            if(res.success){
              that.$message.success(res.message);
              that.visible = false
              //刷新表格
              that.$emit('searchReset')
            }else{
              that.$message.warning(res.message);
            }
          }).finally(() => {
            that.confirmLoading = false;
          })
        }
      })
          console.log("表单提交数据", flowTaskVo);
          httpAction(url, flowTaskVo, method)
            .then((res) => {
              if (res.success) {
                that.$message.success(res.message);
                that.visible = false;
                that.$emit('searchReset');
              } else {
                that.$message.warning(res.message);
              }
            })
            .catch((error) => {
              console.error(error);
              that.$message.error('提交失败');
            })
            .finally(() => {
              that.confirmLoading = false;
              resetState();
            });
        });
      }
    },
    getAllApproveData(item) {
      console.log('selectShenpiData----->', this.selectShenpiData)
@@ -340,6 +392,45 @@
}
</script>
<style scoped>
/* 全局禁选样式 - 作用于整个页面 */
html.submitting,
html.submitting body {
  pointer-events: none !important;
  cursor: wait !important;
}
/* 蒙层效果增强 */
html.submitting::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.5);
  z-index: 9998;
}
/* 加载指示器 - 更明显的视觉反馈 */
html.submitting::after {
  content: '提交中...';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #1890ff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 9999;
}
/* 禁用状态按钮样式 */
.disabled-btn {
  opacity: 0.6;
  cursor: not-allowed !important;
}
.shallow-hr {
  border: 0;
  height: 1px; /* 分界线的高度 */
src/views/flowable/workflow/guideCardBatch/GuideCardBatchHandle.vue
@@ -144,8 +144,20 @@
            </a-col>
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button  @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button @click="submitForm">提 交</a-button>
            <a-button
              @click="handleQueXiaoTask"
              icon="close"
              :disabled="isSubmitting"
              :class="{'disabled-btn': isSubmitting}"
            >取消</a-button>
            <a-button
              @click="submitForm"
              type="primary"
              :disabled="isSubmitting"
              :loading="isSubmitting"
            >
              提 交
            </a-button>
          </div>
        </a-form-model>
      </div>
@@ -214,7 +226,8 @@
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
      workflowSource: [],
      isSubmitting: false,
    }
  },
  created() {
@@ -248,12 +261,27 @@
        alert('无法加载图片,请稍后再试。')
      }
    },
    handleQueXiaoTask(){
      this.visible = false
      this.routeReload()
    handleQueXiaoTask() {
      // 如果正在提交,阻止取消操作
      if (this.isSubmitting) return;
      this.visible = false;
      this.routeReload();
    },
    submitForm () {
      // 如果正在提交,阻止重复点击
      if (this.isSubmitting) return;
      // 开启全局禁选
      this.isSubmitting = true;
      document.body.classList.add('submitting');
      const that = this;
      // 定义一个恢复状态的函数
      const resetState = () => {
        that.isSubmitting = false;
        document.body.classList.remove('submitting');
      };
      if (!that.assignFileStream.status==null || that.assignFileStream.status===undefined){
          this.$message.warning('请选择处理类型!')
          return false;
@@ -267,6 +295,10 @@
      }
      // 触发表单验证
      this.form.validateFields((err, values) => {
        if (err) {
          resetState(); // 验证失败,恢复状态
          return;
        }
        if (!err) {
          that.confirmLoading = true;
          let url=this.url.auditGuideCardBatch
@@ -301,9 +333,15 @@
            }else{
              that.$message.warning(res.message);
            }
          }).finally(() => {
            that.confirmLoading = false;
          })
            .catch((error) => {
              console.error(error);
              that.$message.error('提交失败');
            })
            .finally(() => {
              that.confirmLoading = false;
              resetState(); // 请求结束,恢复状态
            });
        }
      })
    },
@@ -333,6 +371,44 @@
}
</script>
<style scoped>
/* 全局禁选样式 - 作用于整个页面 */
html.submitting,
html.submitting body {
  pointer-events: none !important;
  cursor: wait !important;
}
/* 蒙层效果增强 */
html.submitting::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.5);
  z-index: 9998;
}
/* 加载指示器 - 更明显的视觉反馈 */
html.submitting::after {
  content: '提交中...';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #1890ff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 9999;
}
/* 禁用状态按钮样式 */
.disabled-btn {
  opacity: 0.6;
  cursor: not-allowed !important;
}
.shallow-hr {
  border: 0;
  height: 1px; /* 分界线的高度 */
src/views/flowable/workflow/inboundOrder/InboundOrderHandle.vue
@@ -134,8 +134,20 @@
            </a-col>
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button  @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button @click="submitForm">提 交</a-button>
            <a-button
              @click="handleQueXiaoTask"
              icon="close"
              :disabled="isSubmitting"
              :class="{'disabled-btn': isSubmitting}"
            >取消</a-button>
            <a-button
              @click="submitForm"
              type="primary"
              :disabled="isSubmitting"
              :loading="isSubmitting"
            >
              提 交
            </a-button>
          </div>
        </a-form-model>
      </div>
@@ -257,7 +269,8 @@
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
      workflowSource: [],
      isSubmitting: false,
    }
  },
  created() {
@@ -289,12 +302,28 @@
        alert('无法加载图片,请稍后再试。')
      }
    },
    handleQueXiaoTask(){
      this.visible = false
      this.routeReload()
    handleQueXiaoTask() {
      // 如果正在提交,阻止取消操作
      if (this.isSubmitting) return;
      this.visible = false;
      this.routeReload();
    },
    submitForm () {
      // 如果正在提交,阻止重复点击
      if (this.isSubmitting) return;
      // 开启全局禁选
      this.isSubmitting = true;
      document.body.classList.add('submitting');
      const that = this;
      // 定义一个恢复状态的函数
      const resetState = () => {
        that.isSubmitting = false;
        document.body.classList.remove('submitting');
      };
      if (!that.assignFileStream.status==null || that.assignFileStream.status===undefined){
        this.$message.warning('请选择审批状态!')
        return false;
@@ -305,6 +334,10 @@
      }
      // 触发表单验证
      this.form.validateFields((err, values) => {
        if (err) {
          resetState(); // 验证失败,恢复状态
          return;
        }
        if (!err) {
          that.confirmLoading = true;
          let url=this.url.approve
@@ -330,9 +363,15 @@
            }else{
              that.$message.warning(res.message);
            }
          }).finally(() => {
            that.confirmLoading = false;
          })
            .catch((error) => {
              console.error(error);
              that.$message.error('提交失败');
            })
            .finally(() => {
              that.confirmLoading = false;
              resetState(); // 请求结束,恢复状态
            });
        }
      })
@@ -370,6 +409,44 @@
}
</script>
<style scoped>
/* 全局禁选样式 - 作用于整个页面 */
html.submitting,
html.submitting body {
  pointer-events: none !important;
  cursor: wait !important;
}
/* 蒙层效果增强 */
html.submitting::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.5);
  z-index: 9998;
}
/* 加载指示器 - 更明显的视觉反馈 */
html.submitting::after {
  content: '提交中...';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #1890ff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 9999;
}
/* 禁用状态按钮样式 */
.disabled-btn {
  opacity: 0.6;
  cursor: not-allowed !important;
}
.shallow-hr {
  border: 0;
  height: 1px; /* 分界线的高度 */
src/views/flowable/workflow/lossBound/lossBoundHandle.vue
@@ -143,8 +143,20 @@
            </a-col>
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button :disabled="disableSubmit" @click="submitForm">提交</a-button>
            <a-button
              @click="handleQueXiaoTask"
              icon="close"
              :disabled="isSubmitting"
              :class="{'disabled-btn': isSubmitting}"
            >取消</a-button>
            <a-button
              @click="submitForm"
              type="primary"
              :disabled="isSubmitting"
              :loading="isSubmitting"
            >
              提 交
            </a-button>
          </div>
        </a-form-model>
      </div>
@@ -304,7 +316,8 @@
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
      workflowSource: [],
      isSubmitting: false,
    }
  },
  created() {
@@ -339,11 +352,27 @@
      }
    },
    handleQueXiaoTask() {
      this.visible = false
      this.routeReload()
      // 如果正在提交,阻止取消操作
      if (this.isSubmitting) return;
      this.visible = false;
      this.routeReload();
    },
    submitForm() {
      const that = this
      // 如果正在提交,阻止重复点击
      if (this.isSubmitting) return;
      // 开启全局禁选
      this.isSubmitting = true;
      document.body.classList.add('submitting');
      const that = this;
      // 定义一个恢复状态的函数
      const resetState = () => {
        that.isSubmitting = false;
        document.body.classList.remove('submitting');
      };
      if (!that.assignFileStream.status == null || that.assignFileStream.status === undefined) {
        this.$message.warning('请选择审批状态!')
        return false
@@ -354,6 +383,10 @@
      }
      // 触发表单验证
      this.form.validateFields((err, values) => {
        if (err) {
          resetState(); // 验证失败,恢复状态
          return;
        }
        if (!err) {
          that.confirmLoading = true
          let url = this.url.approve
@@ -379,9 +412,15 @@
            } else {
              that.$message.warning(res.message)
            }
          }).finally(() => {
            that.confirmLoading = false
          })
            .catch((error) => {
              console.error(error);
              that.$message.error('提交失败');
            })
            .finally(() => {
              that.confirmLoading = false;
              resetState(); // 请求结束,恢复状态
            });
        }
      })
@@ -424,6 +463,44 @@
}
</script>
<style scoped>
/* 全局禁选样式 - 作用于整个页面 */
html.submitting,
html.submitting body {
  pointer-events: none !important;
  cursor: wait !important;
}
/* 蒙层效果增强 */
html.submitting::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.5);
  z-index: 9998;
}
/* 加载指示器 - 更明显的视觉反馈 */
html.submitting::after {
  content: '提交中...';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #1890ff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 9999;
}
/* 禁用状态按钮样式 */
.disabled-btn {
  opacity: 0.6;
  cursor: not-allowed !important;
}
.shallow-hr {
  border: 0;
  height: 1px; /* 分界线的高度 */
src/views/flowable/workflow/outBoundOrder/OutBoundOrderHandle.vue
@@ -139,8 +139,20 @@
            </a-col>
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button  @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button @click="submitForm">提 交</a-button>
            <a-button
              @click="handleQueXiaoTask"
              icon="close"
              :disabled="isSubmitting"
              :class="{'disabled-btn': isSubmitting}"
            >取消</a-button>
            <a-button
              @click="submitForm"
              type="primary"
              :disabled="isSubmitting"
              :loading="isSubmitting"
            >
              提 交
            </a-button>
          </div>
        </a-form-model>
      </div>
@@ -302,7 +314,8 @@
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
      workflowSource: [],
      isSubmitting: false,
    }
  },
  created() {
@@ -337,12 +350,27 @@
        alert('无法加载图片,请稍后再试。')
      }
    },
    handleQueXiaoTask(){
      this.visible = false
      this.routeReload()
    handleQueXiaoTask() {
      // 如果正在提交,阻止取消操作
      if (this.isSubmitting) return;
      this.visible = false;
      this.routeReload();
    },
    submitForm () {
      // 如果正在提交,阻止重复点击
      if (this.isSubmitting) return;
      // 开启全局禁选
      this.isSubmitting = true;
      document.body.classList.add('submitting');
      const that = this;
      // 定义一个恢复状态的函数
      const resetState = () => {
        that.isSubmitting = false;
        document.body.classList.remove('submitting');
      };
      if (!that.assignFileStream.status==null || that.assignFileStream.status===undefined){
        this.$message.warning('请选择审批状态!')
        return false;
@@ -353,6 +381,10 @@
      }
      // 触发表单验证
      this.form.validateFields((err, values) => {
        if (err) {
          resetState(); // 验证失败,恢复状态
          return;
        }
        if (!err) {
          that.confirmLoading = true;
          let url=this.url.approve
@@ -378,11 +410,16 @@
            }else{
              that.$message.warning(res.message);
            }
          }).finally(() => {
            that.confirmLoading = false;
          })
            .catch((error) => {
              console.error(error);
              that.$message.error('提交失败');
            })
            .finally(() => {
              that.confirmLoading = false;
              resetState(); // 请求结束,恢复状态
            });
        }
      })
    },
    getAllApproveData(item) {
@@ -419,6 +456,44 @@
}
</script>
<style scoped>
/* 全局禁选样式 - 作用于整个页面 */
html.submitting,
html.submitting body {
  pointer-events: none !important;
  cursor: wait !important;
}
/* 蒙层效果增强 */
html.submitting::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.5);
  z-index: 9998;
}
/* 加载指示器 - 更明显的视觉反馈 */
html.submitting::after {
  content: '提交中...';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #1890ff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 9999;
}
/* 禁用状态按钮样式 */
.disabled-btn {
  opacity: 0.6;
  cursor: not-allowed !important;
}
.shallow-hr {
  border: 0;
  height: 1px; /* 分界线的高度 */
src/views/flowable/workflow/sparePartApply/SparePartApplyHandle.vue
@@ -180,13 +180,18 @@
          >
            <a-button
              @click="handleQueXiaoTask"
              type="primary"
              icon="close"
              :disabled="isSubmitting"
              :class="{'disabled-btn': isSubmitting}"
            >取消</a-button>
            <a-button
              :loading="spinning"
              @click="submitForm"
            >提交</a-button>
              type="primary"
              :disabled="isSubmitting"
              :loading="isSubmitting"
            >
              提 交
            </a-button>
          </div>
        </a-form-model>
      </div>
@@ -312,7 +317,8 @@
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
      workflowSource: [],
      isSubmitting: false,
    }
  },
  created() {
@@ -348,11 +354,26 @@
      }
    },
    handleQueXiaoTask() {
      this.visible = false
      this.routeReload()
      // 如果正在提交,阻止取消操作
      if (this.isSubmitting) return;
      this.visible = false;
      this.routeReload();
    },
    submitForm() {
      // 如果正在提交,阻止重复点击
      if (this.isSubmitting) return;
      // 开启全局禁选
      this.isSubmitting = true;
      document.body.classList.add('submitting');
      const that = this;
      // 定义一个恢复状态的函数
      const resetState = () => {
        that.isSubmitting = false;
        document.body.classList.remove('submitting');
      };
      that.spinning = true
      if (!that.assignFileStream.status == null || that.assignFileStream.status === undefined) {
        this.$message.warning('请选择审批状态!')
@@ -364,6 +385,10 @@
      }
      // 触发表单验证
      this.form.validateFields((err, values) => {
        if (err) {
          resetState(); // 验证失败,恢复状态
          return;
        }
        if (!err) {
          that.confirmLoading = true;
          let url = this.url.approve
@@ -389,10 +414,15 @@
            } else {
              that.$message.warning(res.message);
            }
          }).finally(() => {
            that.confirmLoading = false;
            that.spinning = false
          })
            .catch((error) => {
              console.error(error);
              that.$message.error('提交失败');
            })
            .finally(() => {
              that.confirmLoading = false;
              resetState(); // 请求结束,恢复状态
            });
        }
      })
@@ -433,6 +463,44 @@
}
</script>
<style scoped>
/* 全局禁选样式 - 作用于整个页面 */
html.submitting,
html.submitting body {
  pointer-events: none !important;
  cursor: wait !important;
}
/* 蒙层效果增强 */
html.submitting::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.5);
  z-index: 9998;
}
/* 加载指示器 - 更明显的视觉反馈 */
html.submitting::after {
  content: '提交中...';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #1890ff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 9999;
}
/* 禁用状态按钮样式 */
.disabled-btn {
  opacity: 0.6;
  cursor: not-allowed !important;
}
.shallow-hr {
  border: 0;
  height: 1px; /* 分界线的高度 */
src/views/flowable/workflow/standardizedProcess/StandardizedProcessHandle.vue
@@ -119,8 +119,20 @@
            </a-col>
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button  @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button @click="submitForm">提 交</a-button>
            <a-button
              @click="handleQueXiaoTask"
              icon="close"
              :disabled="isSubmitting"
              :class="{'disabled-btn': isSubmitting}"
            >取消</a-button>
            <a-button
              @click="submitForm"
              type="primary"
              :disabled="isSubmitting"
              :loading="isSubmitting"
            >
              提 交
            </a-button>
          </div>
        </a-form-model>
      </div>
@@ -191,7 +203,8 @@
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
      workflowSource: [],
      isSubmitting: false,
    }
  },
  created() {
@@ -225,17 +238,35 @@
        alert('无法加载图片,请稍后再试。')
      }
    },
    handleQueXiaoTask(){
      this.visible = false
      this.routeReload()
    handleQueXiaoTask() {
      // 如果正在提交,阻止取消操作
      if (this.isSubmitting) return;
      this.visible = false;
      this.routeReload();
    },
    submitForm () {
      // 如果正在提交,阻止重复点击
      if (this.isSubmitting) return;
      // 开启全局禁选
      this.isSubmitting = true;
      document.body.classList.add('submitting');
      const that = this;
      // 定义一个恢复状态的函数
      const resetState = () => {
        that.isSubmitting = false;
        document.body.classList.remove('submitting');
      };
      console.log('selectShenpiData---->',that.selectShenpiData)
      if (that.selectShenpiData.taskDefKey ==='task_prepare'){
        // 触发表单验证-重新启动
        this.form.validateFields((err, values) => {
          if (!err) {
          if (err) {
            resetState(); // 验证失败,恢复状态
            return;
          }else {
            that.confirmLoading = true;
            let url=this.url.saveDispatchFile;
            let method = 'post';
@@ -254,9 +285,14 @@
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
            }).catch((error) => {
              console.error(error);
              that.$message.error('提交失败');
            })
              .finally(() => {
                that.confirmLoading = false;
                resetState(); // 请求结束,恢复状态
              });
          }
        })
        //跳出方法
@@ -264,15 +300,21 @@
      }else {
        if (!that.assignFileStream.status==null || that.assignFileStream.status===undefined){
          this.$message.warning('请选择处理类型!')
          resetState();
          return false;
        }
      }
      if (!that.assignFileStream.approveContent==null || that.assignFileStream.approveContent===undefined) {
        this.$message.warning('请输入处理意见!')
        resetState();
        return false;
      }
      // 触发表单验证
      this.form.validateFields((err, values) => {
        if (err) {
          resetState();
          return;
        }
        if (!err) {
          that.confirmLoading = true;
          let url=this.url.approve
@@ -311,6 +353,7 @@
            }
          }).finally(() => {
            that.confirmLoading = false;
            resetState();
          })
        }
      })
@@ -338,6 +381,45 @@
}
</script>
<style scoped>
/* 全局禁选样式 - 作用于整个页面 */
html.submitting,
html.submitting body {
  pointer-events: none !important;
  cursor: wait !important;
}
/* 蒙层效果增强 */
html.submitting::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.5);
  z-index: 9998;
}
/* 加载指示器 - 更明显的视觉反馈 */
html.submitting::after {
  content: '提交中...';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #1890ff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 9999;
}
/* 禁用状态按钮样式 */
.disabled-btn {
  opacity: 0.6;
  cursor: not-allowed !important;
}
.shallow-hr {
  border: 0;
  height: 1px; /* 分界线的高度 */
src/views/flowable/workflow/stocktakingBound/stocktakingBoundHandle.vue
@@ -140,8 +140,20 @@
            </a-col>
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button :disabled="disableSubmit" @click="submitForm">提 交</a-button>
            <a-button
              @click="handleQueXiaoTask"
              icon="close"
              :disabled="isSubmitting"
              :class="{'disabled-btn': isSubmitting}"
            >取消</a-button>
            <a-button
              @click="submitForm"
              type="primary"
              :disabled="isSubmitting"
              :loading="isSubmitting"
            >
              提 交
            </a-button>
          </div>
        </a-form-model>
      </div>
@@ -323,7 +335,8 @@
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
      workflowSource: [],
      isSubmitting: false,
    }
  },
  created() {
@@ -358,11 +371,26 @@
      }
    },
    handleQueXiaoTask() {
      this.visible = false
      this.routeReload()
      // 如果正在提交,阻止取消操作
      if (this.isSubmitting) return;
      this.visible = false;
      this.routeReload();
    },
    submitForm() {
      const that = this
      // 如果正在提交,阻止重复点击
      if (this.isSubmitting) return;
      // 开启全局禁选
      this.isSubmitting = true;
      document.body.classList.add('submitting');
      const that = this;
      // 定义一个恢复状态的函数
      const resetState = () => {
        that.isSubmitting = false;
        document.body.classList.remove('submitting');
      };
      if (!that.assignFileStream.status == null || that.assignFileStream.status === undefined) {
        this.$message.warning('请选择审批状态!')
        return false
@@ -373,6 +401,10 @@
      }
      // 触发表单验证
      this.form.validateFields((err, values) => {
        if (err) {
          resetState(); // 验证失败,恢复状态
          return;
        }
        if (!err) {
          that.confirmLoading = true
          let url = this.url.approve
@@ -398,11 +430,16 @@
            } else {
              that.$message.warning(res.message)
            }
          }).finally(() => {
            that.confirmLoading = false
          })
            .catch((error) => {
              console.error(error);
              that.$message.error('提交失败');
            })
            .finally(() => {
              that.confirmLoading = false;
              resetState(); // 请求结束,恢复状态
            });
        }
      })
    },
    /**
@@ -443,6 +480,44 @@
}
</script>
<style scoped>
/* 全局禁选样式 - 作用于整个页面 */
html.submitting,
html.submitting body {
  pointer-events: none !important;
  cursor: wait !important;
}
/* 蒙层效果增强 */
html.submitting::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.5);
  z-index: 9998;
}
/* 加载指示器 - 更明显的视觉反馈 */
html.submitting::after {
  content: '提交中...';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #1890ff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 9999;
}
/* 禁用状态按钮样式 */
.disabled-btn {
  opacity: 0.6;
  cursor: not-allowed !important;
}
.shallow-hr {
  border: 0;
  height: 1px; /* 分界线的高度 */