ludc
2023-07-19 2025087a8dec8f2d301459b9d41c9ef00f6f9289
Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
@@ -1,81 +1,105 @@
<template>
  <basic-container>
    <div class="testbox">
      <div>
        <!-- <el-button plain size="small" type="primary" @click="addvisible = true">增加
        </el-button>
        <el-button plain size="small" type="primary" @click="editHandler">编辑
        </el-button>
        <el-button plain size="small" type="primary" @click="openBatchImport('batchImportApply')">批量导入申请</el-button>
        <el-button plain size="small" type="primary" @click="openBatchImport('historyImport')">历史数据导入</el-button>
        <el-button plain size="small" type="primary" @click="openBatchImport('batchApplyCode')">批量申请编码</el-button>
        <el-button plain size="small" type="primary">批量发布</el-button>
        <el-button plain size="small" type="primary">查看流程历史</el-button>
        <el-button plain size="small" type="primary">删除</el-button>
        <el-button plain size="small" type="primary" @click="setHandler">发布</el-button>
        <el-button plain size="small" type="primary" @click="DataChange">数据更改</el-button>
        <el-button plain size="small" type="primary" @click="huishouHandler">回收</el-button>
        <el-button plain size="small" type="primary" @click="openD">导出
        </el-button>
        <el-button plain size="small" type="primary" @click="findHandler">查询
        </el-button>
        <el-button plain size="small" type="primary" @click="similarHandler">相似项查询</el-button>
        <el-button plain size="small" type="primary">刷新</el-button>
        <el-input placeholder="请输入关键字按回车查询" size="small"
          style="width: 180px; margin-left: 5px; margin-top: 10px"></el-input> -->
    <div class="main">
      <div class="top">
        <div class="testbox" style="">
          <div>
            <!-- <el-button plain size="small" type="primary" @click="addvisible = true">增加
            </el-button>
            <el-button plain size="small" type="primary" @click="editHandler">编辑
            </el-button>
            <el-button plain size="small" type="primary" @click="openBatchImport('batchImportApply')">批量导入申请</el-button>
            <el-button plain size="small" type="primary" @click="openBatchImport('historyImport')">历史数据导入</el-button>
            <el-button plain size="small" type="primary" @click="openBatchImport('batchApplyCode')">批量申请编码</el-button>
            <el-button plain size="small" type="primary">批量发布</el-button>
            <el-button plain size="small" type="primary">查看流程历史</el-button>
            <el-button plain size="small" type="primary">删除</el-button>
            <el-button plain size="small" type="primary" @click="setHandler">发布</el-button>
            <el-button plain size="small" type="primary" @click="DataChange">数据更改</el-button>
            <el-button plain size="small" type="primary" @click="huishouHandler">回收</el-button>
            <el-button plain size="small" type="primary" @click="openD">导出
            </el-button>
            <el-button plain size="small" type="primary" @click="findHandler">查询
            </el-button>
            <el-button plain size="small" type="primary" @click="similarHandler">相似项查询</el-button>
            <el-button plain size="small" type="primary">刷新</el-button>
            <el-input placeholder="请输入关键字按回车查询" size="small"
              style="width: 180px; margin-left: 5px; margin-top: 10px"></el-input> -->
      </div>
      <el-row style="height: 700px; width: 100%">
        <div>
          <el-button v-for="(item, index) in masterVrBtnList" :key="index" plain size="small" type="primary"
                     @click="handelBtnClick(item)">{{
              item.name
            }}
          </el-button>
          <el-input v-model="WupinFindValue" placeholder="请输入关键字按回车查询"
                    size="small" style="width: 180px; margin-left: 5px; margin-top: 10px"></el-input>
          </div>
          <el-row style="width: 100%;margin-bottom: 20px">
            <div>
              <el-button v-for="(item, index) in masterVrBtnList" :key="index" plain size="small" type="primary"
                         v-if="!['PREVIEW', 'DELETEFILE', 'revisefile', 'DOWNLOADFILE', 'UPLOADFILE'].includes(item.uniqueFlag)"
                         @click="handelBtnClick(item)">{{
                  item.name
                }}
              </el-button>
              <el-input v-model="WupinFindValue" placeholder="请输入关键字按回车查询"
                        size="small" style="width: 180px; margin-left: 5px; margin-top: 10px"></el-input>
            </div>
            <el-table v-if="tableData.length != 0" v-loading="isLoading" :data="tableData" :height="tableHeight" ref="dataTable"
                      @cell-click="handleCellClick" @row-click="handleRowClick" @select="handleSelection" @select-all="handleSelectionAll" @selection-change="handleSelectionChange" @sort-change="sortChange">
              <el-table-column fixed type="selection" width="55"></el-table-column>
              <el-table-column fixed label="序号" type="index" width="55">
              </el-table-column>
              <el-table-column v-for="item in this.tableHeadFindData" :key="item.id" :formatter="item.formatter" :label="item.label"
                               :prop="item.prop" :show-overflow-tooltip="true"
                               :sortable="item.sortable"
                               :width="item.label.length >= 4 ? '150' : item.label.length == 3 ? '120' : '90'"
                               align="center">
              </el-table-column>
            </el-table>
          </el-row>
<!--          新增-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :templateOid="templateOid" :visible.sync="addvisible" type="add"
                              @submit="AddSumbit">
          </FormTemplateDialog>
<!--          修改-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'修改编码信息'"
                              :visible.sync="editvisible"
                              type="edit" @submit="EditSumbit"></FormTemplateDialog>
<!--          已发布数据修改-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'已发布数据更改'"
                              :type="edit"
                              :visible.sync="DataVisible"></FormTemplateDialog>
<!--          发布-->
          <set-personnel :parameter="this.parameter" :visible.sync="visibleFlow" :title="title"></set-personnel>
<!--          停用-->
            <set-personnel :parameter="this.parameter" :visible.sync="visibleDeactivate" :title="title"></set-personnel>
<!--          启用-->
            <set-personnel :parameter="this.parameter" :visible.sync="visibleEnable" :title="title"></set-personnel>
<!--          回收-->
            <set-personnel :parameter="this.parameter" :visible.sync="visibleRecovery" :title="title"></set-personnel>
<!--          高级查询-->
          <advanced-query :options="this.options" :visible.sync="findvisible" @echoContion="echoContion"></advanced-query>
<!--          导出-->
          <MasterTransfer :visible.sync="dialogPush" :tableHeadData="tableHeadFindData" :codeClassifyOid="codeClassifyOid" :tableData="tableData" :selectRow="selectRow"></MasterTransfer>
<!--          相似项-->
          <ResembleQueryDialog :codeClassifyOid="codeClassifyOid" :codeRuleOid="this.codeRuleOid" :rowOid="rowOid"
                               :templateOid="templateOid" :visible.sync="similarVisible"></ResembleQueryDialog>
        <div class="block" style="display: flex; justify-content: flex-end">
          <el-pagination :current-page="page.currentPage" :page-size="page.pageSizes" :page-sizes="page.pageSizes"
                         :total="page.total" layout="total, sizes, prev, pager, next, jumper"
                         @size-change="handleSizeChange"
                         @current-change="handleCurrentChange">
          </el-pagination>
        </div>
        <el-table v-if="tableData.length != 0" v-loading="isLoading" :data="tableData" max-height="700" style=""
                  @cell-click="handleCellClick" @selection-change="handleSelectionChange" @sort-change="sortChange">
          <el-table-column fixed type="selection" width="55"></el-table-column>
          <el-table-column fixed label="序号" type="index" width="55">
          </el-table-column>
          <el-table-column v-for="item in this.tableHeadFindData" :key="item.id" :formatter="item.formatter" :label="item.label"
                           :prop="item.prop" :show-overflow-tooltip="true"
                           :sortable="item.sortable"
                           :width="item.label.length >= 4 ? '150' : item.label.length == 3 ? '120' : '90'"
                           align="center">
          </el-table-column>
        </el-table>
      </el-row>
      <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                          :disabledProp="disabledProp" :templateOid="templateOid" :visible.sync="addvisible" type="add"
                          @submit="AddSumbit">
      </FormTemplateDialog>
      <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                          :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'修改编码信息'"
                          :visible.sync="editvisible"
                          type="edit" @submit="EditSumbit"></FormTemplateDialog>
      <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                          :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'已发布数据更改'"
                          :type="edit"
                          :visible.sync="DataVisible"></FormTemplateDialog>
      <set-personnel :parameter="this.parameter" :visible.sync="visibleFlow"></set-personnel>
      <advanced-query :options="this.options" :visible.sync="findvisible" @echoContion="echoContion"></advanced-query>
      <integration-transfer :data="transferData" :props="transferProps" :visible.sync="dialogPush"
                            @save="handelTransferSave"></integration-transfer>
      <ResembleQueryDialog :codeClassifyOid="codeClassifyOid" :codeRuleOid="this.codeRuleOid" :rowOid="rowOid"
                           :templateOid="templateOid" :visible.sync="similarVisible"></ResembleQueryDialog>
      </div>
        <BatchImport v-if="batchImportData.visible" v-bind="batchImportData" :visible.sync="batchImportData.visible">
        </BatchImport>
      </div>
      <div class="bottom">
        <el-collapse v-model="visibleNames" @change="handleCollapse">
          <el-collapse-item title="附件列表" name="1">
            <fileInHtml :options="fileOptions"></fileInHtml>
          </el-collapse-item>
        </el-collapse>
      </div>
    </div>
    <div class="block" style="display: flex; justify-content: flex-end">
      <el-pagination :current-page="page.currentPage" :page-size="page.pageSizes" :page-sizes="page.pageSizes"
                     :total="page.total" layout="total, sizes, prev, pager, next, jumper"
                     @size-change="handleSizeChange"
                     @current-change="handleCurrentChange">
      </el-pagination>
    </div>
    <BatchImport v-if="batchImportData.visible" v-bind="batchImportData" :visible.sync="batchImportData.visible">
    </BatchImport>
  </basic-container>
</template>
<script>
@@ -86,13 +110,15 @@
import ResembleQueryDialog from "@/components/FormTemplate/ResembleQueryDialog.vue";
import BatchImport from '@/components/BatchImport'
import {validatenull} from "@/util/validate";
import fileInHtml from "@/components/file/inHtml.vue";
export default {
  components: {
    integrationTransfer,
    SetPersonnel,
    ResembleQueryDialog,
    BatchImport
    BatchImport,
    fileInHtml
  },
  name: "Crud.vue",
  props: {
@@ -145,13 +171,24 @@
      parameter: {
        ids: [],
        code: "",
        type: "PUBLIC",
        type: '',
        // this.visibleDeactivate ?'ENABLE':this.visibleEnable ? 'DISABLE' :this.visibleRecovery ? 'ROLLBACK' :'PUBLIC'
        template: "",
        vars: {
          codeClassifyOid: ""
          codeClassifyOid: "",
          templateOid:""
        }
      },
      visibleNames:[],
      //发布
      visibleFlow: false,
      //停用
      visibleDeactivate:false,
      //启用
      visibleEnable:false,
      //回收
      visibleRecovery:false,
      title:'',
      transferData: [],
      transferProps: {
        key: "oid",
@@ -181,6 +218,7 @@
        datetime: "datetime",
      },
      tableData: [],
      tableHeight:'calc(100vh - 330px)',
      DataVisible: false,
      tableHeadData: [],
      items: {},
@@ -193,7 +231,16 @@
        codeClassifyOid: ''
      },
      // 主数据按钮
      masterVrBtnList: []
      masterVrBtnList: [],
      fileOptions:{
        ownbizOid:"0",
        ownbizBtm:"0",
        fileDocClassify:'!=processAuditSuggest',
        fileDocClassifyName:'',
        hasDownload:true,
        hasUpload:true,
        height:100
      }
    };
  },
  computed: {},
@@ -213,8 +260,7 @@
    codeClassifyOid: {
      handler(newval, oldval) {
        this.codeClassifyOid = newval;
        this.parameter.vars.codeClassifyOid = newval;
        console.log('子',newval)
        this.parameter.vars.codeClassifyOid = newval
      },
      deep: true,
    },
@@ -251,6 +297,8 @@
    templateOid: {
      handler(newval, oldval) {
        this.parameter.code = newval;
        this.fileOptions.ownbizOid="0";
        this.parameter.vars.templateOid = newval
      },
      deep: true,
    },
@@ -264,14 +312,14 @@
    }
  },
  methods: {
    // 发布
    setHandler() {
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
    //展开附件
    handleCollapse(activeNames) {
      if (activeNames.length > 0) {
        this.tableHeight = 'calc(100vh - 630px)';
        this.$refs.dataTable.doLayout()
      } else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.visibleFlow = true;
        this.tableHeight = 'calc(100vh - 330px)';
        this.$refs.dataTable.doLayout()
      }
    },
    openVis(visible) {
@@ -290,9 +338,14 @@
        //  if(uniqueFlag === 'CODEEDIT') return this.openBatchImport('batchApplyCode')
        if (uniqueFlag === 'CODESTARTPROCESS') return this.setHandler()
        if (uniqueFlag === 'CODEUPREVISION') return this.DataChange()
        if (uniqueFlag === 'CODERECYCLE') return this.huishouHandler()
        if (uniqueFlag === 'CODEEXPORT') return this.openD()
        if (uniqueFlag === 'CODEQUERY') return this.findHandler()
        //停用
        if (uniqueFlag === 'CODEDISABLE') return this.Deactivate()
        //启用
        if (uniqueFlag === 'CODEENABLE') return this.Enable()
        //回收
        if (uniqueFlag === 'CODERECYCLE') return this.Recovery()
        //  相似项查询
        //  if(uniqueFlag === 'CODEEDIT') return this.similarHandler()
      });
@@ -301,6 +354,7 @@
      this.getListCodeByClassId();
    },
    async getListCodeByClassId() {
      this.dialogPush=true;
      this.transferData = [];
      const response = await listCodeAttributeByClassId({
        codeClassifyId: this.codeClassifyOid,
@@ -310,8 +364,79 @@
        this.transferData = data;
      }
    },
    handelTransferSave(val){
      console.log('发布',val)
    },
    rend() {
      this.tableData = this.tableHeadData;
    },
    // 发布
    setHandler() {
      // let EditFlag1=false
      // let EditFlag2=false
      // if(EditFlag1){
      //   this.$message.warning('只有状态是【编辑中】的数据才可以发起流程')
      // }else if(EditFlag2){
      //   this.$message.warning('您选择的数据全部为【编辑中】才可以发起流程')
      // }
      this.selectRow.forEach(item=>{
        if(this.selectRow.length === 1 && item.lcstatus !== "Editing"){
          this.$message.warning('只有状态是【编辑中】的数据才可以发起流程')
        }else if(item.lcstatus !== 'Editing'){
          this.$message.warning('您选择的数据全部为【编辑中】才可以发起流程')
        }else {
          this.userName = localStorage.getItem("username");
          this.parameter.template = this.userName + "-发布" + "[物品]";
          this.parameter.type='PUBLIC'
          this.title='流程审批'
          this.visibleFlow = true;
        }
      })
      // if (this.selectRow.length <= 0) {
      //   this.$message.warning("请选择一条数据");
      // } else {
      //   this.userName = localStorage.getItem("username");
      //   this.parameter.template = this.userName + "-发布" + "[物品]";
      //   this.parameter.type='PUBLIC'
      //   this.title='流程审批'
      //   this.visibleFlow = true;
      // }
    },
    //停用
    Deactivate(){
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      }  else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.parameter.type='DISABLE'
        this.title='停用(冻结)编码数据'
        this.visibleDeactivate=true;
      }
    },
    //启用
    Enable(){
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      } else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.parameter.type='ENABLE'
        this.title='启用(解冻)编码数据'
        this.visibleEnable=true;
      }
    },
    //回收
    Recovery(){
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      } else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.parameter.type='ROLLBACK'
        this.title='回收编码数据'
        this.visibleRecovery=true;
      }
    },
    handleSizeChange(val) {
      this.isLoading = true;
@@ -335,6 +460,11 @@
      this.editShow = column.property;
      this.rowOid = row.oid;
    },
    handleRowClick(row, column) {
      this.fileOptions.ownbizOid = row.oid;
      this.fileOptions.ownbizBtm = row.btmname;
      this.$refs.dataTable.toggleRowSelection(row);
    },
    //删除
    enumDeleteRow(row) {
      this.tableData.splice(row, 1);
@@ -353,8 +483,7 @@
    CrudHeaderRend() {
      if (this.codeClassifyOid != "") {
        MasterTable({
          codeClassifyOid: this.codeClassifyOid,
          functionId: 5,
          codeClassifyOid: this.codeClassifyOid
        }).then((res) => {
          this.options = res.data.tableDefineVO.seniorQueryColumns;
          this.List = res.data.tableDefineVO.cols[0];
@@ -415,26 +544,31 @@
      await TableData({
        templateOid: this.templateOid,
        codeClassifyOid: this.codeClassifyOid,
        page: val.currentPage,
        limit: val.pageSize,
        page: this.page.currentPage,
        limit: this.page.pageSize,
      }).then((res) => {
        this.data = res.data.data;
        this.tableData = res.data.data;
      });
    },
    //多选
    handleSelectionChange(row) {
      console.log(row)
      if (this.row) {
        this.rowOid = row[0].oid;
      } else {
        this.rowOid = "";
      }
      this.selectRow = row;
    handleSelectionChange(list) {
      this.selectRow = list;
      this.parameter.ids = [];
      row.forEach((item) => {
      list.forEach((item) => {
        this.parameter.ids.push(item.oid);
      });
      console.log('  this.parameter.ids', this.parameter.ids)
    },
    //选择
    handleSelection(list, row) {
      this.fileOptions.ownbizOid = row.oid;
      this.fileOptions.ownbizBtm = row.btmname;
    },
    //选择全部
    handleSelectionAll() {
      this.fileOptions.ownbizOid = '0';
      this.fileOptions.ownbizBtm = '0';
    },
    //编辑
    editHandler() {
@@ -491,25 +625,29 @@
    AddSumbit(val) {
      this.addvisible = false;
      console.log(val)
      addSaveCode(val).then(res=>{
      addSaveCode(val).then(res => {
        console.log(res)
        this.onLoad()
        this.$nextTick(() => {
          this.onLoad()
        })
      })
    },
    EditSumbit(val) {
      this.editvisible = false;
      console.log(val)
      editSaveCode(val).then(res=>{
      editSaveCode(val).then(res => {
        console.log(res)
        this.onLoad()
        this.$nextTick(() => {
          this.onLoad()
        })
      })
    },
    openBatchImport(type) {
      this.batchImportData.visible = true;
      this.batchImportData.type = type;
      this.batchImportData.codeClassifyOid = this.codeClassifyOid;
      this.batchImportData.visible = true
      this.batchImportData.type = type
      this.batchImportData.codeClassifyOid = this.codeClassifyOid
    }
  },
  }
};
</script>
@@ -518,6 +656,7 @@
  .el-table--scrollable-x .el-table__body-wrapper {
    overflow: auto !important;
  }
  .el-table__fixed-right-patch {
    background-color: #f5f7fa !important;
  }
@@ -526,4 +665,24 @@
/deep/ .el-button {
  margin: 0 10px 10px 0;
}
.main {
  display: flex;
  flex-direction: column;
  height: calc(100vh - 150px);
  min-height: 400px;
}
.top {
  overflow-y: scroll;
  min-height: 55%;
}
.bottom {
  margin-top: 20px;
  overflow-y: scroll;
}
.el-collapse-item__content{
  padding-bottom: 0;
}
</style>