From dd3b01e1d5a5c204c9171fe77e7d5376ea3e0222 Mon Sep 17 00:00:00 2001
From: yuanwei <362142050@qq.com>
Date: Sat, 2 Dec 2023 22:38:59 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AE=A1=E5=88=92=E7=AE=A1=E7=90=86=E9=85=8D?=
 =?UTF-8?q?=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/api/auth/authDept.js                      |   8 +
 src/views/purchase/purApply/purApply.vue      |   5 +-
 .../purchase/purApply/pureApplyAudit.vue      |   7 +-
 .../purchase/purApply/pureApplyMySearch.vue   |   5 +-
 .../purchase/purApply/pureApplySearch.vue     |   5 +-
 src/views/purchase/purPlan/purPlan.vue        | 522 +++++++++++++----
 src/views/purchase/purPlan/purPlanAudit.vue   | 518 +++++++++++++----
 src/views/purchase/purPlan/purPlanSearch.vue  | 545 +++++++++++++-----
 8 files changed, 1230 insertions(+), 385 deletions(-)

diff --git a/src/api/auth/authDept.js b/src/api/auth/authDept.js
index 568a4b50..b6f78d2c 100644
--- a/src/api/auth/authDept.js
+++ b/src/api/auth/authDept.js
@@ -49,6 +49,14 @@ export function getDeptListByUser(params) {
   });
 }
 
+export function getDeptListByUserOptimize(params) {
+  return axios({
+    url: "/spms/inv/warehouse/filterByUserOptimize",
+    method: "get",
+    params: params
+  });
+}
+
 
 
 
diff --git a/src/views/purchase/purApply/purApply.vue b/src/views/purchase/purApply/purApply.vue
index 99af8374..38068dec 100644
--- a/src/views/purchase/purApply/purApply.vue
+++ b/src/views/purchase/purApply/purApply.vue
@@ -546,7 +546,7 @@ export default {
       };
       this.initActDateRange()
       if (deptCode != this.invCodebe) {
-        this.getInvList()
+        this.getInvList(this)
       }
       this.actDateRange = [];
       this.getList();
@@ -740,7 +740,7 @@ export default {
           _this.invCodebe = _this.filterQuery.targetDeptCode
         }
         _this.getList();
-        _this.getInvList();
+        _this.getInvList(_this);
       });
     },
     initActDateRange() {
@@ -798,7 +798,6 @@ export default {
     this.initActDateRange()
     this.getCurInvList(this);
     this.getDeptList(this);
-    this.getInvList(this);
   }
   ,
 }
diff --git a/src/views/purchase/purApply/pureApplyAudit.vue b/src/views/purchase/purApply/pureApplyAudit.vue
index f589a568..34f84774 100644
--- a/src/views/purchase/purApply/pureApplyAudit.vue
+++ b/src/views/purchase/purApply/pureApplyAudit.vue
@@ -539,7 +539,7 @@ export default {
         targetInvCode: null
       };
       if (deptCode != this.invCodebe) {
-        this.getInvList()
+        this.getInvList(this)
       }
       this.actDateRange = [];
       this.getList();
@@ -673,7 +673,7 @@ export default {
     },
     deptChange() {
 
-      this.getInvList();
+      this.getInvList(this);
       this.getList();
     },
     getInvList(_this) {
@@ -688,7 +688,7 @@ export default {
     getDeptList(_this) {
       filterDeptsOptimize().then((res) => {
         _this.options.getDeptList = res.data || [];
-        _this.getInvList();
+        _this.getInvList(_this);
         _this.getList();
       });
     },
@@ -753,7 +753,6 @@ export default {
     this.actDateRange = [start, end];
     this.getCurInvList(this);
     this.getDeptList(this);
-    this.getInvList(this);
   }
   ,
 }
diff --git a/src/views/purchase/purApply/pureApplyMySearch.vue b/src/views/purchase/purApply/pureApplyMySearch.vue
index 34e7cc22..1ae48fdb 100644
--- a/src/views/purchase/purApply/pureApplyMySearch.vue
+++ b/src/views/purchase/purApply/pureApplyMySearch.vue
@@ -597,7 +597,7 @@ export default {
         targetDeptCode: this.invCodebe,
       };
       if (targetDeptCode != this.invCodebe) {
-        this.getInvList()
+        this.getInvList(this)
       }
       this.actDateRange = [];
       this.actAuditDateRange = [];
@@ -764,7 +764,7 @@ export default {
           _this.invCodebe = _this.filterQuery.targetDeptCode
         }
         _this.getList();
-        _this.getInvList();
+        _this.getInvList(_this);
       });
     },
     printOrder(_this,row) {
@@ -830,7 +830,6 @@ export default {
     });
     this.getCurInvList(this);
     this.getDeptList(this);
-    this.getInvList(this);
   }
   ,
 }
diff --git a/src/views/purchase/purApply/pureApplySearch.vue b/src/views/purchase/purApply/pureApplySearch.vue
index d703cd17..bc615652 100644
--- a/src/views/purchase/purApply/pureApplySearch.vue
+++ b/src/views/purchase/purApply/pureApplySearch.vue
@@ -596,7 +596,7 @@ export default {
         deptCode: this.invCodebe,
       };
       if (deptCode != this.invCodebe) {
-        this.getInvList()
+        this.getInvList(this)
       }
       this.actDateRange = [];
       this.actAuditDateRange = [];
@@ -770,7 +770,7 @@ export default {
           _this.invCodebe = _this.filterQuery.deptCode
         }
         _this.getList();
-        _this.getInvList();
+        _this.getInvList(_this);
       });
     },
     getCurInvList(_this) {
@@ -830,7 +830,6 @@ export default {
     });
     this.getCurInvList(this);
     this.getDeptList(this);
-    this.getInvList(this);
 
   }
   ,
diff --git a/src/views/purchase/purPlan/purPlan.vue b/src/views/purchase/purPlan/purPlan.vue
index 325979fc..c3a1ec78 100644
--- a/src/views/purchase/purPlan/purPlan.vue
+++ b/src/views/purchase/purPlan/purPlan.vue
@@ -1,72 +1,136 @@
 <template>
   <div>
     <el-card class="el-card">
-      <el-form :model="filterQuery" class="query-form" label-width="100px" v-show="showSearch">
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="采购单号">
-              <el-input v-model="filterQuery.billNo" style="width: 90%" placeholder="请输入单据号" clearable></el-input>
-            </el-form-item>
-          </el-col>
+      <el-form v-if="queryList && queryList.length > 0" :model="filterQuery" class="query-form" label-width="100px" v-show="showSearch">
+<!--        <el-row>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="采购单号">-->
+<!--              <el-input v-model="filterQuery.billNo" style="width: 90%" placeholder="请输入单据号" clearable></el-input>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
 
-          <el-col :span="8">
-            <el-form-item label="采购部门">
-              <el-select v-model="filterQuery.deptCode" @change="getInvList" placeholder="请选择申购部门" style="width: 90%">
-                <el-option
-                  v-for="item in deptList"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                >
-                  <span style="float: left">{{ item.name }}</span>
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="采购部门">-->
+<!--              <el-select v-model="filterQuery.deptCode" @change="getInvList" placeholder="请选择申购部门" style="width: 90%">-->
+<!--                <el-option-->
+<!--                  v-for="item in deptList"-->
+<!--                  :key="item.code"-->
+<!--                  :label="item.name"-->
+<!--                  :value="item.code"-->
+<!--                >-->
+<!--                  <span style="float: left">{{ item.name }}</span>-->
+<!--                </el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="采购仓库">-->
+<!--              <el-select v-model="filterQuery.invCode" style="width: 90%"  clearable placeholder="请选择所属仓库">-->
+<!--                <el-option-->
+<!--                  v-for="item in invList"-->
+<!--                  :key="item.name"-->
+<!--                  :label="item.name"-->
+<!--                  :value="item.code">-->
+<!--                  <span style="float: left">{{ item.name }}</span>-->
+<!--                </el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 
-          <el-col :span="8">
-            <el-form-item label="采购仓库">
-              <el-select v-model="filterQuery.invCode" style="width: 90%"  clearable placeholder="请选择所属仓库">
+<!--        <el-row>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="紧急程度:" prop="emergency">-->
+<!--              <el-select v-model="filterQuery.emergency" placeholder="请选择紧急程度" style="width: 90%" clearable>-->
+<!--                <el-option label="正常" :value=1></el-option>-->
+<!--                <el-option label="较急" :value=2></el-option>-->
+<!--                <el-option label="特急" :value=3></el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="创建时间:">-->
+<!--              <el-date-picker-->
+<!--                :picker-options="pickerOptions"-->
+<!--                v-model="actDateRange"-->
+<!--                type="daterange"-->
+<!--                format="yyyy 年 MM 月 dd 日"-->
+<!--                style="width: 90%"-->
+<!--                value-format="yyyy-MM-dd"-->
+<!--                range-separator="至"-->
+<!--                start-placeholder="开始日期"-->
+<!--                end-placeholder="结束日期"-->
+<!--              >-->
+<!--              </el-date-picker>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+        <el-row style=" display:flex;  flex-wrap: wrap; ">
+          <template v-for="(item, index) in queryList" >
+            <el-form-item v-if="item.columnType == 'input' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`" :key="item.id">
+              <el-input
+                v-model="filterQuery[item.columnName]"
+                :placeholder="item.columnDesc"
+                :disabled="executeEval(null,item.disabledFuc,false)"
+                @keyup.enter.native="executeFuc($event,'5',item.clickFuc)"
+                clearable
+              ></el-input>
+            </el-form-item>
+            <el-form-item v-if="item.columnType == 'select' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
+              <el-select v-model="filterQuery[item.columnName]"
+                         :placeholder="item.columnDesc"
+                         :disabled="executeEval(null,item.disabledFuc,false)"
+                         clearable>
                 <el-option
-                  v-for="item in invList"
-                  :key="item.name"
-                  :label="item.name"
-                  :value="item.code">
-                  <span style="float: left">{{ item.name }}</span>
-                </el-option>
+                  v-for="dict in item.lableRuleObj"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                />
               </el-select>
             </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="紧急程度:" prop="emergency">
-              <el-select v-model="filterQuery.emergency" placeholder="请选择紧急程度" style="width: 90%" clearable>
-                <el-option label="正常" :value=1></el-option>
-                <el-option label="较急" :value=2></el-option>
-                <el-option label="特急" :value=3></el-option>
+            <el-form-item v-if="item.columnType == 'selectServer' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
+              <el-select
+                v-model="filterQuery[item.columnName]"
+                :placeholder="item.columnDesc"
+                :disabled="executeEval(null,item.disabledFuc,false)"
+                filterable
+                remote
+                :remote-method="(query) => executeFuc(query,'5',item.clickFuc)"
+                clearable>
+                <el-option
+                  v-for="item in options[item.clickFuc]"
+                  :key="item.code"
+                  :label="item.label"
+                  :value="item.code"
+                />
               </el-select>
             </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="创建时间:">
+            <el-form-item v-if="item.columnType == 'datePicker' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
               <el-date-picker
                 :picker-options="pickerOptions"
                 v-model="actDateRange"
                 type="daterange"
                 format="yyyy 年 MM 月 dd 日"
-                style="width: 90%"
                 value-format="yyyy-MM-dd"
                 range-separator="至"
                 start-placeholder="开始日期"
                 end-placeholder="结束日期"
-              >
-              </el-date-picker>
+              ></el-date-picker>
             </el-form-item>
-          </el-col>
+            <el-form-item v-if="item.columnType == 'date' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
+              <el-date-picker
+                v-model="filterQuery[item.columnName]"
+                :style="`width:${item.width+'px'}`"
+                value-format="yyyy-MM-dd"
+                :disabled="executeEval(null,item.disabledFuc,false)"
+                type="date"
+                :placeholder="item.columnDesc"
+              ></el-date-picker>
+            </el-form-item>
+          </template>
         </el-row>
-
       </el-form>
 
       <div class="top-right-btn">
@@ -81,34 +145,122 @@
       <el-divider style="margin: 15px"></el-divider>
 
       <el-table v-loading="loading" :data="list" style="width: 100%" border highlight-current-row
-                @current-change="handleDetail"  :default-sort="defaultSort"   @sort-change="handleSortChange">
-        <el-table-column label="序号" type="index" width="60"></el-table-column>
-        <el-table-column label="采购单号" prop="billNo"></el-table-column>
-        <el-table-column label="采购部门" prop="deptName"></el-table-column>
-        <el-table-column label="采购仓库" prop="invName"></el-table-column>
-        <el-table-column label="紧急程度" prop="emergency">
-          <template slot-scope="scope">
-            {{ emergencyMap[scope.row.emergency] }}
-          </template>
-        </el-table-column>
-        <el-table-column label="到货截止" prop="arrivalTime"></el-table-column>
-        <el-table-column label="单据状态" prop="status">
-          <template slot-scope="scope">
-            <el-tag :type="(scope.row.status) | statusFilterType">
-              {{ statusMap[scope.row.status] }}
-            </el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="createTime"
-                         sortable="custom"   :sort-orders="['ascending', 'descending']"></el-table-column>
+                @current-change="(row) => executeFuc(row,'0',tableObj.handleChangeFuc)"
+                :default-sort="defaultSort"   @sort-change="handleSortChange">
+<!--        <el-table-column label="序号" type="index" width="60"></el-table-column>-->
+<!--        <el-table-column label="采购单号" prop="billNo"></el-table-column>-->
+<!--        <el-table-column label="采购部门" prop="deptName"></el-table-column>-->
+<!--        <el-table-column label="采购仓库" prop="invName"></el-table-column>-->
+<!--        <el-table-column label="紧急程度" prop="emergency">-->
+<!--          <template slot-scope="scope">-->
+<!--            {{ emergencyMap[scope.row.emergency] }}-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+<!--        <el-table-column label="到货截止" prop="arrivalTime"></el-table-column>-->
+<!--        <el-table-column label="单据状态" prop="status">-->
+<!--          <template slot-scope="scope">-->
+<!--            <el-tag :type="(scope.row.status) | statusFilterType">-->
+<!--              {{ statusMap[scope.row.status] }}-->
+<!--            </el-tag>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+<!--        <el-table-column label="创建时间" prop="createTime"-->
+<!--                         sortable="custom"   :sort-orders="['ascending', 'descending']"></el-table-column>-->
 
-        <el-table-column label="操作" width="120">
-          <template slot-scope="scope">
-            <el-button type="text" size="small" @click.native="newDistributionForm(scope.$index, scope.row)">编辑
-            </el-button>
-            <el-button type="text" size="small" @click.native.stop="deleteDialog(scope.row)">删除</el-button>
-          </template>
-        </el-table-column>
+<!--        <el-table-column label="操作" width="120">-->
+<!--          <template slot-scope="scope">-->
+<!--            <el-button type="text" size="small" @click.native="newDistributionForm(scope.$index, scope.row)">编辑-->
+<!--            </el-button>-->
+<!--            <el-button type="text" size="small" @click.native.stop="deleteDialog(scope.row)">删除</el-button>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+        <template v-for="(item, index) in tableHeader">
+          <el-table-column
+            v-if="item.columnType == 'id' && executeEval(row,item.expression,true)"
+            type="index" :label="item.columnDesc"></el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'selection'"
+            type="selection"
+            :width="item.width"
+            :selectable="(row,number) => executeFuc(row,'3',item.clickFuc)"
+          ></el-table-column>
+
+          <el-table-column
+            v-if="item.columnType == 'radio' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template  slot-scope="scope">
+              <el-radio :label="scope.row.id" v-model="radioCheck"><span></span></el-radio>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'laber' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item.lableRuleObj[scope.row[item.columnName]])}">{{ item.lableRuleObj[scope.row[item.columnName]] }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'eltag' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <el-tag :type="executeFuc(scope.row,'4',item,item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName])">
+                <span>{{ item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName] }}</span>
+              </el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'button' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :width="item.width"
+            :key="item.columnName"
+            fixed="right"
+          >
+            <template slot-scope="scope">
+              <el-button v-for="(buttonItem, buttonIndex) in item.buttonRulObj"
+                         :type="buttonItem.type"
+                         :size="buttonItem.size"
+                         :style="buttonItem.style"
+                         :key="buttonItem"
+                         v-if="executeEval(scope.row,buttonItem.hasPermi,true)"
+                         :disabled="executeEval(scope.row,buttonItem.disabledFuc,false)"
+                         @click.native.stop="executeFuc(scope.row,'1',buttonItem.clickFuc)"
+              >{{ buttonItem.name }}
+              </el-button>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'text' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item,scope.row[item.columnName])}">{{ scope.row[item.columnName] }}</span>
+            </template>
+          </el-table-column>
+        </template>
       </el-table>
 
 
@@ -123,15 +275,102 @@
     </el-card>
     <el-card class="el-card">
       <el-table v-loading="loading" :data="detailList" style="width: 100%" border highlight-current-row>
-        <el-table-column label="序号" type="index" width="60"></el-table-column>
-        <el-table-column label="DI/物资编码" prop="nameCode"></el-table-column>
-        <el-table-column label="物资名称" prop="productName" show-overflow-tooltip="true"></el-table-column>
-        <el-table-column label="规格型号" prop="spec" show-overflow-tooltip="true"></el-table-column>
-        <el-table-column label="计量单位" prop="measname" show-overflow-tooltip="true" width="100"></el-table-column>
-        <el-table-column label="申购数量" prop="count"></el-table-column>
-        <el-table-column label="注册/备案号" prop="zczbhhzbapzbh"></el-table-column>
-        <el-table-column label="生产厂家" prop="manufactory"></el-table-column>
-        <el-table-column label="供应商" prop="supName"></el-table-column>
+<!--        <el-table-column label="序号" type="index" width="60"></el-table-column>-->
+<!--        <el-table-column label="DI/物资编码" prop="nameCode"></el-table-column>-->
+<!--        <el-table-column label="物资名称" prop="productName" show-overflow-tooltip="true"></el-table-column>-->
+<!--        <el-table-column label="规格型号" prop="spec" show-overflow-tooltip="true"></el-table-column>-->
+<!--        <el-table-column label="计量单位" prop="measname" show-overflow-tooltip="true" width="100"></el-table-column>-->
+<!--        <el-table-column label="申购数量" prop="count"></el-table-column>-->
+<!--        <el-table-column label="注册/备案号" prop="zczbhhzbapzbh"></el-table-column>-->
+<!--        <el-table-column label="生产厂家" prop="manufactory"></el-table-column>-->
+<!--        <el-table-column label="供应商" prop="supName"></el-table-column>-->
+        <template v-for="(item, index) in tableHeader2">
+          <el-table-column
+            v-if="item.columnType == 'id' && executeEval(row,item.expression,true)"
+            type="index" :label="item.columnDesc"></el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'selection'"
+            type="selection"
+            :width="item.width"
+            :selectable="(row,number) => executeFuc(row,'3',item.clickFuc)"
+          ></el-table-column>
+
+          <el-table-column
+            v-if="item.columnType == 'radio' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template  slot-scope="scope">
+              <el-radio :label="scope.row.id" v-model="radioCheck"><span></span></el-radio>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'laber' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item.lableRuleObj[scope.row[item.columnName]])}">{{ item.lableRuleObj[scope.row[item.columnName]] }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'eltag' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <el-tag :type="executeFuc(scope.row,'4',item,item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName])">
+                <span>{{ item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName] }}</span>
+              </el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'button' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :width="item.width"
+            :key="item.columnName"
+            fixed="right"
+          >
+            <template slot-scope="scope">
+              <el-button v-for="(buttonItem, buttonIndex) in item.buttonRulObj"
+                         :type="buttonItem.type"
+                         :size="buttonItem.size"
+                         :style="buttonItem.style"
+                         :key="buttonItem"
+                         v-if="executeEval(scope.row,buttonItem.hasPermi,true)"
+                         :disabled="executeEval(scope.row,buttonItem.disabledFuc,false)"
+                         @click.native.stop="executeFuc(scope.row,'1',buttonItem.clickFuc)"
+              >{{ buttonItem.name }}
+              </el-button>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'text' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item,scope.row[item.columnName])}">{{ scope.row[item.columnName] }}</span>
+            </template>
+          </el-table-column>
+        </template>
       </el-table>
     </el-card>
 
@@ -159,8 +398,11 @@ import purPlanEdit from "./purPlanEditDialog";
 import {delApply, inserThrOrderWeb, listPlan, listApplyDetail, delPlanDetailAll} from "@/api/purchase/purPlan";
 import {delApplyDetailAll} from "@/api/purchase/purApply";
 import { getInvListByUser } from '@/api/system/invWarehouse'
-import { getDeptListByUser } from '@/api/auth/authDept'
-import {filterSubAll} from "@/api/system/invSubWarehouse";
+import {getDeptListByUser, getDeptListByUserOptimize} from '@/api/auth/authDept'
+import {filterSubAll, filterSubAllOptimize} from "@/api/system/invSubWarehouse";
+import {
+  getHead,executeFuc
+} from "@/utils/customConfig";
 
 export default {
   data() {
@@ -197,6 +439,16 @@ export default {
       },
       idQuery: {},
       total: 0,
+      tableHeader:[],
+      queryList:[],
+      fromList:[],
+      tableHeader2:[],
+      queryList2:[],
+      fromList2:[],
+      options: {
+        getInvList:[],
+        getDeptList:[],
+      },
       thirdSys: [],
       thirdSysDetail: null,
       busTypes: [],
@@ -268,7 +520,7 @@ export default {
         invCode:null
       };
       this.actDateRange = [];
-      this.getInvList()
+      this.getInvList(this)
       this.getList();
     },
     handleClose() {
@@ -341,18 +593,18 @@ export default {
           this.total = 0;
         });
     },
-    handleDetail(row) {
+    handleDetail(_this,row) {
       let query = {orderIdFk: row.id};
-      this.loading = true;
+      _this.loading = true;
       listApplyDetail(query) //查找该单号下的所有条码
         .then((response) => {
-          this.detailList = response.data.list || [];
-          this.loading = false;
+          _this.detailList = response.data.list || [];
+          _this.loading = false;
         })
         .catch(() => {
-          this.loading = false;
-          this.detailList = [];
-          this.total = 0;
+          _this.loading = false;
+          _this.detailList = [];
+          _this.total = 0;
         });
     },
     submitOrder(row) {
@@ -384,8 +636,8 @@ export default {
         .catch(() => {
         });
     },
-    deleteDialog(row) {
-      this.$confirm("此操作将永久删除该单据, 是否继续?", "提示", {
+    deleteDialog(_this,row) {
+      _this.$confirm("此操作将永久删除该单据, 是否继续?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
@@ -393,16 +645,16 @@ export default {
         .then(() => {
           delPlanDetailAll({id: row.id})
             .then((response) => {
-              this.loading = false;
+              _this.loading = false;
               if (response.code == 20000) {
-                this.$message.success("删除成功");
-                this.getList();
+                _this.$message.success("删除成功");
+                _this.getList();
               } else {
-                this.$message.error(response.message);
+                _this.$message.error(response.message);
               }
             })
             .catch(() => {
-              this.loading = false;
+              _this.loading = false;
             });
 
         })
@@ -419,39 +671,50 @@ export default {
       this.getList();
       this.detailList = [];
     },
-    getInvList() {
+    getInvList(_this) {
       var query={
         parentId:this.filterQuery.deptCode
       }
       this.filterQuery.invCode = null
-      filterSubAll(query).then((res) => {
-        this.invList = res.data || [];
+      filterSubAllOptimize(query).then((res) => {
+        _this.options.getInvList = res.data || [];
       })
     },
-    getDeptList() {
-      getDeptListByUser().then((res) => {
-        this.deptList = res.data || [];
-        if(this.deptList.length>0){
-          this.filterQuery.deptCode=this.deptList[0].code
-          this.invCodebe=this.filterQuery.deptCode
+    getDeptList(_this) {
+      getDeptListByUserOptimize().then((res) => {
+        _this.options.getDeptList = res.data || [];
+        if( _this.options.getDeptList.length>0){
+          _this.filterQuery.deptCode= _this.options.getDeptList[0].code
+          _this.invCodebe=this.filterQuery.deptCode
         }
-        this.getList();
-        this. getInvList();
+        _this.getList();
+        _this.getInvList(_this);
       });
     },
 
 
-    newDistributionForm(index, row) {
-      this.idQuery.id = '';
-      if (this.$isNotBlank(row) && this.$isNotBlank(row.id)) {
-        this.idQuery.id = row.id;
-        this.idQuery.formData = row;
-        this.formName = "update";
+    newDistributionForm(_this, row) {
+      if(_this == null){
+        _this = this
+      }
+      _this.idQuery.id = '';
+      if (_this.$isNotBlank(row) && _this.$isNotBlank(row.id)) {
+        _this.idQuery.id = row.id;
+        _this.idQuery.formData = row;
+        _this.formName = "update";
       } else
-        this.formName = "add";
-      this.newSpDistributionVisible = true;
+        _this.formName = "add";
+      _this.newSpDistributionVisible = true;
     },
-
+    executeFuc(row,type,clickFuc,value){
+      return executeFuc(this,row,type,clickFuc,value);
+    },
+    executeEval(row,expression,defaultRet){
+      if(expression){
+        return eval(expression);
+      }
+      return defaultRet;
+    }
   }
   ,
   components: {
@@ -473,7 +736,22 @@ export default {
   }
   ,
   created() {
-    this.getDeptList();
+    this.getDeptList(this);
+    // this.finCorpList();
+    getHead("purPlan-1","1").then((re) => {
+      // 处理返回的数据
+      this.tableObj = re.data;
+      this.tableHeader = re.data.tableList;
+      this.queryList = re.data.queryList;
+      this.fromList = re.data.fromList;
+    });
+    getHead("purPlan-2","1").then((re) => {
+      // 处理返回的数据
+      this.tableObj2 = re.data;
+      this.tableHeader2 = re.data.tableList;
+      this.queryList2 = re.data.queryList;
+      this.fromList2 = re.data.fromList;
+    });
   }
   ,
 }
diff --git a/src/views/purchase/purPlan/purPlanAudit.vue b/src/views/purchase/purPlan/purPlanAudit.vue
index 511be713..be139aa3 100644
--- a/src/views/purchase/purPlan/purPlanAudit.vue
+++ b/src/views/purchase/purPlan/purPlanAudit.vue
@@ -1,70 +1,135 @@
 <template>
   <div>
     <el-card class="el-card">
-      <el-form :model="filterQuery" class="query-form" label-width="100px" v-show="showSearch">
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="采购单号">
-              <el-input v-model="filterQuery.billNo" style="width: 90%" placeholder="请输入单据号" clearable></el-input>
-            </el-form-item>
-          </el-col>
+      <el-form v-if="queryList && queryList.length > 0"  :model="filterQuery" class="query-form" label-width="100px" v-show="showSearch">
+<!--        <el-row>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="采购单号">-->
+<!--              <el-input v-model="filterQuery.billNo" style="width: 90%" placeholder="请输入单据号" clearable></el-input>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
 
-          <el-col :span="8">
-            <el-form-item label="采购部门">
-              <el-select v-model="filterQuery.deptCode" placeholder="请选择申购部门" @change="getInvList" style="width: 90%">
-                <el-option
-                  v-for="item in deptList"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                >
-                  <span style="float: left">{{ item.name }}</span>
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="采购部门">-->
+<!--              <el-select v-model="filterQuery.deptCode" placeholder="请选择申购部门" @change="getInvList" style="width: 90%">-->
+<!--                <el-option-->
+<!--                  v-for="item in deptList"-->
+<!--                  :key="item.code"-->
+<!--                  :label="item.name"-->
+<!--                  :value="item.code"-->
+<!--                >-->
+<!--                  <span style="float: left">{{ item.name }}</span>-->
+<!--                </el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="采购仓库">-->
+<!--              <el-select v-model="filterQuery.invCode" style="width: 90%"  placeholder="请选择所属仓库">-->
+<!--                <el-option-->
+<!--                  v-for="item in invList"-->
+<!--                  :key="item.name"-->
+<!--                  :label="item.name"-->
+<!--                  :value="item.code">-->
+<!--                  <span style="float: left">{{ item.name }}</span>-->
+<!--                </el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 
-          <el-col :span="8">
-            <el-form-item label="采购仓库">
-              <el-select v-model="filterQuery.invCode" style="width: 90%"  placeholder="请选择所属仓库">
+<!--        <el-row>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="紧急程度:" prop="emergency">-->
+<!--              <el-select v-model="filterQuery.emergency" placeholder="请选择紧急程度" style="width: 90%" clearable>-->
+<!--                <el-option label="正常" :value=1></el-option>-->
+<!--                <el-option label="较急" :value=2></el-option>-->
+<!--                <el-option label="特急" :value=3></el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="创建时间:">-->
+<!--              <el-date-picker-->
+<!--                :picker-options="pickerOptions"-->
+<!--                v-model="actDateRange"-->
+<!--                type="daterange"-->
+<!--                format="yyyy 年 MM 月 dd 日"-->
+<!--                style="width: 90%"-->
+<!--                value-format="yyyy-MM-dd"-->
+<!--                range-separator="至"-->
+<!--                start-placeholder="开始日期"-->
+<!--                end-placeholder="结束日期"-->
+<!--              >-->
+<!--              </el-date-picker>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+        <el-row style=" display:flex;  flex-wrap: wrap; ">
+          <template v-for="(item, index) in queryList" >
+            <el-form-item v-if="item.columnType == 'input' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`" :key="item.id">
+              <el-input
+                v-model="filterQuery[item.columnName]"
+                :placeholder="item.columnDesc"
+                :disabled="executeEval(null,item.disabledFuc,false)"
+                @keyup.enter.native="executeFuc($event,'5',item.clickFuc)"
+                clearable
+              ></el-input>
+            </el-form-item>
+            <el-form-item v-if="item.columnType == 'select' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
+              <el-select v-model="filterQuery[item.columnName]"
+                         :placeholder="item.columnDesc"
+                         :disabled="executeEval(null,item.disabledFuc,false)"
+                         clearable>
                 <el-option
-                  v-for="item in invList"
-                  :key="item.name"
-                  :label="item.name"
-                  :value="item.code">
-                  <span style="float: left">{{ item.name }}</span>
-                </el-option>
+                  v-for="dict in item.lableRuleObj"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                />
               </el-select>
             </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="紧急程度:" prop="emergency">
-              <el-select v-model="filterQuery.emergency" placeholder="请选择紧急程度" style="width: 90%" clearable>
-                <el-option label="正常" :value=1></el-option>
-                <el-option label="较急" :value=2></el-option>
-                <el-option label="特急" :value=3></el-option>
+            <el-form-item v-if="item.columnType == 'selectServer' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
+              <el-select
+                v-model="filterQuery[item.columnName]"
+                :placeholder="item.columnDesc"
+                :disabled="executeEval(null,item.disabledFuc,false)"
+                filterable
+                remote
+                :remote-method="(query) => executeFuc(query,'5',item.clickFuc)"
+                clearable>
+                <el-option
+                  v-for="item in options[item.clickFuc]"
+                  :key="item.code"
+                  :label="item.label"
+                  :value="item.code"
+                />
               </el-select>
             </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="创建时间:">
+            <el-form-item v-if="item.columnType == 'datePicker' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
               <el-date-picker
                 :picker-options="pickerOptions"
                 v-model="actDateRange"
                 type="daterange"
                 format="yyyy 年 MM 月 dd 日"
-                style="width: 90%"
                 value-format="yyyy-MM-dd"
                 range-separator="至"
                 start-placeholder="开始日期"
                 end-placeholder="结束日期"
-              >
-              </el-date-picker>
+              ></el-date-picker>
+            </el-form-item>
+            <el-form-item v-if="item.columnType == 'date' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
+              <el-date-picker
+                v-model="filterQuery[item.columnName]"
+                :style="`width:${item.width+'px'}`"
+                value-format="yyyy-MM-dd"
+                :disabled="executeEval(null,item.disabledFuc,false)"
+                type="date"
+                :placeholder="item.columnDesc"
+              ></el-date-picker>
             </el-form-item>
-          </el-col>
+          </template>
         </el-row>
       </el-form>
 
@@ -78,35 +143,123 @@
       <el-divider style="margin: 15px"></el-divider>
 
       <el-table v-loading="loading" :data="list" style="width: 100%" border highlight-current-row
-                @current-change="handleDetail" :default-sort="defaultSort"  @sort-change="handleSortChange">
-        <el-table-column label="序号" type="index" width="60"></el-table-column>
-        <el-table-column label="采购单号" prop="billNo"></el-table-column>
-        <el-table-column label="采购部门" prop="deptName"></el-table-column>
-        <el-table-column label="采购仓库" prop="invName"></el-table-column>
-        <el-table-column label="紧急程度" prop="emergency">
-          <template slot-scope="scope">
-            {{ emergencyMap[scope.row.emergency] }}
-          </template>
-        </el-table-column>
-        <el-table-column label="到货截止" prop="arrivalTime"></el-table-column>
-        <el-table-column label="单据状态" prop="status">
-          <template slot-scope="scope">
-            <el-tag :type="(scope.row.status) | statusFilterType">
-              {{ statusMap[scope.row.status] }}
-            </el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="createTime"
-                         sortable="custom" :sort-orders="['ascending', 'descending']"></el-table-column>
+                @current-change="(row) => executeFuc(row,'0',tableObj.handleChangeFuc)"
+                :default-sort="defaultSort"  @sort-change="handleSortChange">
+<!--        <el-table-column label="序号" type="index" width="60"></el-table-column>-->
+<!--        <el-table-column label="采购单号" prop="billNo"></el-table-column>-->
+<!--        <el-table-column label="采购部门" prop="deptName"></el-table-column>-->
+<!--        <el-table-column label="采购仓库" prop="invName"></el-table-column>-->
+<!--        <el-table-column label="紧急程度" prop="emergency">-->
+<!--          <template slot-scope="scope">-->
+<!--            {{ emergencyMap[scope.row.emergency] }}-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+<!--        <el-table-column label="到货截止" prop="arrivalTime"></el-table-column>-->
+<!--        <el-table-column label="单据状态" prop="status">-->
+<!--          <template slot-scope="scope">-->
+<!--            <el-tag :type="(scope.row.status) | statusFilterType">-->
+<!--              {{ statusMap[scope.row.status] }}-->
+<!--            </el-tag>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+<!--        <el-table-column label="创建时间" prop="createTime"-->
+<!--                         sortable="custom" :sort-orders="['ascending', 'descending']"></el-table-column>-->
 
 
-        <el-table-column label="操作" width="60px">
-          <template slot-scope="scope">
-            <el-button type="text" :disabled="scope.row.status!=2"
-                       @click.native="newDistributionForm(scope.$index, scope.row)">审核
-            </el-button>
-          </template>
-        </el-table-column>
+<!--        <el-table-column label="操作" width="60px">-->
+<!--          <template slot-scope="scope">-->
+<!--            <el-button type="text" :disabled="scope.row.status!=2"-->
+<!--                       @click.native="newDistributionForm(scope.$index, scope.row)">审核-->
+<!--            </el-button>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+        <template v-for="(item, index) in tableHeader">
+          <el-table-column
+            v-if="item.columnType == 'id' && executeEval(row,item.expression,true)"
+            type="index" :label="item.columnDesc"></el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'selection'"
+            type="selection"
+            :width="item.width"
+            :selectable="(row,number) => executeFuc(row,'3',item.clickFuc)"
+          ></el-table-column>
+
+          <el-table-column
+            v-if="item.columnType == 'radio' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template  slot-scope="scope">
+              <el-radio :label="scope.row.id" v-model="radioCheck"><span></span></el-radio>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'laber' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item.lableRuleObj[scope.row[item.columnName]])}">{{ item.lableRuleObj[scope.row[item.columnName]] }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'eltag' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <el-tag :type="executeFuc(scope.row,'4',item,item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName])">
+                <span>{{ item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName] }}</span>
+              </el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'button' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :width="item.width"
+            :key="item.columnName"
+            fixed="right"
+          >
+            <template slot-scope="scope">
+              <el-button v-for="(buttonItem, buttonIndex) in item.buttonRulObj"
+                         :type="buttonItem.type"
+                         :size="buttonItem.size"
+                         :style="buttonItem.style"
+                         :key="buttonItem"
+                         v-if="executeEval(scope.row,buttonItem.hasPermi,true)"
+                         :disabled="executeEval(scope.row,buttonItem.disabledFuc,false)"
+                         @click.native.stop="executeFuc(scope.row,'1',buttonItem.clickFuc)"
+              >{{ buttonItem.name }}
+              </el-button>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'text' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item,scope.row[item.columnName])}">{{ scope.row[item.columnName] }}</span>
+            </template>
+          </el-table-column>
+        </template>
       </el-table>
 
       <pagination
@@ -122,15 +275,102 @@
     </el-card>
     <el-card class="el-card">
       <el-table v-loading="loading" :data="detailList" style="width: 100%" border highlight-current-row>
-        <el-table-column label="序号" type="index" width="60"></el-table-column>
-        <el-table-column label="DI/物资编码" prop="nameCode"></el-table-column>
-        <el-table-column label="物资名称" prop="productName" show-overflow-tooltip="true"></el-table-column>
-        <el-table-column label="规格型号" prop="spec" show-overflow-tooltip="true"></el-table-column>
-        <el-table-column label="计量单位" prop="measname" show-overflow-tooltip="true" width="100"></el-table-column>
-        <el-table-column label="申购数量" prop="count"></el-table-column>
-        <el-table-column label="注册/备案号" prop="zczbhhzbapzbh"></el-table-column>
-        <el-table-column label="生产厂家" prop="manufactory"></el-table-column>
-        <el-table-column label="供应商" prop="supName"></el-table-column>
+<!--        <el-table-column label="序号" type="index" width="60"></el-table-column>-->
+<!--        <el-table-column label="DI/物资编码" prop="nameCode"></el-table-column>-->
+<!--        <el-table-column label="物资名称" prop="productName" show-overflow-tooltip="true"></el-table-column>-->
+<!--        <el-table-column label="规格型号" prop="spec" show-overflow-tooltip="true"></el-table-column>-->
+<!--        <el-table-column label="计量单位" prop="measname" show-overflow-tooltip="true" width="100"></el-table-column>-->
+<!--        <el-table-column label="申购数量" prop="count"></el-table-column>-->
+<!--        <el-table-column label="注册/备案号" prop="zczbhhzbapzbh"></el-table-column>-->
+<!--        <el-table-column label="生产厂家" prop="manufactory"></el-table-column>-->
+<!--        <el-table-column label="供应商" prop="supName"></el-table-column>-->
+        <template v-for="(item, index) in tableHeader2">
+          <el-table-column
+            v-if="item.columnType == 'id' && executeEval(row,item.expression,true)"
+            type="index" :label="item.columnDesc"></el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'selection'"
+            type="selection"
+            :width="item.width"
+            :selectable="(row,number) => executeFuc(row,'3',item.clickFuc)"
+          ></el-table-column>
+
+          <el-table-column
+            v-if="item.columnType == 'radio' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template  slot-scope="scope">
+              <el-radio :label="scope.row.id" v-model="radioCheck"><span></span></el-radio>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'laber' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item.lableRuleObj[scope.row[item.columnName]])}">{{ item.lableRuleObj[scope.row[item.columnName]] }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'eltag' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <el-tag :type="executeFuc(scope.row,'4',item,item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName])">
+                <span>{{ item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName] }}</span>
+              </el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'button' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :width="item.width"
+            :key="item.columnName"
+            fixed="right"
+          >
+            <template slot-scope="scope">
+              <el-button v-for="(buttonItem, buttonIndex) in item.buttonRulObj"
+                         :type="buttonItem.type"
+                         :size="buttonItem.size"
+                         :style="buttonItem.style"
+                         :key="buttonItem"
+                         v-if="executeEval(scope.row,buttonItem.hasPermi,true)"
+                         :disabled="executeEval(scope.row,buttonItem.disabledFuc,false)"
+                         @click.native.stop="executeFuc(scope.row,'1',buttonItem.clickFuc)"
+              >{{ buttonItem.name }}
+              </el-button>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'text' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item,scope.row[item.columnName])}">{{ scope.row[item.columnName] }}</span>
+            </template>
+          </el-table-column>
+        </template>
       </el-table>
     </el-card>
 
@@ -155,8 +395,11 @@
 import purPlanEdit from "./purPlanDetailDialog";
 import {delApply, auditListPlan, listApplyDetail} from "@/api/purchase/purPlan";
 import { getInvListByUser } from '@/api/system/invWarehouse'
-import { getDeptListByUser } from '@/api/auth/authDept'
-import {filterSubAll} from "@/api/system/invSubWarehouse";
+import {getDeptListByUser, getDeptListByUserOptimize} from '@/api/auth/authDept'
+import {filterSubAll, filterSubAllOptimize} from "@/api/system/invSubWarehouse";
+import {
+  getHead,executeFuc
+} from "@/utils/customConfig";
 
 export default {
   data() {
@@ -198,6 +441,16 @@ export default {
       idQuery: {},
       editType: 1,
       total: 0,
+      tableHeader:[],
+      queryList:[],
+      fromList:[],
+      tableHeader2:[],
+      queryList2:[],
+      fromList2:[],
+      options: {
+        getInvList:[],
+        getDeptList:[],
+      },
       thirdSys: [],
       thirdSysDetail: null,
       busTypes: [],
@@ -262,7 +515,7 @@ export default {
         deptCode: this.invCodebe,
         invCode:null
       };
-      this.getInvList()
+      this.getInvList(this)
       this.actDateRange = [];
       this.getList();
     },
@@ -313,21 +566,21 @@ export default {
           this.total = 0;
         });
     },
-    handleDetail(row) {
+    handleDetail(_this,row) {
       let query = {orderIdFk: row.id};
-      this.loading = true;
+      _this.loading = true;
       listApplyDetail(query) //查找该单号下的所有条码
         .then((response) => {
-          this.detailList = response.data.list || [];
-          this.loading = false;
+          _this.detailList = response.data.list || [];
+          _this.loading = false;
         })
         .catch(() => {
-          this.loading = false;
-          this.detailList = [];
+          _this.loading = false;
+          _this.detailList = [];
         });
     },
-    deleteDialog(row) {
-      this.$confirm("此操作将永久删除该单据, 是否继续?", "提示", {
+    deleteDialog(_this,row) {
+      _this.$confirm("此操作将永久删除该单据, 是否继续?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
@@ -335,16 +588,16 @@ export default {
         .then(() => {
           delApply(row.id)
             .then((response) => {
-              this.loading = false;
+              _this.loading = false;
               if (response.code == 20000) {
-                this.$message.success("删除成功");
-                this.getList();
+                _this.$message.success("删除成功");
+                _this.getList();
               } else {
-                this.$message.error(response.message);
+                _this.$message.error(response.message);
               }
             })
             .catch(() => {
-              this.loading = false;
+              _this.loading = false;
             });
 
         })
@@ -363,36 +616,45 @@ export default {
     },
 
 
-    newDistributionForm(index, row) {
-      this.idQuery.id = '';
-      if (this.$isNotBlank(row) && this.$isNotBlank(row.id)) {
-        this.idQuery.id = row.id;
-        this.idQuery.formData = row;
-        this.formName = "update";
+    newDistributionForm(_this, row) {
+      _this.idQuery.id = '';
+      if (_this.$isNotBlank(row) && _this.$isNotBlank(row.id)) {
+        _this.idQuery.id = row.id;
+        _this.idQuery.formData = row;
+        _this.formName = "update";
       } else
-        this.formName = "add";
-      this.newSpDistributionVisible = true;
+        _this.formName = "add";
+      _this.newSpDistributionVisible = true;
     },
-    getInvList() {
+    getInvList(_this) {
       var query={
-        parentId:this.filterQuery.deptCode
+        parentId:_this.filterQuery.deptCode
       }
-      this.filterQuery.invCode = null
-      filterSubAll(query).then((res) => {
-        this.invList = res.data || [];
+      _this.filterQuery.invCode = null
+      filterSubAllOptimize(query).then((res) => {
+        _this.options.getInvList = res.data || [];
       })
     },
-    getDeptList() {
-      getDeptListByUser().then((res) => {
-        this.deptList = res.data || [];
-        if(this.deptList.length>0){
-          this.filterQuery.deptCode=this.deptList[0].code
-          this.invCodebe=this.filterQuery.deptCode
+    getDeptList(_this) {
+      getDeptListByUserOptimize().then((res) => {
+        _this.options.getDeptList = res.data || [];
+        if( _this.options.getDeptList.length>0){
+          _this.filterQuery.deptCode= _this.options.getDeptList[0].code
+          _this.invCodebe=this.filterQuery.deptCode
         }
-        this.getList();
-        this. getInvList();
+        _this.getList();
+        _this.getInvList(_this);
       });
     },
+    executeFuc(row,type,clickFuc,value){
+      return executeFuc(this,row,type,clickFuc,value);
+    },
+    executeEval(row,expression,defaultRet){
+      if(expression){
+        return eval(expression);
+      }
+      return defaultRet;
+    }
   }
   ,
   components: {
@@ -414,7 +676,21 @@ export default {
   }
   ,
   created() {
-    this.getDeptList();
+    this.getDeptList(this);
+    getHead("purPlanAudit-1","1").then((re) => {
+      // 处理返回的数据
+      this.tableObj = re.data;
+      this.tableHeader = re.data.tableList;
+      this.queryList = re.data.queryList;
+      this.fromList = re.data.fromList;
+    });
+    getHead("purPlanAudit-2","1").then((re) => {
+      // 处理返回的数据
+      this.tableObj2 = re.data;
+      this.tableHeader2 = re.data.tableList;
+      this.queryList2 = re.data.queryList;
+      this.fromList2 = re.data.fromList;
+    });
   }
   ,
 }
diff --git a/src/views/purchase/purPlan/purPlanSearch.vue b/src/views/purchase/purPlan/purPlanSearch.vue
index 58ad5e25..696f2132 100644
--- a/src/views/purchase/purPlan/purPlanSearch.vue
+++ b/src/views/purchase/purPlan/purPlanSearch.vue
@@ -1,84 +1,161 @@
 <template>
   <div>
     <el-card>
-      <el-form :model="filterQuery" class="query-form" label-width="100px" size="mini" v-show="showSearch">
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="采购单号">
-              <el-input v-model="filterQuery.billNo" style="width: 90%"  placeholder="请输入采购单号" clearable></el-input>
+      <el-form v-if="queryList && queryList.length > 0"  :model="filterQuery" class="query-form" label-width="100px" size="mini" v-show="showSearch">
+<!--        <el-row>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="采购单号">-->
+<!--              <el-input v-model="filterQuery.billNo" style="width: 90%"  placeholder="请输入采购单号" clearable></el-input>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="采购部门">-->
+<!--              <el-select v-model="filterQuery.deptCode" @change="getInvList" placeholder="请选择采购部门" style="width: 90%">-->
+<!--                <el-option-->
+<!--                  v-for="item in deptList"-->
+<!--                  :key="item.code"-->
+<!--                  :label="item.name"-->
+<!--                  :value="item.code"-->
+<!--                >-->
+<!--                  <span style="float: left">{{ item.name }}</span>-->
+<!--                </el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="采购仓库">-->
+<!--              <el-select v-model="filterQuery.invCode" style="width: 90%" clearable placeholder="请选择所属仓库">-->
+<!--                <el-option-->
+<!--                  v-for="item in invList"-->
+<!--                  :key="item.name"-->
+<!--                  :label="item.name"-->
+<!--                  :value="item.code">-->
+<!--                  <span style="float: left">{{ item.name }}</span>-->
+<!--                </el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+
+<!--        <el-row>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="紧急程度:" prop="emergency">-->
+<!--              <el-select v-model="filterQuery.emergency" placeholder="请选择紧急程度" style="width: 90%" clearable>-->
+<!--                <el-option label="正常" :value=1></el-option>-->
+<!--                <el-option label="较急" :value=2></el-option>-->
+<!--                <el-option label="特急" :value=3></el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="创建时间:">-->
+<!--              <el-date-picker-->
+<!--                :picker-options="pickerOptions"-->
+<!--                v-model="actDateRange"-->
+<!--                type="daterange"-->
+<!--                format="yyyy 年 MM 月 dd 日"-->
+<!--                style="width: 90%"-->
+<!--                value-format="yyyy-MM-dd"-->
+<!--                range-separator="至"-->
+<!--                start-placeholder="开始日期"-->
+<!--                end-placeholder="结束日期"-->
+<!--              >-->
+<!--              </el-date-picker>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="审核时间:">-->
+<!--              <el-date-picker-->
+<!--                :picker-options="pickerAuditOptions"-->
+<!--                v-model="actAuditDateRange"-->
+<!--                type="daterange"-->
+<!--                format="yyyy 年 MM 月 dd 日"-->
+<!--                style="width: 90%"-->
+<!--                value-format="yyyy-MM-dd"-->
+<!--                range-separator="至"-->
+<!--                start-placeholder="开始日期"-->
+<!--                end-placeholder="结束日期"-->
+<!--              >-->
+<!--              </el-date-picker>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+        <el-row style=" display:flex;  flex-wrap: wrap; ">
+          <template v-for="(item, index) in queryList" >
+            <el-form-item v-if="item.columnType == 'input' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`" :key="item.id">
+              <el-input
+                v-model="filterQuery[item.columnName]"
+                :placeholder="item.columnDesc"
+                :disabled="executeEval(null,item.disabledFuc,false)"
+                @keyup.enter.native="executeFuc($event,'5',item.clickFuc)"
+                clearable
+              ></el-input>
             </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="采购部门">
-              <el-select v-model="filterQuery.deptCode" @change="getInvList" placeholder="请选择采购部门" style="width: 90%">
+            <el-form-item v-if="item.columnType == 'select' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
+              <el-select v-model="filterQuery[item.columnName]"
+                         :placeholder="item.columnDesc"
+                         :disabled="executeEval(null,item.disabledFuc,false)"
+                         clearable>
                 <el-option
-                  v-for="item in deptList"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                >
-                  <span style="float: left">{{ item.name }}</span>
-                </el-option>
+                  v-for="dict in item.lableRuleObj"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                />
               </el-select>
             </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="采购仓库">
-              <el-select v-model="filterQuery.invCode" style="width: 90%" clearable placeholder="请选择所属仓库">
+            <el-form-item v-if="item.columnType == 'selectServer' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
+              <el-select
+                v-model="filterQuery[item.columnName]"
+                :placeholder="item.columnDesc"
+                :disabled="executeEval(null,item.disabledFuc,false)"
+                filterable
+                remote
+                :remote-method="(query) => executeFuc(query,'5',item.clickFuc)"
+                clearable>
                 <el-option
-                  v-for="item in invList"
-                  :key="item.name"
-                  :label="item.name"
-                  :value="item.code">
-                  <span style="float: left">{{ item.name }}</span>
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="紧急程度:" prop="emergency">
-              <el-select v-model="filterQuery.emergency" placeholder="请选择紧急程度" style="width: 90%" clearable>
-                <el-option label="正常" :value=1></el-option>
-                <el-option label="较急" :value=2></el-option>
-                <el-option label="特急" :value=3></el-option>
+                  v-for="item in options[item.clickFuc]"
+                  :key="item.code"
+                  :label="item.label"
+                  :value="item.code"
+                />
               </el-select>
             </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="创建时间:">
+            <el-form-item v-if="item.columnType == 'datePicker' && item.columnName == 'actDateRange' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
               <el-date-picker
                 :picker-options="pickerOptions"
                 v-model="actDateRange"
                 type="daterange"
                 format="yyyy 年 MM 月 dd 日"
-                style="width: 90%"
                 value-format="yyyy-MM-dd"
                 range-separator="至"
                 start-placeholder="开始日期"
                 end-placeholder="结束日期"
-              >
-              </el-date-picker>
+              ></el-date-picker>
             </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="审核时间:">
+            <el-form-item v-if="item.columnType == 'datePicker' && item.columnName == 'actAuditDateRange' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
               <el-date-picker
-                :picker-options="pickerAuditOptions"
+                :picker-options="pickerOptions"
                 v-model="actAuditDateRange"
                 type="daterange"
                 format="yyyy 年 MM 月 dd 日"
-                style="width: 90%"
                 value-format="yyyy-MM-dd"
                 range-separator="至"
                 start-placeholder="开始日期"
                 end-placeholder="结束日期"
-              >
-              </el-date-picker>
+              ></el-date-picker>
             </el-form-item>
-          </el-col>
+            <el-form-item v-if="item.columnType == 'date' && executeEval(row,item.expression,true)" :label="item.columnDesc+`:`">
+              <el-date-picker
+                v-model="filterQuery[item.columnName]"
+                :style="`width:${item.width+'px'}`"
+                value-format="yyyy-MM-dd"
+                :disabled="executeEval(null,item.disabledFuc,false)"
+                type="date"
+                :placeholder="item.columnDesc"
+              ></el-date-picker>
+            </el-form-item>
+          </template>
         </el-row>
       </el-form>
 
@@ -93,36 +170,124 @@
 
 
       <el-table v-loading="loading" :data="list" style="width: 100%" border highlight-current-row="true"
-                @current-change="handleDetail"   :default-sort="defaultSort"    @sort-change="handleSortChange">
-        <el-table-column label="序号" type="index" width="60"></el-table-column>
-        <el-table-column label="采购计划单号" prop="billNo"></el-table-column>
-        <el-table-column label="采购部门" prop="deptName"></el-table-column>
-        <el-table-column label="采购仓库" prop="invName"></el-table-column>
-        <el-table-column label="紧急程度" prop="emergency">
-          <template slot-scope="scope">
-            {{ emergencyMap[scope.row.emergency] }}
-          </template>
-        </el-table-column>
-        <el-table-column label="到货截止" prop="arrivalTime"></el-table-column>
-        <el-table-column label="状态" prop="status">
-          <template slot-scope="scope">
-            <el-tag :type="(scope.row.status) | statusFilterType">
-              {{ statusMap[scope.row.status] }}
-            </el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="createTime"
-                         sortable="custom"   :sort-orders="['ascending', 'descending']"></el-table-column>
-        <el-table-column label="审核时间" prop="auditTime"
-                         sortable="custom"  :sort-orders="['ascending', 'descending']" ></el-table-column>
+                @current-change="(row) => executeFuc(row,'0',tableObj.handleChangeFuc)"
+                :default-sort="defaultSort"    @sort-change="handleSortChange">
+<!--        <el-table-column label="序号" type="index" width="60"></el-table-column>-->
+<!--        <el-table-column label="采购计划单号" prop="billNo"></el-table-column>-->
+<!--        <el-table-column label="采购部门" prop="deptName"></el-table-column>-->
+<!--        <el-table-column label="采购仓库" prop="invName"></el-table-column>-->
+<!--        <el-table-column label="紧急程度" prop="emergency">-->
+<!--          <template slot-scope="scope">-->
+<!--            {{ emergencyMap[scope.row.emergency] }}-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+<!--        <el-table-column label="到货截止" prop="arrivalTime"></el-table-column>-->
+<!--        <el-table-column label="状态" prop="status">-->
+<!--          <template slot-scope="scope">-->
+<!--            <el-tag :type="(scope.row.status) | statusFilterType">-->
+<!--              {{ statusMap[scope.row.status] }}-->
+<!--            </el-tag>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+<!--        <el-table-column label="创建时间" prop="createTime"-->
+<!--                         sortable="custom"   :sort-orders="['ascending', 'descending']"></el-table-column>-->
+<!--        <el-table-column label="审核时间" prop="auditTime"-->
+<!--                         sortable="custom"  :sort-orders="['ascending', 'descending']" ></el-table-column>-->
 
-        <el-table-column label="操作">
-          <template slot-scope="scope">
-            <el-button type="text" size="small" @click.native.stop="deleteDialog(scope.row)"
-            >删除
-            </el-button>
-          </template>
-        </el-table-column>
+<!--        <el-table-column label="操作">-->
+<!--          <template slot-scope="scope">-->
+<!--            <el-button type="text" size="small" @click.native.stop="deleteDialog(scope.row)"-->
+<!--            >删除-->
+<!--            </el-button>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+        <template v-for="(item, index) in tableHeader">
+          <el-table-column
+            v-if="item.columnType == 'id' && executeEval(row,item.expression,true)"
+            type="index" :label="item.columnDesc"></el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'selection'"
+            type="selection"
+            :width="item.width"
+            :selectable="(row,number) => executeFuc(row,'3',item.clickFuc)"
+          ></el-table-column>
+
+          <el-table-column
+            v-if="item.columnType == 'radio' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template  slot-scope="scope">
+              <el-radio :label="scope.row.id" v-model="radioCheck"><span></span></el-radio>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'laber' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item.lableRuleObj[scope.row[item.columnName]])}">{{ item.lableRuleObj[scope.row[item.columnName]] }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'eltag' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <el-tag :type="executeFuc(scope.row,'4',item,item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName])">
+                <span>{{ item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName] }}</span>
+              </el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'button' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :width="item.width"
+            :key="item.columnName"
+            fixed="right"
+          >
+            <template slot-scope="scope">
+              <el-button v-for="(buttonItem, buttonIndex) in item.buttonRulObj"
+                         :type="buttonItem.type"
+                         :size="buttonItem.size"
+                         :style="buttonItem.style"
+                         :key="buttonItem"
+                         v-if="executeEval(scope.row,buttonItem.hasPermi,true)"
+                         :disabled="executeEval(scope.row,buttonItem.disabledFuc,false)"
+                         @click.native.stop="executeFuc(scope.row,'1',buttonItem.clickFuc)"
+              >{{ buttonItem.name }}
+              </el-button>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'text' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item,scope.row[item.columnName])}">{{ scope.row[item.columnName] }}</span>
+            </template>
+          </el-table-column>
+        </template>
       </el-table>
 
 
@@ -138,15 +303,102 @@
     </el-card>
     <el-card class="el-card">
       <el-table v-loading="loading" :data="detailList" style="width: 100%" border highlight-current-row="true">
-        <el-table-column label="序号" type="index" width="60"></el-table-column>
-        <el-table-column label="DI/物资编码" prop="nameCode"></el-table-column>
-        <el-table-column label="物资名称" prop="productName" show-overflow-tooltip="true"></el-table-column>
-        <el-table-column label="规格型号" prop="spec" show-overflow-tooltip="true"></el-table-column>
-        <el-table-column label="计量单位" prop="measname" show-overflow-tooltip="true" width="100"></el-table-column>
-        <el-table-column label="申购数量" prop="count"></el-table-column>
-        <el-table-column label="注册/备案号" prop="zczbhhzbapzbh"></el-table-column>
-        <el-table-column label="生产厂家" prop="manufactory"></el-table-column>
-        <el-table-column label="供应商" prop="supName"></el-table-column>
+<!--        <el-table-column label="序号" type="index" width="60"></el-table-column>-->
+<!--        <el-table-column label="DI/物资编码" prop="nameCode"></el-table-column>-->
+<!--        <el-table-column label="物资名称" prop="productName" show-overflow-tooltip="true"></el-table-column>-->
+<!--        <el-table-column label="规格型号" prop="spec" show-overflow-tooltip="true"></el-table-column>-->
+<!--        <el-table-column label="计量单位" prop="measname" show-overflow-tooltip="true" width="100"></el-table-column>-->
+<!--        <el-table-column label="申购数量" prop="count"></el-table-column>-->
+<!--        <el-table-column label="注册/备案号" prop="zczbhhzbapzbh"></el-table-column>-->
+<!--        <el-table-column label="生产厂家" prop="manufactory"></el-table-column>-->
+<!--        <el-table-column label="供应商" prop="supName"></el-table-column>-->
+        <template v-for="(item, index) in tableHeader2">
+          <el-table-column
+            v-if="item.columnType == 'id' && executeEval(row,item.expression,true)"
+            type="index" :label="item.columnDesc"></el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'selection'"
+            type="selection"
+            :width="item.width"
+            :selectable="(row,number) => executeFuc(row,'3',item.clickFuc)"
+          ></el-table-column>
+
+          <el-table-column
+            v-if="item.columnType == 'radio' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template  slot-scope="scope">
+              <el-radio :label="scope.row.id" v-model="radioCheck"><span></span></el-radio>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'laber' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item.lableRuleObj[scope.row[item.columnName]])}">{{ item.lableRuleObj[scope.row[item.columnName]] }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'eltag' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template   slot-scope="scope">
+              <el-tag :type="executeFuc(scope.row,'4',item,item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName])">
+                <span>{{ item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName] }}</span>
+              </el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'button' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :width="item.width"
+            :key="item.columnName"
+            fixed="right"
+          >
+            <template slot-scope="scope">
+              <el-button v-for="(buttonItem, buttonIndex) in item.buttonRulObj"
+                         :type="buttonItem.type"
+                         :size="buttonItem.size"
+                         :style="buttonItem.style"
+                         :key="buttonItem"
+                         v-if="executeEval(scope.row,buttonItem.hasPermi,true)"
+                         :disabled="executeEval(scope.row,buttonItem.disabledFuc,false)"
+                         @click.native.stop="executeFuc(scope.row,'1',buttonItem.clickFuc)"
+              >{{ buttonItem.name }}
+              </el-button>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="item.columnType == 'text' && executeEval(row,item.expression,true)"
+            :prop="item.columnName"
+            :label="item.columnDesc"
+            :sortable="item.sort"
+            :width="item.width"
+            :show-overflow-tooltip="item.tooltip"
+            :key="item.columnName"
+          >
+            <template slot-scope="scope">
+              <span :style="{color: executeFuc(scope.row,'4',item,scope.row[item.columnName])}">{{ scope.row[item.columnName] }}</span>
+            </template>
+          </el-table-column>
+        </template>
       </el-table>
     </el-card>
 
@@ -173,8 +425,11 @@
 import purPlanEdit from "./purPlanDetailDialog";
 import {delApply, listPlan, listApplyDetail, delPlanDetailAll, delApplyDetail} from "@/api/purchase/purPlan";
 import { getInvListByUser } from '@/api/system/invWarehouse'
-import { getDeptListByUser } from '@/api/auth/authDept'
-import {filterSubAll} from "@/api/system/invSubWarehouse";
+import {getDeptListByUser, getDeptListByUserOptimize} from '@/api/auth/authDept'
+import {filterSubAll, filterSubAllOptimize} from "@/api/system/invSubWarehouse";
+import {
+  getHead,executeFuc
+} from "@/utils/customConfig";
 
 export default {
   data() {
@@ -216,6 +471,16 @@ export default {
       idQuery: {},
       editType: 1,
       total: 0,
+      tableHeader:[],
+      queryList:[],
+      fromList:[],
+      tableHeader2:[],
+      queryList2:[],
+      fromList2:[],
+      options: {
+        getInvList:[],
+        getDeptList:[],
+      },
       thirdSys: [],
       thirdSysDetail: null,
       busTypes: [],
@@ -310,7 +575,7 @@ export default {
         editStatus: 1,
         deptCode: this.invCodebe,
       };
-      this.getInvList();
+      this.getInvList(this);
       this.actDateRange = [];
       this.actAuditDateRange = [];
       this.getList();
@@ -369,22 +634,22 @@ export default {
           this.total = 0;
         });
     },
-    handleDetail(row) {
+    handleDetail(_this,row) {
       let query = {orderIdFk: row.id};
-      this.loading = true;
+      _this.loading = true;
       listApplyDetail(query) //查找该单号下的所有条码
         .then((response) => {
-          this.detailList = response.data.list || [];
-          this.loading = false;
+          _this.detailList = response.data.list || [];
+          _this.loading = false;
         })
         .catch(() => {
-          this.loading = false;
-          this.detailList = [];
-          this.total = 0;
+          _this.loading = false;
+          _this.detailList = [];
+          _this.total = 0;
         });
     },
-    deleteDialog(row) {
-      this.$confirm("此操作将永久删除该单据, 是否继续?", "提示", {
+    deleteDialog(_this,row) {
+      _this.$confirm("此操作将永久删除该单据, 是否继续?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
@@ -392,16 +657,16 @@ export default {
         .then(() => {
           delPlanDetailAll(row)
             .then((response) => {
-              this.loading = false;
+              _this.loading = false;
               if (response.code == 20000) {
-                this.$message.success("删除成功");
-                this.getList();
+                _this.$message.success("删除成功");
+                _this.getList();
               } else {
-                this.$message.error(response.message);
+                _this.$message.error(response.message);
               }
             })
             .catch(() => {
-              this.loading = false;
+              _this.loading = false;
             });
 
         })
@@ -418,37 +683,45 @@ export default {
       this.getList();
       this.detailList = [];
     },
-    getInvList() {
+    getInvList(_this) {
       var query={
-        parentId:this.filterQuery.deptCode
+        parentId:_this.filterQuery.deptCode
       }
-      filterSubAll(query).then((res) => {
-        this.invList = res.data || [];
+      filterSubAllOptimize(query).then((res) => {
+        _this.options.getInvList = res.data || [];
       })
     },
-    getDeptList() {
-      getDeptListByUser().then((res) => {
-        this.deptList = res.data || [];
-        if(this.deptList.length>0){
-          this.filterQuery.deptCode=this.deptList[0].code
-          this.invCodebe=this.filterQuery.deptCode
+    getDeptList(_this) {
+      getDeptListByUserOptimize().then((res) => {
+        _this.options.getDeptList = res.data || [];
+        if( _this.options.getDeptList.length>0){
+          _this.filterQuery.deptCode= _this.options.getDeptList[0].code
+          _this.invCodebe=this.filterQuery.deptCode
         }
-        this.getList();
-        this. getInvList();
+        _this.getList();
+        _this.getInvList(_this);
       });
     },
 
-    newDistributionForm(index, row) {
-      this.idQuery.id = '';
-      if (this.$isNotBlank(row) && this.$isNotBlank(row.id)) {
-        this.idQuery.id = row.id;
-        this.idQuery.formData = row;
-        this.formName = "update";
+    newDistributionForm(_this, row) {
+      _this.idQuery.id = '';
+      if (_this.$isNotBlank(row) && _this.$isNotBlank(row.id)) {
+        _this.idQuery.id = row.id;
+        _this.idQuery.formData = row;
+        _this.formName = "update";
       } else
-        this.formName = "add";
-      this.newSpDistributionVisible = true;
+        _this.formName = "add";
+      _this.newSpDistributionVisible = true;
     },
-
+    executeFuc(row,type,clickFuc,value){
+      return executeFuc(this,row,type,clickFuc,value);
+    },
+    executeEval(row,expression,defaultRet){
+      if(expression){
+        return eval(expression);
+      }
+      return defaultRet;
+    }
   }
   ,
   components: {
@@ -471,7 +744,21 @@ export default {
   }
   ,
   created() {
-    this.getDeptList();
+    this.getDeptList(this);
+    getHead("purPlanSearch-1","1").then((re) => {
+      // 处理返回的数据
+      this.tableObj = re.data;
+      this.tableHeader = re.data.tableList;
+      this.queryList = re.data.queryList;
+      this.fromList = re.data.fromList;
+    });
+    getHead("purPlanSearch-2","1").then((re) => {
+      // 处理返回的数据
+      this.tableObj2 = re.data;
+      this.tableHeader2 = re.data.tableList;
+      this.queryList2 = re.data.queryList;
+      this.fromList2 = re.data.fromList;
+    });
   }
   ,
 }