ludc
2023-07-06 abe9f2de85ff402a4c989dbc1427807b4e3a59f4
Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
@@ -2,57 +2,69 @@
  <basic-container>
    <div class="testbox">
      <div>
        <el-button plain size="small" type="primary" @click="addvisible=true">增加
        <el-button plain size="small" type="primary" @click="addvisible = true"
        >增加
        </el-button>
        <el-button plain size="small" type="primary" @click="editHandler">编辑
        <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" @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 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 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" @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>
        <el-input
          placeholder="请输入关键字按回车查询"
          size="small"
          style="width: 180px; margin-left: 5px; margin-top: 10px"
        ></el-input>
      </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-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
            fixed
            label="序号"
            type="index"
            width="55">
            v-for="item in this.tableHeadFindData"
            :key="item.id"
            :label="item.label"
            :prop="item.prop"
            :sortable="item.sortable"
            :formatter="item.formatter"
            :width="item.label.length >=4 ?'150':item.label.length==3 ?'120':'90'"
            :show-overflow-tooltip="true"
            align="center"
          >
          </el-table-column>
<!--          <div>-->
            <el-table-column  v-for="(item,index) in this.tableHeadFindData" :key="item.id" :label="item.label" :prop="item.prop" :sortable="item.sortable" >
              <!-- 编辑和展示逻辑 -->
              <!--              <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>
<!--          </div>-->
        </el-table>
      </el-row>
      <FormTemplateDialog
@@ -86,12 +98,21 @@
        :title="'已发布数据更改'"
        :visible.sync="DataVisible"
      ></FormTemplateDialog>
      <set-personnel :visible.sync="visibleFlow"  :parameter="this.parameter"
      <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>
      <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"
@@ -100,7 +121,7 @@
        :codeRuleOid="this.codeRuleOid"
      ></ResembleQueryDialog>
    </div>
    <div class="block" style="display: flex;justify-content: flex-end">
    <div class="block" style="display: flex; justify-content: flex-end">
      <el-pagination
        :current-page="page.currentPage"
        :page-size="page.pageSizes"
@@ -108,84 +129,92 @@
        :total="page.total"
        layout="total, sizes, prev, pager, next, jumper"
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange">
        @current-change="handleCurrentChange"
      >
      </el-pagination>
    </div>
    <BatchImport v-if="batchImportData.visible" :visible.sync="batchImportData.visible" v-bind="batchImportData"></BatchImport>
  </basic-container>
</template>
<script>
import {MasterTable, TableData,FindData} from "@/api/GetItem";
import {listCodeAttributeByClassId} from '@/api/integration/integration.js'
import integrationTransfer from '@/views/integration/integrationTransfer'
import SetPersonnel from '@/components/template/SetPersonnel'
import { MasterTable, TableData, FindData } 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";
export default {
  components: {
    integrationTransfer,
    SetPersonnel,
    ResembleQueryDialog
    ResembleQueryDialog,
    BatchImport
  },
  name: "Crud.vue",
  props: {
    page: {
      type: Object,
      default: () => {
        return {}
      }
        return {};
      },
    },
    codeClassifyOid: {
      type: String,
      default: ""
      default: "",
    },
    coderuleoid: {
      type: String,
      default: ""
      default: "",
    },
    tableDataArray: {
      type: Array,
    },
    total: {
      type: String,
      default: ""
      default: "",
    },
    templateOid: {
      type: String,
      default:''
      default: "",
    },
    tableHeadDataFateher: {
      type: Array,
    },
    isLoading: {
      type: Boolean,
      default: false
      default: false,
    },
    tableHeadFindData:{
      type:Array,
    }
    tableHeadFindData: {
      type: Array,
    },
  },
  data() {
    return {
      //相似项查询
      similarVisible:false,
      similarVisible: false,
      //发布
      parameter:{
        ids:[],
        code:'',
        type:'PUBLIC',
        template:''
      parameter: {
        ids: [],
        code: "",
        type: "PUBLIC",
        template: "",
        vars:{
          codeClassifyOid:""
        }
      },
      visibleFlow: false,
      transferData: [],
      transferProps: {
        key: 'oid',
        label: 'name'
        key: "oid",
        label: "name",
      },
      tableHeadFindDatas:[],
      tableHeadFindDatas: [],
      addvisible: false,
      editvisible: false,
      findvisible: false,
      dialogPush: false,
      rowOid: '',
      rowOid: "",
      disabledProp: ["id"],
      editingRow: null,
      editShow: "",
@@ -193,7 +222,7 @@
      data: [],
      options: {},
      option: {
        column: []
        column: [],
      },
      List: [],
      columnType: {
@@ -204,106 +233,125 @@
        datetime: "datetime",
      },
      tableData: [],
      DataVisible:false,
      DataVisible: false,
      tableHeadData: [],
      items: {},
      seniorQueryColumns: [],
      selectRow: [],
      userName:""
    }
      userName: "",
      batchImportData: {
        visible: false,
        type: '',
        codeClassifyOid: ''
      }
    };
  },
  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
      deep: true,
    },
    tableDataArray: {
      handler(newval, oldval) {
        this.tableData = newval;
      }
      },
    },
    tableHeadFindData:{
    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;
      }
      },
    },
    total: {
      handler(newval, oldval) {
        this.page.total = newval;
      }
    },
    templateOid:{
      handler(newval,oldval) {
        this.parameter.code=newval;
      },
      deep:true
    }
    },
    templateOid: {
      handler(newval, oldval) {
        this.parameter.code = newval;
      },
      deep: true,
    },
  },
  methods: {
    // 发布
    setHandler() {
      console.log('1111')
      console.log('父',this.parameter)
      if (this.selectRow.length <= 0) {
        this.$message.warning('请选择一条数据')
      }  else {
        this.userName=localStorage.getItem('username')
        this.parameter.template=this.userName+'-发布'+'[物品]'
        this.$message.warning("请选择一条数据");
      } else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.visibleFlow = true;
      }
    },
    openD() {
      this.getListCodeByClassId()
      this.getListCodeByClassId();
    },
    async getListCodeByClassId() {
      this.transferData = []
      const response = await listCodeAttributeByClassId({codeClassifyId: this.codeClassifyOid})
      this.transferData = [];
      const response = await listCodeAttributeByClassId({
        codeClassifyId: this.codeClassifyOid,
      });
      if (response.status === 200) {
        const data = response.data.data
        this.transferData = data
        const data = response.data.data;
        this.transferData = data;
      }
    },
    rend() {
      this.tableData = this.tableHeadData
      this.tableData = this.tableHeadData;
    },
    handleSizeChange(val) {
      this.isLoading = true;
      setTimeout(() => {
        this.page.pageSize = val
        this.$emit('pageSize', val)
        this.CrudRend()
        this.page.pageSize = val;
        this.$emit("pageSize", val);
        this.CrudRend();
      }, 3000);
    },
    handleCurrentChange(val) {
      this.isLoading = true;
      setTimeout(() => {
        this.page.currentPage = val
        this.$emit('currentPage', val)
        this.CrudRend()
        this.page.currentPage = val;
        this.$emit("currentPage", val);
        this.CrudRend();
      }, 3000);
    },
    // 监听单元格点击事件并存储正在编辑的行
    handleCellClick(row, column) {
      this.editingRow = row;
      this.editShow = column.property;
      this.rowOid = row.oid
      this.rowOid = row.oid;
    },
    //删除
    enumDeleteRow(row) {
      this.tableData.splice(row, 1)
      this.tableData.splice(row, 1);
    },
    // 将正在编辑的行的状态变为 null ,即退出编辑状态
    saveRow() {
@@ -320,23 +368,23 @@
        MasterTable({
          codeClassifyOid: this.codeClassifyOid,
          functionId: 5,
        }).then(res => {
          this.options = res.data.tableDefineVO.seniorQueryColumns
        }).then((res) => {
          this.options = res.data.tableDefineVO.seniorQueryColumns;
          this.List = res.data.tableDefineVO.cols[0];
          this.List.forEach(item => {
          this.List.forEach((item) => {
            let columnItem = {
              label: item.title,
              prop: item.field,
              type: this.columnType[item.type],
              sortable: item.sort,
              width: item.minWidth
              width: item.minWidth,
            };
            this.option.column.push(columnItem);
            this.option.column = this.tableHeadData;
            this.templateOid = res.data.tableDefineVO.oid
            this.$emit('templateOid', this.templateOid)
          })
        })
            this.templateOid = res.data.tableDefineVO.oid;
            this.$emit("templateOid", this.templateOid);
          });
        });
      }
    },
    //表格数据
@@ -346,16 +394,16 @@
        codeClassifyOid: this.codeClassifyOid,
        page: this.page.currentPage,
        limit: this.page.pageSize,
      }).then(res => {
      }).then((res) => {
        this.page.total = res.data.total;
        this.data = res.data.data;
        this.tableData = res.data.data;
      })
      });
    },
    // 排序
    sortChange(val) {
      this.isLoading = true;
      let order = ""
      let order = "";
      if (val.order == "ascending") {
        order = "asc";
      } else {
@@ -368,12 +416,12 @@
        sort: val.prop,
        page: this.page.currentPage,
        limit: this.page.pageSize,
      }).then(res => {
      }).then((res) => {
        setTimeout(() => {
          this.data = res.data.data;
          this.isLoading = false;
        }, 100);
      })
      });
    },
    //分页刷新
    async onLoad(val) {
@@ -382,78 +430,89 @@
        codeClassifyOid: this.codeClassifyOid,
        page: val.currentPage,
        limit: val.pageSize,
      }).then(res => {
      }).then((res) => {
        this.data = res.data.data;
      })
      });
    },
    //多选
    handleSelectionChange(row) {
      if(this.row){
      if (this.row) {
        this.rowOid = row[0].oid;
      }else {
        this.rowOid=''
      } else {
        this.rowOid = "";
      }
      this.selectRow = row;
      row.forEach(item=>{
        this.parameter.ids.push(item.oid)
      })
      this.parameter.ids = [];
      row.forEach((item) => {
        this.parameter.ids.push(item.oid);
      });
      console.log(  '  this.parameter.ids',this.parameter.ids)
    },
    //编辑
    editHandler() {
      if (this.selectRow.length <= 0) {
        this.$message.warning('请选择一条数据')
        this.$message.warning("请选择一条数据");
      } else if (this.selectRow.length > 1) {
        this.$message.warning('只能选择一条数据')
      } else if (this.selectRow[0].lcstatus != 'Editing') {
        this.$message.warning('编码状态不是“编辑中”,不可编辑')
        this.$message.warning("只能选择一条数据");
      } else if (this.selectRow[0].lcstatus != "Editing") {
        this.$message.warning("编码状态不是“编辑中”,不可编辑");
      } else {
        this.editvisible = true
        this.editvisible = true;
        this.rowOid = this.selectRow[0]['oid']
      }
    },
    //高级查询按钮
    findHandler(){
      this.findvisible=true;
    findHandler() {
      this.findvisible = true;
    },
    // 高级查询
    echoContion(val) {
      FindData({templateOid:this.templateOid,
      FindData({
        templateOid: this.templateOid,
        codeClassifyOid: this.codeClassifyOid,
        ...val
      }).then(res=>{
      })
        ...val,
      }).then((res) => {
        console.log(res);
        this.tableData=res.data.data;
        this.page.total=res.data.total
      });
    },
    //相似项查询
    similarHandler(){
    similarHandler() {
      if (this.selectRow.length <= 0) {
        this.$message.warning('请选择一条数据')
        this.$message.warning("请选择一条数据");
      } else if (this.selectRow.length > 1) {
        this.$message.warning('只能选择一条数据')
      }  else {
        this.similarVisible=true;
        this.$message.warning("只能选择一条数据");
      } else {
        this.similarVisible = true;
      }
    },
    //数据更改
    DataChange(){
    DataChange() {
      if (this.selectRow.length <= 0) {
        this.$message.warning('请选择一条数据')
        this.$message.warning("请选择一条数据");
      } else if (this.selectRow.length > 1) {
        this.$message.warning('只能选择一条数据')
      } else if (this.selectRow[0].lcstatus != 'Released') {
        this.$message.warning('只有状态为已发布的数据才能进行数据更改')
        this.$message.warning("只能选择一条数据");
      } else if (this.selectRow[0].lcstatus != "Released") {
        this.$message.warning("只有状态为已发布的数据才能进行数据更改");
      } else {
        this.DataVisible = true
        this.DataVisible = true;
      }
    },
    //增加保存
    AddSumbit(val){
      this.addvisible=false
    AddSumbit() {
      this.addvisible = false;
    },
    EditSumbit(val){
      this.editvisible=false
    EditSumbit(val) {
      this.editvisible = false;
    },
    openBatchImport(type) {
      this.batchImportData.visible = true
      this.batchImportData.type = type
      this.batchImportData.codeClassifyOid = this.codeClassifyOid
    }
  }
}
  },
};
</script>
<style lang="scss" scoped>
@@ -466,4 +525,10 @@
    background-color: #f5f7fa !important;
  }
}
/deep/ .el-button {
  margin: 0 10px 10px 0;
}
</style>