lihang
2023-07-13 7ce592bb5a5b9e0dc78786e727f042b95ebc81c8
Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
@@ -1,159 +1,111 @@
<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">批量导入申请</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">查看流程历史</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">
          <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" 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" 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>
        <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>
      </div>
      <el-row style="height: 700px; width: 100%">
        <el-table
          v-loading="isLoading"
          :data="tableData"
          max-height="700"
          style=""
          @cell-click="handleCellClick"
          @selection-change="handleSelectionChange"
          @sort-change="sortChange"
          v-if="tableData.length != 0"
        >
          <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"
            :label="item.label"
            :prop="item.prop"
            :sortable="item.sortable"
            :formatter="formatBoolean"
          >
            <!-- 编辑和展示逻辑 -->
            <!--              <template slot-scope="{ row }">-->
            <!--                <el-input v-if="editingRow === row && editShow== item.prop" v-model="row[item.prop]" @blur="saveRow"></el-input>-->
            <!--                <span v-else>{{row[item.prop]}}</span>-->
            <!--                <el-switch-->
            <!--                  v-if="editShow === 'true'"-->
            <!--                  v-model="row[item.prop]"-->
            <!--                  active-color="#13ce66"-->
            <!--                  inactive-color="#ff4949">-->
            <!--                </el-switch>-->
            <!--              </template>-->
          </el-table-column>
        </el-table>
      </el-row>
      <FormTemplateDialog
        :codeClassifyOid="this.codeClassifyOid"
        :codeRuleOid="this.codeRuleOid"
        :disabledProp="disabledProp"
        :templateOid="templateOid"
        type="add"
        :visible.sync="addvisible"
        @submit="AddSumbit"
      >
      </FormTemplateDialog>
      <FormTemplateDialog
        :codeClassifyOid="this.codeClassifyOid"
        :codeRuleOid="this.codeRuleOid"
        :disabledProp="disabledProp"
        :rowOid="rowOid"
        :templateOid="templateOid"
        type="edit"
        :title="'修改编码信息'"
        :visible.sync="editvisible"
        @submit="EditSumbit"
      ></FormTemplateDialog>
      <FormTemplateDialog
        :codeClassifyOid="this.codeClassifyOid"
        :codeRuleOid="this.codeRuleOid"
        :disabledProp="disabledProp"
        :rowOid="rowOid"
        :templateOid="templateOid"
        :type="edit"
        :title="'已发布数据更改'"
        :visible.sync="DataVisible"
      ></FormTemplateDialog>
      <set-personnel
        :visible.sync="visibleFlow"
        :parameter="this.parameter"
      ></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
        :visible.sync="similarVisible"
        :templateOid="templateOid"
        :codeClassifyOid="codeClassifyOid"
        :rowOid="rowOid"
        :codeRuleOid="this.codeRuleOid"
      ></ResembleQueryDialog>
    </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 class="bottom">
        <el-collapse v-model="visibleNames">
          <el-collapse-item title="附件列表" name="1">
            <fileInHtml :options="fileOptions"></fileInHtml>
          </el-collapse-item>
        </el-collapse>
      </div>
    </div>
  </basic-container>
</template>
<script>
import { MasterTable, TableData, FindData } from "@/api/GetItem";
import { listCodeAttributeByClassId } from "@/api/integration/integration.js";
import {MasterTable, TableData, FindData,addSaveCode,editSaveCode} from "@/api/GetItem";
import {listCodeAttributeByClassId} from "@/api/integration/integration.js";
import integrationTransfer from "@/views/integration/integrationTransfer";
import SetPersonnel from "@/components/template/SetPersonnel";
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,
    fileInHtml
  },
  name: "Crud.vue",
  props: {
@@ -192,9 +144,14 @@
    tableHeadFindData: {
      type: Array,
    },
    tableHeadBtnData: {
      type: Array,
    },
  },
  data() {
    return {
      //首页右侧搜索
      WupinFindValue: "",
      //相似项查询
      similarVisible: false,
      //发布
@@ -203,7 +160,12 @@
        code: "",
        type: "PUBLIC",
        template: "",
        vars: {
          codeClassifyOid: "",
          templateOid:""
        }
      },
      visibleNames:[],
      visibleFlow: false,
      transferData: [],
      transferProps: {
@@ -240,18 +202,41 @@
      seniorQueryColumns: [],
      selectRow: [],
      userName: "",
      batchImportData: {
        visible: false,
        type: '',
        codeClassifyOid: ''
      },
      // 主数据按钮
      masterVrBtnList: [],
      fileOptions:{
        ownbizOid:"1",
        ownbizBtm:"1",
        fileDocClassify:'!=processAuditSuggest',
        fileDocClassifyName:'',
        hasDownload:true,
        hasUpload:true
      }
    };
  },
  computed: {},
  created() {},
  mounted() {},
  created() {
  },
  mounted() {
  },
  activated() {
    this.doLayout();
    // this.doLayout();
  },
  watch: {
    tableHeadDataFateher: {
      handler(newval, oldval) {
        this.options = newval.tableDefineVO.seniorQueryColumns
      }
    },
    codeClassifyOid: {
      handler(newval, oldval) {
        this.codeClassifyOid = newval;
        this.parameter.vars.codeClassifyOid = newval
      },
      deep: true,
    },
@@ -262,6 +247,21 @@
    },
    tableHeadFindData: {
      handler(newval, oldval) {
        newval.forEach((record, _index) => {
          if (record.field == 'id' && validatenull(record.templet)) {
            //企业编码的默认添加超链接,暂未实现
            record.formatter = '';
          } else {
            if (record.templet && typeof (record.templet) == 'string' && !validatenull(record.templet) && record.templet.indexOf("function(row,column)") > -1) {
              record.formatter = eval("(" + record.templet + ")");
              //function(row,column){return row[column.property]=='true' || row[column.property]=='1'?'是':'否'}
            } else if (record.fieldType == "truefalse") {
              record.formatter = function (row, column) {
                return row[column.property] == 'true' || row[column.property] == '1' ? '是' : '否'
              }
            }
          }
        })
        this.tableHeadFindDatas = newval;
      },
    },
@@ -273,27 +273,23 @@
    templateOid: {
      handler(newval, oldval) {
        this.parameter.code = newval;
        this.fileOptions.ownbizOid="1";
        this.parameter.vars.templateOid = newval
      },
      deep: true,
    },
    tableHeadBtnData: {
      handler(newval) {
        if (newval.length !== 0) {
          this.masterVrBtnList = newval
        }
      },
      deep: true
    }
  },
  methods: {
    // 转换数据true和false
    formatBoolean(row, column) {
      if (column.property === "xiaoshouwl"
        ||column.property === "shifoupihaoguanli"
        ||column.property === "caigouwl"
        ||column.property === "kucunwl"
        ||column.property === "passing") {
        return row[column.property] =='true'? "是" : "否";
      }
      return row[column.property];
    },
    // 发布
    setHandler() {
      console.log("1111");
      console.log("父", this.parameter);
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      } else {
@@ -301,6 +297,29 @@
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.visibleFlow = true;
      }
    },
    openVis(visible) {
      console.log(visible)
      this[visible] = true
    },
    handelBtnClick(event) {
      const {uniqueFlag} = event
      this.$nextTick(() => {
        if (uniqueFlag === 'CODEADD') return this.addvisible = true
        if (uniqueFlag === 'CODEEDIT') return this.editHandler()
        if (uniqueFlag === 'CODEBATCHADD') return this.openBatchImport('batchImportApply')
        if (uniqueFlag === 'CODEIMPORTHISTORY') return this.openBatchImport('historyImport')
        if (uniqueFlag === 'batchApplyCode') return this.openBatchImport('batchApplyCode')
        // 批量申请编码
        //  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 === 'CODEEDIT') return this.similarHandler()
      });
    },
    openD() {
      this.getListCodeByClassId();
@@ -340,6 +359,10 @@
      this.editShow = column.property;
      this.rowOid = row.oid;
    },
    handleRowClick(row,column){
      this.fileOptions.ownbizOid= row.oid;
      this.fileOptions.ownbizBtm=row.btmname;
    },
    //删除
    enumDeleteRow(row) {
      this.tableData.splice(row, 1);
@@ -350,6 +373,7 @@
    },
    doLayout() {
      this.$nextTick(() => {
        console.log(this.$refs)
        this.$refs.crud.doLayout();
      });
    },
@@ -357,8 +381,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];
@@ -426,16 +449,18 @@
      });
    },
    //多选
    handleSelectionChange(row) {
      if (this.row) {
        this.rowOid = row[0].oid;
      } else {
        this.rowOid = "";
      }
      this.selectRow = row;
      row.forEach((item) => {
    handleSelectionChange(list) {
      this.selectRow = list;
      this.parameter.ids = [];
      list.forEach((item) => {
        this.parameter.ids.push(item.oid);
      });
    },
    //选择
    handleSelection(list,row) {
      this.fileOptions.ownbizOid= row.oid;
      this.fileOptions.ownbizBtm=row.btmname;
    },
    //编辑
    editHandler() {
@@ -447,6 +472,7 @@
        this.$message.warning("编码状态不是“编辑中”,不可编辑");
      } else {
        this.editvisible = true;
        this.rowOid = this.selectRow[0]['oid']
      }
    },
    //高级查询按钮
@@ -461,6 +487,8 @@
        ...val,
      }).then((res) => {
        console.log(res);
        this.tableData = res.data.data;
        this.page.total = res.data.total
      });
    },
    //相似项查询
@@ -486,12 +514,27 @@
      }
    },
    //增加保存
    AddSumbit() {
    AddSumbit(val) {
      this.addvisible = false;
      console.log(val)
      addSaveCode(val).then(res=>{
        console.log(res)
        this.onLoad()
      })
    },
    EditSumbit(val) {
      this.editvisible = false;
      console.log(val)
      editSaveCode(val).then(res=>{
        console.log(res)
        this.onLoad()
      })
    },
    openBatchImport(type) {
      this.batchImportData.visible = true
      this.batchImportData.type = type
      this.batchImportData.codeClassifyOid = this.codeClassifyOid
    }
  },
};
</script>
@@ -506,4 +549,25 @@
    background-color: #f5f7fa !important;
  }
}
/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;
  max-height: 43%;
  overflow-y: scroll;
}
</style>