Browse Source

Merge branch 'dev' of http://172.16.100.139/new-business/drp-web into dev

002390 2 years ago
parent
commit
19541a4989

+ 18 - 0
src/api/purchase/DemandSummary.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request'
+
+// 采购需求汇总列表
+export function getSummaryList(data) {
+  return request({
+    url: `/pu/demand/summary/list?pageSize=${data.pageSize}&pageNum=${data.pageNum}`,
+    method: 'post',
+    data: data
+  })
+}
+// 采购需求汇总明细
+export function getSummaryDetail(data) {
+  return request({
+    url: `/pu/demand/summary/detail`,
+    method: 'post',
+    data: data
+  })
+}

+ 1 - 1
src/views/business/spd/bo/authority/index.vue

@@ -50,7 +50,7 @@
         </template>
       </el-table-column>
 
-      <el-table-column label="项目成员-新增" align="center" prop="taskAdd" >
+      <el-table-column label="任务-新增" align="center" prop="taskAdd" >
         <template slot-scope="scope">
           {{scope.row.taskAdd ? '√' : '×'}}
         </template>

+ 315 - 148
src/views/business/spd/bo/basic/index.vue

@@ -1,7 +1,14 @@
 <!-- 商机-列表 -->
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
       <el-form-item label="商机名称" prop="boName">
         <el-input
           v-model="queryParams.boName"
@@ -11,7 +18,11 @@
         />
       </el-form-item>
       <el-form-item label="商机类型" prop="boType">
-        <el-select v-model="queryParams.boType" placeholder="请输入商机类型" clearable>
+        <el-select
+          v-model="queryParams.boType"
+          placeholder="请输入商机类型"
+          clearable
+        >
           <el-option
             v-for="dict in dict.type.mk_bo_type"
             :key="dict.value"
@@ -21,7 +32,11 @@
         </el-select>
       </el-form-item>
       <el-form-item label="商机状态" prop="boState" clearable>
-        <el-select v-model="queryParams.boState" placeholder="请输入商机状态" clearable>
+        <el-select
+          v-model="queryParams.boState"
+          placeholder="请输入商机状态"
+          clearable
+        >
           <el-option
             v-for="dict in dict.type.mk_bo_state"
             :key="dict.value"
@@ -31,7 +46,11 @@
         </el-select>
       </el-form-item>
       <el-form-item label="商机来源" prop="boSource">
-        <el-select v-model="queryParams.boSource" placeholder="请输入商机来源" clearable>
+        <el-select
+          v-model="queryParams.boSource"
+          placeholder="请输入商机来源"
+          clearable
+        >
           <el-option
             v-for="dict in dict.type.mk_bo_source"
             :key="dict.value"
@@ -41,7 +60,11 @@
         </el-select>
       </el-form-item>
       <el-form-item label="商机阶段" prop="boStage">
-        <el-select v-model="queryParams.boStage" placeholder="请输入商机阶段" clearable>
+        <el-select
+          v-model="queryParams.boStage"
+          placeholder="请输入商机阶段"
+          clearable
+        >
           <el-option
             v-for="dict in dict.type.mk_bo_stage"
             :key="dict.value"
@@ -77,8 +100,16 @@
         />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
       </el-form-item>
     </el-form>
 
@@ -90,7 +121,8 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-        >新增</el-button>
+          >新增</el-button
+        >
       </el-col>
       <!-- <el-col :span="1.5">
         <el-button
@@ -112,75 +144,113 @@
           @click="handleDelete"
         >删除</el-button>
       </el-col> -->
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="basicList" @selection-change="handleSelectionChange" @cell-dblclick="enterDetails" >
+    <el-table
+      v-loading="loading"
+      :data="basicList"
+      @selection-change="handleSelectionChange"
+      @cell-dblclick="enterDetails"
+    >
       <el-table-column type="selection" align="center" />
       <el-table-column label="编号" align="center" prop="boCode" />
       <el-table-column label="商机名称" align="center" prop="boName" />
-      <el-table-column label="商机类型" align="center" prop="boType" >
+      <el-table-column label="商机类型" align="center" prop="boType">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.mk_bo_type" :value="scope.row.boType"/>
+          <dict-tag :options="dict.type.mk_bo_type" :value="scope.row.boType" />
         </template>
       </el-table-column>
-      <el-table-column label="商机状态" align="center" prop="boState" >
+      <el-table-column label="商机状态" align="center" prop="boState">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.mk_bo_state" :value="scope.row.boState"/>
+          <dict-tag
+            :options="dict.type.mk_bo_state"
+            :value="scope.row.boState"
+          />
         </template>
       </el-table-column>
-      <el-table-column label="商机来源" align="center" prop="boSource" >
+      <el-table-column label="商机来源" align="center" prop="boSource">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.mk_bo_source" :value="scope.row.boSource"/>
+          <dict-tag
+            :options="dict.type.mk_bo_source"
+            :value="scope.row.boSource"
+          />
         </template>
       </el-table-column>
-      <el-table-column label="商机阶段" align="center" prop="boStageName"/>
+      <el-table-column label="商机阶段" align="center" prop="boStageName" />
       <el-table-column label="客户名称" align="center" prop="customerName" />
-      <el-table-column label="医院耗材预估值(万元)" align="center" prop="hosDiscreetValue" />
+      <el-table-column
+        label="医院耗材预估值(万元)"
+        align="center"
+        prop="hosDiscreetValue"
+      />
       <el-table-column label="赢单率" align="center" prop="winningRate" />
-      <el-table-column label="赢单率状态" align="center" prop="winningState" >
+      <el-table-column label="赢单率状态" align="center" prop="winningState">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.mk_bo_winstate" :value="scope.row.winningState"/>
+          <dict-tag
+            :options="dict.type.mk_bo_winstate"
+            :value="scope.row.winningState"
+          />
         </template>
       </el-table-column>
-      <el-table-column label="销售区域" align="center" prop="marketingAreaName" />
-      <el-table-column label="销售组织" align="center" prop="marketingOrganizingName" />
+      <el-table-column
+        label="销售区域"
+        align="center"
+        prop="marketingAreaName"
+      />
+      <el-table-column
+        label="销售组织"
+        align="center"
+        prop="marketingOrganizingName"
+      />
       <el-table-column label="部门" align="center" prop="deptName" />
       <el-table-column label="商机负责人" align="center" prop="principalName" />
       <el-table-column label="创建人" align="center" prop="createBy" />
       <el-table-column label="创建时间" align="center" prop="createTime" />
-      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        fixed="right"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template slot-scope="scope">
           <el-button
             size="mini"
             type="text"
             icon="el-icon-search"
             @click="enterDetails(scope.row)"
-          >进入详情</el-button>
+            >进入详情</el-button
+          >
           <el-button
             size="mini"
             type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
-          >修改</el-button>
+            >修改</el-button
+          >
           <el-button
             size="mini"
             type="text"
             icon="el-icon-view"
             @click="handleBrowse(scope.row)"
-          >查看</el-button>
+            >查看</el-button
+          >
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
-          >删除</el-button>
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
 
     <pagination
-      v-show="total>0"
+      v-show="total > 0"
       :total="total"
       :page.sync="queryParams.pageNum"
       :limit.sync="queryParams.pageSize"
@@ -188,15 +258,32 @@
     />
 
     <!-- 添加或修改商机基础信息对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px" :disabled="this.form.winningState > 0 || this.operatingState == 'Browse'">
+    <el-dialog
+      :title="title"
+      :visible.sync="open"
+      width="1000px"
+      append-to-body
+    >
+      <el-form
+        ref="form"
+        :model="form"
+        :rules="rules"
+        label-width="80px"
+        :disabled="
+          this.form.winningState > 0 || this.operatingState == 'Browse'
+        "
+      >
         <el-divider content-position="left">
           <dev style="width: 50px; height: 40px; font-size: 18px">基本信息</dev>
         </el-divider>
         <el-row>
           <el-col :span="8">
             <el-form-item label="商机名称" prop="boName">
-              <el-input v-model="form.boName" placeholder="商机名称自动生成" :disabled="true"/>
+              <el-input
+                v-model="form.boName"
+                placeholder="商机名称自动生成"
+                :disabled="true"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -212,9 +299,20 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="推荐人" prop="referrerName" v-show="form.boSource == 2" :rules="form.boSource == 2 ? rules.referrer : [{require: false}]">
-              <el-input v-model="form.referrerName" placeholder="请输入推荐人" >
-                <el-button slot="append" icon="el-icon-more" @click="refereStaff"></el-button>
+            <el-form-item
+              label="推荐人"
+              prop="referrerName"
+              v-show="form.boSource == '2'"
+              :rules="
+                form.boSource == '2' ? rules.referrer : [{ require: false }]
+              "
+            >
+              <el-input v-model="form.referrerName" placeholder="请输入推荐人">
+                <el-button
+                  slot="append"
+                  icon="el-icon-more"
+                  @click="refereStaff"
+                ></el-button>
               </el-input>
             </el-form-item>
           </el-col>
@@ -222,7 +320,11 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="商机类型" prop="boType">
-              <el-select v-model="form.boType" placeholder="商机类型" :disabled = "this.operatingState == 'Update'">
+              <el-select
+                v-model="form.boType"
+                placeholder="商机类型"
+                :disabled="this.operatingState == 'Update'"
+              >
                 <el-option
                   v-for="dict in dict.type.mk_bo_type"
                   :key="dict.value"
@@ -234,14 +336,27 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="客户名称" prop="customerName">
-              <el-input v-model="form.customerName" placeholder="请输入客户" :disabled = "this.operatingState == 'Update'">
-                <el-button slot="append" icon="el-icon-more" @click="refereCustomer" :disabled = "this.operatingState == 'Update'"></el-button>
+              <el-input
+                v-model="form.customerName"
+                placeholder="请输入客户"
+                :disabled="this.operatingState == 'Update'"
+              >
+                <el-button
+                  slot="append"
+                  icon="el-icon-more"
+                  @click="refereCustomer"
+                  :disabled="this.operatingState == 'Update'"
+                ></el-button>
               </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="医院营收总额" prop="totalHosRevenue">
-              <el-select v-model="form.totalHosRevenue" placeholder="请输入医院营收总额">
+              <el-select
+                v-model="form.totalHosRevenue"
+                placeholder="请输入医院营收总额"
+                @change="totalHosRevenueChange"
+              >
                 <el-option
                   v-for="dict in dict.type.mk_bo_total_revenue"
                   :key="dict.value"
@@ -254,22 +369,29 @@
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="医院耗材预估值(万元)" prop="hosDiscreetValue">
-              <el-input type="number" v-model="form.hosDiscreetValue" placeholder="请输入医院耗材预估值" />
+            <el-form-item
+              label="医院耗材预估值(万元)"
+              prop="hosDiscreetValue"
+            >
+              <el-input
+                type="number"
+                v-model="form.hosDiscreetValue"
+                placeholder="请输入医院耗材预估值"
+              />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col>
-            <el-form-item label="商机内容"  prop="boContent">
+            <el-form-item label="商机内容" prop="boContent">
               <el-input
                 type="textarea"
-                maxlength=900
+                maxlength="900"
                 rows="2"
                 placeholder="请输入商机内容"
                 autosize
                 v-model="form.boContent"
-                >
+              >
               </el-input>
             </el-form-item>
           </el-col>
@@ -280,8 +402,15 @@
         <el-row>
           <el-col :span="6">
             <el-form-item label="销售区域" prop="marketingAreaName">
-              <el-input v-model="form.marketingAreaName" placeholder="请输入销售区域">
-                <el-button slot="append" icon="el-icon-more" @click="refereSaleaea"></el-button>
+              <el-input
+                v-model="form.marketingAreaName"
+                placeholder="请输入销售区域"
+              >
+                <el-button
+                  slot="append"
+                  icon="el-icon-more"
+                  @click="refereSaleaea"
+                ></el-button>
               </el-input>
             </el-form-item>
           </el-col>
@@ -309,7 +438,12 @@
         </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm" v-if="this.operatingState != 'Browse'">确 定</el-button>
+        <el-button
+          type="primary"
+          @click="submitForm"
+          v-if="this.operatingState != 'Browse'"
+          >确 定</el-button
+        >
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
@@ -326,11 +460,7 @@
       :single="true"
     />
     <!-- 组织参照 -->
-    <OrgRef
-      ref="orgSelect"
-      @doSubmit="orgSelectionsToInput"
-      :single="true"
-    />
+    <OrgRef ref="orgSelect" @doSubmit="orgSelectionsToInput" :single="true" />
     <!-- 部门参照 -->
     <DeptRef
       ref="deptSelect"
@@ -347,17 +477,30 @@
 </template>
 
 <script>
-import { listBasic, getBasic, addBasic, updateBasic, delBasic } from "@/api/business/spd/bo/basic";
-import CustomerRef from '@/views/business/spd/bo/refer/customer/index.vue';
-import SaleaeaRef from '@/views/business/spd/bo/refer/saleaea/index.vue';
-import OrgRef from '@/views/business/spd/bo/refer/org/index.vue';
-import DeptRef from '@/views/business/spd/bo/refer/dept/index.vue';
-import StaffRef from '@/views/business/spd/bo/refer/staff/index.vue';
+import {
+  listBasic,
+  getBasic,
+  addBasic,
+  updateBasic,
+  delBasic,
+} from "@/api/business/spd/bo/basic";
+import CustomerRef from "@/views/business/spd/bo/refer/customer/index.vue";
+import SaleaeaRef from "@/views/business/spd/bo/refer/saleaea/index.vue";
+import OrgRef from "@/views/business/spd/bo/refer/org/index.vue";
+import DeptRef from "@/views/business/spd/bo/refer/dept/index.vue";
+import StaffRef from "@/views/business/spd/bo/refer/staff/index.vue";
 
 export default {
   name: "Basic",
-  dicts: ['mk_bo_type','mk_bo_state','mk_bo_stage','mk_bo_source','mk_bo_total_revenue','mk_bo_winstate'],
-  components: {CustomerRef,SaleaeaRef,OrgRef,DeptRef,StaffRef},
+  dicts: [
+    "mk_bo_type",
+    "mk_bo_state",
+    "mk_bo_stage",
+    "mk_bo_source",
+    "mk_bo_total_revenue",
+    "mk_bo_winstate",
+  ],
+  components: { CustomerRef, SaleaeaRef, OrgRef, DeptRef, StaffRef },
   data() {
     return {
       // 遮罩层
@@ -379,7 +522,7 @@ export default {
       // 是否显示弹出层
       open: false,
       //当前操作状态
-      operatingState: '',
+      operatingState: "",
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -412,71 +555,43 @@ export default {
         createBy: null,
         createTime: null,
         updateBy: null,
-        updateTime: null
+        updateTime: null,
       },
       // 表单参数
-      form: {},
+      form: {
+        referrer: null,
+        referrerName: null,
+      },
       //表单校验
       rules: {
         boSource: [
-          { required: true, message: "商机来源不能为空", trigger: "blur" }
+          { required: true, message: "商机来源不能为空", trigger: "blur" },
         ],
         referrerName: [
-          { required: true, message: "推荐人不能为空", trigger: "blur" }
+          { required: true, message: "推荐人不能为空", trigger: "blur" },
         ],
         boType: [
-          { required: true, message: "商机类型不能为空", trigger: "blur" }
+          { required: true, message: "商机类型不能为空", trigger: "blur" },
         ],
         customerName: [
-          { required: true, message: "客户名称不能为空", trigger: "blur" }
+          { required: true, message: "客户名称不能为空", trigger: "blur" },
         ],
         totalHosRevenue: [
-          { required: true, message: "医院营收总额不能为空", trigger: "blur" }
+          { required: true, message: "医院营收总额不能为空", trigger: "blur" },
         ],
         hosDiscreetValue: [
-          { required: true, message: "医院耗材预估值不能为空", trigger: "blur" }
+          {
+            required: true,
+            message: "医院耗材预估值不能为空",
+            trigger: "blur",
+          },
         ],
         boContent: [
-          { required: true, message: "商机内容不能为空", trigger: "blur" }
+          { required: true, message: "商机内容不能为空", trigger: "blur" },
         ],
       },
     };
   },
-  //监听属性
-  watch:{
-    //阶段
-    'form.totalHosRevenue':{
-      handler(newName, oldName) {
-        switch(newName) {
-          //5000万以下
-          case '0':
-            this.form.hosDiscreetValue = 5000 * 0.2;
-            break;
-          //5000万-1亿
-          case '1':
-            this.form.hosDiscreetValue = 10000 * 0.2;
-            break;
-          //1亿-2亿
-          case '2':
-            this.form.hosDiscreetValue = 20000 * 0.2;
-            break;
-          //2亿-5亿
-          case '3':
-            this.form.hosDiscreetValue = 50000 * 0.2;
-            break;
-          //5亿-10亿
-          case '4':
-            this.form.hosDiscreetValue = 100000 * 0.2;
-            break;
-          //10亿以上
-          case '5':
-            this.form.hosDiscreetValue = 100000 * 0.2;
-            break;
-        }
-      },
-      immediate: true,
-    },
-  },
   created() {
     this.getList();
   },
@@ -484,16 +599,29 @@ export default {
     /** 查询商机基础信息列表 */
     getList() {
       this.loading = true;
-      listBasic(this.queryParams).then(response => {
+      listBasic(this.queryParams).then((response) => {
         this.basicList = response.rows;
         //对商机名称进行加*
         console.log(this.basicList);
         for (var i = 0; i < this.basicList.length; i++) {
-          var arr = this.basicList[i].boName.split('-');
-          this.basicList[i].boName = arr[0] + '-' + arr[1].substring(0,2) + '******' + arr[1].substring(arr[1].length - 2,arr[1].length) + '-' + arr[2];
+          var arr = this.basicList[i].boName.split("-");
+          this.basicList[i].boName =
+            arr[0] +
+            "-" +
+            arr[1].substring(0, 2) +
+            "******" +
+            arr[1].substring(arr[1].length - 2, arr[1].length) +
+            "-" +
+            arr[2];
 
           var customerName = this.basicList[i].customerName;
-          this.basicList[i].customerName = customerName.substring(0,2) + '******' + customerName.substring(customerName.length - 2,customerName.length);
+          this.basicList[i].customerName =
+            customerName.substring(0, 2) +
+            "******" +
+            customerName.substring(
+              customerName.length - 2,
+              customerName.length
+            );
         }
         this.total = response.total;
         this.loading = false;
@@ -535,7 +663,7 @@ export default {
         createBy: null,
         createTime: null,
         updateBy: null,
-        updateTime: null
+        updateTime: null,
       };
       this.resetForm("form");
     },
@@ -551,34 +679,35 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
     },
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
       this.open = true;
       this.operatingState = "Insert";
-      this.form.principal = this.$store.state.user.id;
-      this.form.principalName = this.$store.state.user.nickName;
-      this.form.dept = this.$store.state.user.deptId;
-      this.form.deptName = this.$store.state.user.deptName;
-      this.form.marketingOrganizing = this.$store.state.user.orgId;
-      this.form.marketingOrganizingName = this.$store.state.user.orgName;
+      const { id, orgId, deptId, nickName, deptName, orgName } = this.$store.state.user;
+      this.form.principal = id;
+      this.form.principalName = nickName;
+      this.form.dept = deptId;
+      this.form.deptName = deptName;
+      this.form.marketingOrganizing = orgId;
+      this.form.marketingOrganizingName = orgName;
       this.title = "添加商机基础信息";
     },
     /** 进入详情按钮操作 */
     enterDetails(row) {
-      console.log('列数据:',row);
+      console.log("列数据:", row);
       this.$router.push(`/basic/spd/bo/basic/details/${row.id}`);
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids
-      getBasic(id).then(response => {
-        this.form = response.data;
+      const id = row.id || this.ids;
+      getBasic(id).then((response) => {
+        this.form = { ...this.form, ...response.data };
         this.open = true;
         this.operatingState = "Update";
         this.title = "修改商机基础信息";
@@ -587,8 +716,8 @@ export default {
     /** 查看按钮操作 */
     handleBrowse(row) {
       this.reset();
-      const id = row.id || this.ids
-      getBasic(id).then(response => {
+      const id = row.id || this.ids;
+      getBasic(id).then((response) => {
         this.form = response.data;
         this.open = true;
         this.operatingState = "Browse";
@@ -597,16 +726,16 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.id != null) {
-            updateBasic(this.form).then(response => {
+            updateBasic(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addBasic(this.form).then(response => {
+            addBasic(this.form).then((response) => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -618,64 +747,102 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除商机基础信息编号为"' + ids + '"的数据项?').then(function() {
-        return delBasic(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      this.$modal
+        .confirm('是否确认删除商机基础信息编号为"' + ids + '"的数据项?')
+        .then(function () {
+          return delBasic(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('system/basic/export', {
-        ...this.queryParams
-      }, `basic_${new Date().getTime()}.xlsx`)
+      this.download(
+        "system/basic/export",
+        {
+          ...this.queryParams,
+        },
+        `basic_${new Date().getTime()}.xlsx`
+      );
+    },
+    //选择医院营收总额后
+    totalHosRevenueChange(value) {
+      switch (value) {
+        //5000万以下
+        case "0":
+          this.form.hosDiscreetValue = 5000 * 0.2;
+          break;
+        //5000万-1亿
+        case "1":
+          this.form.hosDiscreetValue = 10000 * 0.2;
+          break;
+        //1亿-2亿
+        case "2":
+          this.form.hosDiscreetValue = 20000 * 0.2;
+          break;
+        //2亿-5亿
+        case "3":
+          this.form.hosDiscreetValue = 50000 * 0.2;
+          break;
+        //5亿-10亿
+        case "4":
+          this.form.hosDiscreetValue = 100000 * 0.2;
+          break;
+        //10亿以上
+        case "5":
+          this.form.hosDiscreetValue = 100000 * 0.2;
+          break;
+      }
     },
     // 触发客户参照列表
     refereCustomer() {
-      this.$refs.customerSelect.init()
+      this.$refs.customerSelect.init();
     },
     //客户参照列表选择后
-    customerSelectionsToInput (selections) {
+    customerSelectionsToInput(selections) {
       this.form.customer = selections[0].id;
       this.form.customerName = selections[0].name;
     },
     // 触发销售区域参照列表
     refereSaleaea() {
-      this.$refs.saleaeaSelect.init()
+      this.$refs.saleaeaSelect.init();
     },
     //销售区域参照列表选择后
-    saleaeaSelectionsToInput (selections) {
+    saleaeaSelectionsToInput(selections) {
       this.form.marketingArea = selections[0].id;
       this.form.marketingAreaName = selections[0].name;
     },
     // 触发组织参照列表
     refereOrg() {
-      this.$refs.orgSelect.init()
+      this.$refs.orgSelect.init();
     },
     //组织参照列表选择后
-    orgSelectionsToInput (selections) {
+    orgSelectionsToInput(selections) {
       this.form.marketingOrganizing = selections[0].deptId;
       this.form.marketingOrganizingName = selections[0].deptName;
     },
     // 触发部门参照列表
     refereDept() {
-      this.$refs.deptSelect.init()
+      this.$refs.deptSelect.init();
     },
     //部门参照列表选择后
-    deptSelectionsToInput (selections) {
+    deptSelectionsToInput(selections) {
       this.form.dept = selections[0].deptId;
       this.form.deptName = selections[0].deptName;
     },
     // 触发员工参照列表
     refereStaff() {
-      this.$refs.staffSelect.init()
+      this.$refs.staffSelect.init();
     },
     //员工参照列表选择后
-    staffSelectionsToInput (selections) {
+    staffSelectionsToInput(selections) {
       this.form.referrer = selections[0].userId;
       this.form.referrerName = selections[0].nickName;
-    }
-  }
+      console.log("this.form", this.form);
+    },
+  },
 };
 </script>

+ 41 - 61
src/views/business/spd/bo/basic/process.vue

@@ -97,18 +97,16 @@
         <el-form :inline="true" :disabled="!isUpdate" :model="form.boFlow" >
           <el-form-item label="考察开始时间" prop="inspectStartTime">
             <el-date-picker
+              value-format="yyyy-MM-dd"
               v-model="form.boFlow.inspectStartTime"
-              type="datetime"
-              placeholder="选择日期时间"
               :disabled="!isUpdate"
             >
             </el-date-picker>
           </el-form-item>
           <el-form-item label="考察结束时间" prop="inspectStartTime">
             <el-date-picker
+              value-format="yyyy-MM-dd"
               v-model="form.boFlow.inspectEndTime"
-              type="datetime"
-              placeholder="选择日期时间"
               :disabled="!isUpdate"
             >
             </el-date-picker>
@@ -132,9 +130,8 @@
         <el-form :inline="true" :disabled="!isUpdate" :model="form.boFlow">
           <el-form-item label="开院务会时间" prop="conferenceTime">
             <el-date-picker
+              value-format="yyyy-MM-dd"
               v-model="form.boFlow.conferenceTime"
-              type="datetime"
-              placeholder="选择日期时间"
             >
             </el-date-picker>
           </el-form-item>
@@ -151,9 +148,8 @@
                 label-width="100px"
               >
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.boFlow.hospitalApprovalTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -180,6 +176,7 @@
             <el-col :span="8">
               <el-form-item label="调研时间" prop="researchTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.boFlow.researchTime"
                   type="datetime"
                   placeholder="选择日期时间"
@@ -206,9 +203,8 @@
             <el-col :span="8">
               <el-form-item label="挂网时间" prop="researchTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.boFlow.hangingTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -244,7 +240,7 @@
             <el-col :span="8">
               <el-form-item label="我方优势" prop="ourAdvantage">
                 <el-input
-                  v-model="form.ourAdvantage"
+                  v-model="form.boFlow.ourAdvantage"
                   placeholder="我方优势"
                 />
               </el-form-item>
@@ -254,7 +250,7 @@
             <el-col :span="8">
               <el-form-item label="我方劣势" prop="ourAdvantage">
                 <el-input
-                  v-model="form.ourAdvantage"
+                  v-model="form.boFlow.ourAdvantage"
                   placeholder="我方劣势"
                 />
               </el-form-item>
@@ -278,9 +274,8 @@
             <el-col :span="8">
               <el-form-item label="合同签订时间" prop="contractSigningTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.boFlow.contractSigningTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -390,10 +385,7 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="医院决策时间" prop="hospitalDecisionTime" >
-                <el-date-picker
-                  v-model="form.consumablesBoFlow.hospitalDecisionTime"
-                  type="date"
-                  placeholder="选择日期">
+                <el-date-picker   value-format="yyyy-MM-dd" v-model="form.consumablesBoFlow.hospitalDecisionTime">
                 </el-date-picker>
               </el-form-item>
             </el-col>
@@ -407,9 +399,8 @@
             <el-col :span="8">
               <el-form-item label="挂网时间" prop="researchTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.consumablesBoFlow.hangingTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -445,7 +436,7 @@
             <el-col :span="8">
               <el-form-item label="我方优势" prop="ourAdvantage">
                 <el-input
-                  v-model="form.ourAdvantage"
+                  v-model="form.consumablesBoFlow.ourAdvantage"
                   placeholder="我方优势"
                 />
               </el-form-item>
@@ -455,7 +446,7 @@
             <el-col :span="8">
               <el-form-item label="我方劣势" prop="ourAdvantage">
                 <el-input
-                  v-model="form.ourAdvantage"
+                  v-model="form.consumablesBoFlow.ourAdvantage"
                   placeholder="我方劣势"
                 />
               </el-form-item>
@@ -474,14 +465,13 @@
         </el-form>
       </el-tab-pane>
       <el-tab-pane label="合同签订" name="t10602" style="height: 200px; overflow-y: scroll" v-if="tabsName.t10602">
-        <el-form :model="form.consumablesBoFlow">
+        <el-form :disabled="!isUpdate" :model="form.consumablesBoFlow">
           <el-row>
             <el-col :span="8">
               <el-form-item label="合同签订时间" prop="contractSigningTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.consumablesBoFlow.contractSigningTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -614,9 +604,8 @@
             <el-col :span="8">
               <el-form-item label="医院决策时间" prop="hospitalDecisionTime" >
                 <el-date-picker
-                  v-model="form.medicalBoFlow.hospitalDecisionTime"
-                  type="date"
-                  placeholder="选择日期">
+                  value-format="yyyy-MM-dd"
+                  v-model="form.medicalBoFlow.hospitalDecisionTime">
                 </el-date-picker>
               </el-form-item>
             </el-col>
@@ -630,9 +619,8 @@
             <el-col :span="8">
               <el-form-item label="挂网时间" prop="researchTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.medicalBoFlow.hangingTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -668,7 +656,7 @@
             <el-col :span="8">
               <el-form-item label="我方优势" prop="ourAdvantage">
                 <el-input
-                  v-model="form.ourAdvantage"
+                  v-model="form.medicalBoFlow.ourAdvantage"
                   placeholder="我方优势"
                 />
               </el-form-item>
@@ -678,7 +666,7 @@
             <el-col :span="8">
               <el-form-item label="我方劣势" prop="ourAdvantage">
                 <el-input
-                  v-model="form.ourAdvantage"
+                  v-model="form.medicalBoFlow.ourAdvantage"
                   placeholder="我方劣势"
                 />
               </el-form-item>
@@ -702,9 +690,8 @@
             <el-col :span="8">
               <el-form-item label="合同签订时间" prop="contractSigningTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.medicalBoFlow.contractSigningTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -798,9 +785,8 @@
           <el-col :span="1.5">
             <el-form-item label="谈判产品日期" prop="negotiationTime" >
               <el-date-picker
-                v-model="form.armariumBoFlow.negotiationTime"
-                type="date"
-                placeholder="选择日期">
+                value-format="yyyy-MM-dd"
+                v-model="form.armariumBoFlow.negotiationTime">
               </el-date-picker>
             </el-form-item>
           </el-col>
@@ -825,15 +811,15 @@
           </el-form-item>
           <el-form-item label="授权开始时间" prop="impowerStartTime" >
             <el-date-picker
+              value-format="yyyy-MM-dd"
               v-model="form.armariumBoFlow.impowerStartTime"
-              type="date"
             >
             </el-date-picker>
           </el-form-item>
           <el-form-item label="授权结束时间" prop="impowerEndTime" >
             <el-date-picker
+              value-format="yyyy-MM-dd"
               v-model="form.armariumBoFlow.impowerEndTime"
-              type="date"
             >
             </el-date-picker>
           </el-form-item>
@@ -857,9 +843,8 @@
             <el-col :span="8">
               <el-form-item label="挂网时间" prop="researchTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.armariumBoFlow.hangingTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -895,7 +880,7 @@
             <el-col :span="8">
               <el-form-item label="我方优势" prop="ourAdvantage">
                 <el-input
-                  v-model="form.ourAdvantage"
+                  v-model="form.armariumBoFlow.ourAdvantage"
                   placeholder="我方优势"
                 />
               </el-form-item>
@@ -905,7 +890,7 @@
             <el-col :span="8">
               <el-form-item label="我方劣势" prop="ourAdvantage">
                 <el-input
-                  v-model="form.ourAdvantage"
+                  v-model="form.armariumBoFlow.ourAdvantage"
                   placeholder="我方劣势"
                 />
               </el-form-item>
@@ -929,8 +914,8 @@
             <el-col :span="8">
               <el-form-item label="合同签订时间" prop="contractSigningTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.armariumBoFlow.contractSigningTime"
-                  type="datetime"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -1024,9 +1009,8 @@
           <el-col :span="1.5">
             <el-form-item label="谈判产品日期" prop="negotiationTime" >
               <el-date-picker
-                v-model="form.amfBoFlow.negotiationTime"
-                type="date"
-                placeholder="选择日期">
+                value-format="yyyy-MM-dd"
+                v-model="form.amfBoFlow.negotiationTime">
               </el-date-picker>
             </el-form-item>
           </el-col>
@@ -1051,16 +1035,14 @@
           </el-form-item>
           <el-form-item label="授权开始时间" prop="impowerStartTime" >
             <el-date-picker
-              v-model="form.amfBoFlow.impowerStartTime"
-              type="date"
-              placeholder="选择日期">
+              value-format="yyyy-MM-dd"
+              v-model="form.amfBoFlow.impowerStartTime">
             </el-date-picker>
           </el-form-item>
           <el-form-item label="授权结束时间" prop="impowerEndTime" >
             <el-date-picker
-              v-model="form.amfBoFlow.impowerEndTime"
-              type="date"
-              placeholder="选择日期">
+              value-format="yyyy-MM-dd"
+              v-model="form.amfBoFlow.impowerEndTime">
             </el-date-picker>
           </el-form-item>
         </el-form>
@@ -1083,9 +1065,8 @@
             <el-col :span="8">
               <el-form-item label="挂网时间" prop="researchTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.amfBoFlow.hangingTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -1121,7 +1102,7 @@
             <el-col :span="8">
               <el-form-item label="我方优势" prop="ourAdvantage">
                 <el-input
-                  v-model="form.ourAdvantage"
+                  v-model="form.amfBoFlow.ourAdvantage"
                   placeholder="我方优势"
                 />
               </el-form-item>
@@ -1131,7 +1112,7 @@
             <el-col :span="8">
               <el-form-item label="我方劣势" prop="ourAdvantage">
                 <el-input
-                  v-model="form.ourAdvantage"
+                  v-model="form.amfBoFlow.ourAdvantage"
                   placeholder="我方劣势"
                 />
               </el-form-item>
@@ -1155,9 +1136,8 @@
             <el-col :span="8">
               <el-form-item label="合同签订时间" prop="contractSigningTime">
                 <el-date-picker
+                  value-format="yyyy-MM-dd"
                   v-model="form.amfBoFlow.contractSigningTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -1562,7 +1542,7 @@ export default {
           this.activeName = 't30401';
           this.tabsName.t30401 = true;
           this.tabsName.t30501 = true;
-          this.tabsName.t30601 = true;
+          // this.tabsName.t30601 = true;
           this.tabsName.A = true;
           break;
         case '3-07':
@@ -1599,7 +1579,7 @@ export default {
           this.activeName = 't40401';
           this.tabsName.t40401 = true;
           this.tabsName.t40501 = true;
-          this.tabsName.t40601 = true;
+          // this.tabsName.t40601 = true;
           this.tabsName.A = true;
           break;
         case '4-07':

+ 0 - 231
src/views/business/spd/bo/behavior/AA copy.vue

@@ -1,231 +0,0 @@
-<template>
-  <div class="component-upload-image">
-    <el-upload
-      multiple
-      :action="uploadImgUrl"
-      :auto-upload="false"
-      list-type="picture-card"
-      :on-success="handleUploadSuccess"
-      :before-upload="handleBeforeUpload"
-      :limit="limit"
-      :on-error="handleUploadError"
-      :on-exceed="handleExceed"
-      ref="imageUpload"
-      :on-remove="handleDelete"
-      :show-file-list="true"
-      :headers="headers"
-      :file-list="fileList"
-      :on-preview="handlePictureCardPreview"
-      :class="{hide: this.fileList.length >= this.limit}"
-    >
-      <i class="el-icon-plus"></i>
-    </el-upload>
-    
-    <!-- 上传提示 -->
-    <div class="el-upload__tip" slot="tip" v-if="showTip">
-      请上传
-      <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
-      <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
-      的文件
-    </div>
-
-    <el-dialog
-      :visible.sync="dialogVisible"
-      title="预览"
-      width="800"
-      append-to-body
-    >
-      <img
-        :src="dialogImageUrl"
-        style="display: block; max-width: 100%; margin: 0 auto"
-      />
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { getToken } from "@/utils/auth";
-
-export default {
-  props: {
-    value: [String, Object, Array],
-    // 图片数量限制
-    limit: {
-      type: Number,
-      default: 5,
-    },
-    // 大小限制(MB)
-    fileSize: {
-       type: Number,
-      default: 5,
-    },
-    // 文件类型, 例如['png', 'jpg', 'jpeg']
-    fileType: {
-      type: Array,
-      default: () => ["png", "jpg", "jpeg"],
-    },
-    // 是否显示提示
-    isShowTip: {
-      type: Boolean,
-      default: true
-    }
-  },
-  model: {
-    prop: 'fileList',
-    event: 'editFileList'
-  },
-  data() {
-    return {
-      number: 0,
-      uploadList: [],
-      dialogImageUrl: "",
-      dialogVisible: false,
-      hideUpload: false,
-      baseUrl: process.env.VUE_APP_BASE_API,
-      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
-      headers: {
-        Authorization: "Bearer " + getToken(),
-      },
-      // fileList: []
-    };
-  },
-  watch: {
-    value: {
-      handler(val) {
-        if (val) {
-          // 首先将值转为数组
-          const list = Array.isArray(val) ? val : this.value.split(',');
-          // 然后将数组转为对象数组
-          this.fileList = list.map(item => {
-            if (typeof item === "string") {
-              if (item.indexOf(this.baseUrl) === -1) {
-                  item = { name: this.baseUrl + item, url: this.baseUrl + item };
-              } else {
-                  item = { name: item, url: item };
-              }
-            }
-            return item;
-          });
-        } else {
-          this.fileList = [];
-          return [];
-        }
-      },
-      deep: true,
-      immediate: true
-    }
-  },
-  computed: {
-    // 是否显示提示
-    showTip() {
-      return this.isShowTip && (this.fileType || this.fileSize);
-    },
-  },
-  methods: {
-    // 上传前loading加载
-    handleBeforeUpload(file) {
-      let isImg = false;
-      if (this.fileType.length) {
-        let fileExtension = "";
-        if (file.name.lastIndexOf(".") > -1) {
-          fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
-        }
-        isImg = this.fileType.some(type => {
-          if (file.type.indexOf(type) > -1) return true;
-          if (fileExtension && fileExtension.indexOf(type) > -1) return true;
-          return false;
-        });
-      } else {
-        isImg = file.type.indexOf("image") > -1;
-      }
-
-      if (!isImg) {
-        this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`);
-        return false;
-      }
-      if (this.fileSize) {
-        const isLt = file.size / 1024 / 1024 < this.fileSize;
-        if (!isLt) {
-          this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
-          return false;
-        }
-      }
-      this.$modal.loading("正在上传图片,请稍候...");
-      this.number++;
-    },
-    // 文件个数超出
-    handleExceed() {
-      this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
-    },
-    // 上传成功回调
-    handleUploadSuccess(res, file) {
-      if (res.code === 200) {
-        this.uploadList.push({ name: res.fileName, url: res.fileName });
-        this.uploadedSuccessfully();
-      } else {
-        this.number--;
-        this.$modal.closeLoading();
-        this.$modal.msgError(res.msg);
-        this.$refs.imageUpload.handleRemove(file);
-        this.uploadedSuccessfully();
-      }
-    },
-    // 删除图片
-    handleDelete(file) {
-      const findex = this.fileList.map(f => f.name).indexOf(file.name);
-      if(findex > -1) {
-        this.fileList.splice(findex, 1);
-        this.$emit("input", this.listToString(this.fileList));
-      }
-    },
-    // 上传失败
-    handleUploadError() {
-      this.$modal.msgError("上传图片失败,请重试");
-      this.$modal.closeLoading();
-    },
-    // 上传结束处理
-    uploadedSuccessfully() {
-      if (this.number > 0 && this.uploadList.length === this.number) {
-        this.fileList = this.fileList.concat(this.uploadList);
-        this.uploadList = [];
-        this.number = 0;
-        this.$emit("input", this.listToString(this.fileList));
-        this.$modal.closeLoading();
-      }
-    },
-    // 预览
-    handlePictureCardPreview(file) {
-      this.dialogImageUrl = file.url;
-      this.dialogVisible = true;
-    },
-    // 对象转成指定字符串分隔
-    listToString(list, separator) {
-      let strs = "";
-      separator = separator || ",";
-      for (let i in list) {
-        if (list[i].url) {
-          strs += list[i].url.replace(this.baseUrl, "") + separator;
-        }
-      }
-      return strs != '' ? strs.substr(0, strs.length - 1) : '';
-    }
-  }
-};
-</script>
-<style scoped lang="scss">
-// .el-upload--picture-card 控制加号部分
-::v-deep.hide .el-upload--picture-card {
-    display: none;
-}
-// 去掉动画效果
-::v-deep .el-list-enter-active,
-::v-deep .el-list-leave-active {
-    transition: all 0s;
-}
-
-::v-deep .el-list-enter, .el-list-leave-active {
-    opacity: 0;
-    transform: translateY(0);
-}
-</style>
-

+ 0 - 230
src/views/business/spd/bo/behavior/AA.vue

@@ -1,230 +0,0 @@
-<template>
-  <div class="component-upload-image">
-    <el-upload
-      multiple
-      :action="uploadImgUrl"
-      list-type="picture-card"
-      :on-success="handleUploadSuccess"
-      :before-upload="handleBeforeUpload"
-      :limit="limit"
-      :on-error="handleUploadError"
-      :on-exceed="handleExceed"
-      ref="imageUpload"
-      :on-remove="handleDelete"
-      :show-file-list="true"
-      :headers="headers"
-      :file-list="fileList"
-      :on-preview="handlePictureCardPreview"
-      :class="{hide: this.fileList.length >= this.limit}"
-    >
-      <i class="el-icon-plus"></i>
-    </el-upload>
-    
-    <!-- 上传提示 -->
-    <div class="el-upload__tip" slot="tip" v-if="showTip">
-      请上传
-      <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
-      <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
-      的文件
-    </div>
-
-    <el-dialog
-      :visible.sync="dialogVisible"
-      title="预览"
-      width="800"
-      append-to-body
-    >
-      <img
-        :src="dialogImageUrl"
-        style="display: block; max-width: 100%; margin: 0 auto"
-      />
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { getToken } from "@/utils/auth";
-
-export default {
-  model: {
-    prop: 'fileList',
-    event: 'editFileList'
-  },
-  props: {
-    value: [String, Object, Array],
-    // 图片数量限制
-    limit: {
-      type: Number,
-      default: 5,
-    },
-    // 大小限制(MB)
-    fileSize: {
-       type: Number,
-      default: 5,
-    },
-    // 文件类型, 例如['png', 'jpg', 'jpeg']
-    fileType: {
-      type: Array,
-      default: () => ["png", "jpg", "jpeg"],
-    },
-    // 是否显示提示
-    isShowTip: {
-      type: Boolean,
-      default: true
-    }
-  },
-  data() {
-    return {
-      number: 0,
-      uploadList: [],
-      dialogImageUrl: "",
-      dialogVisible: false,
-      hideUpload: false,
-      baseUrl: process.env.VUE_APP_BASE_API,
-      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
-      headers: {
-        Authorization: "Bearer " + getToken(),
-      },
-      fileList: []
-    };
-  },
-  watch: {
-    value: {
-      handler(val) {
-        if (val) {
-          // 首先将值转为数组
-          const list = Array.isArray(val) ? val : this.value.split(',');
-          // 然后将数组转为对象数组
-          this.fileList = list.map(item => {
-            if (typeof item === "string") {
-              if (item.indexOf(this.baseUrl) === -1) {
-                  item = { name: this.baseUrl + item, url: this.baseUrl + item };
-              } else {
-                  item = { name: item, url: item };
-              }
-            }
-            return item;
-          });
-        } else {
-          this.fileList = [];
-          return [];
-        }
-      },
-      deep: true,
-      immediate: true
-    }
-  },
-  computed: {
-    // 是否显示提示
-    showTip() {
-      return this.isShowTip && (this.fileType || this.fileSize);
-    },
-  },
-  methods: {
-    // 上传前loading加载
-    handleBeforeUpload(file) {
-      let isImg = false;
-      if (this.fileType.length) {
-        let fileExtension = "";
-        if (file.name.lastIndexOf(".") > -1) {
-          fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
-        }
-        isImg = this.fileType.some(type => {
-          if (file.type.indexOf(type) > -1) return true;
-          if (fileExtension && fileExtension.indexOf(type) > -1) return true;
-          return false;
-        });
-      } else {
-        isImg = file.type.indexOf("image") > -1;
-      }
-
-      if (!isImg) {
-        this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`);
-        return false;
-      }
-      if (this.fileSize) {
-        const isLt = file.size / 1024 / 1024 < this.fileSize;
-        if (!isLt) {
-          this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
-          return false;
-        }
-      }
-      this.$modal.loading("正在上传图片,请稍候...");
-      this.number++;
-    },
-    // 文件个数超出
-    handleExceed() {
-      this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
-    },
-    // 上传成功回调
-    handleUploadSuccess(res, file) {
-      if (res.code === 200) {
-        this.uploadList.push({ name: res.fileName, url: res.fileName });
-        this.uploadedSuccessfully();
-      } else {
-        this.number--;
-        this.$modal.closeLoading();
-        this.$modal.msgError(res.msg);
-        this.$refs.imageUpload.handleRemove(file);
-        this.uploadedSuccessfully();
-      }
-    },
-    // 删除图片
-    handleDelete(file) {
-      const findex = this.fileList.map(f => f.name).indexOf(file.name);
-      if(findex > -1) {
-        this.fileList.splice(findex, 1);
-        this.$emit("input", this.listToString(this.fileList));
-      }
-    },
-    // 上传失败
-    handleUploadError() {
-      this.$modal.msgError("上传图片失败,请重试");
-      this.$modal.closeLoading();
-    },
-    // 上传结束处理
-    uploadedSuccessfully() {
-      if (this.number > 0 && this.uploadList.length === this.number) {
-        this.fileList = this.fileList.concat(this.uploadList);
-        this.uploadList = [];
-        this.number = 0;
-        this.$emit("input", this.listToString(this.fileList));
-        this.$modal.closeLoading();
-      }
-    },
-    // 预览
-    handlePictureCardPreview(file) {
-      this.dialogImageUrl = file.url;
-      this.dialogVisible = true;
-    },
-    // 对象转成指定字符串分隔
-    listToString(list, separator) {
-      let strs = "";
-      separator = separator || ",";
-      for (let i in list) {
-        if (list[i].url) {
-          strs += list[i].url.replace(this.baseUrl, "") + separator;
-        }
-      }
-      return strs != '' ? strs.substr(0, strs.length - 1) : '';
-    }
-  }
-};
-</script>
-<style scoped lang="scss">
-// .el-upload--picture-card 控制加号部分
-::v-deep.hide .el-upload--picture-card {
-    display: none;
-}
-// 去掉动画效果
-::v-deep .el-list-enter-active,
-::v-deep .el-list-leave-active {
-    transition: all 0s;
-}
-
-::v-deep .el-list-enter, .el-list-leave-active {
-    opacity: 0;
-    transform: translateY(0);
-}
-</style>
-

+ 14 - 61
src/views/business/spd/bo/behavior/behaviorList.vue

@@ -244,54 +244,22 @@
         <el-divider content-position="left">
           <dev style="width: 50px; height: 40px; font-size: 18px">照片信息</dev>
         </el-divider>
-        <!-- <AA :limit="2" v-model="fileList"></AA> -->
 
         <el-upload
-          :action="actionUrl"
+          action="actionUrl"
           list-type="picture-card"
           :on-change="uploadPic"
+          :on-preview="handlePictureCardPreview"
+          :on-remove="handleRemove"
+          :auto-upload="false"
           :file-list="fileList"
-          :auto-upload="false">
-            <i slot="default" class="el-icon-plus"></i>
-            <div slot="file" slot-scope="{file}">
-              <img
-                class="el-upload-list__item-thumbnail"
-                :src="file.url" alt=""
-              >
-              <span class="el-upload-list__item-actions">
-                <span
-                  class="el-upload-list__item-preview"
-                  @click="handlePictureCardPreview(file)"
-                >
-                  <i class="el-icon-zoom-in"></i>
-                </span>
-                <span
-                  v-if="!disabled"
-                  class="el-upload-list__item-delete"
-                  @click="handleDownload(file)"
-                >
-                  <i class="el-icon-download"></i>
-                </span>
-                <span
-                  v-if="!disabled"
-                  class="el-upload-list__item-delete"
-                  @click="handleRemove(file)"
-                >
-                  <i class="el-icon-delete"></i>
-                </span>
-              </span>
-            </div>
+          >
+          <i class="el-icon-plus"></i>
         </el-upload>
-        <!-- <el-dialog :visible.sync="dialogVisible">
+        <el-dialog :visible.sync="dialogVisible">
           <img width="100%" :src="dialogImageUrl" alt="">
         </el-dialog>
-        <div class="demo-image__preview">
-          <el-image
-            style="width: 100px; height: 100px"
-            :src="url"
-            :preview-src-list="srcList">
-          </el-image>
-        </div> -->
+        
         <div class="md-auditInfo">
           <el-divider content-position="left">
             <dev style="width: 50px; height: 40px; font-size: 18px">其它信息</dev>
@@ -347,22 +315,14 @@
 import { listBehavior, getBehavior, delBehavior, addBehavior, updateBehavior,addPicture } from "@/api/business/spd/bo/behavior";
 import ContactRef from '@/views/business/spd/bo/refer/contact/index.vue';
 import SaleaeaRef from '@/views/business/spd/bo/refer/saleaea/index.vue';
-import AA from '@/views/business/spd/bo/behavior/AA.vue';
 
 export default {
   name: "BehaviorList",
   props:["source","bo","boAuthority"],
   dicts: ['mk_bo_behavior_res','mk_bo_behavior_type','sys_yes_no','mk_bo_behavior_goal'],
-  components: {ContactRef,SaleaeaRef,AA},
+  components: {ContactRef,SaleaeaRef},
   data() {
     return {
-url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
-        srcList: [
-          'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
-          'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg',
-          'https://test-sy.derom.com/document-center/fastdfs/upload/433',
-        ],
-
       dialogImageUrl: '',
       dialogVisible: false,
       disabled: false,
@@ -453,24 +413,15 @@ url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
   },
   methods: {
     uploadPic(file, fileList) {
-      console.log('文件',file)
-      console.log('文件列表',fileList)
       this.fileList = fileList
+      console.log('this.fileList',this.fileList);
     },
     handleRemove(file) {
-      console.log('单击图片移除',file);
-      console.log('此时文件列表里面', this.fileList)
       this.fileList = this.fileList.filter(item => item.uid !== file.uid)
-      console.log('过滤后的', this.fileList)
     },
     handlePictureCardPreview(file) {
-      console.log(file)
       this.dialogImageUrl = file.url;
       this.dialogVisible = true;
-      console.log('图片列表',this.dialogImageUrl)
-    },
-    handleDownload(file) {
-      console.log(file);
     },
     /** 提交按钮 */
     submitForm() {
@@ -547,6 +498,7 @@ url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
     },
     /** 新增按钮操作 */
     handleAdd() {
+      this.fileList = [];
       this.reset();
       this.operatingState = "Insert";
       //新增行动设置默认值
@@ -585,8 +537,7 @@ url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
       const id = row.id || this.ids
       getBehavior(id).then(response => {
         this.form = response.data;
-        this.fileList = this.form.behaviorPs;
-        console.log('this.fileList',this.fileList);
+        
         this.open = true;
         this.title = "修改行动";
       });
@@ -597,6 +548,8 @@ url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
       const id = row.id || this.ids
       getBehavior(id).then(response => {
         this.form = response.data;
+        this.fileList = this.form.behaviorPs;
+        console.log('this.fileList',this.fileList);
         this.open = true;
         this.operatingState = "Browse";
         this.title = "基础信息";

+ 2 - 1
src/views/business/spd/bo/pojpsn/pojpsnList.vue

@@ -130,7 +130,7 @@
           </el-input>
         </el-form-item>
         <el-form-item label="项目岗位" prop="post">
-          <el-select v-model="form.post" placeholder="请选择项目岗位">
+          <el-select v-model="form.post" placeholder="请选择项目岗位" disabled>
             <el-option
               v-for="dict in dict.type.mk_bo_pojpsn_post"
               :key="dict.value"
@@ -299,6 +299,7 @@ export default {
       if (this.source == "BoDetails") {
         this.form.bo = this.bo.id;
         this.form.boName = this.bo.boName;
+        this.form.post = "1";
       }
       this.open = true;
       this.title = "添加项目成员";

+ 0 - 2
src/views/business/spd/bo/refer/contact/index.vue

@@ -74,7 +74,6 @@
                 prop="customerName"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="客户名称"
               >
@@ -83,7 +82,6 @@
                 prop="name"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="联系人"
               >

+ 0 - 2
src/views/business/spd/bo/refer/customer/index.vue

@@ -74,7 +74,6 @@
                 prop="code"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="客户编码"
               >
@@ -83,7 +82,6 @@
                 prop="name"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="客户名称"
               >

+ 0 - 242
src/views/business/spd/bo/refer/dept/index copy.vue

@@ -1,242 +0,0 @@
-<template>
-  <div>
-    <el-dialog
-      title="部门选择"
-      width="1000px"
-      :close-on-click-modal="false"
-      :append-to-body="true"
-      v-dialogDrag
-      class="userDialog"
-      :visible.sync="visible"
-    >
-      <el-container style="height: 500px">
-        <el-container>
-          <el-header style="text-align: left; font-size: 12px; height: 30px">
-            <el-form
-              size="small"
-              :inline="true"
-              ref="searchForm"
-              :model="searchForm"
-              @keyup.enter.native="getList()"
-              @submit.native.prevent
-            >
-              <el-form-item prop="code">
-                <el-input
-                  size="small"
-                  v-model="queryParams.deptId"
-                  placeholder="部门编码"
-                  clearable
-                ></el-input>
-              </el-form-item>
-              <el-form-item prop="name">
-                <el-input
-                  size="small"
-                  v-model="queryParams.deptName"
-                  placeholder="部门名称"
-                  clearable
-                ></el-input>
-              </el-form-item>
-              <el-form-item>
-                <el-button
-                  type="primary"
-                  @click="getList()"
-                  size="small"
-                  icon="el-icon-search"
-                  >查询</el-button
-                >
-                <el-button
-                  @click="resetSearch()"
-                  size="small"
-                  icon="el-icon-refresh-right"
-                >重置</el-button>
-              </el-form-item>
-            </el-form>
-          </el-header>
-          <el-main>
-            <el-table
-              :data="dataList"
-              v-loading="loading"
-              size="small"
-              border
-              ref="contractTable"
-              @select="handleSelectionChange"
-              height="calc(100% - 40px)"
-              style="width: 100%"
-            >
-              <el-table-column
-                type="selection"
-                header-align="center"
-                align="center"
-                width="50"
-              >
-              </el-table-column>
-              <el-table-column
-                prop="deptId"
-                header-align="center"
-                align="left"
-                sortable="custom"
-                min-width="90"
-                label="部门编码"
-              >
-              </el-table-column>
-              <el-table-column
-                prop="deptName"
-                header-align="center"
-                align="left"
-                sortable="custom"
-                min-width="90"
-                label="部门名称"
-              >
-              </el-table-column>
-            </el-table>
-            <el-pagination
-              @size-change="sizeChangeHandle"
-              @current-change="currentChangeHandle"
-              :current-page="queryParams.pageNum"
-              :page-sizes="[5, 10, 15, 20]"
-              :page-size="queryParams.pageSize"
-              :total="total"
-              layout="total, sizes, prev, pager, next, jumper"
-            >
-            </el-pagination>
-          </el-main>
-        </el-container>
-      </el-container>
-      <span slot="footer" class="dialog-footer">
-        <el-button
-          size="small"
-          @click="visible = false"
-          icon="el-icon-circle-close"
-          >关闭</el-button
-        >
-        <el-button
-          size="small"
-          type="primary"
-          icon="el-icon-circle-check"
-          @click="doSubmit()"
-          >确定</el-button
-        >
-      </span>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { queryDeptList } from "@/api/system/dept";
-export default {
-  data() {
-    return {
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        deptId: undefined,
-        deptName: undefined,
-      },
-      searchForm: {
-        code: '',
-        name: ''
-      },
-      dataListAllSelections: [], // 所有选中的数据包含跨页数据
-      idKey: "id", // 标识列表数据中每一行的唯一键的名称(需要按自己的数据改一下)
-      dataList: [],
-      pageNo: 1,
-      pageSize: 10,
-      total: 0,
-      orders: [],
-      loading: false,
-      visible: false,
-    };
-  },
-  props: {
-    selectData: {
-      type: Array,
-      default: () => {
-        return [];
-      },
-    },
-    // 是否启用单选
-    single: {
-      type: Boolean,
-      default: false
-    }
-  },
-  methods: {
-    init() {
-      this.visible = true;
-      this.$nextTick(() => {
-        this.dataListAllSelections = JSON.parse(JSON.stringify(this.selectData));
-        this.resetSearch();
-      });
-    },
-    // 获取数据列表
-    getList() {
-      this.loading = true;
-      queryDeptList(this.addDateRange(this.queryParams)).then(response => {
-          this.dataList = response.data;
-          this.total = response.total;
-          this.loading = false;
-        }
-      );
-    },
-    // 每页数
-    sizeChangeHandle(val) {
-      this.queryParams.pageSize = val;
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    // 当前页
-    currentChangeHandle(val) {
-      this.queryParams.pageNum = val;
-      this.getList();
-    },
-    // 排序
-    resetSearch() {
-      this.$refs.searchForm.resetFields();
-      this.getList();
-    },
-    // 选中数据
-    handleSelectionChange(selection, row) {
-      if (this.single && selection.length > 1) {
-        this.$refs.contractTable.clearSelection();
-        this.$refs.contractTable.toggleRowSelection(row);
-      }
-      this.dataListAllSelections = this.single ? [row] : selection
-    },
-    // 设置选中的方法
-    setSelectRow() {
-      this.$refs.contractTable.clearSelection();
-      if (!this.dataListAllSelections || this.dataListAllSelections.length <= 0) {
-        return;
-      }
-      for (let i = 0; i < this.dataList.length; i++) {
-        if (this.dataListAllSelections.some(item => item[this.idKey] == this.dataList[i][this.idKey])) {
-          // 设置选中,记住table组件需要使用ref="table"
-          this.$refs.contractTable.toggleRowSelection(this.dataList[i], true);
-        }
-      }
-    },
-    doSubmit() {
-      this.visible = false;
-      console.log('选择的数据?',this.dataListAllSelections)
-      this.$emit("doSubmit", this.dataListAllSelections);
-    },
-  },
-};
-</script>
-<style lang="scss">
-.userDialog {
-  .el-dialog__body {
-    padding: 10px 0px 0px 10px;
-    color: #606266;
-    font-size: 14px;
-    word-break: break-all;
-  }
-  .el-main {
-    padding: 20px 20px 5px 20px;
-    .el-pagination {
-      margin-top: 5px;
-    }
-  }
-}
-</style>

+ 0 - 2
src/views/business/spd/bo/refer/dept/index.vue

@@ -74,7 +74,6 @@
                 prop="deptId"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="部门编码"
               >
@@ -83,7 +82,6 @@
                 prop="deptName"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="部门名称"
               >

+ 0 - 2
src/views/business/spd/bo/refer/org/index.vue

@@ -74,7 +74,6 @@
                 prop="deptId"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="组织编码"
               >
@@ -83,7 +82,6 @@
                 prop="deptName"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="组织名称"
               >

+ 0 - 2
src/views/business/spd/bo/refer/saleaea/index.vue

@@ -74,7 +74,6 @@
                 prop="code"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="区域编码"
               >
@@ -83,7 +82,6 @@
                 prop="name"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="区域名称"
               >

+ 0 - 2
src/views/business/spd/bo/refer/staff/index.vue

@@ -74,7 +74,6 @@
                 prop="userName"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="员工编码"
               >
@@ -83,7 +82,6 @@
                 prop="nickName"
                 header-align="center"
                 align="left"
-                sortable="custom"
                 min-width="90"
                 label="员工名称"
               >

+ 10 - 7
src/views/business/spd/bo/task/taskList.vue

@@ -341,13 +341,7 @@
           >
           </el-input>
         </el-form-item>
-        <BehaviorList
-          :key="timer"
-          :source="'TaskList'"
-          :bo="this.form"
-          :boAuthority="boAuthority"
-          v-if="this.operatingState != 'Insert'"
-        />
+        
         <div class="md-auditInfo">
           <el-divider content-position="left">其它信息</el-divider>
           <el-form :inline="true" label-position="right" :model="form">
@@ -392,6 +386,15 @@
           </el-form>
         </div>
       </el-form>
+
+      <BehaviorList
+          :key="timer"
+          :source="'TaskList'"
+          :bo="this.form"
+          :boAuthority="boAuthority"
+          v-if="this.operatingState != 'Insert'"
+        />
+        
       <div slot="footer" class="dialog-footer">
         <el-button
           type="primary"

+ 142 - 0
src/views/purchase/DemandSummary/add.vue

@@ -0,0 +1,142 @@
+<template>
+  <div id="checkDemandSummary">
+    <el-card>
+      <span>采购需求汇总详情</span>
+      <div class="btn_grooup">
+        <el-button type="primary" size="small">编辑</el-button>
+        <el-button type="primary" size="small">确定</el-button>
+        <el-button type="primary" size="small">行关闭</el-button>
+        <el-button type="primary" size="small">重取批量</el-button>
+      </div>
+
+      <el-table 
+          :data="tableList" 
+          fit
+          max-height="680"
+          @selection-change="handleSelectionChange"
+        >
+        <el-table-column type="selection" width="55" />
+        <el-table-column label="序号" align="center" prop="code"/>
+        <el-table-column label="行号" align="center" prop="code"/>
+        <el-table-column label="物料编码" align="center" prop="code"/>
+        <el-table-column label="品名" align="center" prop="code"/>
+        <el-table-column label="规格" align="center" prop="code"/>
+        <el-table-column label="单位" align="center" prop="code"/>
+        <el-table-column label="生产厂家/代理人" align="center" prop="code"/>
+        <el-table-column label="末级供应仓库库存量" align="center" prop="code"/>
+        <el-table-column label="月销量" align="center" prop="code"/>
+        <el-table-column label="采购周期" align="center" prop="code"/>
+        <el-table-column label="最终净需求量" align="center" prop="code"/>
+        <el-table-column label="最终采购量" align="center" prop="code"/>
+        <el-table-column label="需求客户" align="center" prop="code"/>
+        <el-table-column label="最小订货量" align="center" prop="code"/>
+        <el-table-column label="最小包装量" align="center" prop="code"/>
+        <el-table-column label="修改人" align="center" prop="code"/>
+        <el-table-column label="修改原因" align="center" prop="code"/>
+        <el-table-column label="业务备注" align="center" prop="code"/>
+        <el-table-column label="有效期" align="center" prop="code"/>
+        <el-table-column label="要求交货日期" align="center" prop="code"/>
+        <el-table-column label="紧急标识" align="center" prop="code"/>
+        <el-table-column label="补单标识" align="center" prop="code"/>
+        <el-table-column label="需求单单号" align="center" prop="code"/>
+        <el-table-column label="供应仓库" align="center" prop="code"/>
+        <el-table-column label="供应库位" align="center" prop="code"/>
+        <el-table-column label="业务类型" align="center" prop="code"/>
+        <el-table-column label="行状态" align="center" prop="code"/>
+        <el-table-column label="收货仓库" align="center" prop="code"/>
+        <el-table-column label="收货货位" align="center" prop="code"/>
+        <el-table-column label="采购员" align="center" prop="code"/>
+        <el-table-column label="制单人" align="center" prop="code"/>
+        <el-table-column label="审核人员" align="center" prop="code"/>
+        <el-table-column label="请购单号" align="center" prop="code"/>
+        <el-table-column label="品类" align="center" prop="code"/>
+        <el-table-column label="注册人" align="center" prop="code"/>
+        <el-table-column label="集团预测分类" align="center" prop="code"/>
+        <el-table-column label="修改时间" align="center" prop="code"/>
+        <el-table-column label="采购员编码" align="center" prop="code"/>
+        <el-table-column label="采购组织" align="center" prop="code"/>
+        <el-table-column label="物料类别" align="center" prop="code"/>
+        <el-table-column label="有效期单位" align="center" prop="code"/>
+        <el-table-column label="最小批量" align="center" prop="code"/>
+        <el-table-column label="业务部门" align="center" prop="code"/>
+        <el-table-column label="需求部门" align="center" prop="code"/>
+        <el-table-column label="批号锁定标识" align="center" prop="code"/>
+        <el-table-column label="采购需求单审批人" align="center" prop="code"/>
+        <el-table-column label="需求单审批时间" align="center" prop="code"/>
+        <el-table-column label="需求单提交时间" align="center" prop="code"/>
+        <el-table-column label="需求单提交人" align="center" prop="code"/>
+        <el-table-column label="处理需求时间" align="center" prop="code"/>
+        <el-table-column label="处理需求人员" align="center" prop="code"/>
+        <el-table-column label="汇总确认人" align="center" prop="code"/>
+        <el-table-column label="汇总确认时间" align="center" prop="code"/>
+        <el-table-column label="转请购时间" align="center" prop="code"/>
+        <el-table-column label="转请购人员" align="center" prop="code"/>
+        <el-table-column label="价格类型" align="center" prop="code"/>
+      </el-table>
+    </el-card>
+
+    <div class="btn_group">
+      <el-col :span="1.5">
+        <el-button size="small" plain @click="back">返回</el-button>
+      </el-col>
+    </div>
+  </div>
+</template>
+
+<script>
+import {getSummaryDetail} from '@/api/purchase/DemandSummary.js'
+export default {
+  name: 'checkDemandSummary',
+  props: ['pageStu','row', 'disable'],
+  model: {
+    prop: 'isList',
+    event: 'jugislist'
+  },
+  data() {
+    return{
+      tableList: []
+    }
+  },
+  created() {
+    if(this.pageStu == 'check') {
+      console.log('数据', this.row)
+      this.getDetails(this.row)
+    } else if(this.pageStu == 'edit') {
+      this.getDetails(this.row)
+    }
+  },
+  methods: {
+    handleSelectionChange() {},
+    back() {
+      this.$emit('jugislist', true)
+      let queryParams = {
+        pageNum: 1,
+        pageSize: 10
+      }
+      this.$emit('refresh', queryParams)
+    },
+    // 如果需要回显则调用详情接口
+    getDetails(row) {
+      getSummaryDetail(row).then(res => {
+        if (res.code === 200) {
+
+        }
+      })
+    },
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+ .btn_group {
+  width: 100%;
+  margin: 20px 0;
+  display: flex;
+  justify-content: center;
+} 
+.btn_grooup {
+  margin-bottom: 10px;
+  display: flex;
+  justify-content: flex-end;
+} 
+</style>

+ 53 - 45
src/views/purchase/DemandSummary/index.vue

@@ -304,6 +304,7 @@
         <el-table 
           :data="tableList" 
           fit
+          show-summary
           max-height="680"
           @selection-change="handleSelectionChange"
         >
@@ -312,53 +313,53 @@
           <el-table-column label="物料编码" align="center" prop="code"/>
           <el-table-column label="品名" align="center" prop="code"/>
           <el-table-column label="规格" align="center" prop="code"/>
-          <el-table-column label="单位" align="center" prop="code"/>
-          <el-table-column label="生产厂家/代理人" align="center" prop="code"/>
+          <el-table-column label="单位" align="center" prop="demandUnit"/>
+          <el-table-column label="生产厂家/代理人" align="center" prop="manufacturer"/>
           <el-table-column label="需求单位数" align="center" prop="code"/>
           <el-table-column label="总最终净需求量" align="center" prop="code"/>
-          <el-table-column label="总月销量" align="center" prop="code"/>
-          <el-table-column label="需求可用周期" align="center" prop="code"/>
-          <el-table-column label="呆滞量" align="center" prop="code"/>
-          <el-table-column label="采购周期" align="center" prop="code"/>
-          <el-table-column label="中心公共库存" align="center" prop="code"/>
-          <el-table-column label="中心仓专属货位" align="center" prop="code"/>
-          <el-table-column label="区域分仓公共库存" align="center" prop="code"/>
-          <el-table-column label="各项目仓库存" align="center" prop="code"/>
-          <el-table-column label="电商仓库" align="center" prop="code"/>
-          <el-table-column label="采购在途" align="center" prop="code"/>
-          <el-table-column label="借出在途" align="center" prop="code"/>
-          <el-table-column label="调拨在途" align="center" prop="code"/>
-          <el-table-column label="库存总计" align="center" prop="code"/>
-          <el-table-column label="最小包装量" align="center" prop="code"/>
-          <el-table-column label="最小订货量" align="center" prop="code"/>
-          <el-table-column label="最小批量" align="center" prop="code"/>
-          <el-table-column label="人工调整数" align="center" prop="code"/>
-          <el-table-column label="修改原因" align="center" prop="code"/>
-          <el-table-column label="建议采购量" align="center" prop="code"/>
-          <el-table-column label="建议净采购量" align="center" prop="code"/>
-          <el-table-column label="最终采购量" align="center" prop="code"/>
+          <el-table-column label="总月销量" align="center" prop="totalMonthlySales"/>
+          <el-table-column label="需求可用周期" align="center" prop="demandCycle"/>
+          <el-table-column label="呆滞量" align="center" prop="dullQut"/>
+          <el-table-column label="采购周期" align="center" prop="buyPeriod"/>
+          <el-table-column label="中心公共库存" align="center" prop="centralPublicStock"/>
+          <el-table-column label="中心仓专属货位" align="center" prop="centralWarehouse"/>
+          <el-table-column label="区域分仓公共库存" align="center" prop="regionPublicStock"/>
+          <el-table-column label="各项目仓库存" align="center" prop="eachWarehouseStock"/>
+          <el-table-column label="电商仓库" align="center" prop="commerceWarehouse"/>
+          <el-table-column label="采购在途" align="center" prop="buyTransit"/>
+          <el-table-column label="借出在途" align="center" prop="lendTransit"/>
+          <el-table-column label="调拨在途" align="center" prop="transferTransit"/>
+          <el-table-column label="库存总计" align="center" prop="stockTotal"/>
+          <el-table-column label="最小包装量" align="center" prop="minPackage"/>
+          <el-table-column label="最小订货量" align="center" prop="minOrder"/>
+          <el-table-column label="最小批量" align="center" prop="minBatch"/>
+          <el-table-column label="人工调整数" align="center" prop="artificialAdjust"/>
+          <el-table-column label="修改原因" align="center" prop="modifyReason"/>
+          <el-table-column label="建议采购量" align="center" prop="suggestionPurchase"/>
+          <el-table-column label="建议净采购量" align="center" prop="suggestBuyQty"/>
+          <el-table-column label="最终采购量" align="center" prop="finalBuyQty"/>
           <el-table-column label="二级品类" align="center" prop="code"/>
           <el-table-column label="三级品类" align="center" prop="code"/>
           <el-table-column label="四级品类" align="center" prop="code"/>
-          <el-table-column label="单据状态" align="center" prop="code"/>
-          <el-table-column label="采购员" align="center" prop="code"/>
+          <el-table-column label="单据状态" align="center" prop="status"/>
+          <el-table-column label="采购员" align="center" prop="buyerName"/>
           <el-table-column label="默认采购组织" align="center" prop="code"/>
-          <el-table-column label="有效期" align="center" prop="code"/>
-          <el-table-column label="有效期单位" align="center" prop="code"/>
-          <el-table-column label="业务类型" align="center" prop="code"/>
+          <el-table-column label="有效期" align="center" prop="validityPeriod"/>
+          <el-table-column label="有效期单位" align="center" prop="validityPeriodUnit"/>
+          <el-table-column label="业务类型" align="center" prop="businessType"/>
           <el-table-column label="安全库存量" align="center" prop="code"/>
-          <el-table-column label="单据来源" align="center" prop="code"/>
-          <el-table-column label="行号" align="center" prop="code"/>
+          <el-table-column label="单据来源" align="center" prop="billSource"/>
+          <el-table-column label="行号" align="center" prop="rowNo"/>
           <el-table-column label="注册人" align="center" prop="code"/>
-          <el-table-column label="可用量" align="center" prop="code"/>
-          <el-table-column label="总需与终采差异" align="center" prop="code"/>
-          <el-table-column label="集团预测分类" align="center" prop="code"/>
-          <el-table-column label="中心仓占有量" align="center" prop="code"/>
+          <el-table-column label="可用量" align="center" prop="qty"/>
+          <el-table-column label="总需与终采差异" align="center" prop="buyDiscrepancy"/>
+          <el-table-column label="集团预测分类" align="center" prop="forecastClassification"/>
+          <el-table-column label="中心仓占有量" align="center" prop="centerBinPossession"/>
           <el-table-column label="中心仓可用量" align="center" prop="code"/>
-          <el-table-column label="物料类别" align="center" prop="code"/>
-          <el-table-column label="业务部门" align="center" prop="code"/>
-          <el-table-column label="需求单位" align="center" prop="code"/>
-          <el-table-column label="采购经理审核人" align="center" prop="code"/>
+          <el-table-column label="物料类别" align="center" prop="materialCategory"/>
+          <el-table-column label="业务部门" align="center" prop="departmentName"/>
+          <el-table-column label="需求单位" align="center" prop="demandUnit"/>
+          <el-table-column label="采购经理审核人" align="center" prop="puManagerAuditor"/>
           <el-table-column
           fixed="right"
           label="操作"
@@ -382,15 +383,19 @@
         </el-pagination>
       </el-card>
     </div>
+
+    <Add v-model="isList" v-if="!isList" :pageStu="page" :disable="disable" :row="rowDetail" @refresh="getList"/>
   </div>
 </template>
 
 <script>
+import Add from './add.vue'
 import CollapseTransition from '@/components/MyCollapse/collapse.vue'
+import {getSummaryList} from '@/api/purchase/DemandSummary.js'
 export default {
   name: 'demandSummary',
   components: {
-    // Add,
+    Add,
     CollapseTransition
   },
   data() {
@@ -428,14 +433,17 @@ export default {
       ids: []
     }
   },
+  created() {
+    this.getList(this.queryParams)
+  },
   methods: {
     getList(params){
-      // getDemandList(params).then(res => {
-      //   if (res.code === 200) {
-      //     this.tableList = res.rows
-      //     this.total = res.total
-      //   }
-      // })
+      getSummaryList(params).then(res => {
+        if (res.code === 200) {
+          this.tableList = res.rows
+          this.total = res.total
+        }
+      })
     },
     handleSelectionChange(selection) {
       console.log('选中', selection)

+ 26 - 2
src/views/purchase/PurchaseDemandList/add.vue

@@ -241,7 +241,7 @@
       <el-table 
           :data="basicForm.puDemandItemList" 
           fit
-          max-height="680"
+          max-height="300"
           @selection-change="handleSelectionChange"
         >
           <el-table-column type="selection"/>
@@ -282,6 +282,27 @@
               </el-form-item>
             </template>
           </el-table-column>
+          <el-table-column label="预留比例" align="center" width="150" prop="reservedProportion">
+            <template slot-scope="scope">
+              <el-form-item class="hang">
+                <el-input v-model="scope.row.reservedProportion"/>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column label="预留周期" align="center" width="150" prop="reservedPeriod">
+            <template slot-scope="scope">
+              <el-form-item class="hang">
+                <el-input v-model="scope.row.reservedPeriod"/>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column label="预留数量" align="center" width="150" prop="reservedQty">
+            <template slot-scope="scope">
+              <el-form-item class="hang">
+                <el-input v-model="scope.row.reservedQty"/>
+              </el-form-item>
+            </template>
+          </el-table-column>
           <el-table-column label="采购员名称" align="center" prop="buyerName" />
           <el-table-column label="采购员" align="center" width="150" prop="buyer" />
           <el-table-column label="物料编码" align="center" width="120" prop="material">
@@ -293,6 +314,7 @@
           </el-table-column>
           <el-table-column label="物料名称" align="center" width="150" prop="materialName" />
           <el-table-column label="规格" align="center" width="150" prop="specification" />
+          <el-table-column label="型号" align="center" width="150" prop="model" />
           <el-table-column label="单位" align="center" width="150" prop="unit	" />
           <el-table-column label="生产厂家/代理人" align="center" width="150" prop="registrant" />
           <el-table-column label="注册人" align="center" width="150" prop="registrant" />
@@ -655,7 +677,9 @@ export default {
         updateBy: null,
         updateByName: null,
         updateTime: null,
-        delFlag: null
+        delFlag: null,
+        // 新增字段
+        model: null,
       }
       this.basicForm.puDemandItemList.push(newLine)
     },

+ 130 - 82
src/views/purchase/priceDeclaration/add-price-declaration.vue

@@ -2,44 +2,86 @@
 <template>
   <el-drawer title="我是标题" direction="btt" size="100%" :with-header="false" :visible.sync="visible"
     :before-close="handleClose">
-    <el-form size="mini" label-position="right" label-width="125px" :model="params">
-      <el-card class="add-pd-content" :body-style="{
-          padding: '20px',
-          display: 'flex',
-          'flex-wrap': 'wrap',
-        }">
-        <el-form-item v-for="(column, index) in columns" :key="index" :prop="column.key" :label="column.title"
-          :required="column.required" style="width: 33%">
+    <el-card :body-style="{
+        padding: '20px',
+        display: 'flex',
+        'flex-wrap': 'wrap',
+      }" style="margin: 10px">
+      <div slot="header" style="
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+        ">
+        <h3>新增</h3>
+        <div style="text-align: right">
+          <el-button size="mini" @click="setVisible(false)">取消</el-button>
+          <el-button size="mini" type="info" @click="setVisible(false)">保存并新增</el-button>
+          <el-button size="mini" type="danger" @click="setVisible(false)">保存</el-button>
+        </div>
+      </div>
+      <el-row>
+        <el-form size="mini" label-position="right" label-width="150px" :model="params">
+          <el-col v-for="(column, index) in columns" :key="index" :span="column.span || 8">
+            <el-form-item :prop="column.key" :label="column.title" :required="column.required">
 
-          <el-input v-if="column.type === 'Input'" v-model="params[column.key]" :placeholder="column.placeholder"
-            style="width: 90%"></el-input>
+              <el-input v-if="column.type === 'Input'" v-model="params[column.key]" :placeholder="column.placeholder"
+                :clearable="column.clearable" style="width: 90%"></el-input>
 
-          <el-input-number v-if="column.type === 'InputNumber'" v-model="params[column.key]" controls-position="right"
-            :placeholder="column.placeholder" style="width: 90%"></el-input-number>
+              <el-input-number v-if="column.type === 'InputNumber'" v-model="params[column.key]"
+                :controls-position="column.config.controlsPosition" :placeholder="column.placeholder"
+                :clearable="column.clearable" style="width: 90%"></el-input-number>
 
-          <el-select v-if="column.type === 'TagSelect'" v-model="params[column.key]" multiple clearable collapse-tags
-            :placeholder="column.placeholder" style="width: 90%">
-            <template #prefix>
-              <el-icon class="el-icon-s-operation" style="cursor: pointer" @click.stop="$message.info(234)"></el-icon>
-            </template>
-            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
+              <el-select v-if="column.type === 'Select'" v-model="params[column.key]" :placeholder="column.placeholder"
+                :clearable="column.clearable" style="width: 90%">
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+                </el-option>
+              </el-select>
 
-          <el-date-picker v-if="column.type === 'DatePicker'" v-model="params[column.key]" :type="column.config.type"
-            :placeholder="column.placeholder" :picker-options="column.pickerOptions" style="width: 90%">
-          </el-date-picker>
-        </el-form-item>
-      </el-card>
-      <el-card class="add-pd-option" :body-style="{
-          'text-align': 'right',
-          padding: '10px 20px',
-        }">
-        <el-button size="mini" @click="setVisible(false)">取消</el-button>
-        <el-button size="mini" type="info" @click="setVisible(false)">保存并新增</el-button>
-        <el-button size="mini" type="danger" @click="setVisible(false)">保存</el-button>
-      </el-card>
-    </el-form>
+              <el-select v-if="column.type === 'TagSelect'" v-model="params[column.key]" multiple clearable collapse-tags
+                :placeholder="column.placeholder" :clearable="column.clearable" style="width: 90%">
+                <template #prefix>
+                  <el-icon class="el-icon-s-operation" style="cursor: pointer" @click.stop="$message.info(234)"></el-icon>
+                </template>
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+                </el-option>
+              </el-select>
+
+              <el-date-picker v-if="column.type === 'DatePicker'" v-model="params[column.key]" :type="column.config.type"
+                :placeholder="column.placeholder" :clearable="column.clearable" :picker-options="column.pickerOptions"
+                style="width: 90%">
+              </el-date-picker>
+
+              <el-upload v-if="column.type === 'Upload'" :file-list="params[column.key]" drag
+                action="https://jsonplaceholder.typicode.com/posts/" multiple>
+                <i class="el-icon-upload"></i>
+                <div class="el-upload__text">
+                  将文件拖到此处,或<em>点击上传</em>
+                </div>
+                <div class="el-upload__tip" slot="tip">
+                  只能上传jpg/png文件,且不超过500kb
+                </div>
+              </el-upload>
+
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+    </el-card>
+    <el-card :body-style="{
+        padding: '20px',
+        display: 'flex',
+        'flex-wrap': 'wrap',
+      }" style="margin: 10px">
+      <el-tabs v-model="tabName" @tab-click="handleClick" style="width: 100%">
+        <el-tab-pane v-for="(column, index) in tabColumns" :key="index" :label="column.title" :name="column.key">
+          <el-table :data="tabTableDatas[column.key]" style="width: 100%">
+            <el-table-column v-for="(cColumn, cIndex) in column.tableColumns" :key="cIndex" :prop="cColumn.key"
+              :label="cColumn.title">
+            </el-table-column>
+          </el-table>
+        </el-tab-pane>
+      </el-tabs>
+    </el-card>
   </el-drawer>
 </template>
 
@@ -52,38 +94,8 @@ export default {
         data.map((item) => [item[keyName], item[valueName]])
       );
     };
-    const pickerOptions = {
-      disabledDate(time) {
-        return time.getTime() > Date.now();
-      },
-      shortcuts: [
-        {
-          text: "今天",
-          onClick(picker) {
-            picker.$emit("pick", new Date());
-          },
-        },
-        {
-          text: "昨天",
-          onClick(picker) {
-            const date = new Date();
-            date.setTime(date.getTime() - 3600 * 1000 * 24);
-            picker.$emit("pick", date);
-          },
-        },
-        {
-          text: "一周前",
-          onClick(picker) {
-            const date = new Date();
-            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
-            picker.$emit("pick", date);
-          },
-        },
-      ],
-    };
-
     const columns = [
-      { key: "id", title: "id", type: "Input", },
+      { key: "id", title: "id", type: "TagSelect", require: true },
       { key: "status", title: "单据状态" },
       { key: "priceName", title: "价格名称" },
       { key: "supplier", title: "供应商" },
@@ -108,12 +120,48 @@ export default {
       { key: "updateByName", title: "更新人" },
       { key: "delFlag", title: "删除标记" }
     ];
-    const initColumns = () => columns;
+    const initColumns = () =>
+      columns.map((column) => {
+        const clearable = column.clearable || true;
+        if (column.type === "InputNumber") {
+          return {
+            ...column,
+            clearable,
+            config: { controlsPosition: "right" },
+          };
+        }
+        if (column.type === "DatePicker") {
+          return {
+            ...column,
+            clearable,
+            config: { type: "date" },
+          };
+        }
+        return {
+          ...column,
+          clearable,
+        };
+      });
     const initParams = () => arr2Obj(initColumns(), "key", "value");
-
+    // 标签页列
+    const tabColumns = [
+      {
+        key: 'materialBasic',
+        title: '物料信息表',
+        tableColumns: [],
+      },
+      {
+        key: 'enforcementScope',
+        title: '执行范围组织',
+        tableColumns: [],
+      },
+    ]
+    const initTabColumns = () => tabColumns;
     return {
       visible: false,
+      // 主数据表头
       columns: initColumns(),
+      // 表单
       params: initParams(),
       options: [
         {
@@ -137,6 +185,15 @@ export default {
           label: "北京烤鸭",
         },
       ],
+      // 标签页表格列
+      tabColumns: initTabColumns(),
+      // 标签页激活
+      tabName: "materialBasic",
+      // 标签页对应数据
+      tabTableDatas: {
+        materialBasic: [],
+        enforcementScope: [],
+      },
     }
   },
   methods: {
@@ -144,20 +201,11 @@ export default {
       this.visible = prop;
     },
     handleClose() { },
-  },
-  created() { },
-}
-</script>
+    handleClick() { },
 
-.add-pd-content {
-  margin: 10px
+  },
+  created() {
+    console.log(this.params, this.columns);
+  },
 }
-
-.add-pd-option {
-  position: fixed;
-  left: 0;
-  bottom: 0;
-  margin: 10px;
-  width: calc(100% - 20px);
-}}
-</style>
+</script>

+ 55 - 24
src/views/purchase/priceDeclaration/index.vue

@@ -2,6 +2,9 @@
 <template>
   <el-card v-loading="loading" class="priceDeclaration" :body-style="{ padding: 0 }">
 
+    <addPriceDeclaration ref="addDeclaration"></addPriceDeclaration>
+    <seePriceDeclaration ref="seeDeclaration"></seePriceDeclaration>
+
     <!-- 检索 -->
     <el-form size="mini" label-position="right" label-width="85px" :model="searchParams" style="padding: 20px 0 0 0">
       <el-row :gutter="24">
@@ -31,12 +34,11 @@
         @click="handleSearchChange"></i>
     </el-divider>
 
-
     <!-- 操作 -->
     <el-row :gutter="24" style="padding: 0 20px">
       <!-- <el-col :span="6">  </el-col> -->
       <el-col :span="24" style="text-align: right">
-        <el-button size="mini" type="danger">新增</el-button>
+        <el-button size="mini" type="danger" @click="handleAddDeclaration">新增</el-button>
         <el-button-group>
           <el-dropdown>
             <el-button size="mini">
@@ -66,11 +68,10 @@
       </el-col>
     </el-row>
 
-
     <el-container>
       <el-main>
         <!-- 主信息 -->
-        <el-table class="pd_mainTable" :data="tableData" size="mini" @row-dblclick="handleOpenDetails">
+        <el-table class="pd-mainTable" :data="tableData" size="mini" @row-dblclick="handleOpenDetails">
           <el-table-column type="selection" width="35" />
           <el-table-column v-for="(column, index) in tableColumns" :key="index" :prop="column.key" :label="column.title"
             :width="column.width || 180" :show-overflow-tooltip="column.showOverflowTooltip || true">
@@ -90,17 +91,21 @@
         </el-pagination>
 
         <!-- 附表格 -->
-        <el-tabs class="pd_tabs" v-model="activeName" @tab-click="handleTabClick">
-          <el-tab-pane v-for="v in viceTable" :label="v.title" :name="v.name">
+        <div class="pd-viceTable">
+          <el-tabs class="pd-tabs" v-model="activeName" @tab-click="handleTabClick" style="width: 100%;">
+            <el-tab-pane v-for="v in viceTable" :label="v.title" :name="v.name">
+
+              <el-table class="pd_viceTable" :data="tabTableDatas[v.name]" style="width: 100%;">
+                <el-table-column v-if="tabTableDatas[v.name].lenth" type="index" width="35" />
+                <el-table-column v-for="(column, index) in v.columns" :key="index" :prop="column.key"
+                  :label="column.title" :width="column.width || 180"
+                  :show-overflow-tooltip="column.showOverflowTooltip || true">
+                </el-table-column>
+              </el-table>
+            </el-tab-pane>
+          </el-tabs>
+        </div>
 
-            <el-table class="pd_viceTable" :data="viceData" size="mini">
-              <el-table-column type="index" width="35" />
-              <el-table-column v-for="(column, index) in v.columns" :key="index" :prop="column.key" :label="column.title"
-                :width="column.width || 180" :show-overflow-tooltip="column.showOverflowTooltip || true">
-              </el-table-column>
-            </el-table>
-          </el-tab-pane>
-        </el-tabs>
       </el-main>
     </el-container>
 
@@ -109,8 +114,15 @@
 
 <script>
 import declaration from '@/api/business/purchase/priceDeclaration'
+import addPriceDeclaration from './add-price-declaration.vue'
+import seePriceDeclaration from './see-price-declaration.vue'
 
 export default {
+  name: 'priceDeclaration',
+  components: {
+    addPriceDeclaration,
+    seePriceDeclaration
+  },
   data() {
     const arr2Obj = function (data, keyName, valueName) {
       return Object.fromEntries(
@@ -213,7 +225,13 @@ export default {
       tableColumns: initTableHeader(),
       // 附表格
       viceTable: initViceTable(),
-      viceData: [],
+      // 附表格数据
+      tabTableDatas: {
+        // 物料信息表
+        materialBasic: [],
+        // 执行范围组织
+        enforcementScope: [],
+      },
       // 列表数据
       tableData: [
         {
@@ -270,6 +288,14 @@ export default {
       //   title: this.isSimpleSearch ? "Simple Search" : "All Search",
       // });
     },
+    // 新增
+    handleAddDeclaration() {
+      const { setVisible } = this.$refs.addDeclaration;
+      setVisible(true);
+      setTimeout(() => {
+        this.$notify.info("Open Add Drawer");
+      }, 250);
+    },
     // 标签页切换
     handleTabClick() {
       console.log(this.activeName, '标签页切换');
@@ -278,6 +304,11 @@ export default {
     // 行双击-进入详情
     handleOpenDetails(row) {
       console.log(row, '行双击-进入详情');
+      const { setVisible } = this.$refs.seeDeclaration;
+      setVisible(true);
+      setTimeout(() => {
+        this.$notify.info("Open See Drawer");
+      }, 250);
     },
     // 行编辑
     handleEdit(index, row) {
@@ -316,20 +347,20 @@ export default {
   .el-main {
     padding-top: 0px;
 
-
-
-    .pd_mainTable {
+    .pd-mainTable {
       width: 100%;
       margin: 20px 0 0 0;
-
-
     }
 
-    .pd_tabs {
-      margin-top: 20px;
-
-      .pd_viceTable {}
+    .pd-viceTable {
+      padding: 20px 0 0 0;
+      display: flex;
+      flex-wrap: wrap;
     }
+
+    // .pd_tabs {
+    //   margin-top: 20px;
+    // }
   }
 }
 </style>

+ 199 - 2
src/views/purchase/priceDeclaration/see-price-declaration.vue

@@ -1,11 +1,208 @@
 <!-- 价格申报单-详情 -->
 <template>
+  <el-drawer title="我是标题" direction="btt" size="100%" :with-header="false" :visible.sync="visible"
+    :before-close="handleClose">
+    <el-card :body-style="{
+        padding: '20px',
+        display: 'flex',
+        'flex-wrap': 'wrap',
+      }" style="margin: 10px">
+      <div slot="header" style="
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+        ">
+        <h3>查看</h3>
+        <div style="text-align: right">
+          <el-button size="mini" @click="setVisible(false)">取消</el-button>
+          <el-button size="mini" type="info" @click="setVisible(false)">保存并新增</el-button>
+          <el-button size="mini" type="danger" @click="setVisible(false)">保存</el-button>
+        </div>
+      </div>
+      <el-row>
+        <el-form size="mini" label-position="right" label-width="150px" :model="params">
+          <el-col v-for="(column, index) in columns" :key="index" :span="column.span || 8">
+            <el-form-item :prop="column.key" :label="column.title" :required="column.required">
 
+              <el-input v-if="column.type === 'Input'" v-model="params[column.key]" :placeholder="column.placeholder"
+                :clearable="column.clearable" style="width: 90%"></el-input>
+
+              <el-input-number v-if="column.type === 'InputNumber'" v-model="params[column.key]"
+                :controls-position="column.config.controlsPosition" :placeholder="column.placeholder"
+                :clearable="column.clearable" style="width: 90%"></el-input-number>
+
+              <el-select v-if="column.type === 'Select'" v-model="params[column.key]" :placeholder="column.placeholder"
+                :clearable="column.clearable" style="width: 90%">
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+                </el-option>
+              </el-select>
+
+              <el-select v-if="column.type === 'TagSelect'" v-model="params[column.key]" multiple clearable collapse-tags
+                :placeholder="column.placeholder" :clearable="column.clearable" style="width: 90%">
+                <template #prefix>
+                  <el-icon class="el-icon-s-operation" style="cursor: pointer" @click.stop="$message.info(234)"></el-icon>
+                </template>
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+                </el-option>
+              </el-select>
+
+              <el-date-picker v-if="column.type === 'DatePicker'" v-model="params[column.key]" :type="column.config.type"
+                :placeholder="column.placeholder" :clearable="column.clearable" :picker-options="column.pickerOptions"
+                style="width: 90%">
+              </el-date-picker>
+
+              <el-upload v-if="column.type === 'Upload'" :file-list="params[column.key]" drag
+                action="https://jsonplaceholder.typicode.com/posts/" multiple>
+                <i class="el-icon-upload"></i>
+                <div class="el-upload__text">
+                  将文件拖到此处,或<em>点击上传</em>
+                </div>
+                <div class="el-upload__tip" slot="tip">
+                  只能上传jpg/png文件,且不超过500kb
+                </div>
+              </el-upload>
+
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+    </el-card>
+    <el-card :body-style="{
+        padding: '20px',
+        display: 'flex',
+        'flex-wrap': 'wrap',
+      }" style="margin: 10px">
+      <el-tabs v-model="tabName" @tab-click="handleClick" style="width: 100%">
+        <el-tab-pane v-for="(column, index) in tabColumns" :key="index" :label="column.title" :name="column.key">
+          <el-table :data="tabTableDatas[column.key]" style="width: 100%">
+            <el-table-column v-for="(cColumn, cIndex) in column.tableColumns" :key="cIndex" :prop="cColumn.key"
+              :label="cColumn.title">
+            </el-table-column>
+          </el-table>
+        </el-tab-pane>
+      </el-tabs>
+    </el-card>
+  </el-drawer>
 </template>
 
 <script>
 export default {
-  name:'seePriceDeclaration',
-
+  name: 'seePriceDeclaration',
+  data() {
+    const arr2Obj = function (data, keyName, valueName) {
+      return Object.fromEntries(
+        data.map((item) => [item[keyName], item[valueName]])
+      );
+    };
+    const columns = [
+      { key: "id", title: "id", type: "TagSelect", require: true },
+      { key: "status", title: "单据状态" },
+      { key: "priceName", title: "价格名称" },
+      { key: "supplier", title: "供应商" },
+      { key: "supplierName", title: "供应商名称" },
+      { key: "puOrg", title: "采购组织" },
+      { key: "puOrgName", title: "采购组织名称" },
+      { key: "currency", title: "币种" },
+      { key: "currencyName", title: "币种名称" },
+      { key: "explain", title: "价格合理性说明" },
+      { key: "buyer", title: "采购员" },
+      { key: "buyerName", title: "采购员名称" },
+      { key: "puDept", title: "采购部门" },
+      { key: "puDeptName", title: "采购部门名称" },
+      { key: "sourceType", title: "来源单据类型" },
+      { key: "source", title: "来源单据号" },
+      { key: "isEffective", title: "是否已推价格" },
+      { key: "effectiveDate", title: "生效日期" },
+      { key: "file", title: "附件" },
+      { key: "tenantId", title: "租户号" },
+      { key: "revision", title: "乐观锁" },
+      { key: "createByName", title: "创建人名称" },
+      { key: "updateByName", title: "更新人" },
+      { key: "delFlag", title: "删除标记" }
+    ];
+    const initColumns = () =>
+      columns.map((column) => {
+        const clearable = column.clearable || true;
+        if (column.type === "InputNumber") {
+          return {
+            ...column,
+            clearable,
+            config: { controlsPosition: "right" },
+          };
+        }
+        if (column.type === "DatePicker") {
+          return {
+            ...column,
+            clearable,
+            config: { type: "date" },
+          };
+        }
+        return {
+          ...column,
+          clearable,
+        };
+      });
+    const initParams = () => arr2Obj(initColumns(), "key", "value");
+    // 标签页列
+    const tabColumns = [
+      {
+        key: 'materialBasic',
+        title: '物料信息表',
+        tableColumns: [],
+      },
+      {
+        key: 'enforcementScope',
+        title: '执行范围组织',
+        tableColumns: [],
+      },
+    ]
+    const initTabColumns = () => tabColumns;
+    return {
+      visible: false,
+      // 主数据表头
+      columns: initColumns(),
+      // 表单
+      params: initParams(),
+      options: [
+        {
+          value: "选项1",
+          label: "黄金糕",
+        },
+        {
+          value: "选项2",
+          label: "双皮奶",
+        },
+        {
+          value: "选项3",
+          label: "蚵仔煎",
+        },
+        {
+          value: "选项4",
+          label: "龙须面",
+        },
+        {
+          value: "选项5",
+          label: "北京烤鸭",
+        },
+      ],
+      // 标签页表格列
+      tabColumns: initTabColumns(),
+      // 标签页激活
+      tabName: "materialBasic",
+      // 标签页对应数据
+      tabTableDatas: {
+        materialBasic: [],
+        enforcementScope: [],
+      },
+    }
+  },
+  methods: {
+    setVisible(prop) {
+      this.visible = prop;
+    },
+    handleClose() { },
+    handleClick() { },
+  },
+  created() { },
 }
 </script>