6
jinlin
2023-11-29 b21945e7dea2daa8b30bee3cdd4bca91277e3b5f
6
19个文件已修改
1个文件已添加
902 ■■■■ 已修改文件
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/model/WarehouseConfigItem.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/controller/ItemCirculatOrderController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dto/ItemCirculatOrderDto.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/project/model/SoftwareTestOrder.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/project/service/SoftwareTestOrderService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/configItemWarehouse/ConfigItemWarehouseDao.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/packages/components/zt-dialog/src/zt-dialog.vue 410 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/configItemWarehouse/ConfigItemWarehouse-AddOrUpdate.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue 251 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/project/Project-select.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/sys/task/stay-task.vue 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/sys/task/taskCenter.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/workflow/dto/FlowInfoDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/workflow/service/WorkflowService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java
@@ -21,5 +21,5 @@
    List<WarehouseConfigItem> getList(Map<String, Object> params);
    List<DictIstance> itemList(Long projectId);
    List<WarehouseConfigItem> itemList(Long projectId);
}
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/model/WarehouseConfigItem.java
@@ -31,7 +31,7 @@
    private String itemName;
    @ApiModelProperty(value = "配置项标识")
    private String itemDentify;
    private String itemIdentify;
    @ApiModelProperty(value = "版本")
    private String version;
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java
@@ -47,7 +47,7 @@
        return baseDao.getList(params);
    }
    public List<DictIstance> ConfigItemList(Long projectId) {
    public List<WarehouseConfigItem> ConfigItemList(Long projectId) {
        return baseDao.itemList(projectId);
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/controller/ItemCirculatOrderController.java
@@ -92,7 +92,7 @@
    @PostMapping
    @ApiOperation("新增")
    @LogOperation("新增")
    public Result insert(@RequestBody ItemCirculatOrderDto itemCirculatOrderDto){
    public Result<Long> insert(@RequestBody ItemCirculatOrderDto itemCirculatOrderDto){
        //效验数据
        ValidatorUtils.validateEntity(itemCirculatOrderDto.getCirculatOrder(), AddGroup.class, DefaultGroup.class);
        Map<String, String> map = new HashMap<>();
@@ -100,18 +100,18 @@
        map.put("projectId",itemCirculatOrderDto.getProjectId().toString());
        itemCirculatOrderDto.getCirculatOrder().setCode(sysCodeRuleService.getNewCode(map));
        Boolean result = itemCirculatOrderService.save(itemCirculatOrderDto);
        return Result.ok();
        return Result.ok(itemCirculatOrderDto.getCirculatOrder().getId());
    }
    @PutMapping
    @ApiOperation("修改")
    @LogOperation("修改")
    public Result update(@RequestBody ItemCirculatOrderDto itemCirculatOrderDto){
    public Result<Long> update(@RequestBody ItemCirculatOrderDto itemCirculatOrderDto){
        //效验数据
        ValidatorUtils.validateEntity(itemCirculatOrderDto.getCirculatOrder(), UpdateGroup.class, DefaultGroup.class);
        Boolean result = itemCirculatOrderService.save(itemCirculatOrderDto);
        return Result.ok();
        return Result.ok(itemCirculatOrderDto.getCirculatOrder().getId());
    }
    @DeleteMapping("deleteCirculat")
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dto/ItemCirculatOrderDto.java
@@ -4,7 +4,7 @@
import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrderTechnical;
import com.zt.life.modules.project.model.*;
import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo;
import com.zt.life.sys.dto.OssDto;
import com.zt.modules.workflow.dto.FlowInfoDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -16,6 +16,9 @@
    private Long id;
    private Long projectId;
    private Long circulatOrderid;
    private String stepIdMark;
    private FlowInfoDto flowInfoDto;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java
@@ -36,7 +36,10 @@
    private String itemOther;
    @ApiModelProperty(value = "物品接收人")
    private String itemAccept;
    private String itemAcceptor;
    @ApiModelProperty(value = "物品接收人ID")
    private String itemAcceptorId;
    @ApiModelProperty(value = "物品接收时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
@@ -45,29 +48,37 @@
    @ApiModelProperty(value = "物品接收情况说明")
    private String acceptSituation;
    @ApiModelProperty(value = "病毒库版本")
    private String virusLibraryVersion;
    @ApiModelProperty(value = "校准检测人")
    private String calibratDetect;
    private String calibratDetector;
    @ApiModelProperty(value = "校准检测人ID")
    private String calibratDetectorId;
    @ApiModelProperty(value = "校准检测时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date detectDate;
    @ApiModelProperty(value = "校准检测情况说明")
    private String detectSituation;
    @ApiModelProperty(value = "物品入库人")
    private String warehouse;
/*    @ApiModelProperty(value = "物品入库人")
    private String warehousePerson;
    @ApiModelProperty(value = "物品入库时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date warehouseDate;
    @ApiModelProperty(value = "物品入库情况")
    private String warehouseSituation;
    private String warehouseSituation;*/
    @ApiModelProperty(value = "物品发放人")
    private String itemIssue;
    private String itemIssuer;
    @ApiModelProperty(value = "物品发放人ID")
    private String itemIssuerId;
    @ApiModelProperty(value = "物品发放时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java
@@ -19,9 +19,12 @@
import com.zt.life.sys.service.SysOssConfigService;
import com.zt.modules.coderule.service.SysCodeRuleService;
import com.zt.modules.oss.service.SysOssService;
import com.zt.modules.workflow.dto.FlowInfoDto;
import com.zt.modules.workflow.service.WorkflowService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zt.common.db.query.QueryFilter;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -37,11 +40,11 @@
/**
 * item_circulat_order
 *
 * @author zt generator
 * @author zt generator
 * @since 1.0.0 2023-11-22
 */
@Service
public class ItemCirculatOrderService  extends BaseService<ItemCirculatOrderDao, ItemCirculatOrder> {
public class ItemCirculatOrderService extends BaseService<ItemCirculatOrderDao, ItemCirculatOrder> {
    @Autowired
    private SysOssConfigService sysOssConfigService;
@@ -61,7 +64,8 @@
    private ItemCirculatOrderTechnicalService technicalService;
    @Autowired
    private SoftwareTestOrderService softwareTestOrderService;
    private WorkflowService workflowService;
    /**
     * 分页查询
     *
@@ -88,7 +92,7 @@
        else {
            Map<String, String> map = new HashMap<>();
            map.put("funCode", "item_circulat_order");
            map.put("projectId",itemCirculatOrderDto.getProjectId().toString());
            map.put("projectId", itemCirculatOrderDto.getProjectId().toString());
            itemCirculatOrderDto.getCirculatOrder().setProjectId(itemCirculatOrderDto.getProjectId());
            itemCirculatOrderDto.getCirculatOrder().setCode(sysCodeRuleService.getNewCode(map));
            baseDao.insert(itemCirculatOrderDto.getCirculatOrder());
@@ -112,6 +116,15 @@
        } else {
            testAgencyInfoService.update(itemCirculatOrderDto.getTestAgencyInfo());
        }
        Long bizId = itemCirculatOrderDto.getCirculatOrder().getId();
        FlowInfoDto flowInfoDto = itemCirculatOrderDto.getFlowInfoDto();
        if ("tj".equals(flowInfoDto.getSubmitType()) || "bl".equals(flowInfoDto.getSubmitType())) {
            if ("tj".equals(flowInfoDto.getSubmitType())) {
                workflowService.startFlow(flowInfoDto.getFlowCode(), bizId);
            }
            workflowService.approvePass(flowInfoDto.getFlowCode(), bizId, flowInfoDto.getStepIdMark());
        }
        return true;
    }
@@ -130,7 +143,7 @@
            data.setTechnicalList(technicalList);
        } else {
            ItemCirculatOrder itemCirculatOrder =new ItemCirculatOrder();
            ItemCirculatOrder itemCirculatOrder = new ItemCirculatOrder();
            data.setCirculatOrder(itemCirculatOrder);
            List<?> resultList = technicalService.itemList(projectId);
            List<?> technicalList = resultList;
modules/mainPart/src/main/java/com/zt/life/modules/project/model/SoftwareTestOrder.java
@@ -120,12 +120,14 @@
    private String entrustSign;
    @ApiModelProperty(value = "委托方签字日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String entrustSignDate;
    @ApiModelProperty(value = "承托方签字")
    private String contractSign;
    @ApiModelProperty(value = "承托方签字日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String contractSignDate;
    @TableField(exist = false)
modules/mainPart/src/main/java/com/zt/life/modules/project/service/SoftwareTestOrderService.java
@@ -28,6 +28,7 @@
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -97,6 +98,8 @@
            Map<String, String> map = new HashMap<>();
            map.put("funCode", "software_test_order");
            map.put("projectId",softwareTestOrderDto.getProjectId().toString());
          /*  DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            softwareTestOrderDto.getSoftwareTestOrder().getEntrustSignDate();*/
            softwareTestOrderDto.getSoftwareTestOrder().setProjectId(softwareTestOrderDto.getProjectId());
            softwareTestOrderDto.getSoftwareTestOrder().setCode(sysCodeRuleService.getNewCode(map));
            baseDao.insert(softwareTestOrderDto.getSoftwareTestOrder());
modules/mainPart/src/main/resources/mapper/configItemWarehouse/ConfigItemWarehouseDao.xml
@@ -19,7 +19,7 @@
    </select>
    <select id="itemList" resultType="com.zt.life.modules.configItemWarehouse.model.WarehouseCmAudit">
        SET @row_number = 0;
        SELECT  dd.dict_label AS name,
        SELECT  dd.dict_label AS examineItem,
        (@row_number := @row_number + 1) AS no
        FROM sys_dict_type dt
        JOIN sys_dict_data dd ON dt.ID = dd.DICT_TYPE_ID
modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml
@@ -16,17 +16,32 @@
            ORDER BY ${orderBySql}
        </if>
    </select>
    <select id="itemList" resultType="com.zt.core.sys.dto.DictIstance">
        SELECT m.*, p.secret_class
        FROM software_test_order_measured m
        JOIN software_test_order s ON s.id = m.order_id
        JOIN project p ON p.id = ${projectId}
        <where>
            s.is_delete = 0 and m.is_delete = 0
            <if test="projectId!=null">
                and s.project_id = ${projectId}
            </if>
        </where>
    <select id="itemList" resultType="com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem">
        SELECT p.secret_class,
               SUBSTRING(m.name, LOCATE('软件', m.name) , LENGTH(m.name)) AS itemName,
               m.identify AS version,
               m.name AS Item_identify
        FROM software_test_order s
                 JOIN software_test_order_measured m ON s.project_id = ${projectId}
                 JOIN project p ON p.id = ${projectId}
        WHERE s.is_delete = 0
          AND  s.id = m.order_id
        UNION
        SELECT NULL AS secretClass,
               '软件测试委托单' AS itemName,
               NULL AS version,
               s.code AS itemIdentify
        FROM software_test_order s
        WHERE s.is_delete = 0
          AND  s.project_id = ${projectId}
        UNION
        SELECT NULL AS secretClass,
               '物品流转单' AS itemName,
               NULL AS version,
               i.code AS itemIdentify
        FROM item_circulat_order i
        WHERE i.is_delete = 0
          AND  i.project_id = ${projectId}
    </select>
</mapper>
web/packages/components/zt-dialog/src/zt-dialog.vue
@@ -1,221 +1,231 @@
<template>
  <el-dialog
    v-dialogDrag
    :class="{'dialog-column-1': column === '1', 'dialog-column-2': column === '2', 'dialog-column-3': column === '3', 'dialog-column-4': column === '4'}"
    :visible.sync="visible"
    v-if="visible"
    :title="_title"
    :close-on-click-modal="false"
    :close-on-press-escape="false"
    :append-to-body="appendToBody"
    @open="onOpen"
    @close="onClose">
    <slot></slot>
    <template slot="footer">
      <el-button @click="visible = false" v-show="editAble">{{ $t('cancel') }}</el-button>
      <el-button type="primary" @click="formSubmit()" v-preventReClick v-show="editAble && hasConfirm">{{ $t('confirm') }}
      </el-button>   <!--      确定 -->
      <el-button type="warning" @click="formSubmit()"  v-show="stepMarker">提交
      </el-button>
      <el-button type="warning" @click="formSubmit()"  v-show="!stepMarker">保存
      </el-button>
      <el-button type="info" @click="close()" v-show="!editAble">{{ $t('close') }}</el-button>
      <slot name="footer"></slot>
    </template>
  </el-dialog>
    <el-dialog
            v-dialogDrag
            :class="{'dialog-column-1': column === '1', 'dialog-column-2': column === '2', 'dialog-column-3': column === '3', 'dialog-column-4': column === '4'}"
            :visible.sync="visible"
            v-if="visible"
            :title="_title"
            :close-on-click-modal="false"
            :close-on-press-escape="false"
            :append-to-body="appendToBody"
            @open="onOpen"
            @close="onClose">
        <slot></slot>
        <template slot="footer">
            <template v-if="stepMarker && stepMarker.indexOf('first')>0">
                <el-button type="warning" @click="formSubmit('zc')">暂存</el-button>
                <el-button type="warning" @click="formSubmit('tj')" v-if="">提交
                </el-button>
            </template>
            <template v-else-if="stepMarker">
                <el-button type="warning" @click="formSubmit('zc')">暂存</el-button>
                <el-button type="warning" @click="formSubmit('bl')">办理</el-button>
            </template>
            <el-button type="primary" @click="formSubmit('qd')" v-preventReClick v-else-if="editAble && hasConfirm">{{
                $t('confirm') }}
            </el-button>
            <el-button type="warning" @click="formSubmit('bc')" v-else-if="editAble">保存
            </el-button>
            <el-button @click="visible = false" v-if="editAble||stepMarker">{{ $t('cancel') }}</el-button>
            <el-button type="info" @click="close()" v-else>{{ $t('close') }}</el-button>
            <slot name="footer"></slot>
        </template>
    </el-dialog>
</template>
<script>
  import cloneDeep from 'lodash/cloneDeep'
    import cloneDeep from 'lodash/cloneDeep'
  export default {
    name: 'ZtDialog',
    props: {
      title: String,
      column: { // 几列
        type: String,
        default: '1'
      },
      stepMarker:{
      },
      appendToBody: {
        type: Boolean,
        default: false
      },
      hasConfirm: {
        type: Boolean,
        default: true
      },
      editAble: {
        type: Boolean,
        default: true
      },
      hasSubmit:{
        type: Boolean,
        default: false
      },
      hasSave:{
        type: Boolean,
        default: false
      }
    },
    data() {
      return {
        dataFormBack: null,
        visible: false
        //editAble: true // 是否可编辑
      }
    },
    computed: {
      _title() {
        if (this.title) {
          return this.title
        } else if (!this.editAble) {
          return this.$t('view')
        } else if(this.$parent.dataForm!==undefined) {
          return !this.$parent.dataForm.id ? this.$t('add') : this.$t('update')
        }
      }
    },
    mounted() {
      this.dataFormBack = cloneDeep(this.$parent.dataForm)
    },
    methods: {
      init(id, row, isView) {
        this.$nextTick(() => {
          // 清空表单校验
          console.log(this.$parent.$refs.dataForm,id, row, isView,'this.$parent.$refs.dataForm')
          if (this.$parent.$refs.dataForm) { // dialog里面的form
            this.$parent.$refs.dataForm.resetFields()
          }
          this.editAble = isView !== true // 是否可编辑
          // 设置dialog父页面初始化表单
          this.$parent.dataForm = cloneDeep(this.dataFormBack)
          if (this.$parent.dataForm) {
            this.$parent.dataForm.id = id
            this.$parent.dataForm.disabled = isView === true // 表单是否可编辑
          }
          if (this.$parent.init) {
            console.log(id,row,'id row')
            this.$parent.init(id, row)
          }
          if (id && this.$parent.getInfo) {
            this.$parent.getInfo()
          }
        })
        this.open()
      },
      // 表单提交
      formSubmit() {
        let dataForm = this.$parent.$refs.dataForm
        if (dataForm) {
          dataForm.validate(async valid => {
            if (valid) {
              this.$emit('confirm')
            } else {
              this.$nextTick(() => {
                let isError = document.getElementsByClassName('is-error')
                isError[0].scrollIntoView({
                  // 滚动到指定节点
                  // 值有start,center,end,nearest,当前显示在视图区域中间
                  block: 'center',
                  // 值有auto、instant,smooth,缓动动画(当前是慢速的)
                  behavior: 'smooth'
                })
              })
    export default {
        name: 'ZtDialog',
        props: {
            title: String,
            column: { // 几列
                type: String,
                default: '1'
            },
            stepMarker: {},
            appendToBody: {
                type: Boolean,
                default: false
            },
            hasConfirm: {
                type: Boolean,
                default: false
            },
            editAble: {
                type: Boolean,
                default: true
            },
            hasSubmit: {
                type: Boolean,
                default: false
            },
            hasSave: {
                type: Boolean,
                default: false
            }
          })
        } else {
          this.$emit('confirm')
        },
        data() {
            return {
                dataFormBack: null,
                visible: false
                //editAble: true // 是否可编辑
            }
        },
        computed: {
            _title() {
                if (this.title) {
                    return this.title
                } else if (!this.editAble) {
                    return this.$t('view')
                } else if (this.$parent.dataForm !== undefined) {
                    return !this.$parent.dataForm.id ? this.$t('add') : this.$t('update')
                }
            }
        },
        mounted() {
            this.dataFormBack = cloneDeep(this.$parent.dataForm)
        },
        methods: {
            init(id, row, isView) {
                this.$nextTick(() => {
                    // 清空表单校验
                    console.log(this.$parent.$refs.dataForm, id, row, isView, 'this.$parent.$refs.dataForm')
                    if (this.$parent.$refs.dataForm) { // dialog里面的form
                        this.$parent.$refs.dataForm.resetFields()
                    }
                    // this.editAble = isView !== true // 是否可编辑
                    // 设置dialog父页面初始化表单
                    this.$parent.dataForm = cloneDeep(this.dataFormBack)
                    if (this.$parent.dataForm) {
                        this.$parent.dataForm.id = id
                        this.$parent.dataForm.disabled = isView === true // 表单是否可编辑
                    }
                    if (this.$parent.init) {
                        console.log(id, row, 'id row')
                        this.$parent.init(id, row)
                    }
                    if (id && this.$parent.getInfo) {
                        this.$parent.getInfo()
                    }
                })
                this.open()
            },
            // 表单提交
            formSubmit(submitType) {
                let dataForm = this.$parent.$refs.dataForm
                if (dataForm) {
                    dataForm.validate(async valid => {
                        if (valid) {
                            this.$emit('confirm', submitType)
                        } else {
                            this.$nextTick(() => {
                                let isError = document.getElementsByClassName('is-error')
                                isError[0].scrollIntoView({
                                    // 滚动到指定节点
                                    // 值有start,center,end,nearest,当前显示在视图区域中间
                                    block: 'center',
                                    // 值有auto、instant,smooth,缓动动画(当前是慢速的)
                                    behavior: 'smooth'
                                })
                            })
                        }
                    })
                } else {
                    this.$emit('confirm', submitType)
                }
            },
            open() {
                this.visible = true
            },
            close() {
                this.visible = false
            },
            onOpen() {
                this.$emit('open')
            },
            onClose() {
                this.$emit('close')
            }
        }
      },
      open() {
        this.visible = true
      },
      close() {
        this.visible = false
      },
      onOpen() {
        this.$emit('open')
      },
      onClose() {
        this.$emit('close')
      }
    }
  }
</script>
<style lang="scss" scoped>
  .dialog-column-1 {
    /deep/ .el-dialog {
      position: fixed;
      margin-top: 0 !important;
      top:50% !important;
      left: 50% !important;
      transform: translate(-50%, -50%);
      width: 50%;
      /*margin-top:7vh !important;*/
      .el-form > .el-form-item, .el-form .el-collapse-item__content > .el-form-item {
        width: 75%;
      }
    .dialog-column-1 {
        /deep/ .el-dialog {
            position: fixed;
            margin-top: 0 !important;
            top: 50% !important;
            left: 50% !important;
            transform: translate(-50%, -50%);
            width: 50%;
            /*margin-top:7vh !important;*/
            .el-form > .el-form-item, .el-form .el-collapse-item__content > .el-form-item {
                width: 75%;
            }
        }
    }
  }
  .dialog-column-2 {
    /deep/ .el-dialog {
      width: 60%;
      position: fixed;
      margin-top: 0 !important;
      top:50% !important;
      left: 50% !important;
      transform: translate(-50%, -50%);
      .el-form > .el-form-item, .el-form .el-collapse-item__content > .el-form-item {
        width: 50%;
        float: left;
      }
    .dialog-column-2 {
        /deep/ .el-dialog {
            width: 60%;
            position: fixed;
            margin-top: 0 !important;
            top: 50% !important;
            left: 50% !important;
            transform: translate(-50%, -50%);
            .el-form > .el-form-item, .el-form .el-collapse-item__content > .el-form-item {
                width: 50%;
                float: left;
            }
        }
    }
  }
  .dialog-column-3 {
    /deep/ .el-dialog {
      width: 75%;
      position: fixed;
      margin-top: 0 !important;
      top:50% !important;
      left: 50% !important;
      transform: translate(-50%, -50%);
      .el-form > .el-form-item, .el-form .el-collapse-item__content > .el-form-item {
        //width: 33.33333%;
        float: left;
      }
    .dialog-column-3 {
        /deep/ .el-dialog {
            width: 75%;
            position: fixed;
            margin-top: 0 !important;
            top: 50% !important;
            left: 50% !important;
            transform: translate(-50%, -50%);
            .el-form > .el-form-item, .el-form .el-collapse-item__content > .el-form-item {
                //width: 33.33333%;
                float: left;
            }
        }
    }
  }
  .dialog-column-4 {
    /deep/ .el-dialog {
      width: 90%;
      position: fixed;
      margin-top: 0 !important;
      top:50% !important;
      left: 50% !important;
      transform: translate(-50%, -50%);
      .el-form > .el-form-item, .el-form .el-collapse-item__content > .el-form-item {
        //width: 33.33333%;
        float: left;
      }
    .dialog-column-4 {
        /deep/ .el-dialog {
            width: 90%;
            position: fixed;
            margin-top: 0 !important;
            top: 50% !important;
            left: 50% !important;
            transform: translate(-50%, -50%);
            .el-form > .el-form-item, .el-form .el-collapse-item__content > .el-form-item {
                //width: 33.33333%;
                float: left;
            }
        }
    }
  }
  /deep/ .el-form {
    padding: 15px;
    /deep/ .el-form {
        padding: 15px;
    .item-line-divider {
      width: 100%;
      height: 0px;
      float: left;
        .item-line-divider {
            width: 100%;
            height: 0px;
            float: left;
        }
    }
  }
</style>
web/src/views/modules/configItemWarehouse/ConfigItemWarehouse-AddOrUpdate.vue
@@ -48,7 +48,7 @@
              </el-table-column>
              <el-table-column prop="itemDentify" align="center" width="220" label="配置项标识">
                <template v-slot="{ row }">
                  <el-input v-model="row.itemDentify" placeholder="配置项标识"></el-input>
                  <el-input v-model="row.itemIdentify" placeholder="配置项标识"></el-input>
                </template>
              </el-table-column>
              <el-table-column prop="version" align="center" width="120" label="版本">
web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue
@@ -1,12 +1,13 @@
<template>
  <zt-dialog ref="dialog" column="3" @confirm="formSubmit">
    <el-form :model="dataForm" :inline="true" ref="dataForm" style="padding-top: 0" :disabled="dataForm.disabled" label-width="120px" class="circulationFormAuto">
  <zt-dialog ref="dialog" column="3" :title="title" :stepMarker="stepMarker" @confirm="formSubmit">
    <el-form :model="dataForm" :inline="true" ref="dataForm" style="padding-top: 0" :disabled="dataForm.disabled"
             label-width="120px" class="circulationFormAuto">
      <div>
        <el-form-item label-width="60px" label="编号:" style="width:100%;margin-bottom: -5px">
          <span>{{dataForm.circulatOrder.code}}</span>
        </el-form-item>
      </div>
      <div style="border: 1px solid rgba(0,0,0,.2);width: 99%" >
      <div style="border: 1px solid rgba(0,0,0,.2);width: 99%">
        <div style="border-bottom: 1px solid rgba(0,0,0,.2);" class="circulationContentWidth">
          <el-form-item class="marginTopAndMarginBottom" label="专业实验室" style="width: 32%">
            <el-input v-model="dataForm.testAgencyInfo.agencyName" placeholder="专业实验室"></el-input>
@@ -31,7 +32,8 @@
          <div style="padding-left:5px;padding-right:5px;">
            <div style="padding: 5px">物品技术资料及数量:</div>
            <div class="table-container">
              <el-table ref="tableCirculatOrderList" class="el-software el-margin-top-bot" border :data="dataForm.technicalList"
              <el-table ref="tableCirculatOrderList" class="el-software el-margin-top-bot" border
                        :data="dataForm.technicalList"
                        stripe>
                <el-table-column prop="no" align="center" width="60" label="序号">
                  <template slot-scope="scope">
@@ -53,30 +55,30 @@
                    <el-input v-model="row.identify" placeholder="版本"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="secretClass" label="密级" width="100"  align="center">
                <el-table-column prop="secretClass" label="密级" width="100" align="center">
                  <template v-slot="{ row }">
<!--                    <el-input v-model="row.secretClass" placeholder="密级"></el-input>-->
                    <!--                    <el-input v-model="row.secretClass" placeholder="密级"></el-input>-->
                    <zt-dict v-model="row.secretClass" dict="secret_class"></zt-dict>
                  </template>
                </el-table-column>
                <el-table-column prop="medium" label="介质" width="100"  align="center">
                <el-table-column prop="medium" label="介质" width="100" align="center">
                  <template v-slot="{ row }">
                    <el-input v-model="row.medium" placeholder="介质"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="amount" label="数量" width="80"  align="center">
                <el-table-column prop="amount" label="数量" width="80" align="center">
                  <template v-slot="{ row }">
                    <el-input v-model="row.amount" placeholder="数量"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="remark" label="备注" width="100"  align="center">
                <el-table-column prop="remark" label="备注" width="100" align="center">
                  <template v-slot="{ row }">
                    <el-input v-model="row.remark" placeholder="备注"></el-input>
                  </template>
                </el-table-column>
                <el-table-column fixed="right" prop="files" label="上传附件" width="300"  align="center">
                <el-table-column fixed="right" prop="files" label="上传附件" width="300" align="center">
                  <template v-slot="{ row }">
<!--                    <zt-table-button @click="files(row.id)">上传附件</zt-table-button>-->
                    <!--                    <zt-table-button @click="files(row.id)">上传附件</zt-table-button>-->
                    <table-uploader busi-type="circulat_order" model-name="row" :dataForm="row"
                                    v-model="row.files"/>
                  </template>
@@ -94,7 +96,7 @@
            物品的其它要求
          </div>
          <div style="width: calc(100% - 120px);">
            <div  class="el-border-left">
            <div class="el-border-left">
              <el-form-item label="物品是否需要返还" label-width="150px" style="width:100%;padding-left:20px;margin-bottom:0">
                <zt-dict v-model="dataForm.circulatOrder.itemRequire" :radio="true"
                         dict="is_or_not"></zt-dict>
@@ -110,15 +112,15 @@
            物品接收人
          </div>
          <div class="el-border-left-right acceptDate" style="width: 20%;;height: 80px;">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.itemAccept}}
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.itemAcceptor}}
            </el-form-item>
          </div>
          <div style="width: 52px;text-align: center;font-weight: 600">
            时间
          </div>
          <div class="el-border-left-right acceptDate" style="width: 20%;height: 80px;">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.acceptDate}}
            </el-form-item>
          </div>
@@ -130,16 +132,16 @@
              <zt-dict v-model="dataForm.circulatOrder.acceptSituation" :radio="true" dict="is_or_not"></zt-dict>
            </el-form-item>
            <el-form-item label="病毒库版本:" label-width="150px" style="width:100%;padding-left:20px;margin-bottom:0">
              <el-input v-model="dataForm.circulatOrder.itemOther"></el-input>
              <el-input v-model="dataForm.circulatOrder.virusLibraryVersion"></el-input>
            </el-form-item>
          </div>
        </div>
        <div class="el-flexCirculationDialog el-border-bottom">
        <!--<div class="el-flexCirculationDialog el-border-bottom">
          <div style="width: 112px;text-align: center;font-weight: 600">
            校准/检测接收人
          </div>
          <div class="el-border-left-right" style="width: 20%;height: 40px;">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.itemAccept}}
            </el-form-item>
          </div>
@@ -147,7 +149,7 @@
            时间
          </div>
          <div class="el-border-left-right" style="width: 20%;height: 40px;">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.acceptDate}}
            </el-form-item>
          </div>
@@ -159,21 +161,21 @@
              <zt-dict v-model="dataForm.circulatOrder.cscs" :radio="true" dict="is_or_not"></zt-dict>
            </el-form-item>
          </div>
        </div>
        </div>-->
        <div class="el-flexCirculationDialog el-border-bottom">
          <div style="width: 112px;text-align: center;font-weight: 600">
            校准检测人
          </div>
          <div class="el-border-left-right" style="width: 20%;height: 40px;">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.calibratDetect}}
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.calibratDetector}}
            </el-form-item>
          </div>
          <div style="width: 52px;text-align: center;font-weight: 600">
            时间
          </div>
          <div class="el-border-left-right" style="width: 20%;height: 40px;">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.detectDate}}
            </el-form-item>
          </div>
@@ -186,12 +188,12 @@
            </el-form-item>
          </div>
        </div>
        <div class="el-flexCirculationDialog el-border-bottom">
       <!-- <div class="el-flexCirculationDialog el-border-bottom">
          <div style="width: 112px;text-align: center;font-weight: 600">
            物品入库人
          </div>
          <div class="el-border-left-right" style="width: 20%;height: 40px;">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.warehouse}}
            </el-form-item>
          </div>
@@ -199,7 +201,7 @@
            时间
          </div>
          <div class="el-border-left-right" style="width: 20%;height: 40px;">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.warehouseDate}}
            </el-form-item>
          </div>
@@ -211,21 +213,21 @@
              <zt-dict v-model="dataForm.circulatOrder.warehouseSituation" :radio="true" dict="is_or_not"></zt-dict>
            </el-form-item>
          </div>
        </div>
        </div>-->
        <div class="el-flexCirculationDialog el-border-bottom">
          <div style="width: 112px;text-align: center;font-weight: 600">
            物品发放人
          </div>
          <div class="el-border-left-right " style="width: 20%;height: 40px;">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.itemIssue}}
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.itemIssuer}}
            </el-form-item>
          </div>
          <div style="width: 52px;text-align: center;font-weight: 600">
            时间
          </div>
          <div class="el-border-left-right " style="width: 20%;height: 40px;">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.issueDate}}
            </el-form-item>
          </div>
@@ -243,58 +245,11 @@
            备注
          </div>
          <div class="el-border-left " style="width: 20%;height: 40px">
            <el-form-item  style="width: 100%;padding-left:20px;margin:0;">
              {{dataForm.circulatOrder.itemAccept}}
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              <el-input v-model="dataForm.circulatOrder.itemAcceptr"></el-input>
            </el-form-item>
          </div>
        </div>
<!--          <div class="circulationContentWidth">
            <el-form-item class="marginTopAndMarginBottom" label="物品接收人" style="width: 32%">
              <el-input v-model="dataForm.circulatOrder.itemAccept" placeholder="物品接收人"></el-input>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom" label="时间" style="width: 32%">
              <el-input v-model="dataForm.circulatOrder.acceptDate" placeholder="时间"></el-input>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom" label="情况说明" style="width: 32%">
              <span>是否完成病毒查杀:
               <zt-dict v-model="dataForm.circulatOrder.acceptSituation" :radio="true" dict="is_or_not"></zt-dict>
              </span>
              <span>病毒库版本:<el-input v-model="dataForm.circulatOrder.acceptSituation" placeholder="病毒库版本"></el-input></span>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom3" label="校准检测人" style="width: 32%">
              <el-input v-model="dataForm.circulatOrder.calibratDetect" placeholder="校准检测人"></el-input>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom3" label="时间" style="width: 32%">
              <el-input v-model="dataForm.circulatOrder.detectDate" placeholder="时间"></el-input>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom3" label="情况说明" style="width: 32%">
&lt;!&ndash;              <el-input v-model="dataForm.circulatOrder.detectSituation" placeholder="情况说明"></el-input>&ndash;&gt;
              <zt-dict v-model="dataForm.circulatOrder.detectSituation" :radio="true" dict="is_or_not"></zt-dict>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom2" label="物品入库人" style="width: 32%">
              <el-input v-model="dataForm.circulatOrder.warehouse" placeholder="物品入库人"></el-input>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom2" label="时间" style="width: 32%">
              <el-input v-model="dataForm.circulatOrder.warehouseDate" placeholder="时间"></el-input>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom2" label="情况说明" style="width: 32%">
&lt;!&ndash;              <el-input v-model="dataForm.circulatOrder.warehouseSituation" placeholder="情况说明"></el-input>&ndash;&gt;
              <zt-dict v-model="dataForm.circulatOrder.warehouseSituation" :radio="true" dict="is_or_not"></zt-dict>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom2" label="物品发放人" style="width: 32%">
              <el-input v-model="dataForm.circulatOrder.itemIssue" placeholder="物品发放人"></el-input>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom2" label="时间" style="width: 32%">
              <el-input v-model="dataForm.circulatOrder.issueDate" placeholder="时间"></el-input>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom2" label="情况说明" style="width: 32%">
&lt;!&ndash;              <el-input v-model="dataForm.circulatOrder.issueSituation" placeholder="情况说明"></el-input>&ndash;&gt;
              <zt-dict v-model="dataForm.circulatOrder.issueSituation" :radio="true" dict="is_or_not"></zt-dict>
            </el-form-item>
            <el-form-item  class="marginTopAndMarginBottom2 lastChild" label="备注" style="width: 100%">
              <el-input v-model="dataForm.circulatOrder.remark" placeholder="备注"></el-input>
            </el-form-item>
          </div>-->
      </div>
    </el-form>
  </zt-dialog>
@@ -304,52 +259,70 @@
  export default {
    data() {
      return {
        stepMarker: '',
        title: '查看',
        dataForm: {
          id: '',
          circulatOrder:{
          circulatOrder: {
            code: '1',
            itemAccept: '',
            itemRequire: '',
            itemOther:'',
            acceptSituation:'',
            itemOther: '',
            acceptSituation: '',
            acceptDate: '',
            calibratDetect: '',
            calibratDetector: '',
            detectDate: '',
            detectSituation: '',
            warehouse: '',
            warehouseDate: '',
            warehouseSituation: '',
            itemIssue: '',
            itemIssuer: '',
            issueDate: '',
            issueSituation: '',
            remark: '',
            virusLibraryVersion:'',
            itemAcceptor:''
          },
          project: {
            softwareIdentity: '',
            softwareName: '',
          },
          testAgencyInfo: {
            agencyName:'',
            agencyName: '',
          },
          technicalList:[]
          technicalList: [],
          flowInfoDto: {}
        }
      }
    },
    methods: {
      indexFormat(index){
      indexFormat(index) {
        return index += 1
      },
      init(id,row){
        this.dataForm.id = row.id
      init(id, row) {
        if (id) {
          this.dataForm.id = id
        } else {
          this.dataForm.id = row.id
        }
        this.dataForm.projectId = row.projectId
        // this.dataForm.disabled
        this.getInfo()
        console.log(this.dataForm.id,this.dataForm.projectId,'params params')
        if (!this.dataForm.disabled) {
          if (!row.stepMarker) {
            this.stepMarker = 'wplz_first'
            this.title = '物品接收'
          } else {
            this.title = row.stepName
            this.stepMarker = row.stepMarker
          }
        }
        console.log(this.dataForm.id, this.dataForm.projectId, this.stepMarker, 'this.dataForm.id, this.dataForm.projectId,this.stepMarker')
      },
      addCirculatRow(){
      addCirculatRow() {
        this.dataForm.technicalList.push({})
        this.$nextTick(()=>{
          const tableBody=this.$refs.tableCirculatOrderList.$el.querySelector('.el-table__body-wrapper')
        this.$nextTick(() => {
          const tableBody = this.$refs.tableCirculatOrderList.$el.querySelector('.el-table__body-wrapper')
          tableBody.scrollTop = tableBody.scrollHeight;
        })
      },
@@ -359,55 +332,81 @@
          circulatOrderid: this.dataForm.id,
          projectId: this.dataForm.projectId
        }
        let res = await this.$http.get(`/itemCirculatOrder/ItemCirculatOrder/getDto`,{params: params})
        let res = await this.$http.get(`/itemCirculatOrder/ItemCirculatOrder/getDto`, {params: params})
        this.dataForm = {
          ...this.dataForm,
          ...res.data
        }
        console.log(this.dataForm,"getInfo this.dataForm")
        console.log(this.dataForm, "getInfo this.dataForm")
      },
      // 表单提交
      async formSubmit() {
        console.log(this.dataForm,"this.dataForm11111")
      async formSubmit(submitType) {
        console.log(this.dataForm, "this.dataForm11111")
        if (submitType == 'tj' || submitType == 'bl') {
          let flowInfo = {
            flowCode: 'wplz',
            stepIdMark: this.stepMarker,
            submitType: submitType
          }
          this.dataForm.flowInfoDto = flowInfo;
        }
        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/itemCirculatOrder/ItemCirculatOrder/', this.dataForm)
        if (res.success) {
          /*      if (submitType == 'tj') {
                      console.log(res, 'bbbb')
                      let res2 = await this.$http.get('/wf/startFlow', submitForm)
                      if (res2.success) {
                        let res3 = await this.$http.get('/wf/approvePass', submitForm)
                        if (res3.success) {
                        }
                      }
                    } else if (submitType == 'bl') {
                      let res2 = await this.$http.get('/wf/approvePass', submitForm)
                      if (res2.success) {
                      }
                    }*/
          await this.$tip.success()
          this.$refs.dialog.close()
          this.$emit('refreshDataList')
        }
      }
    }
  }
</script>
<style>
.el-flexCirculationDialog{
  display: flex;
  align-items: center
}
.circulationContentWidth > .el-form-item > .el-form-item__content {
  width: calc(100% - 120px);
}
.circulationContentWidth > .el-form-item.lastChild > .el-form-item__content {
  width: calc(100% - 142px);
}
.circulationFormAuto .marginTopAndMarginBottom {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
}
  .el-flexCirculationDialog {
    display: flex;
    align-items: center
  }
.circulationFormAuto .marginTopAndMarginBottom2 {
  margin-top: -10px !important;
  margin-bottom: 10px !important;
}
.circulationFormAuto .marginTopAndMarginBottom3 {
  margin-top: 0 !important;
  margin-bottom: 10px !important;
}
.acceptDate> .el-form-item > .el-form-item__content {
  line-height: 80px;
}
.circulationFormAuto .el-radio {
  margin-right: 10px;
}
  .circulationContentWidth > .el-form-item > .el-form-item__content {
    width: calc(100% - 120px);
  }
  .circulationContentWidth > .el-form-item.lastChild > .el-form-item__content {
    width: calc(100% - 142px);
  }
  .circulationFormAuto .marginTopAndMarginBottom {
    margin-top: 10px !important;
    margin-bottom: 0 !important;
  }
  .circulationFormAuto .marginTopAndMarginBottom2 {
    margin-top: -10px !important;
    margin-bottom: 10px !important;
  }
  .circulationFormAuto .marginTopAndMarginBottom3 {
    margin-top: 0 !important;
    margin-bottom: 10px !important;
  }
  .acceptDate > .el-form-item > .el-form-item__content {
    line-height: 80px;
  }
  .circulationFormAuto .el-radio {
    margin-right: 10px;
  }
</style>
web/src/views/modules/project/Project-select.vue
@@ -1,5 +1,5 @@
<template>
  <zt-dialog ref="dialog" column="2" :hasConfirm="false">
  <zt-dialog ref="dialog" column="2" title="选择项目" :editAble="false" :hasConfirm="false">
    <el-card shadow="never" class="aui-card--fill">
      <div class="mod-project-project}">
        <zt-table-wraper ref="tableObj" query-url="/project/Project/page" delete-url="/project/Project" v-slot="{ table }">
@@ -32,7 +32,6 @@
                    v-adaptive="{bottomOffset:150}"
                    @row-dblclick="selectedProject"
                    border @selection-change="table.selectionChangeHandle">
            <el-table-column type="selection" align="center" width="40"/>
            <el-table-column prop="entrustUnitName" label="委托单位名称"/>
            <el-table-column prop="developUnitName" label="开发单位名称"/>
            <el-table-column prop="softwareName" label="软件名称"/>
web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue
@@ -1,5 +1,5 @@
<template>
  <zt-dialog ref="dialog" column="2" @confirm="formSubmit">
  <zt-dialog ref="dialog" column="2" @confirm="formSubmit" >
    <el-form ref="form" :inline="true" :model="dataForm" :disabled="dataForm.disabled" label-width="93px"
             class="weiTuoDanAuto" style="padding-top: 0">
      <div class="DManageForm">
@@ -376,7 +376,7 @@
              <div class="" style="width: 100%;">
                <div class="el-flex" style="height: 40px">
                  <div style="width: 60%">
                    <zt-select v-model="dataForm.softwareTestOrder.contractSign" url="/sys/userEx/getUsersList" :multiple="true" :clearable="true" placeholder="承托方人员"/>
                    <zt-select v-model="dataForm.softwareTestOrder.contractSign" url="/sys/userEx/getUsersList" placeholder="承托方人员"/>
<!--                    <span>{{ dataForm.contractSign }}</span>-->
                  </div>
                  <div class="el-flex" style="margin-left: 10%">
web/src/views/modules/sys/task/stay-task.vue
@@ -3,7 +3,7 @@
    <!--    <zt-table-wraper ref="tableObj" query-url="/newPlan/taskCenter/page" :paging="false" :lazy="true" v-slot="{ table }"
                         paging-layout="total, prev, pager, next">-->
    <el-form :inline="true" :model="dataForm" @keyup.enter.native="getQuery()">
      <el-input type="text" v-model="dataForm.djxlSystem" v-if="false" />
      <el-input type="text" v-model="dataForm.djxlSystem" v-if="false"/>
    </el-form>
    <el-table ref="table"
              :height="getTransformHeight(transformHeight)"
@@ -19,7 +19,7 @@
      </el-table-column>
      <el-table-column align="left" prop="topic" label="工程" width="150"/>
      <!--        <el-table-column align="left" prop="title" label="流程名称" width="180"/>-->
      <el-table-column align="left" prop="remark" label="摘要" />
      <el-table-column align="left" prop="remark" label="摘要"/>
      <el-table-column align="center" prop="stepName" label="当前环节" width="150px"/>
      <el-table-column align="center" prop="receiveTime" label="上一环节办理时间" width="180px"/>
@@ -27,10 +27,17 @@
      <el-table-column align="center" prop="finishTime" label="计划完成时间" width="160px"/>
      <!--        <el-table-column align="center" prop="statusName" label="状态" width="100px"/>-->
      <el-table-column align="center" prop="idleDays" label="停留时间(天)" width="150px"/>
      <zt-table-column-handle fixed="right" :table="table" :has-edit="false" :has-delete="false" :has-view="false" width="120px">
      <zt-table-column-handle fixed="right" :table="table" :has-edit="false" :has-delete="false" :has-view="false"
                              width="120px">
        <template v-slot="{ row }">
          <zt-table-button v-if="row.stepMarker!='hxsy_czsp'&&row.stepMarker!='hxsy_bzsp'&&row.stepMarker!='xbsy_czsp'&&row.stepMarker!='xbsy_bzsp'"  @click="createTask(row)">办理</zt-table-button>
          <zt-table-button v-if="row.stepMarker=='hxsy_czsp'||row.stepMarker=='hxsy_bzsp'||row.stepMarker=='xbsy_czsp'||row.stepMarker=='xbsy_bzsp'" @click="createTask(row)">查阅</zt-table-button>
          <zt-table-button
            v-if="row.stepMarker!='hxsy_czsp'&&row.stepMarker!='hxsy_bzsp'&&row.stepMarker!='xbsy_czsp'&&row.stepMarker!='xbsy_bzsp'"
            @click="createTask(row)">办理
          </zt-table-button>
          <zt-table-button
            v-if="row.stepMarker=='hxsy_czsp'||row.stepMarker=='hxsy_bzsp'||row.stepMarker=='xbsy_czsp'||row.stepMarker=='xbsy_bzsp'"
            @click="createTask(row)">查阅
          </zt-table-button>
          <zt-table-button @click="flowChart(row)">流程图</zt-table-button>
          <zt-table-button v-if="row.flowCode === 'yearPlan2'" @click="getFlowTrack (row)">流程轨迹</zt-table-button>
        </template>
@@ -43,7 +50,8 @@
        @infinite="infiniteHandler"
        ref="infiniteLoading"
        force-use-infinite-wrapper=".alreadyTaskPushTable .el-table__body-wrapper">
        <div slot="no-more" style="margin-top: 10px;margin-bottom: 10px;"><span v-if="dataListAll.length > pageSize">没有更多了</span></div>
        <div slot="no-more" style="margin-top: 10px;margin-bottom: 10px;"><span v-if="dataListAll.length > pageSize">没有更多了</span>
        </div>
      </infinite-loading>
    </el-table>
    <!-- 待办任务弹窗弹窗, 新增 / 修改 -->
@@ -63,22 +71,22 @@
        page: 1,
        pageSize: 30,
        dataLoading: false,
        dataList:[],
        dataListAll:[],
        dataList: [],
        dataListAll: [],
        dataForm: {
          djxlSystem:''
          djxlSystem: ''
        },
        dialogVisible: false,
        existConstructionInfo: false
      }
    },
    props:{
      system:{
        type:String
    props: {
      system: {
        type: String
      },
      transformHeight:{
        type:Boolean,
        default:false
      transformHeight: {
        type: Boolean,
        default: false
      }
    },
    watch: {
@@ -87,21 +95,19 @@
        // this.getIsExistConstructionInfo()
        this.getQuery()
      },
      'tableBottomOffset'(){
        console.log(this.tableBottomOffset,'tableBottomOffset')
      'tableBottomOffset'() {
        console.log(this.tableBottomOffset, 'tableBottomOffset')
      }
    },
    computed:{
    },
    computed: {},
    components: {
      InfiniteLoading,
      ItemCirculatOrder
    },
    created() {
      if (this.$route.path.indexOf('taskCenter')>0 || this.system=='smj'){
      if (this.$route.path.indexOf('taskCenter') > 0 || this.system == 'smj') {
        this.transformHeight = true
      }else{
      } else {
        this.transformHeight = false
      }
    },
@@ -111,7 +117,7 @@
      }
      this.dataForm.djxlSystem = Cookies.get('djxlSystem')
      this.getQuery()
      this.$EventBus.$on('newProject',()=>{
      this.$EventBus.$on('newProject', () => {
        this.getQuery()
      })
    },
@@ -159,13 +165,13 @@
          this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');
        });
      },
      async getQuery(){
      async getQuery() {
        this.handleInfiniteLoadingBeforeGet()
        this.dataLoading = true
        let params = {
          djxlSystem: this.dataForm.djxlSystem,
        }
        let res = await this.$http.get(`/task/taskCenter/page`,{
        let res = await this.$http.get(`/task/taskCenter/page`, {
          params: params
        })
        if (res.success) {
@@ -176,12 +182,12 @@
          this.dataLoading = true
        }
      },
      getTransformHeight(transformHeight){
        let Height=document.documentElement.clientHeight
        if(transformHeight){
          return  Height-(650-403)
        }else{
          return  Height-650
      getTransformHeight(transformHeight) {
        let Height = document.documentElement.clientHeight
        if (transformHeight) {
          return Height - (650 - 403)
        } else {
          return Height - 650
        }
      },
      async reCall(row) {
@@ -194,14 +200,14 @@
        this.getQuery()
      },
      flowChart(row) {
        this.$emit('fatherMethod',row)
        this.$emit('fatherMethod', row)
      },
      async getFlowTrack(row){
        console.log(row,'getFlowTrack row')
        if(row){
          let params={
            flowCode:row.flowCode,
            bizId:row.bizId
      async getFlowTrack(row) {
        console.log(row, 'getFlowTrack row')
        if (row) {
          let params = {
            flowCode: row.flowCode,
            bizId: row.bizId
          }
          this.$refs.processTrajectory.$refs.dialog.init(params)
        }
@@ -209,11 +215,10 @@
      async createTask(row) {
        console.log(row, "task row");
        if (row.flowCode === 'wplz') {
          this.$refs.itemCirculatOrder.$refs.dialog.init(row)
          this.$refs.itemCirculatOrder.$refs.dialog.init(row.bizId, row)
        } else if (row.flowCode === 'aaa') {
          //this.$refs.itemCirculatOrder.$refs.dialog.init(row)
        }
        else {
        } else {
          if (row.stepRouterId === null) {
            this.$tip.alert("没有配置菜单id")
            return;
web/src/views/modules/sys/task/taskCenter.vue
@@ -45,16 +45,16 @@
      },
      async tabClick(tab, event) {
        if (tab.index === '1') {
          let res = await this.$http.get('/newPlan/taskCenter/pageDone')
          let res = await this.$http.get('/task/taskCenter/pageDone')
          this.$refs.alreadyTask.getQuery()
        }
        if (tab.index === '0') {
          let res = await this.$http.get('/newPlan/taskCenter/page')
          let res = await this.$http.get('/task/taskCenter/page')
          this.$refs.stayTask.getStayTask()
        }
      },
      async oneKeyDoneCy() {
        let res = await this.$http['put'](`/newPlan/taskCenter/oneKeyDoneCy`)
        let res = await this.$http['put'](`/task/taskCenter/oneKeyDoneCy`)
        if (res.success) {
          await this.$tip.success()
          this.$refs.stayTask.getStayTask()
zt/core/src/main/java/com/zt/modules/workflow/dto/FlowInfoDto.java
New file
@@ -0,0 +1,15 @@
package com.zt.modules.workflow.dto;
import lombok.Data;
import java.util.Date;
@Data
public class FlowInfoDto {
    String id;
    String bizId;
    String bizGroupId;
    String submitType;
    String flowCode;
    String stepIdMark;
}
zt/core/src/main/java/com/zt/modules/workflow/service/WorkflowService.java
@@ -355,6 +355,16 @@
            if (existsUsers.size() == 0) {
                throw new RuntimeException("没有符合(" + wfDef.getName() + ")流程的下一步(" + currentStep.getName() + ")执行人!");
            }
            String updateSql = currentStep.getUpdateSql();
            if (org.apache.commons.lang3.StringUtils.isNotBlank(updateSql)) {
                updateSql = updateSql.replace("${bizId}", bizId.toString());
                updateSql = updateSql.replace("${bizId}", bizId.toString());
                updateSql = updateSql.replace("${nickName}", UserContext.getUser().getRealName());
                updateSql = updateSql.replace("${userId}", UserContext.getUser().getId().toString());
                baseDao.exeSql(updateSql);
            }
        } else {
            taskParamDto.setUser(null);
            taskParamDto.setGroupId2(null);
@@ -367,7 +377,8 @@
            if (org.apache.commons.lang3.StringUtils.isNotBlank(updateSql)) {
                updateSql = updateSql.replace("${bizId}", bizId.toString());
                updateSql = updateSql.replace("${bizId}", bizId.toString());
                updateSql = updateSql.replace("${bizId}", bizId.toString());
                updateSql = updateSql.replace("${nickName}", UserContext.getUser().getRealName());
                updateSql = updateSql.replace("${userId}", UserContext.getUser().getId().toString());
                baseDao.exeSql(updateSql);
            }