Procházet zdrojové kódy

项目成本自定义列

yuhan před 1 rokem
rodič
revize
96c4707229

+ 18 - 0
src/api/kzksApi.js

@@ -0,0 +1,18 @@
+import { getAction, deleteAction, putAction, postAction, httpAction } from '@/api/manage'
+
+// const addRole = (params)=>postAction("/sys/role/add",params);
+// const checkRoleCode = (params)=>getAction("/sys/role/checkRoleCode",params);
+// const addPermission= (params)=>postAction("/sys/permission/add",params);
+// const deleteByDepartId   = (params)=>deleteAction("/sys/sysDepart/delete",params);
+
+// 项目成本自定义列
+const columnsSelect = (params)=>getAction("/customColumns/customColumns/select", params);
+const columnsEdit = (params)=>postAction("/customColumns/customColumns/update", params);
+
+export {
+  columnsSelect,
+  columnsEdit,
+}
+
+
+

+ 188 - 91
src/views/module_kzks/projectCostList/ProjectCostList.vue

@@ -5,34 +5,34 @@
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="任务号/来自科研任务">
-              <a-input placeholder="请输入任务号/来自科研任务" v-model="queryParam.taskno"></a-input>
+            <a-form-item label="任务号">
+              <a-input placeholder="请输入任务号" v-model="queryParam.taskno"></a-input>
             </a-form-item>
           </a-col>
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="任务名称/来自科研任务">
-              <a-input placeholder="请输入任务名称/来自科研任务" v-model="queryParam.taskname"></a-input>
+            <a-form-item label="任务名称">
+              <a-input placeholder="请输入任务名称" v-model="queryParam.taskname"></a-input>
             </a-form-item>
           </a-col>
           <template v-if="toggleSearchStatus">
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="型号/来自科研报工">
-                <a-input placeholder="请输入型号/来自科研报工" v-model="queryParam.xhname"></a-input>
+              <a-form-item label="型号">
+                <a-input placeholder="请输入型号" v-model="queryParam.xhname"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="计划完成时间(进度要求)来自科研任务">
-                <j-date placeholder="请选择计划完成时间(进度要求)来自科研任务" v-model="queryParam.jhwcsj"></j-date>
+              <a-form-item label="计划完成时间">
+                <j-date placeholder="请选择计划完成时间" v-model="queryParam.jhwcsj"></j-date>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="阶段/来自科研报工">
-                <a-input placeholder="请输入阶段/来自科研报工" v-model="queryParam.yzjdname"></a-input>
+              <a-form-item label="阶段">
+                <a-input placeholder="请输入阶段" v-model="queryParam.yzjdname"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="项目进度/来自科研任务">
-                <a-input placeholder="请输入项目进度/来自科研任务" v-model="queryParam.processpercent"></a-input>
+              <a-form-item label="项目进度">
+                <a-input placeholder="请输入项目进度" v-model="queryParam.processpercent"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -41,83 +41,83 @@
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="研制数量/来自科研任务">
-                <a-input placeholder="请输入研制数量/来自科研任务" v-model="queryParam.yzsl"></a-input>
+              <a-form-item label="研制数量">
+                <a-input placeholder="请输入研制数量" v-model="queryParam.yzsl"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="单台收入/(合同额or预估价)/研制数量">
-                <a-input placeholder="请输入单台收入/(合同额or预估价)/研制数量" v-model="queryParam.oneIncome"></a-input>
+              <a-form-item label="单台收入">
+                <a-input placeholder="请输入单台收入" v-model="queryParam.oneIncome"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="单台成本/  总成本额/研制数量">
-                <a-input placeholder="请输入单台成本/  总成本额/研制数量" v-model="queryParam.oneCost"></a-input>
+              <a-form-item label="单台成本">
+                <a-input placeholder="请输入单台成本" v-model="queryParam.oneCost"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="单台利润/  利润额/研制数量">
-                <a-input placeholder="请输入单台利润/  利润额/研制数量" v-model="queryParam.oneProfit"></a-input>
+              <a-form-item label="单台利润">
+                <a-input placeholder="请输入单台利润" v-model="queryParam.oneProfit"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="利润额/(合同额or预估价)-总成本额">
-                <a-input placeholder="请输入利润额/(合同额or预估价)-总成本额" v-model="queryParam.lre"></a-input>
+              <a-form-item label="利润额">
+                <a-input placeholder="请输入利润额" v-model="queryParam.lre"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="利润率/ 利润额/(合同额or预估价)*100%">
-                <a-input placeholder="请输入利润率/ 利润额/(合同额or预估价)*100%" v-model="queryParam.lrl"></a-input>
+              <a-form-item label="利润率">
+                <a-input placeholder="请输入利润率" v-model="queryParam.lrl"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="预估价/来自财务预算">
-                <a-input placeholder="请输入预估价/来自财务预算" v-model="queryParam.estimationcoat"></a-input>
+              <a-form-item label="预估价">
+                <a-input placeholder="请输入预估价" v-model="queryParam.estimationcoat"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="下达部门id/来自科研任务">
-                <a-input placeholder="请输入下达部门id/来自科研任务" v-model="queryParam.jycsid"></a-input>
+              <a-form-item label="下达部门id">
+                <a-input placeholder="请输入下达部门id" v-model="queryParam.jycsid"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="下达部门/来自科研任务">
-                <a-input placeholder="请输入下达部门/来自科研任务" v-model="queryParam.jycs"></a-input>
+              <a-form-item label="下达部门">
+                <a-input placeholder="请输入下达部门" v-model="queryParam.jycs"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="任务类型/来自科研任务">
-                <a-input placeholder="请输入任务类型/来自科研任务" v-model="queryParam.tasktype"></a-input>
+              <a-form-item label="任务类型">
+                <a-input placeholder="请输入任务类型" v-model="queryParam.tasktype"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="审计审价/来自科研任务">
-                <a-input placeholder="请输入审计审价/来自科研任务" v-model="queryParam.auditprice"></a-input>
+              <a-form-item label="审计审价">
+                <a-input placeholder="请输入审计审价" v-model="queryParam.auditprice"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="任务状态/来自科研任务">
-                <a-input placeholder="请输入任务状态/来自科研任务" v-model="queryParam.iflag"></a-input>
+              <a-form-item label="任务状态">
+                <a-input placeholder="请输入任务状态" v-model="queryParam.iflag"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="批产任务号/来自科研任务">
-                <a-input placeholder="请输入批产任务号/来自科研任务" v-model="queryParam.pccode"></a-input>
+              <a-form-item label="批产任务号">
+                <a-input placeholder="请输入批产任务号" v-model="queryParam.pccode"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="备产任务号/来自科研任务">
-                <a-input placeholder="请输入备产任务号/来自科研任务" v-model="queryParam.bccode"></a-input>
+              <a-form-item label="备产任务号">
+                <a-input placeholder="请输入备产任务号" v-model="queryParam.bccode"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="备料任务号/来自科研任务">
-                <a-input placeholder="请输入备料任务号/来自科研任务" v-model="queryParam.blcode"></a-input>
+              <a-form-item label="备料任务号">
+                <a-input placeholder="请输入备料任务号" v-model="queryParam.blcode"></a-input>
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="业务员/来自科研任务">
-                <a-input placeholder="请输入业务员/来自科研任务" v-model="queryParam.businessman"></a-input>
+              <a-form-item label="业务员">
+                <a-input placeholder="请输入业务员" v-model="queryParam.businessman"></a-input>
               </a-form-item>
             </a-col>
           </template>
@@ -138,7 +138,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> -->
       <a-button type="primary" icon="download" @click="handleExportXls('项目成本')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -149,7 +149,7 @@
         <a-menu slot="overlay">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
-        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+        <!-- <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button> -->
       </a-dropdown>
     </div>
 
@@ -158,6 +158,25 @@
       <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
         <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
         <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+
+        <span style="float:right;">
+          <a @click="loadData()"><a-icon type="sync" />刷新</a>
+          <a-divider type="vertical" />
+          <a-popover title="自定义列" trigger="click" placement="leftBottom">
+            <template slot="content">
+              <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns">
+                <a-row style="width: 400px">
+                  <template v-for="(item, index) in defColumns">
+                    <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'">
+                        <a-col :span="12" :key="index"><a-checkbox :value="item.dataIndex">{{ item.title }}</a-checkbox></a-col>
+                    </template>
+                  </template>
+                </a-row>
+              </a-checkbox-group>
+            </template>
+            <a><a-icon type="setting" />自定义列</a>
+          </a-popover>
+        </span>
       </div>
 
       <a-table
@@ -194,10 +213,26 @@
           </a-button>
         </template>
 
+        <div slot="filterDropdown">
+          <a-card>
+            <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns">
+              <a-row style="width: 400px">
+                <template v-for="(item, index) in defColumns">
+                  <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'">
+                    <a-col :span="12" :key="index"><a-checkbox :value="item.dataIndex">{{ item.title }}</a-checkbox></a-col>
+                  </template>
+                </template>
+              </a-row>
+            </a-checkbox-group>
+          </a-card>
+        </div>
+        <a-icon slot="filterIcon" type='setting' :style="{ fontSize:'16px',color:  '#108ee9' }" />
+
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <!-- <a @click="handleEdit(record)">编辑</a> -->
+          <a @click="handleDetail(record)">详情</a>
 
-          <a-divider type="vertical" />
+          <!-- <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
             <a-menu slot="overlay">
@@ -210,7 +245,7 @@
                 </a-popconfirm>
               </a-menu-item>
             </a-menu>
-          </a-dropdown>
+          </a-dropdown> -->
         </span>
 
       </a-table>
@@ -221,6 +256,8 @@
 </template>
 
 <script>
+  import Vue from 'vue'
+  import { columnsSelect, columnsEdit } from '@/api/kzksApi.js'
 
   import '@/assets/less/TableExpand.less'
   import { mixinDevice } from '@/utils/mixin'
@@ -236,8 +273,12 @@
     data () {
       return {
         description: '项目成本管理页面',
-        // 表头
-        columns: [
+        // 表头:当前显示的列,初始为全部
+        columns: [],
+        //列设置:多选弹窗显示的
+        settingColumns:[],
+        //列定义:所有列
+        defColumns: [
           {
             title: '#',
             dataIndex: '',
@@ -249,22 +290,22 @@
             }
           },
           {
-            title:'任务号/来自科研任务',
+            title:'任务号',
             align:"center",
             dataIndex: 'taskno'
           },
           {
-            title:'任务名称/来自科研任务',
+            title:'任务名称',
             align:"center",
             dataIndex: 'taskname'
           },
           {
-            title:'型号/来自科研报工',
+            title:'型号',
             align:"center",
             dataIndex: 'xhname'
           },
           {
-            title:'计划完成时间(进度要求)来自科研任务',
+            title:'计划完成时间',
             align:"center",
             dataIndex: 'jhwcsj',
             customRender:function (text) {
@@ -272,12 +313,12 @@
             }
           },
           {
-            title:'阶段/来自科研报工',
+            title:'阶段',
             align:"center",
             dataIndex: 'yzjdname'
           },
           {
-            title:'项目进度/来自科研任务',
+            title:'项目进度',
             align:"center",
             dataIndex: 'processpercent'
           },
@@ -287,57 +328,57 @@
             dataIndex: 'costPercent'
           },
           {
-            title:'研制数量/来自科研任务',
+            title:'研制数量',
             align:"center",
             dataIndex: 'yzsl'
           },
           {
-            title:'单台收入/(合同额or预估价)/研制数量',
+            title:'单台收入',
             align:"center",
             dataIndex: 'oneIncome'
           },
           {
-            title:'单台成本/  总成本额/研制数量',
+            title:'单台成本',
             align:"center",
             dataIndex: 'oneCost'
           },
           {
-            title:'单台利润/  利润额/研制数量',
+            title:'单台利润',
             align:"center",
             dataIndex: 'oneProfit'
           },
           {
-            title:'利润额/(合同额or预估价)-总成本额',
+            title:'利润额',
             align:"center",
             dataIndex: 'lre'
           },
           {
-            title:'利润率/ 利润额/(合同额or预估价)*100%',
+            title:'利润率',
             align:"center",
             dataIndex: 'lrl'
           },
           {
-            title:'预估价/来自财务预算',
+            title:'预估价',
             align:"center",
             dataIndex: 'estimationcoat'
           },
           {
-            title:'合同额/来自收款合同的合同分配额 ',
+            title:'合同额',
             align:"center",
             dataIndex: 'contractfpe'
           },
           {
-            title:'已收款/ 来自合同收款详细的任务收款额',
+            title:'已收款',
             align:"center",
             dataIndex: 'taskmoney'
           },
           {
-            title:'总成本/ 直接成本+间接费用/直接成本=材料费(出库)+外协费+专用费+事务费/间接费用=工资费+管理费+燃动费+固资费',
+            title:'总成本',
             align:"center",
             dataIndex: 'zcb'
           },
           {
-            title:'材料费/物资出库单明细 实发主数量*采购单价',
+            title:'材料费',
             align:"center",
             dataIndex: 'clf'
           },
@@ -357,27 +398,27 @@
             dataIndex: 'wxf'
           },
           {
-            title:'燃料动力费/(材料费+外协费+事务费+专用费)×1.5%',
+            title:'燃料动力费',
             align:"center",
             dataIndex: 'rldlf'
           },
           {
-            title:'固定资产折旧/(材料费+外协费+事务费+专用费)×2.5%',
+            title:'固定资产折旧',
             align:"center",
             dataIndex: 'gdzczj'
           },
           {
-            title:'工资及劳务费/(材料费+外协费+事务费+专用费)×17%',
+            title:'工资及劳务费',
             align:"center",
             dataIndex: 'gzjlwf'
           },
           {
-            title:'管理费/(材料费+外协费+事务费+专用费)×5%',
+            title:'管理费',
             align:"center",
             dataIndex: 'glf'
           },
           {
-            title:'装机成本/ mes装机信息卡的采购单价*数量',
+            title:'装机成本',
             align:"center",
             dataIndex: 'zjcb'
           },
@@ -387,77 +428,77 @@
             dataIndex: 'lbsy'
           },
           {
-            title:'工时(h)/来自科研报工,每次科研报工累加计时',
+            title:'工时(h)',
             align:"center",
             dataIndex: 'workhour'
           },
           {
-            title:'责任部门/来自科研任务',
+            title:'责任部门',
             align:"center",
             dataIndex: 'zrbm'
           },
           {
-            title:'下达部门id/来自科研任务',
+            title:'下达部门id',
             align:"center",
             dataIndex: 'jycsid'
           },
           {
-            title:'下达部门/来自科研任务',
+            title:'下达部门',
             align:"center",
             dataIndex: 'jycs'
           },
           {
-            title:'1:横向 2:纵向/来自科研任务',
+            title:'1:横向 2:纵向',
             align:"center",
             dataIndex: 'hxzxid'
           },
           {
-            title:'横向纵向/来自科研任务',
+            title:'横向纵向',
             align:"center",
             dataIndex: 'hxzxname'
           },
           {
-            title:'任务类型/来自科研任务',
+            title:'任务类型',
             align:"center",
             dataIndex: 'tasktype'
           },
           {
-            title:'审计审价/来自科研任务',
+            title:'审计审价',
             align:"center",
             dataIndex: 'auditprice'
           },
           {
-            title:'任务状态/来自科研任务',
+            title:'任务状态',
             align:"center",
             dataIndex: 'iflag'
           },
           {
-            title:'提出单位简称/来自科研任务',
+            title:'提出单位简称',
             align:"center",
             dataIndex: 'brief'
           },
           {
-            title:'父级任务/来自科研任务',
+            title:'父级任务',
             align:"center",
             dataIndex: 'reftaskno'
           },
           {
-            title:'批产任务号/来自科研任务',
+            title:'批产任务号',
             align:"center",
             dataIndex: 'pccode'
           },
           {
-            title:'备产任务号/来自科研任务',
+            title:'备产任务号',
             align:"center",
             dataIndex: 'bccode'
           },
           {
-            title:'备料任务号/来自科研任务',
+            title:'备料任务号',
             align:"center",
             dataIndex: 'blcode'
           },
           {
-            title:'业务员/来自科研任务',
+            title:'业务员',
             align:"center",
             dataIndex: 'businessman'
           },
@@ -477,9 +518,14 @@
             align:"center",
             fixed:"right",
             width:147,
-            scopedSlots: { customRender: 'action' }
+            scopedSlots: {
+              filterDropdown: 'filterDropdown',
+              filterIcon: 'filterIcon',
+              customRender: 'action',
+            }
           }
         ],
+
         url: {
           list: "/projectCost/projectCost/list",
           delete: "/projectCost/projectCost/delete",
@@ -493,7 +539,8 @@
       }
     },
     created() {
-    this.getSuperFieldList();
+      this.initColumns();
+      this.getSuperFieldList();
     },
     computed: {
       importExcelUrl: function(){
@@ -550,7 +597,57 @@
         fieldList.push({type:'BigDecimal',value:'sjgs',text:'设计工时',dictCode:''})
         fieldList.push({type:'BigDecimal',value:'scgs',text:'生产工时',dictCode:''})
         this.superFieldList = fieldList
-      }
+      },
+      initColumns(){
+        //权限过滤(列权限控制时打开,修改第二个参数为授权码前缀)
+        //this.defColumns = colAuthFilter(this.defColumns,'testdemo:');
+        columnsSelect().then(res => {
+          let colSettings = res
+          console.log(colSettings)
+          if(colSettings==null||colSettings==undefined){
+            let allSettingColumns = [];
+            this.defColumns.forEach(function (item,i,array ) {
+              allSettingColumns.push(item.dataIndex);
+            })
+            this.settingColumns = allSettingColumns;
+            this.columns = this.defColumns;
+          }else{
+            this.settingColumns = colSettings;
+            const cols = this.defColumns.filter(item => {
+              if(item.key =='rowIndex'|| item.dataIndex=='action'){
+                return true;
+              }
+              if (colSettings.includes(item.dataIndex)) {
+                return true;
+              }
+              return false;
+            })
+            this.columns =  cols;
+          }
+        })
+        // 储存浏览器方式
+        // var key = this.$route.name+":colsettings";
+        // let colSettings= Vue.ls.get(key);
+      },
+      //列设置更改事件
+      onColSettingsChange (checkedValues) {
+        console.log(checkedValues)
+        // 获取浏览器方式
+        // var key = this.$route.name+":colsettings";
+        // Vue.ls.set(key, checkedValues, 7 * 24 * 60 * 60 * 1000)
+        this.settingColumns = checkedValues;
+        const cols = this.defColumns.filter(item => {
+          if(item.key =='rowIndex'|| item.dataIndex=='action'){
+            return true
+          }
+          if (this.settingColumns.includes(item.dataIndex)) {
+            return true
+          }
+          return false
+        })
+        this.columns = cols;
+        columnsEdit({checkedValues: checkedValues})
+      },
     }
   }
 </script>