lyh
2025-04-02 fc2505f46bd0e45d5a4c2ad1b4ab9187c9e7bec3
修改审签工作流
已添加2个文件
已修改1个文件
335 ■■■■■ 文件已修改
src/views/flowable/workflow/FlowTodo.vue 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleForm.vue 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/FlowTodo.vue
@@ -44,22 +44,33 @@
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator">
    <a-dropdown v-if="selectedRowKeys.length > 0 ">
      <a-menu slot="overlay">
        <a-menu-item key="1" @click="batchHandle"><a-icon type="delete"/>批量处理</a-menu-item>
      </a-menu>
      <a-button style="margin-left: 8px"> æ‰¹é‡æ“ä½œ <a-icon type="down" /></a-button>
    </a-dropdown>
    </div>
    <!-- table区域-begin -->
    <div>
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
        <i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
          selectedRowKeys.length }}</a>项&nbsp;&nbsp;
        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
      </div>
      <a-table
        ref="table"
        size="middle"
        :scroll="{x:true}"
        bordered
        size="middle"
        rowKey="id"
        :scroll="{x:'max-content',y:465}"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        class="j-table-force-nowrap"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        @change="handleTableChange">
        <template slot="htmlSlot" slot-scope="text">
@@ -91,7 +102,7 @@
    <AssignFileStreamHandle ref="modalFormApproval" :selectShenpiData="selectShenpiData"></AssignFileStreamHandle>
    <DispatchFileHandle ref="modalFormDispatchFileXq"  :selectShenpiData="selectDispatchFileXqData" @searchReset="searchReset"></DispatchFileHandle>
    <DispatchFileBachHandleStyle ref="modalFormDispatchFileBatch" @searchReset="searchReset" @ok="modalFormOk"></DispatchFileBachHandleStyle>
  </a-card>
</template>
@@ -103,13 +114,16 @@
import JDictSelectTag from '@/components/dict/JDictSelectTag.vue'
import AssignFileStreamHandle from '@views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue'
import DispatchFileHandle from '@views/flowable/workflow/dispatchFile/DispatchFileHandle.vue'
import DispatchFileBachHandleStyle from '@views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.vue'
import { getAction } from '@api/manage'
export default {
  name: 'NcDeviceCharactersList',
  mixins:[JeecgListMixin, mixinDevice],
  components: {
    AssignFileStreamHandle,
    JDictSelectTag,
    DispatchFileHandle
    DispatchFileHandle,
    DispatchFileBachHandleStyle
  },
  data () {
    return {
@@ -179,10 +193,12 @@
      ],
      url: {
        list: '/assign/flow/toTaskBySelf',
        isSameNode: '/assign/flow/isSameNode'
      },
      dictOptions:{},
      selectShenpiData: {},
      selectDispatchFileXqData:{}
      selectDispatchFileXqData:{},
      selectBachData:{}
    }
  },
  created() {
@@ -229,6 +245,35 @@
      this.selectDispatchFileXqData = item
      this.$refs.modalFormDispatchFileXq.clearTableSource()
      this.$refs.modalFormDispatchFileXq.getAllApproveData(item)
    },
    batchHandle() {
      if (this.selectedRowKeys.length <= 0) {
        this.$notification.warning({
          message: '消息',
          description: "请选择一条记录"
        });
        return;
      } else {
        let ids = "";
        for (var 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/dispatchFile/DispatchFileBachHandleForm.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,216 @@
<template>
    <a-spin :spinning="confirmLoading">
        <j-form-container >
            <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
                <a-row>
          <a-col :span="24" v-if="selectBachData.taskDefKey ==='task_proofread'" class="btxx">
            <a-form-model-item  label="处理类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop='status'>
              <j-dict-select-tag  type='list' v-model='model.status' dictCode='nc_sq_handle_type_jd' placeholder="请选择处理类型"  />
            </a-form-model-item >
          </a-col>
          <a-col :span="24" v-if="selectBachData.taskDefKey ==='task_approve' || selectBachData.taskDefKey ==='task_cut' || selectBachData.taskDefKey ==='task_finalize'" class="btxx">
            <a-form-model-item  label="处理类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop='status'>
              <j-dict-select-tag  type='list' v-model='model.status' dictCode='nc_sq_handle_type' placeholder="请选择处理类型"  />
            </a-form-model-item >
          </a-col>
          <a-col :span="24" class="btxx">
            <a-form-model-item  label="处理意见" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-textarea v-model="model.approveContent" rows="4" placeholder="请输入处理意见"/>
            </a-form-model-item >
          </a-col>
                </a-row>
            </a-form-model>
        </j-form-container>
    </a-spin>
</template>
<script>
    import axios from 'axios';
    import {
        httpAction,
        getAction
    } from '@/api/manage'
    import {
        validateDuplicateValue
    } from '@/utils/util'
    export default {
        name: 'ChCfForm',
        components: {},
        props: {
            //表单禁用
            disabled: {
                type: Boolean,
                default: false,
                required: false
            }
        },
        data() {
            return {
                principalList: [],
                model: {},
                labelCol: {
                    xs: {
                        span: 24
                    },
                    sm: {
                        span: 5
                    },
                },
                wrapperCol: {
                    xs: {
                        span: 24
                    },
                    sm: {
                        span: 16
                    },
                },
                confirmLoading: false,
                validatorRules: {
                    address: [{
                        required: true,
                        message: '请选择地址!'
                    }, ],
                    bt: [{
                        required: true,
                        message: '请输入标题!'
                    }, ],
                },
                url: {
          approvalBatch: "/dncFlow/dispatchFile/approvalBatch",
                },
        selectBachData:{}
            }
        },
        computed: {
            formDisabled() {
                return this.disabled
            },
        },
        created() {
            //备份model原始值
            this.modelDefault = JSON.parse(JSON.stringify(this.model));
        },
        methods: {
            handleChange(e) {
                console.log(e);
                let sss = e.split('||||')
                console.log(sss);
                this.model.jd = sss[0]
                this.model.address = sss[1]
                console.log(sss)
            },
            handleSearch(e) {
                if (e === '') {
                    return
                }
                const that = this;
                axios.get('/s-api/api/index/lsdz?input=' + e)
                    .then(response => {
                        that.principalList = []
                        console.log(that.principalList)
                        for (var i = 0; i < response.data.data.length; i++) {
                            that.principalList.push({
                                value: response.data.data[i].inputValueId + '||||' + response.data.data[i].setout,
                                label: response.data.data[i].setout,
                            });
                        }
                        // that.principalList = response.data.data
                        console.log(that.principalList, '8888'); // è¾“出返回的数据
                    })
                    .catch(error => {
                        console.error(error); // å¤„理错误情况
                    });
            },
            add() {
                this.edit(this.modelDefault);
            },
            edit(record) {
                this.selectBachData=record
                this.visible = true;
            },
      submitForm () {
        const that = this;
        if (that.selectBachData.taskDefKey ==='task_prepare'){
          // è§¦å‘表单验证-重新启动
          this.$refs.form.validate(valid => {
            if (valid) {
              that.confirmLoading = true;
              let url=this.url.approvalBatch;
              let method = 'post';
              let flowTaskVo = {}
              flowTaskVo.comment =this.model.approveContent;
              flowTaskVo.taskIds=that.selectBachData.taskIds
              flowTaskVo.targetKey=that.selectBachData.taskDefKey
              console.log("表单提交数据",flowTaskVo)
              httpAction(url,flowTaskVo,method).then((res)=>{
                if(res.success){
                  that.$message.success(res.message);
                  that.valid = false
                  //刷新表格
                  that.$emit('searchReset')
                }else{
                  that.$message.warning(res.message);
                }
              }).finally(() => {
                that.confirmLoading = false;
              })
            }
          })
          //跳出方法
          return false;
        }else {
          if (!that.model.status==null || that.model.status===undefined){
            this.$message.warning('请选择处理类型!')
            return false;
          }
        }
        if (!that.model.approveContent==null || that.model.approveContent===undefined) {
          this.$message.warning('请输入处理意见!')
          return false;
        }
        // è§¦å‘表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true;
            let url=this.url.approvalBatch
            let method = 'post';
            let handle =this.model.status === '1';
            let flowTaskVo = {}
            switch (that.selectBachData.taskDefKey){
              case "task_approve":
                flowTaskVo.ratify=handle;
                break;
              case "task_cut":
                flowTaskVo.cut=handle;
                break;
              case "task_finalize":
                flowTaskVo.stereotype=handle;
                break;
            }
            if (that.selectBachData.taskDefKey ==='task_proofread'){
              flowTaskVo.proofreadStatus =that.model.status;
            }
            flowTaskVo.comment =that.model.approveContent;
            flowTaskVo.taskIds=that.selectBachData.taskIds
            flowTaskVo.targetKey=that.selectBachData.taskDefKey
            console.log("表单提交数据",flowTaskVo)
            httpAction(url,flowTaskVo,method).then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.valid = false
                that.close();
                //刷新表格
                that.$emit('ok')
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
            })
          }
        })
      },
        }
    }
</script>
src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
<template>
  <j-modal
    :title="title"
    :width="width"
    :visible="visible"
    switchFullscreen
    @ok="handleOk"
    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
    @cancel="handleCancel"
    cancelText="关闭">
    <DispatchFileBachHandleForm ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></DispatchFileBachHandleForm>
  </j-modal>
</template>
<script>
  import DispatchFileBachHandleForm from './DispatchFileBachHandleForm.vue'
  export default {
    name: 'DispatchFileBachHandleStyle',
    components: {
      DispatchFileBachHandleForm
    },
    data () {
      return {
        title:'',
        width:800,
        visible: false,
        disableSubmit: false
      }
    },
    methods: {
      add () {
        this.visible=true
        this.$nextTick(()=>{
          this.$refs.realForm.add();
        })
      },
      edit (record) {
        this.visible=true
        this.$nextTick(()=>{
          this.$refs.realForm.edit(record);
        });
      },
      close () {
        this.$emit('close');
        this.visible = false;
      },
      submitCallback(){
        this.$emit('ok');
        this.visible = false;
      },
      handleOk () {
        this.$refs.realForm.submitForm();
      },
      handleCancel () {
        this.close()
      }
    }
  }
</script>