田源
2023-10-18 4aef25f2a55460040a72a73b8ec0cbb6bec0691d
首页-主数据动态统计
已修改4个文件
215 ■■■■■ 文件已修改
Source/UBCS-WEB/src/api/system/statistic.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/docking/info.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/user.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/wel/Statistic.vue 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/system/statistic.js
@@ -1,11 +1,23 @@
import request from '@/router/axios';
export const getList = (url, params) => {
//渲染
export const getList = (params) => {
  return request({
    url: url,
    url: '/api/ubcs-code/mdmCount/getMdmCounts',
    method: 'get',
    params: {
      ...params
    }
  })
}
export const save = (userId, mdmNameList) => {
  return request({
    url: '/api/ubcs-system/mdmCountConfig/save',
    method: 'post',
    data: {
      userId,
      mdmNameList
    }
  })
}
Source/UBCS-WEB/src/views/docking/info.vue
@@ -110,7 +110,6 @@
        addBtn: false,
        editBtn: false,
        delBtn: false,
        columnBtn: false,
        column: [ {
          label: '是否启用',
          prop: 'usedFlag',
Source/UBCS-WEB/src/views/system/user.vue
@@ -742,7 +742,7 @@
    }
  },
  created() {
    updateUserStatus({userid:'1702600796324032513',status:true}).then(res=>{
    updateUserStatus({userid:'1702600796147871745',status:true}).then(res=>{
      console.log(res)
    })
    this.selecload()
Source/UBCS-WEB/src/views/wel/Statistic.vue
@@ -1,106 +1,158 @@
<template>
  <div>
        <avue-data-box :option="option" :animation="true"></avue-data-box>
      <div style="display: flex; justify-content: flex-end;margin-bottom: 10px">
        <el-button icon="el-icon-more" type="primary" plain size="small" @click="MoreHandler">更多</el-button>
    </div>
    <avue-data-box :option="option" :animation="true">
      <template>
        <el-switch></el-switch>
      </template>
    </avue-data-box>
    <el-dialog title="主数据配置" :visible.sync="dialogTableVisible" append-to-body class="avue-dialog avue-dialog--top" top="0">
      <avue-crud ref="crud"
                 v-model="Crud.form"
                 :data="Crud.data"
                 @selection-change="selectionChange"
                 :option="Crud.option">
      </avue-crud>
      <div slot="footer" class="dialog-footer">
        <el-button  type="primary" plain @click="SaveHandler">保存</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import {validatenull} from "@/util/validate";
import {getList} from "@/api/system/statistic";
import {getList,save} from "@/api/system/statistic";
import {flowRoute} from "@/util/flow";
export default {
name: "Statistic",
  data(){
  return {
    Crud:{
      form:'',
      data:[],
      option:{
        calcHeight: 80,
        tip: false,
        searchShow: false,
        addBtn:false,
        columnBtn:false,
        header:false,
        menu:false,
        border: true,
        index: true,
        selection: true,
        column:[
          {
            label: "主数据名称",
            prop: "menuName",
          },
          {
            label: "待办数据",
            prop: "mdmCount",
          },
          {
            label: "icon图标",
            prop: "icon",
            overHidden:true,
          },
          {
            label: "路由地址",
            prop: "menuRoute",
            overHidden:true,
          },
          {
            label: "code",
            prop: "code",
            overHidden:true,
          },
        ]
      }
    },
    userId:'',
    hexColor:'',
    newData:[],
    SelectRow:[],
    countByServer:true,
    dialogTableVisible:false,
    // listMyTask:[]
    option: {
      span:6,
      data: [
        {
          click: this.handleItemAClick,
          title: '物品主数据',
          count: 1723,
          icon: 'iconfont iconicon_doc',
          color: 'rgb(49, 180, 141)',
          uiUrl: "/MasterData/items?id=wupin@name=物品主数据",
          countUrl:'priceIndexController/countNeedConfirmPlan'
        },
        {
          click: this.handleItemBClick,
          title: '人员主数据',
          count: 1225,
          icon: 'iconfont iconicon_dispose',
          color: 'rgb(56, 161, 242)',
          uiUrl:'/MasterData/items?id=renyuan@@name=人员主数据',
          countUrl:'priceIndexController/countPricingPlan'
        },
        {
          click: this.handleItemCClick,
          title: 'Part',
          count: 523,
          icon: 'el-icon-setting',
          color: 'rgb(117, 56, 199)',
          uiUrl:'/MasterData/items?id=10@@name=Part',
          countUrl:'priceIndexController/countNeedFeedbackPlan'
        },
        {
          click: this.handleItemDClick,
          title: '供应商主数据',
          count: 0,
          icon: 'iconfont iconicon_work',
          color: 'rgb(255, 102, 51)',
          uiUrl:'/MasterData/items?id=gongyingshang@@name=供应商主数据',
          countUrl:'priceIndexController/countMyUnCreatePricePlan'
        },
      ]
      data: []
    },
  }
  },
  created() {
    this.userId=sessionStorage.userId
    getList('/api/ubcs-code/mdmCount/getMdmCounts',{id:this.userId}).then(res=>{
      console.log(res)
    })
    this.MasterGetList()
  },
  computed(){
  },
  methods: {
    handleItemAClick() {
      this.$router.push({ path: "/MasterData/items?id=wupin@name=物品主数据"} );
    selectionChange(row){
      // console.log(row)
      this.SelectRow=row;
    },
    handleItemBClick() {
      this.$router.push({ path: '/MasterData/items?id=renyuan@@name=人员主数据'} );
    SaveHandler(){
      if(this.SelectRow.length <= 0){
        this.$message.warning('请选择一条数据!')
        return
      }
      let mdmNameList=[];
      mdmNameList=this.SelectRow.map(item=>{return item.code})
        console.log(mdmNameList)
      save(this.userId,mdmNameList).then(res=>{
        console.log(res)
        if(res.data.code === 200){
          this.$message.success('保存成功!')
          this.option.data=[];
          this.MasterGetList()
          this.dialogTableVisible=false;
        }
      })
    },
    handleItemCClick() {
      this.$router.push({ path: '/MasterData/items?id=10@@name=Part'} );
    MoreHandler(){
      this.dialogTableVisible=true
    },
    handleItemDClick() {
      this.$router.push({ path: '/MasterData/items?id=gongyingshang@@name=供应商主数据'} );
    // 随机色
    randomColor() {
      const r = Math.floor(Math.random() * 256); // 生成 0 到 255 之间的随机数
      const g = Math.floor(Math.random() * 256);
      const b = Math.floor(Math.random() * 256);
      // 将 RGB 值转换为十六进制表示形式
      const hexColor = "#" + r.toString(16).padStart(2, '0') + g.toString(16).padStart(2, '0') + b.toString(16).padStart(2, '0');
      return hexColor;
    },
    // getList() {
    //   // debugger
    //   Object.values(this.option.data).map(record => {
    //     record.count = record.count || 0;
    //     if (!this.countByServer) {
    //       // 是前端查询
    //       getList(record.countUrl, {}).then(res => {
    //         // console.log('res',res)
    //         if (res.data.data.success) {
    //           record.count = res.data.data.obj;
    //         } else {
    //           record.count = 0;
    //         }
    //       });
    //     }
    //     return {
    //       ...record
    //     };
    //   });
    // },
    MasterGetList() {
      this.userId = localStorage.getItem('userId');
      getList({ userId: this.userId }).then(res => {
        res.data.data.filter(item => {
          if (item.isDefault === 1) {
            this.hexColor = this.randomColor();
            this.option.data.push({
              click: (item) => {
                this.$router.push({ path: item.uiUrl });
              },
              title: item.menuName,
              count: parseInt(item.mdmCount),
              icon: item.icon,
              code: item.code,
              isDefault: item.isDefault,
              color:this.hexColor,
              uiUrl: item.menuRoute,
            });
          } else if (item.isDefault === 0) {
            this.newData.push(item);
            this.Crud.data=this.newData;
          }
        });
        // console.log(this.option.data);
        // console.log(this.newData);
      });
    }
  }
}
</script>