Browse Source

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

002201 2 years ago
parent
commit
f45dea6a92

+ 17 - 8
src/api/business/spd/bo/basic.js

@@ -41,6 +41,15 @@ export function updateBasic(data) {
   })
 }
 
+// 修改商机流程信息
+export function updateBasicFlow(data) {
+  return request({
+    url: '/mk/bo/flow',
+    method: 'put',
+    data: data
+  })
+}
+
 
 // 删除商机基础信息
 export function delBasic(id) {
@@ -50,14 +59,6 @@ export function delBasic(id) {
   })
 }
 
-//查询固定商机的行动列表
-export function getBehaviorList(id) {
-  return request({
-    url: '/mk/bo/basic/getBehaviorList/' + id,
-    method: 'get'
-  })
-}
-
 // 删除商机附件
 export function delAccessory(boId,f,id) {
   return request({
@@ -65,3 +66,11 @@ export function delAccessory(boId,f,id) {
     method: 'delete'
   })
 }
+
+//流程下一步
+export function nextFlow(boId,boStage) {
+  return request({
+    url: '/mk/bo/basic/flow?boId=' + boId + '&boStage=' + boStage,
+    method: 'put'
+  })
+}

+ 71 - 2
src/api/material/basic.js

@@ -145,7 +145,7 @@ const planList = (data) => {
 }
 
 // 查询计划信息详情 
-const planDetails = () => {
+const planDetails = (id) => {
   return request({
     url: `/system/plan/details/${id}`,
     method: 'get',
@@ -268,6 +268,66 @@ const medcineitemBatchSave = (data) => {
   })
 }
 
+// 修改财务信息 /dev-api/drp-admin/system/finance/edit 
+const financeEdit = (data) => {
+  return request({
+    url: `/system/finance/edit `,
+    method: 'post',
+    data,
+  })
+}
+
+// 修改利润中心信息 /dev-api/drp-admin/system/center/edit
+const centerEdit = (data) => {
+  return request({
+    url: `/system/center/edit `,
+    method: 'post',
+    data,
+  })
+}
+
+// 修改采购信息 /dev-api/drp-admin/system/purchase/edit
+const purchaseEdit = (data) => {
+  return request({
+    url: `/system/purchase/edit `,
+    method: 'post',
+    data,
+  })
+}
+
+// 修改库存信息 /dev-api/drp-admin/system/inventory/edit
+const inventoryEdit = (data) => {
+  return request({
+    url: `/system/inventory/edit `,
+    method: 'post',
+    data,
+  })
+}
+
+// 修改计划信息 /dev-api/drp-admin/system/plan/edit
+const planEdit = (data) => {
+  return request({
+    url: `/system/plan/edit `,
+    method: 'post',
+    data,
+  })
+}
+
+// 修改成本信息 /dev-api/drp-admin/system/cost/edit
+const costEdit = (data) => {
+  return request({
+    url: `/system/cost/edit `,
+    method: 'post',
+    data,
+  })
+}
+
+
+
+/*
+*导入导出
+*/
+
 // 导入文件  /dev-api/drp-admin/system/material/import
 const fileImport = (data) => {
   return request({
@@ -277,11 +337,12 @@ const fileImport = (data) => {
   })
 }
 
+
 /**
  * 删除接口
  */
 // 删除物料基本信息-列表   /dev-api/drp-admin/system/material/delete/{id}
-const delMaterial = (data)=>{
+const delMaterial = (data) => {
   return request({
     url: '/system/material/delete',
     method: 'post',
@@ -321,6 +382,14 @@ export default {
   saveMaterial,
   insertMaterialInfo,
   medcineitemBatchSave,
+  financeEdit,
+  centerEdit,
+  purchaseEdit,
+  inventoryEdit,
+  planEdit,
+  costEdit,
+
+  // 导入
   fileImport,
 
   // 删除

+ 41 - 0
src/api/requisition/basic.js

@@ -37,4 +37,45 @@ export function delReq(id) {
     url: `/system/apply/material/${id}`,
     method: 'delete',
   })
+}
+
+// 参照-计量单位
+export function getUnit(data) {
+  return request({
+    url: `/system/archival/queryUnit`,
+    method: 'post',
+    data: data
+  })
+}
+// 参照-产地
+export function getPlace(data) {
+  return request({
+    url: `/system/archival/queryOrigin`,
+    method: 'post',
+    data: data
+  })
+}
+// 参照-税类
+export function getTax(data) {
+  return request({
+    url: `/system/archival/queryTaxrate`,
+    method: 'post',
+    data: data
+  })
+}
+// 参照-采购员
+export function getStaff(data) {
+  return request({
+    url: `/system/archival/queryStaffInfo`,
+    method: 'post',
+    data: data
+  })
+}
+// 参照-业务线
+export function getLine(data) {
+  return request({
+    url: `/system/archival/queryServiceline`,
+    method: 'post',
+    data: data
+  })
 }

+ 140 - 0
src/components/PopDialog/fourClass.vue

@@ -0,0 +1,140 @@
+<template>
+  <div>
+    <el-dialog
+      title="物料分类选择"
+      width="500px"
+      :close-on-click-modal="false"
+      :append-to-body="true"
+      v-dialogDrag
+      class="userDialog"
+      :visible.sync="visible"
+    >
+      <el-container style="height: 500px">
+        <el-container>
+          <el-main>
+            <el-row :gutter="10" class="content">
+              <el-col :span="12">
+                <el-input
+                  placeholder="输入关键字进行过滤"
+                  size="small"
+                  v-model="filterText">
+                </el-input>
+
+                <el-tree
+                  class="filter-tree"
+                  :data="threedata"
+                  :props="defaultProps"
+                  node-key="id"
+                  highlight-current
+                  @node-click="clickTree"
+                  :filter-node-method="filterNode"
+                  ref="tree">
+                </el-tree>
+              </el-col>
+            </el-row>
+          </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 { getTree } from '@/api/classify/basic';
+export default {
+  data() {
+    return {
+      loading: false,
+      visible: false,
+      filterText: '',
+      threedata: [],
+      defaultProps: {
+        children: 'childrens',
+        label: 'materialType'
+      },
+      // 判断是否为最末级节点
+      isLast: false,
+      // 选中的节点
+      choosePoint: {}
+    };
+  },
+  props: {},
+  methods: {
+    init() {
+      this.visible = true;
+      this.$nextTick(() => {
+        this.refreshList()
+      });
+    },
+    // 获取数据列表
+    refreshList(data) {
+      this.loading = true;
+      getTree(data).then(res => {
+        console.log('res',res)
+        if(res.code === 200) {
+          this.threedata = res.rows
+        }
+        this.loading = false;
+      });
+    },
+    clickTree(data) {
+      console.log('树形节点信息:',data)
+      if (data.childrens.length == 0) {
+        this.isLast = true
+      } else {
+        this.isLast = false
+      }
+      this.choosePoint = data
+    },
+    filterNode(value, data) {
+      console.log('value', value)
+      console.log('data', data)
+        if (!value) return true;
+        return data.label.indexOf(value) !== -1;
+    },
+    doSubmit() {
+      if(this.isLast == false) {
+        this.$message({
+          message: '请选择最末级节点',
+          type: 'warning'
+        });
+      } else {
+        console.log('子组件选择的数据',this.choosePoint)
+        this.$emit("doSubmit", this.choosePoint);
+        this.visible = false;
+      }
+    },
+  },
+};
+</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>

+ 269 - 0
src/components/PopDialog/place.vue

@@ -0,0 +1,269 @@
+<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="refreshList()"
+              @submit.native.prevent
+            >
+              <el-form-item prop="code">
+                <el-input
+                  size="small"
+                  v-model="searchForm.code"
+                  placeholder="编号"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item prop="name">
+                <el-input
+                  size="small"
+                  v-model="searchForm.name"
+                  placeholder="名称"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button
+                  type="primary"
+                  @click="refreshList()"
+                  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="id"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="id"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="name"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="名称"
+              >
+              </el-table-column>
+              <!-- <el-table-column
+                prop="contractAmount"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="110"
+                label="合同金额"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="oppositeCompany"
+                header-align="center"
+                align="center"
+                sortable="custom"
+                min-width="110"
+                label="对方单位"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="signDate"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="110"
+                label="签订时间"
+              >
+              </el-table-column> -->
+            </el-table>
+            <el-pagination
+              @size-change="sizeChangeHandle"
+              @current-change="currentChangeHandle"
+              :current-page="pageNo"
+              :page-sizes="[5, 10, 15, 20]"
+              :page-size="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 { getPlace } from '@/api/requisition/basic'
+export default {
+  data() {
+    return {
+      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();
+      });
+    },
+    // 获取数据列表
+    refreshList() {
+      this.loading = true;
+      getPlace({
+        pageNo: 1,
+        size: this.pageSize
+      }).then(({ data }) => {
+        console.log('data',data)
+        this.dataList = data.tableBody;
+        this.total = data.tableBody.length;
+        this.pageNo = data.current;
+        this.loading = false;
+        this.$nextTick(() => {
+          this.setSelectRow();
+        });
+      });
+    },
+    // 每页数
+    sizeChangeHandle(val) {
+      this.pageSize = val;
+      this.pageNo = 1;
+      this.refreshList();
+    },
+    // 当前页
+    currentChangeHandle(val) {
+      this.pageNo = val;
+      this.refreshList();
+    },
+    // 排序
+    resetSearch() {
+      this.$refs.searchForm.resetFields();
+      this.refreshList();
+    },
+    // 选中数据
+    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>

+ 4 - 4
src/components/PopDialog/productFactory.vue

@@ -24,7 +24,7 @@
                 <el-input
                   size="small"
                   v-model="searchForm.code"
-                  placeholder="物料编号"
+                  placeholder="编号"
                   clearable
                 ></el-input>
               </el-form-item>
@@ -32,7 +32,7 @@
                 <el-input
                   size="small"
                   v-model="searchForm.name"
-                  placeholder="物料名称"
+                  placeholder="名称"
                   clearable
                 ></el-input>
               </el-form-item>
@@ -71,12 +71,12 @@
               >
               </el-table-column>
               <el-table-column
-                prop="code"
+                prop="id"
                 header-align="center"
                 align="left"
                 sortable="custom"
                 min-width="90"
-                label="code"
+                label="id"
               >
               </el-table-column>
               <el-table-column

+ 269 - 0
src/components/PopDialog/serviceline.vue

@@ -0,0 +1,269 @@
+<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="refreshList()"
+              @submit.native.prevent
+            >
+              <el-form-item prop="code">
+                <el-input
+                  size="small"
+                  v-model="searchForm.code"
+                  placeholder="编号"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item prop="name">
+                <el-input
+                  size="small"
+                  v-model="searchForm.name"
+                  placeholder="名称"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button
+                  type="primary"
+                  @click="refreshList()"
+                  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="id"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="id"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="name"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="名称"
+              >
+              </el-table-column>
+              <!-- <el-table-column
+                prop="contractAmount"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="110"
+                label="合同金额"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="oppositeCompany"
+                header-align="center"
+                align="center"
+                sortable="custom"
+                min-width="110"
+                label="对方单位"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="signDate"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="110"
+                label="签订时间"
+              >
+              </el-table-column> -->
+            </el-table>
+            <el-pagination
+              @size-change="sizeChangeHandle"
+              @current-change="currentChangeHandle"
+              :current-page="pageNo"
+              :page-sizes="[5, 10, 15, 20]"
+              :page-size="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 { getLine } from '@/api/requisition/basic'
+export default {
+  data() {
+    return {
+      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();
+      });
+    },
+    // 获取数据列表
+    refreshList() {
+      this.loading = true;
+      getLine({
+        pageNo: 1,
+        size: this.pageSize
+      }).then(({ data }) => {
+        console.log('data',data)
+        this.dataList = data.tableBody;
+        this.total = data.tableBody.length;
+        this.pageNo = data.current;
+        this.loading = false;
+        this.$nextTick(() => {
+          this.setSelectRow();
+        });
+      });
+    },
+    // 每页数
+    sizeChangeHandle(val) {
+      this.pageSize = val;
+      this.pageNo = 1;
+      this.refreshList();
+    },
+    // 当前页
+    currentChangeHandle(val) {
+      this.pageNo = val;
+      this.refreshList();
+    },
+    // 排序
+    resetSearch() {
+      this.$refs.searchForm.resetFields();
+      this.refreshList();
+    },
+    // 选中数据
+    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>

+ 269 - 0
src/components/PopDialog/staff.vue

@@ -0,0 +1,269 @@
+<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="refreshList()"
+              @submit.native.prevent
+            >
+              <el-form-item prop="code">
+                <el-input
+                  size="small"
+                  v-model="searchForm.code"
+                  placeholder="编号"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item prop="name">
+                <el-input
+                  size="small"
+                  v-model="searchForm.name"
+                  placeholder="名称"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button
+                  type="primary"
+                  @click="refreshList()"
+                  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="id"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="id"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="name"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="名称"
+              >
+              </el-table-column>
+              <!-- <el-table-column
+                prop="contractAmount"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="110"
+                label="合同金额"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="oppositeCompany"
+                header-align="center"
+                align="center"
+                sortable="custom"
+                min-width="110"
+                label="对方单位"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="signDate"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="110"
+                label="签订时间"
+              >
+              </el-table-column> -->
+            </el-table>
+            <el-pagination
+              @size-change="sizeChangeHandle"
+              @current-change="currentChangeHandle"
+              :current-page="pageNo"
+              :page-sizes="[5, 10, 15, 20]"
+              :page-size="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 { getStaff } from '@/api/requisition/basic'
+export default {
+  data() {
+    return {
+      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();
+      });
+    },
+    // 获取数据列表
+    refreshList() {
+      this.loading = true;
+      getStaff({
+        pageNo: 1,
+        size: this.pageSize
+      }).then(({ data }) => {
+        console.log('data',data)
+        this.dataList = data.tableBody;
+        this.total = data.tableBody.length;
+        this.pageNo = data.current;
+        this.loading = false;
+        this.$nextTick(() => {
+          this.setSelectRow();
+        });
+      });
+    },
+    // 每页数
+    sizeChangeHandle(val) {
+      this.pageSize = val;
+      this.pageNo = 1;
+      this.refreshList();
+    },
+    // 当前页
+    currentChangeHandle(val) {
+      this.pageNo = val;
+      this.refreshList();
+    },
+    // 排序
+    resetSearch() {
+      this.$refs.searchForm.resetFields();
+      this.refreshList();
+    },
+    // 选中数据
+    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>

+ 269 - 0
src/components/PopDialog/tax.vue

@@ -0,0 +1,269 @@
+<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="refreshList()"
+              @submit.native.prevent
+            >
+              <el-form-item prop="code">
+                <el-input
+                  size="small"
+                  v-model="searchForm.code"
+                  placeholder="编号"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item prop="name">
+                <el-input
+                  size="small"
+                  v-model="searchForm.name"
+                  placeholder="名称"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button
+                  type="primary"
+                  @click="refreshList()"
+                  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="id"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="id"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="name"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="名称"
+              >
+              </el-table-column>
+              <!-- <el-table-column
+                prop="contractAmount"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="110"
+                label="合同金额"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="oppositeCompany"
+                header-align="center"
+                align="center"
+                sortable="custom"
+                min-width="110"
+                label="对方单位"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="signDate"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="110"
+                label="签订时间"
+              >
+              </el-table-column> -->
+            </el-table>
+            <el-pagination
+              @size-change="sizeChangeHandle"
+              @current-change="currentChangeHandle"
+              :current-page="pageNo"
+              :page-sizes="[5, 10, 15, 20]"
+              :page-size="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 { getTax } from '@/api/requisition/basic'
+export default {
+  data() {
+    return {
+      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();
+      });
+    },
+    // 获取数据列表
+    refreshList() {
+      this.loading = true;
+      getTax({
+        pageNo: 1,
+        size: this.pageSize
+      }).then(({ data }) => {
+        console.log('data',data)
+        this.dataList = data.tableBody;
+        this.total = data.tableBody.length;
+        this.pageNo = data.current;
+        this.loading = false;
+        this.$nextTick(() => {
+          this.setSelectRow();
+        });
+      });
+    },
+    // 每页数
+    sizeChangeHandle(val) {
+      this.pageSize = val;
+      this.pageNo = 1;
+      this.refreshList();
+    },
+    // 当前页
+    currentChangeHandle(val) {
+      this.pageNo = val;
+      this.refreshList();
+    },
+    // 排序
+    resetSearch() {
+      this.$refs.searchForm.resetFields();
+      this.refreshList();
+    },
+    // 选中数据
+    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>

+ 269 - 0
src/components/PopDialog/unit.vue

@@ -0,0 +1,269 @@
+<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="refreshList()"
+              @submit.native.prevent
+            >
+              <el-form-item prop="code">
+                <el-input
+                  size="small"
+                  v-model="searchForm.code"
+                  placeholder="编号"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item prop="name">
+                <el-input
+                  size="small"
+                  v-model="searchForm.name"
+                  placeholder="名称"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button
+                  type="primary"
+                  @click="refreshList()"
+                  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="code"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="code"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="name"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="名称"
+              >
+              </el-table-column>
+              <!-- <el-table-column
+                prop="contractAmount"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="110"
+                label="合同金额"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="oppositeCompany"
+                header-align="center"
+                align="center"
+                sortable="custom"
+                min-width="110"
+                label="对方单位"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="signDate"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="110"
+                label="签订时间"
+              >
+              </el-table-column> -->
+            </el-table>
+            <el-pagination
+              @size-change="sizeChangeHandle"
+              @current-change="currentChangeHandle"
+              :current-page="pageNo"
+              :page-sizes="[5, 10, 15, 20]"
+              :page-size="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 { getUnit } from '@/api/requisition/basic'
+export default {
+  data() {
+    return {
+      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();
+      });
+    },
+    // 获取数据列表
+    refreshList() {
+      this.loading = true;
+      getUnit({
+        pageNo: 1,
+        size: this.pageSize
+      }).then(({ data }) => {
+        console.log('data',data)
+        this.dataList = data.tableBody;
+        this.total = data.tableBody.length;
+        this.pageNo = data.current;
+        this.loading = false;
+        this.$nextTick(() => {
+          this.setSelectRow();
+        });
+      });
+    },
+    // 每页数
+    sizeChangeHandle(val) {
+      this.pageSize = val;
+      this.pageNo = 1;
+      this.refreshList();
+    },
+    // 当前页
+    currentChangeHandle(val) {
+      this.pageNo = val;
+      this.refreshList();
+    },
+    // 排序
+    resetSearch() {
+      this.$refs.searchForm.resetFields();
+      this.refreshList();
+    },
+    // 选中数据
+    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>

+ 429 - 152
src/views/business/spd/bo/basic/details.vue

@@ -1,6 +1,7 @@
 <!-- 商机-详情 -->
 <template>
   <div class="md-content">
+    <!-- 头部信息 -->
     <el-row type="flex" justify="space-between">
       <el-col :span="6">
         <el-button size="small" @click="handleBack">返回</el-button>
@@ -45,8 +46,9 @@
         </el-col>
       </el-button-group>
     </el-row>
-
+    <!-- 主多页签 -->
     <el-tabs v-model="masterTabs" @tab-click="masterTabsSwitch">
+      <!-- 基本信息页签 -->
       <el-tab-pane label="基本信息" name="first">
         项目流程
         <el-steps :active="form.basic.boStage" finish-status="success">
@@ -63,12 +65,18 @@
           <el-step title="实施交付"></el-step>
           <el-step title="上线仪式"></el-step>
         </el-steps>
-        <el-button style="margin-top: 12px;" @click="next">下一步</el-button>
-        <el-row>
-          基本信息
-        </el-row>
+        <!-- 流程按钮组 -->
+        <div style = "text-align:right">
+          <el-button type="primary" style="margin-top: 12px;" v-hasPermi="['mk:bo:basic:identify']" @click="next" v-if="form.basic.boStage == 0"> 审核 </el-button>
+          <!-- <el-button style="margin-top: 12px;" @click="before" v-if="form.basic.boStage > 1">上一步</el-button> -->
+          <el-button style="margin-top: 12px;" v-hasPermi="['mk:bo:basic:next']" @click="next" v-if="!(form.basic.boStage == 0 || form.basic.boFlow.projectApproval == 0) && !isUpdate">下一步</el-button>
+        </div>
+        <!-- 基本信息 -->
         <el-form ref="form" :model="form.basic" label-width="80px">
           <el-row>
+            基本信息
+          </el-row>
+          <el-row>
             <el-col :span="8">
               <el-form-item label="商机来源" prop="boSource">
                 <el-select v-model="form.basic.boSource" placeholder="商机来源" :disabled="true">
@@ -102,7 +110,7 @@
           <el-row>
             <el-col :span="8">
               <el-form-item label="医院营收总额" prop="totalHosRevenue">
-                <el-select v-model="form.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true">
+                <el-select v-model="form.basic.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true">
                   <el-option
                     v-for="dict in dict.type.mk_bo_total_revenue"
                     :key="dict.value"
@@ -126,20 +134,47 @@
           </el-row>
           <el-row>
             <el-form-item label="商机内容" prop="boContent">
-                <el-input v-model="form.basic.boContent" placeholder="商机内容" :disabled="true"/>
-              </el-form-item>
+              <el-input v-model="form.basic.boContent" placeholder="商机内容" :disabled="true"/>
+            </el-form-item>
           </el-row>
         </el-form>
-        <el-row>
-          流程信息
+        <!-- 编辑按钮组 -->
+        <el-row type="flex" class="row-bg" justify="end">
+          <el-col :span="24">
+            <dev>流程信息</dev>
+          </el-col>
+          <el-col :span="2" v-show="!isUpdate">
+            <div class="grid-content bg-purple">
+              <el-button v-hasPermi="['mk:bo:basic:detail:edit']" @click="modifyButton">修改</el-button>
+            </div>
+          </el-col>
+          <el-col :span="2" v-show="isUpdate">
+            <div class="grid-content bg-purple-light">
+              <el-button v-hasPermi="['mk:bo:basic:detail:edit']" @click="cancelButton">取消</el-button>
+            </div>
+          </el-col>
+          <el-col :span="2" v-show="isUpdate">
+            <div class="grid-content bg-purple">
+              <el-button v-hasPermi="['mk:bo:basic:detail:edit']" @click="saveButton">保存</el-button>
+            </div>
+          </el-col>
         </el-row>
+        <!-- 次多页签 -->
         <el-tabs v-model="secondTabs" @tab-click="secondTabsSwitch">
+          <!-- 阶段动作1 -->
           <el-tab-pane label="阶段动作" name="jd1" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 0">
-            <el-form ref="form" :model="form.basic" :rules="rules">
+            <el-form ref="form" :model="form.basic" :rules="rules" label-width="120px">
               <el-row>
                 <el-col :span="10">
                   <el-form-item label="医院应收总额" prop="totalHosRevenue">
-                    <el-input v-model="form.basic.totalHosRevenue" placeholder="医院应收总额" :disabled="true"/>
+                    <el-select v-model="form.basic.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true">
+                      <el-option
+                        v-for="dict in dict.type.mk_bo_total_revenue"
+                        :key="dict.value"
+                        :label="dict.label"
+                        :value="dict.value"
+                      ></el-option>
+                    </el-select>
                   </el-form-item>
                 </el-col>
               </el-row>
@@ -152,18 +187,19 @@
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 阶段动作2 -->
           <el-tab-pane label="阶段动作" name="jd2" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 1">
-            <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
+            <el-form ref="form" :model="form.basic.boFlow" :rules="rules" >
               <el-row>
                 项目立项是否通过
-                <el-radio v-model = form.basic.boFlow.projectApproval label="1">是</el-radio>
-                <el-radio v-model = form.basic.boFlow.projectApproval label="0">否</el-radio>
+                <el-radio v-model = form.basic.boFlow.projectApproval label="1" :disabled="!isUpdate">是</el-radio>
+                <el-radio v-model = form.basic.boFlow.projectApproval label="0" :disabled="!isUpdate">否</el-radio>
               </el-row>
               <el-row v-if="form.basic.boFlow.projectApproval == 1">
                 <el-col :span="1.5">
                   <el-input v-model="form.basic.boFlow.businessCouncilAccessoryName" placeholder="请上传商机审议会" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.businessCouncilAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -172,6 +208,18 @@
                     @click="uploadAccessory(`business_council_accessory`)"
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.businessCouncilAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.businessCouncilAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.businessCouncilAccessoryUrlId'>
                   <el-button
                     size="mini"
                     type="text"
@@ -185,7 +233,7 @@
                 <el-col :span="1.5">
                   <el-input v-model="form.basic.boFlow.projectProposalAccessoryName" placeholder="请上传立项书" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.projectProposalAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -195,14 +243,34 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.projectProposalAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.projectProposalAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.projectProposalAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`project_proposal_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
               <el-row>
                 <el-col :span="10" v-if="form.basic.boFlow.projectApproval == 0">
-                    项目未通过原因:<el-input v-model="form.basic.boFlow.noPassCause" />
+                    项目未通过原因:<el-input v-model="form.basic.boFlow.noPassCause" :disabled="!isUpdate"/>
                 </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 立项模板 -->
           <el-tab-pane label="立项模板" name="lx" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 1">
             <el-row>
               <el-button @click="pojproDownload">标准立项书</el-button>
@@ -211,10 +279,11 @@
               <el-button @click="pojproDownload">商机审会决议书</el-button>
             </el-row>
           </el-tab-pane>
+          <!-- 项目人员组成 -->
           <el-tab-pane label="项目人员组成" name="xmry" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 1">
-            <!-- <PojpsnList :boId="this.$route.params.id"/> -->
-            <PojpsnList :source = "'BoDetails'" :bo="pojpsnParame" v-if="secondTabs == 'xmry'"/>
+            <PojpsnList :source = "'BoDetails'" :bo="this.form.basic" v-if="secondTabs == 'xmry'"/>
           </el-tab-pane>
+          <!-- 方案模板 -->
           <el-tab-pane label="方案模板" name="fa" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-row>
               <el-button @click="pojproDownload">售前提案文件模板</el-button>
@@ -232,13 +301,14 @@
               <el-button @click="pojproDownload">其他文件</el-button>
             </el-row>
           </el-tab-pane>
+          <!-- 售前提案 -->
           <el-tab-pane label="售前提案" name="sq" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
                 <el-col :span="1.5">
                   <el-input v-model="form.basic.boFlow.preSaleProposalAccessoryName" placeholder="请上传售前提案文件" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.preSaleProposalAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -248,9 +318,29 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.preSaleProposalAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.preSaleProposalAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.preSaleProposalAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`pre_sale_proposal_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 邀请考察 -->
           <el-tab-pane label="邀请考察" name="kc" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
@@ -259,7 +349,8 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.inspectStartTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间" 
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
@@ -268,7 +359,8 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.inspectEndTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间" 
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
@@ -277,7 +369,7 @@
                 <el-col :span="1.5">
                   <el-input v-model="form.basic.boFlow.investigationReportAccessoryName" placeholder="请上传考察报告" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.investigationReportAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -287,9 +379,29 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.investigationReportAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.investigationReportAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.investigationReportAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`investigation_report_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 开院务会 -->
           <el-tab-pane label="开院务会" name="kh" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
@@ -298,33 +410,37 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.conferenceTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间"
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 院内立项 -->
           <el-tab-pane label="院内立项" name="yn" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
                 <el-col :span="5">
                   <el-form-item label="院内立项时间" prop="hospitalApprovalTime">
                     <el-date-picker
-                      v-model="form.basic.boFlow.conferenceTime"
+                      v-model="form.basic.boFlow.hospitalApprovalTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间"
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
                 <el-col :span="5">
                   <el-form-item label="院内立项牵头人" prop="hospitalApprovalInitiator">
-                    <el-input v-model="form.basic.boFlow.hospitalApprovalInitiator" placeholder="院内立项牵头人" />
+                    <el-input v-model="form.basic.boFlow.hospitalApprovalInitiator" placeholder="院内立项牵头人" :disabled="!isUpdate"/>
                   </el-form-item>
                 </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 进场调研 -->
           <el-tab-pane label="进场调研" name="jc" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
@@ -333,16 +449,17 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.researchTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间"
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
               </el-row>
               <el-row>
                 <el-col :span="1.5">
-                  <el-input v-model="form.basic.boFlow.investigateReportAccessoryName" placeholder="调研报告" :disabled="true"/>
+                  <el-input v-model="form.basic.boFlow.investigateReportAccessoryName" placeholder="请上传调研报告" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.investigateReportAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -352,9 +469,29 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.investigateReportAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.investigateReportAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.investigateReportAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`investigation_report_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 挂网投标 -->
           <el-tab-pane label="挂网投标" name="gw" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 7">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
@@ -363,16 +500,17 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.hangingTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间"
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
-                <el-col :span="5">
-                  <el-form-item label="投标书" prop="researchTime">
-                    <el-input v-model="form.basic.boFlow.biddingDocumentsAccessoryName" placeholder="请上传投标书" :disabled="true"/>
-                  </el-form-item>
+              </el-row>
+              <el-row>
+                <el-col :span="1.5">
+                  <el-input v-model="form.basic.boFlow.biddingDocumentsAccessoryName" placeholder="请上传投标书" :disabled="true"/>
                 </el-col>
-                <el-col :span="5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.biddingDocumentsAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -382,24 +520,45 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.biddingDocumentsAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.biddingDocumentsAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.biddingDocumentsAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`bidding_documents_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
+              </el-row>
+              <el-row>
                 <el-col :span="5">
                   <el-form-item label="我方优势" prop="researchTime">
-                    <el-input v-model="form.ourAdvantage" placeholder="我方优势" />
+                    <el-input v-model="form.ourAdvantage" placeholder="我方优势" :disabled="!isUpdate"/>
                   </el-form-item>
                 </el-col>
               </el-row>
               <el-row>
                 <el-col :span="5">
                   投标是否通过
-                  <el-radio v-model = form.basic.boFlow.biddingDocumentsPass label="1">是</el-radio>
-                  <el-radio v-model = form.basic.boFlow.biddingDocumentsPass label="0">否</el-radio>
+                  <el-radio v-model = form.basic.boFlow.biddingDocumentsPass label="1" :disabled="!isUpdate">是</el-radio>
+                  <el-radio v-model = form.basic.boFlow.biddingDocumentsPass label="0" :disabled="!isUpdate">否</el-radio>
                 </el-col>
               </el-row>
               <el-row v-if="form.basic.boFlow.biddingDocumentsPass == 1">
                 <el-col :span="1.5">
-                  <el-input v-model="form.basic.boFlow.letterAcceptanceAccessoryName" placeholder="中标通知书" :disabled="true"/>
+                  <el-input v-model="form.basic.boFlow.letterAcceptanceAccessoryName" placeholder="请上传中标通知书" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.letterAcceptanceAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -409,9 +568,29 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.letterAcceptanceAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.letterAcceptanceAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.letterAcceptanceAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`letter_acceptance_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 合同签订 -->
           <el-tab-pane label="合同签订" name="ht" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 7">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
@@ -420,16 +599,17 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.contractSigningTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间"
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :span="5">
-                  <el-input v-model="form.basic.boFlow.contractDocumentAccessoryName" placeholder="合同文件" :disabled="true"/>
+                <el-col :span="1.5">
+                  <el-input v-model="form.basic.boFlow.contractDocumentAccessoryName" placeholder="请上传合同文件" :disabled="true"/>
                 </el-col>
-                <el-col :span="5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.contractDocumentAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -439,60 +619,83 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.contractDocumentAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.contractDocumentAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.contractDocumentAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`contract_document_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 跟进记录 -->
           <el-tab-pane label="跟进记录" name="gj" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 0 || form.basic.boStage == 1 || form.basic.boStage == 6 || form.basic.boStage == 7">
-            <BehaviorList :source = "'BoDetails'" :bo="behaviorParame" v-if="secondTabs == 'gj'"/>
+            <BehaviorList :source = "'BoDetails'" :bo="this.form.basic" v-if="secondTabs == 'gj'"/>
           </el-tab-pane>
         </el-tabs>
-        <el-row>
-          其它信息
-        </el-row>
+        <!-- 其它信息 -->
         <el-form ref="form" :model="form.basic" label-width="80px">
           <el-row>
+            其它信息
+          </el-row>
+          <el-row>
             <el-col :span="8">
               <el-form-item label="销售组织" prop="marketingOrganizingName">
-                <el-input v-model="form.basic.marketingOrganizingName" placeholder="销售组织" :disabled="true"/>
+                <el-input v-model="form.basic.marketingOrganizingName" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="销售区域" prop="marketingArea">
-                <el-input v-model="form.basic.marketingArea" placeholder="销售区域" :disabled="true"/>
+                <el-input v-model="form.basic.marketingArea" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="部门" prop="deptName">
-                <el-input v-model="form.basic.deptName" placeholder="部门" :disabled="true"/>
+                <el-input v-model="form.basic.deptName" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="8">
               <el-form-item label="负责人" prop="principalName">
-                <el-input v-model="form.basic.principalName" placeholder="负责人" :disabled="true"/>
+                <el-input v-model="form.basic.principalName" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="创建人" prop="createBy">
-                <el-input v-model="form.basic.createBy" placeholder="创建人" :disabled="true"/>
+                <el-input v-model="form.basic.createBy" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="创建时间" prop="createTime">
-                <el-input v-model="form.basic.createTime" placeholder="创建时间" :disabled="true"/>
+                <el-input v-model="form.basic.createTime" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
           </el-row>
         </el-form>
-
       </el-tab-pane>
+      <!-- 商机任务页签 -->
       <el-tab-pane label="商机任务" name="second">
-        <TaskList :source = "'BoDetails'" :bo="taskParame" v-if="masterTabs == 'second'"/>
+        <TaskList :source = "'BoDetails'" :bo="this.form.basic" v-if="masterTabs == 'second'"/>
       </el-tab-pane>
+      <!-- 联系人页签 -->
       <el-tab-pane label="商机联系人" name="third">
-        <ContactList :boId="this.$route.params.id"/>
+        <ContactList :source = "'BoDetails'" :bo="this.form.basic" v-if="masterTabs == 'third'"/>
       </el-tab-pane>
+      <!-- 附件页签 -->
       <el-tab-pane label="附件信息" name="fourth">
         <el-row :gutter="10" class="mb8">
           <el-col :span="1.5">
@@ -512,19 +715,32 @@
           <el-table-column label="名称" align="center" prop="fileName" />
           <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
             <template slot-scope="scope">
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-delete"
-                @click="deleteAccessory(`list`,scope.row)"
-                v-hasPermi="['system:basic:remove']"
-              >删除</el-button>
+              <el-row>
+                <el-col :span="1.5">
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory('list' , scope.row)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(scope.row.urlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+              </el-row>
             </template>
           </el-table-column>
         </el-table>
       </el-tab-pane>
     </el-tabs>
-
     <!-- 上传对话框 -->
     <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
       <el-upload
@@ -552,20 +768,23 @@
 </template>
 
 <script>
-import {getBasic,getBehaviorList,delAccessory} from "@/api/business/spd/bo/basic";
-import { listTask, getTask, delTask, addTask, updateTask } from "@/api/business/spd/bo/task";
+import {getBasic,nextFlow,updateBasicFlow,delAccessory} from "@/api/business/spd/bo/basic";
 import { listAccessory, } from "@/api/business/spd/bo/accessory";
-import {listPojpsn} from "@/api/business/spd/bo/pojpsn";
 import { getToken } from "@/utils/auth";
 import TaskList from '../task/taskList.vue'
 import ContactList from '../contact/contactList.vue'
 import PojpsnList from '../pojpsn/pojpsnList.vue'
 import BehaviorList from '../behavior/behaviorList.vue'
+import axios from 'axios';
 
 export default {
+  //名称
   name: 'BoDetails',
+  //注册引入的组件
   components: {TaskList,ContactList,PojpsnList,BehaviorList},
-  dicts: ['mk_bo_type','mk_bo_state','mk_bo_winstate','mk_bo_source'],
+  //平台枚举
+  dicts: ['mk_bo_type','mk_bo_state','mk_bo_winstate','mk_bo_source','mk_bo_total_revenue'],
+  //数据
   data() {
       return {
         masterTabs: 'first',
@@ -574,27 +793,8 @@ export default {
         rules:{},
         // 基本信息
         form: {
-          basic:{
-            boFlow:{}
-          },
-          task:[],
-          contact:[],
+          basic:{},
           accessory:[],
-          pojpsn:[],
-          behavior:[],
-          pojpsn:[],
-        },
-        //任务查询参数
-        taskParame:{
-          bo: null,
-        },
-        //项目成员查询参数
-        pojpsnParame:{
-          bo: null,
-        },
-        //行动查询参数
-        behaviorParame:{
-          bo: null,
         },
         // 上传参数
         upload: {
@@ -611,8 +811,35 @@ export default {
           // 上传的地址
           url: process.env.VUE_APP_BASE_API + "/mk/bo/basic/upload"
         },
+        //单据当前状态
+        isUpdate: false,
       }
   },
+  //监听属性
+  watch:{
+    //阶段
+    'form.basic.boStage':{
+      handler(newName, oldName) {
+        console.log(newName, oldName);
+        switch(newName) {
+          case 0:
+            this.secondTabs = 'jd1';
+            break;
+          case 1:
+            this.secondTabs = 'jd2';
+            break;
+          case 6:
+            this.secondTabs = 'fa';
+            break;
+          case 7:
+            this.secondTabs = 'gw';
+            break;
+        }
+      },
+      immediate: true
+    },
+  },
+  //方法
   methods: {
     // 返回
     handleBack() {
@@ -620,54 +847,62 @@ export default {
     },
     //主多页签切换
     masterTabsSwitch(e) {
-        console.log('主标签页切换',e);
-        switch(e.name) {
-          case 'second':
-              //跟进记录
-              this.taskParame.bo = this.form.basic.id;
-              break;
-          case 'third':
-              //获取联系人
-              break;
-          case 'fourth':
-              //获取附件列表
-              listAccessory(this.form.basic.id).then(response => {
-                this.form.accessory = response.rows;
-              });
-              break;
-          default:
-              break;
-        }
-    },
-    //次多页签切换
-    secondTabsSwitch(e) {
-        console.log('次标签页切换',e);
-        switch(e.name) {
-          case 'gj':
-              //跟进记录
-              this.behaviorParame.bo = this.form.basic.id;
-              break;
-          case 'xmry':
-              //项目成员
-              this.pojpsnParame.bo = this.form.basic.id;
-              break;
-          default:
-              break;
-        }
+      console.log('主标签页切换',e);
+      switch(e.name) {
+        case 'second':
+            //跟进记录
+            break;
+        case 'third':
+            //获取联系人
+            break;
+        case 'fourth':
+            //获取附件列表
+            listAccessory(this.form.basic.id).then(response => {
+              this.form.accessory = response.rows;
+            });
+            break;
+        default:
+            break;
+      }
     },
+    // //次多页签切换
+    // secondTabsSwitch(e) {
+    //     console.log('次标签页切换',e);
+    //     switch(e.name) {
+    //       case 'gj':
+    //           //跟进记录
+    //           this.behaviorParame.bo = this.form.basic.id;
+    //           break;
+    //       case 'xmry':
+    //           //项目成员
+    //           this.pojpsnParame.bo = this.form.basic.id;
+    //           break;
+    //       default:
+    //           break;
+    //     }
+    // },
     //下一步
     next() {
-        if(this.form.basic.boStage == 1){
-          this.form.basic.boStage += 5;
-        }else if(this.form.basic.boStage == 7){
-          this.form.basic.boStage += 5;
-        }else{
-          this.form.basic.boStage++;
-        }
-      },
-    //测试
-    handleAdd(){
-
+      //设置跳过部分步骤
+      var boStage = 0;
+      var boId = this.form.basic.id;
+      if(this.form.basic.boStage == 1){
+        boStage = this.form.basic.boStage + 5;
+      }else if(this.form.basic.boStage == 7){
+        boStage = this.form.basic.boStage + 5;
+      }else{
+        boStage = this.form.basic.boStage + 1;
+      }
+      nextFlow(boId,boStage).then(res => {
+        this.$modal.msgSuccess("流程扭转成功");
+        getBasic(this.$route.params.id).then(response => {
+          this.form.basic = response.data;
+        });
+      });
+    },
+    //上一步
+    before(){
+      this.form.basic.boStage--;
     },
     //上传附件公共方法
     uploadAccessory(f) {
@@ -678,6 +913,9 @@ export default {
     // 提交上传文件
     submitFileForm() {
       this.$refs.upload.submit();
+      getBasic(this.$route.params.id).then(response => {
+        this.form.basic = response.data;
+      });
     },
     // 文件上传中处理
     handleFileUploadProgress(event, file, fileList) {
@@ -688,32 +926,71 @@ export default {
       this.upload.open = false;
       this.upload.isUploading = false;
       this.$refs.upload.clearFiles();
-      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
-      this.getList();
+      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "上传结果", { dangerouslyUseHTMLString: true });
+      this.getBasic();
+    },
+    //下载附件
+    exportAccessory(urlId){
+      console.log('urlId',urlId);
+      axios.get('https://test-sy.derom.com/document-center/fastdfs/download?id=' + urlId).then(response => {
+        let blob = new Blob([res.data], { type: "application/vnd.ms-excel;charset=utf-8", });
+        let fileName = decodeURI(res.headers["content-disposition"].split("=")[1]);
+         if ("download" in document.createElement("a")) {
+          let link = document.createElement("a");
+          link.download = fileName;
+          link.style.display = "none";
+          link.href = URL.createObjectURL(blob);
+          document.body.appendChild(link);
+          link.click();
+          URL.revokeObjectURL(link.href);
+          document.body.removeChild(link);
+         } else {
+          navigator.msSaveBlob(blob, fileName);
+         }
+      });
     },
     //删除附件
     deleteAccessory(f,row){
-      // console.log("flag",f);
-      // console.log("row",row);
-      // delAccessory(this.form.basic.id,f,row.id);
+      console.log("flag",f);
+      console.log("row",row);
       this.$modal.confirm('是否确认删除?').then(function() {
-        return delAccessory(this.form.basic.id,f,row.id);
       }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
+        delAccessory(this.form.basic.id,f,row.id).then(res => {
+          if(res.code == 200){
+            getBasic(this.$route.params.id).then(response => {
+              this.form.basic = response.data;
+            });
+            this.$modal.msgSuccess("删除成功");
+          }else{
+            this.$modal.msgSuccess("删除失败");
+          }
+        })
       }).catch(() => {});
     },
-
-    //立项书下载
-    //标准立项书
-    pojproDownload(){
-
+    //修改按钮
+    modifyButton(){
+      this.isUpdate = true;
     },
-    //商机审会决议书
-    pojproDownload1(){
-
+    //取消按钮
+    cancelButton(){
+      this.isUpdate = false;
+      getBasic(this.$route.params.id).then(response => {
+        this.form.basic = response.data;
+      });
+    },
+    //保存按钮
+    saveButton(){
+      console.log('this.form.basic.boFlow',this.form.basic.boFlow)
+      updateBasicFlow(this.form.basic.boFlow).then(response => {
+        this.$modal.msgSuccess("修改成功");
+        this.isUpdate = false;
+        getBasic(this.$route.params.id).then(response => {
+          this.form.basic = response.data;
+        });
+      });
     },
   },
+  //创建钩子
   created() {
     getBasic(this.$route.params.id).then(response => {
       this.form.basic = response.data;

+ 89 - 69
src/views/business/spd/bo/basic/index.vue

@@ -10,10 +10,10 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="商机来源" prop="boSource">
-        <el-select v-model="queryParams.boSource" placeholder="请输入商机来源">
+      <el-form-item label="商机类型" prop="boType">
+        <el-select v-model="form.boType" placeholder="请输入商机类型">
           <el-option
-            v-for="dict in dict.type.mk_bo_source"
+            v-for="dict in dict.type.mk_bo_type"
             :key="dict.value"
             :label="dict.label"
             :value="dict.value"
@@ -30,6 +30,16 @@
           ></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item label="商机来源" prop="boSource">
+        <el-select v-model="queryParams.boSource" placeholder="请输入商机来源">
+          <el-option
+            v-for="dict in dict.type.mk_bo_source"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          ></el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item label="商机阶段" prop="boStage">
         <el-select v-model="queryParams.boStage" placeholder="请输入商机阶段">
           <el-option
@@ -70,7 +80,7 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-          v-hasPermi="['system:basic:add']"
+          v-hasPermi="['mk:bo:basic:add']"
         >新增</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -81,7 +91,7 @@
           size="mini"
           :disabled="single"
           @click="handleUpdate"
-          v-hasPermi="['system:basic:edit']"
+          v-hasPermi="['mk:bo:basic:edit']"
         >修改</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -92,19 +102,9 @@
           size="mini"
           :disabled="multiple"
           @click="handleDelete"
-          v-hasPermi="['system:basic:remove']"
+          v-hasPermi="['mk:bo:basic:remove']"
         >删除</el-button>
       </el-col>
-      <!-- <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:basic:export']"
-        >导出</el-button>
-      </el-col> -->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -132,42 +132,36 @@
         </template>
       </el-table-column>
       <el-table-column label="客户名称" align="center" prop="customerName" />
-      <el-table-column label="推荐人" align="center" prop="referrer" />
-      <el-table-column label="医院营收总额" align="center" prop="totalHosRevenue" >
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.mk_bo_total_revenue" :value="scope.row.totalHosRevenue"/>
-        </template>
-      </el-table-column>
-      <el-table-column label="医院耗材预估值" align="center" prop="hosDiscreetValue" />
-      <el-table-column label="商机内容" align="center" prop="boContent" />
+      <el-table-column label="医院耗材预估值(万元)" align="center" prop="hosDiscreetValue" />
+      <el-table-column label="赢单率" align="center" prop="winningRate" />
       <el-table-column label="销售区域" align="center" prop="marketingArea" />
       <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="createBy" /> -->
       <el-table-column label="创建时间" align="center" prop="createTime" />
-      <el-table-column label="操作" 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-edit"
             @click="enterDetails(scope.row)"
-            v-hasPermi="['system:basic:edit']"
+            v-hasPermi="['mk:bo:basic:detail']"
           >进入详情</el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:basic:edit']"
+            v-hasPermi="['mk:bo:basic:edit']"
           >修改</el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
-            v-hasPermi="['system:basic:remove']"
+            v-hasPermi="['mk:bo:basic:remove']"
           >删除</el-button>
         </template>
       </el-table-column>
@@ -243,32 +237,35 @@
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="医院耗材预估值" prop="hosDiscreetValue">
+            <el-form-item label="医院耗材预估值(万元)" prop="hosDiscreetValue">
               <el-input v-model="form.hosDiscreetValue" placeholder="请输入医院耗材预估值" />
             </el-form-item>
           </el-col>
-          <el-col :span="8">
+        </el-row>
+        <el-form-item label="商机内容">
+          <editor v-model="form.boContent" :min-height="192"/>
+        </el-form-item>
+        <el-row>
+          <el-col :span="6">
             <el-form-item label="销售区域" prop="marketingArea">
               <el-input v-model="form.marketingArea" placeholder="请输入销售区域" />
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="8">
+          <el-col :span="6">
             <el-form-item label="销售组织" prop="marketingOrganizingName">
               <el-input v-model="form.marketingOrganizingName">
                 <el-button slot="append" icon="el-icon-more" @click="refereOrg"></el-button>
               </el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="8">
+          <el-col :span="6">
             <el-form-item label="部门" prop="deptName">
               <el-input v-model="form.deptName">
                 <el-button slot="append" icon="el-icon-more" @click="refereDept"></el-button>
               </el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="8">
+          <el-col :span="6">
             <el-form-item label="商机负责人" prop="principalName">
               <el-input v-model="form.principalName">
                 <el-button slot="append" icon="el-icon-more" @click="refereStaff"></el-button>
@@ -276,9 +273,6 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="商机内容">
-          <editor v-model="form.boContent" :min-height="192"/>
-        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -369,38 +363,64 @@ export default {
       },
       // 表单参数
       form: {},
-      // 表单校验
-      // rules: {
-      //   boSource: [
-      //     { required: true, message: "商机来源不能为空", trigger: "blur" }
-      //   ],
-      //   boName: [
-      //     { required: true, message: "商机名称不能为空", trigger: "blur" }
-      //   ],
-      //   customerName: [
-      //     { required: true, message: "客户名称不能为空", trigger: "blur" }
-      //   ],
-      //   totalHosRevenue: [
-      //     { required: true, message: "医院营收总额不能为空", trigger: "blur" }
-      //   ],
-      //   hosDiscreetValue: [
-      //     { required: true, message: "医院耗材预估值不能为空", trigger: "blur" }
-      //   ],
-      //   boContent: [
-      //     { required: true, message: "商机内容不能为空", trigger: "blur" }
-      //   ],
-      //   marketingOrganizing: [
-      //     { required: true, message: "销售组织不能为空", trigger: "blur" }
-      //   ],
-      //   marketingArea: [
-      //     { required: true, message: "销售区域不能为空", trigger: "blur" }
-      //   ],
-      //   deptName: [
-      //     { required: true, message: "部门不能为空", trigger: "blur" }
-      //   ],
-      // }
+      //表单校验
+      rules: {
+        boSource: [
+          { required: true, message: "商机来源不能为空", trigger: "blur" }
+        ],
+        boType: [
+          { required: true, message: "商机类型不能为空", trigger: "blur" }
+        ],
+        customerName: [
+          { required: true, message: "客户名称不能为空", trigger: "blur" }
+        ],
+        totalHosRevenue: [
+          { required: true, message: "医院营收总额不能为空", trigger: "blur" }
+        ],
+        hosDiscreetValue: [
+          { required: true, message: "医院耗材预估值不能为空", trigger: "blur" }
+        ],
+        boContent: [
+          { required: true, message: "商机内容不能为空", trigger: "blur" }
+        ],
+      }
     };
   },
+  //监听属性
+  watch:{
+    //阶段
+    'form.totalHosRevenue':{
+      handler(newName, oldName) {
+        switch(newName) {
+          //5000万以下
+          case '0':
+            this.form.hosDiscreetValue = 5000 * 0.02;
+            break;
+          //5000万-1亿
+          case '1':
+            this.form.hosDiscreetValue = 10000 * 0.02;
+            break;
+          //1亿-2亿
+          case '2':
+            this.form.hosDiscreetValue = 20000 * 0.02;
+            break;
+          //2亿-5亿
+          case '3':
+            this.form.hosDiscreetValue = 50000 * 0.02;
+            break;
+          //5亿-10亿
+          case '4':
+            this.form.hosDiscreetValue = 100000 * 0.02;
+            break;
+          //10亿以上
+          case '5':
+            this.form.hosDiscreetValue = 100000 * 0.02;
+            break;
+        }
+      },
+      immediate: true,
+    },
+  },
   created() {
     this.getList();
   },

+ 62 - 13
src/views/business/spd/bo/behavior/behaviorList.vue

@@ -76,7 +76,7 @@
       <el-table-column label="销售组织" align="center" prop="salesOrgName" v-if="source == 'Behavior'"/>
       <el-table-column label="部门" align="center" prop="deptName" v-if="source == 'Behavior'"/>
 
-      <el-table-column label="操作" 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"
@@ -138,13 +138,15 @@
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="客户名称" prop="customerName">
-              <el-input v-model="form.customerName" placeholder="请输入客户名称" />
+            <el-form-item label="客户" prop="customerName">
+              <el-input v-model="form.customerName" placeholder="请输入客户" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="联系人名称" prop="linkmanName">
-              <el-input v-model="form.linkmanName" placeholder="请输入联系人名称" />
+            <el-form-item label="联系人" prop="linkmanName">
+              <el-input v-model="form.linkmanName" placeholder="请输入联系人" >
+                <el-button slot="append" icon="el-icon-more" @click="refereContact"></el-button>
+              </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -193,18 +195,18 @@
         </el-row>
         <el-row>
           <el-col  :span="8">
-            <el-form-item label="销售组织名称" prop="salesOrgName">
-              <el-input v-model="form.salesOrgName" placeholder="请输入销售组织名称" />
+            <el-form-item label="销售组织" prop="salesOrgName">
+              <el-input v-model="form.salesOrgName" placeholder="请输入销售组织" />
             </el-form-item>
           </el-col>
           <el-col  :span="8">
-             <el-form-item label="部门名称" prop="deptName">
-              <el-input v-model="form.deptName" placeholder="请输入部门名称" />
+             <el-form-item label="部门" prop="deptName">
+              <el-input v-model="form.deptName" placeholder="请输入部门" />
             </el-form-item>
           </el-col>
           <el-col  :span="8">
-            <el-form-item label="负责人名称" prop="staffName">
-              <el-input v-model="form.staffName" placeholder="请输入负责人名称" />
+            <el-form-item label="负责人" prop="staffName">
+              <el-input v-model="form.staffName" placeholder="请输入负责人" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -217,16 +219,24 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 联系人参照 -->
+    <ContactRef
+      ref="contactSelect"
+      @doSubmit="contactSelectionsToInput"
+      :single="true"
+    />
   </div>
 </template>
 
 <script>
 import { listBehavior, getBehavior, delBehavior, addBehavior, updateBehavior } from "@/api/business/spd/bo/behavior";
+import ContactRef from '@/views/business/spd/bo/refer/contact/index.vue';
 
 export default {
   name: "BehaviorList",
   props:["source","bo"],
   dicts: ['mk_bo_behavior_res','mk_bo_behavior_type','sys_yes_no','mk_bo_behavior_goal'],
+  components: {ContactRef},
   data() {
     return {
       // 遮罩层
@@ -258,12 +268,37 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        type: [
+          { required: true, message: "行动类型不能为空", trigger: "blur" }
+        ],
+        time: [
+          { required: true, message: "行动日期不能为空", trigger: "blur" }
+        ],
+        customerName: [
+          { required: true, message: "客户不能为空", trigger: "blur" }
+        ],
+        linkmanName: [
+          { required: true, message: "联系人不能为空", trigger: "blur" }
+        ],
+        purpose: [
+          { required: true, message: "拜访目的不能为空", trigger: "blur" }
+        ],
+        assist: [
+          { required: true, message: "是否需要上级协助不能为空", trigger: "blur" }
+        ],
+        assist: [
+          { required: true, message: "是否需要上级协助不能为空", trigger: "blur" }
+        ],
+        content: [
+          { required: true, message: "洽谈内容不能为空", trigger: "blur" }
+        ],
       }
     };
   },
   created() {
     console.log("this.bo",this.bo);
-    this.queryParams.bo = this.bo.bo;
+    //设置查询条件
+    this.queryParams.bo = this.bo.id;
     this.queryParams.task = this.bo.task;
     this.queryParams.taskCode = this.bo.taskCode;
     this.getList();
@@ -334,6 +369,10 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
+      if(this.bo.id){
+        this.form.bo = this.bo.id;
+        this.form.boName = this.bo.boName;
+      }
       this.open = true;
       this.title = "添加行动";
     },
@@ -382,7 +421,17 @@ export default {
       this.download('system/behavior/export', {
         ...this.queryParams
       }, `behavior_${new Date().getTime()}.xlsx`)
-    }
+    },
+    // 触发联系人参照列表
+    refereContact() {
+      this.$refs.contactSelect.init()
+    },
+    //联系人参照列表选择后
+    contactSelectionsToInput (selections) {
+      console.log('selections',selections);
+      this.form.linkman = selections[0].id;
+      this.form.linkmanName = selections[0].name;
+    },
   }
 };
 </script>

+ 259 - 158
src/views/business/spd/bo/contact/contactList.vue

@@ -89,7 +89,7 @@
       <el-table-column label="联系人分类" align="center" prop="contactClassification" />
       <el-table-column label="所属客户名称" align="center" prop="customerName" />
       <el-table-column label="所属客户编码" align="center" prop="customerCode" /> -->
-      <el-table-column label="操作" 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"
@@ -118,110 +118,240 @@
     />
 
     <!-- 添加或修改联系人管理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="商机id" prop="boId">
-          <el-input v-model="form.boId" placeholder="请输入商机id" />
-        </el-form-item>
-        <el-form-item label="创建日期" prop="createDate">
-          <el-date-picker clearable
-            v-model="form.createDate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择创建日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="部门名称" prop="departmentName">
-          <el-input v-model="form.departmentName" placeholder="请输入部门名称" />
-        </el-form-item>
-        <el-form-item label="部门编码" prop="departmentCode">
-          <el-input v-model="form.departmentCode" placeholder="请输入部门编码" />
-        </el-form-item>
-        <el-form-item label="销售区域" prop="area">
-          <el-input v-model="form.area" placeholder="请输入销售区域" />
-        </el-form-item>
-        <el-form-item label="销售组织" prop="organization">
-          <el-input v-model="form.organization" placeholder="请输入销售组织" />
-        </el-form-item>
-        <el-form-item label="最佳拜访地点" prop="visitPlace">
-          <el-input v-model="form.visitPlace" placeholder="请输入最佳拜访地点" />
-        </el-form-item>
-        <el-form-item label="最佳拜访时间" prop="visitTime">
-          <el-date-picker clearable
-            v-model="form.visitTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择最佳拜访时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="家庭地址" prop="address">
-          <el-input v-model="form.address" placeholder="请输入家庭地址" />
-        </el-form-item>
-        <el-form-item label="邮件" prop="mail">
-          <el-input v-model="form.mail" placeholder="请输入邮件" />
-        </el-form-item>
-        <el-form-item label="联系电话" prop="telephone">
-          <el-input v-model="form.telephone" placeholder="请输入联系电话" />
-        </el-form-item>
-        <el-form-item label="关键决策人" prop="decisionMaker">
-          <el-input v-model="form.decisionMaker" placeholder="请输入关键决策人" />
-        </el-form-item>
-        <el-form-item label="擅长领域" prop="fieldExpertise">
-          <el-input v-model="form.fieldExpertise" placeholder="请输入擅长领域" />
-        </el-form-item>
-        <el-form-item label="支持度" prop="support">
-          <el-input v-model="form.support" placeholder="请输入支持度" />
-        </el-form-item>
-        <el-form-item label="决策力" prop="power">
-          <el-input v-model="form.power" placeholder="请输入决策力" />
-        </el-form-item>
-        <el-form-item label="职称" prop="jobTitle">
-          <el-input v-model="form.jobTitle" placeholder="请输入职称" />
-        </el-form-item>
-        <el-form-item label="职务" prop="position">
-          <el-input v-model="form.position" placeholder="请输入职务" />
-        </el-form-item>
-        <el-form-item label="任职科室" prop="section">
-          <el-input v-model="form.section" placeholder="请输入任职科室" />
-        </el-form-item>
-        <el-form-item label="上级联系人" prop="superiorContact">
-          <el-input v-model="form.superiorContact" placeholder="请输入上级联系人" />
-        </el-form-item>
-        <el-form-item label="状态" prop="state">
-          <el-input v-model="form.state" placeholder="请输入状态" />
-        </el-form-item>
-        <el-form-item label="业务爱好" prop="hobby">
-          <el-input v-model="form.hobby" placeholder="请输入业务爱好" />
-        </el-form-item>
-        <el-form-item label="籍贯" prop="birthplace">
-          <el-input v-model="form.birthplace" placeholder="请输入籍贯" />
-        </el-form-item>
-        <el-form-item label="生日" prop="birthday">
-          <el-date-picker clearable
-            v-model="form.birthday"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择生日">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="联系人分类" prop="contactClassification">
-          <el-input v-model="form.contactClassification" placeholder="请输入联系人分类" />
-        </el-form-item>
-        <el-form-item label="所属客户名称" prop="customerName">
-          <el-input v-model="form.customerName" placeholder="请输入所属客户名称" />
-        </el-form-item>
-        <el-form-item label="所属客户编码" prop="customerCode">
-          <el-input v-model="form.customerCode" placeholder="请输入所属客户编码" />
-        </el-form-item>
-        <el-form-item label="性别" prop="gander">
-          <el-input v-model="form.gander" placeholder="请输入性别" />
-        </el-form-item>
-        <el-form-item label="姓名" prop="name">
-          <el-input v-model="form.name" placeholder="请输入姓名" />
-        </el-form-item>
-        <el-form-item label="编号" prop="code">
-          <el-input v-model="form.code" placeholder="请输入编号" />
-        </el-form-item>
+        <el-row>
+          基本信息
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="商机id" prop="boId" v-if="source == 'Contact'">
+              <el-input v-model="form.boId" placeholder="请输入商机id" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="姓名" prop="name">
+              <el-input v-model="form.name" placeholder="请输入姓名" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="性别" prop="gander">
+              <el-select v-model="form.gander" placeholder="请输入性别">
+                <el-option
+                  v-for="dict in dict.type.sys_user_sex"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="所属客户名称" prop="customerName">
+              <el-input v-model="form.customerName" placeholder="请输入所属客户名称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="联系人分类" prop="contactClassification">
+              <el-input v-model="form.contactClassification" placeholder="请输入联系人分类" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="生日" prop="birthday">
+              <el-date-picker clearable
+                v-model="form.birthday"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="请选择生日">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="籍贯" prop="birthplace">
+              <el-input v-model="form.birthplace" placeholder="请输入籍贯" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="业务爱好" prop="hobby">
+              <el-input v-model="form.hobby" placeholder="请输入业务爱好" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="状态" prop="state">
+              <el-select v-model="form.state" placeholder="请输入状态">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_contact_state"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          工作信息
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="上级联系人" prop="superiorContact">
+              <el-input v-model="form.superiorContact" placeholder="请输入上级联系人" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="任职科室" prop="section">
+              <el-select v-model="form.section" placeholder="请输入任职科室">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_section"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="职务" prop="position">
+              <el-select v-model="form.position" placeholder="请输入职务">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_position"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="职称" prop="jobTitle">
+              <el-select v-model="form.jobTitle" placeholder="请输入职称">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_job_title"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="决策力" prop="power">
+              <el-select v-model="form.power" placeholder="请输入决策力">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_power"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="支持度" prop="support">
+              <el-select v-model="form.support" placeholder="请输入支持度">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_support"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="擅长领域" prop="fieldExpertise">
+              <el-select v-model="form.fieldExpertise" placeholder="请输入擅长领域">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_field_expertise"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="关键决策人" prop="decisionMaker">
+              <el-select v-model="form.decisionMaker" placeholder="请输入关键决策人">
+                <el-option
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+        </el-row>
+        <el-row>
+          联系信息
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="联系电话" prop="telephone">
+              <el-input v-model="form.telephone" placeholder="请输入联系电话" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="邮件" prop="mail">
+              <el-input v-model="form.mail" placeholder="请输入邮件" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="家庭地址" prop="address">
+              <el-input v-model="form.address" placeholder="请输入家庭地址" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="最佳拜访时间" prop="visitTime">
+              <el-date-picker clearable
+                v-model="form.visitTime"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="请选择最佳拜访时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="最佳拜访地点" prop="visitPlace">
+              <el-input v-model="form.visitPlace" placeholder="请输入最佳拜访地点" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+        </el-row>
+        <el-row>
+          其它信息
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="部门名称" prop="departmentName">
+              <el-input v-model="form.departmentName" placeholder="请输入部门名称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="销售区域" prop="area">
+              <el-input v-model="form.area" placeholder="请输入销售区域" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="销售组织" prop="organization">
+              <el-input v-model="form.organization" placeholder="请输入销售组织" />
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -236,7 +366,8 @@ import { listContact, getContact, delContact, addContact, updateContact } from "
 
 export default {
   name: "contactList",
-  props:["boId"],
+  props:["source","bo"],
+  dicts: ['sys_user_sex','mk_bo_contact_state','mk_bo_section','mk_bo_position','mk_bo_job_title','mk_bo_power','mk_bo_support','mk_bo_field_expertise','sys_yes_no'],
   data() {
     return {
       // 遮罩层
@@ -262,32 +393,6 @@ export default {
         pageNum: 1,
         pageSize: 10,
         boId: null,
-        createDate: null,
-        departmentName: null,
-        departmentCode: null,
-        area: null,
-        organization: null,
-        visitPlace: null,
-        visitTime: null,
-        address: null,
-        mail: null,
-        telephone: null,
-        decisionMaker: null,
-        fieldExpertise: null,
-        support: null,
-        power: null,
-        jobTitle: null,
-        position: null,
-        section: null,
-        superiorContact: null,
-        state: null,
-        hobby: null,
-        birthplace: null,
-        birthday: null,
-        contactClassification: null,
-        customerName: null,
-        customerCode: null,
-        gander: null,
         name: null,
         code: null,
       },
@@ -295,49 +400,42 @@ export default {
       form: {},
       // 表单校验
       rules: {
-        area: [
-          { required: true, message: "销售区域不能为空", trigger: "blur" }
-        ],
-        organization: [
-          { required: true, message: "销售组织不能为空", trigger: "blur" }
-        ],
-        address: [
-          { required: true, message: "家庭地址不能为空", trigger: "blur" }
+        name: [
+          { required: true, message: "姓名不能为空", trigger: "blur" }
         ],
-        telephone: [
-          { required: true, message: "联系电话不能为空", trigger: "blur" }
+        gander: [
+          { required: true, message: "性别不能为空", trigger: "blur" }
         ],
-        decisionMaker: [
-          { required: true, message: "关键决策人不能为空", trigger: "blur" }
+        customerName: [
+          { required: true, message: "所属客户名称不能为空", trigger: "blur" }
         ],
-        power: [
-          { required: true, message: "决策力不能为空", trigger: "blur" }
+        state: [
+          { required: true, message: "状态不能为空", trigger: "blur" }
         ],
-        jobTitle: [
-          { required: true, message: "职称不能为空", trigger: "blur" }
+        section: [
+          { required: true, message: "任职科室不能为空", trigger: "blur" }
         ],
         position: [
           { required: true, message: "职务不能为空", trigger: "blur" }
         ],
-        section: [
-          { required: true, message: "任职科室不能为空", trigger: "blur" }
-        ],
-        customerName: [
-          { required: true, message: "所属客户名称不能为空", trigger: "blur" }
+        jobTitle: [
+          { required: true, message: "职称不能为空", trigger: "blur" }
         ],
-        gander: [
-          { required: true, message: "性别不能为空", trigger: "blur" }
+        power: [
+          { required: true, message: "决策力不能为空", trigger: "blur" }
         ],
-        name: [
-          { required: true, message: "姓名不能为空", trigger: "blur" }
+        decisionMaker: [
+          { required: true, message: "关键决策人不能为空", trigger: "blur" }
         ],
-        code: [
-          { required: true, message: "编号不能为空", trigger: "blur" }
+        telephone: [
+          { required: true, message: "联系电话不能为空", trigger: "blur" },
+          // { pattern: /^1[3|5|7|8|9]\d{9}$/, message: '请输入正确的号码格式', trigger: 'change' }
         ],
       }
     };
   },
   created() {
+    this.queryParams.boId = this.bo.id;
     this.getList();
   },
   methods: {
@@ -414,6 +512,9 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
+      if(this.bo.id){
+        this.form.boId = this.bo.id;
+      }
       this.open = true;
       this.title = "添加联系人管理";
     },

+ 10 - 233
src/views/business/spd/bo/contact/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="创建日期" prop="createDate">
+      <!-- <el-form-item label="创建日期" prop="createDate">
         <el-date-picker clearable
           v-model="queryParams.createDate"
           type="date"
@@ -208,7 +208,7 @@
           clearable
           @keyup.enter.native="handleQuery"
         />
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item label="姓名" prop="name">
         <el-input
           v-model="queryParams.name"
@@ -230,243 +230,17 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['system:contact:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['system:contact:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:contact:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:contact:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="contactList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="商机id" align="center" prop="boId" />
-      <el-table-column label="创建日期" align="center" prop="createDate" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.createDate, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="部门名称" align="center" prop="departmentName" />
-      <el-table-column label="部门编码" align="center" prop="departmentCode" />
-      <el-table-column label="销售区域" align="center" prop="area" />
-      <el-table-column label="销售组织" align="center" prop="organization" />
-      <el-table-column label="最佳拜访地点" align="center" prop="visitPlace" />
-      <el-table-column label="最佳拜访时间" align="center" prop="visitTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.visitTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="家庭地址" align="center" prop="address" />
-      <el-table-column label="邮件" align="center" prop="mail" />
-      <el-table-column label="联系电话" align="center" prop="telephone" />
-      <el-table-column label="关键决策人" align="center" prop="decisionMaker" />
-      <el-table-column label="擅长领域" align="center" prop="fieldExpertise" />
-      <el-table-column label="支持度" align="center" prop="support" />
-      <el-table-column label="决策力" align="center" prop="power" />
-      <el-table-column label="职称" align="center" prop="jobTitle" />
-      <el-table-column label="职务" align="center" prop="position" />
-      <el-table-column label="任职科室" align="center" prop="section" />
-      <el-table-column label="上级联系人" align="center" prop="superiorContact" />
-      <el-table-column label="状态" align="center" prop="state" />
-      <el-table-column label="业务爱好" align="center" prop="hobby" />
-      <el-table-column label="籍贯" align="center" prop="birthplace" />
-      <el-table-column label="生日" align="center" prop="birthday" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="联系人分类" align="center" prop="contactClassification" />
-      <el-table-column label="所属客户名称" align="center" prop="customerName" />
-      <el-table-column label="所属客户编码" align="center" prop="customerCode" />
-      <el-table-column label="性别" align="center" prop="gander" />
-      <el-table-column label="姓名" align="center" prop="name" />
-      <el-table-column label="编号" align="center" prop="code" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:contact:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:contact:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改联系人管理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="商机id" prop="boId">
-          <el-input v-model="form.boId" placeholder="请输入商机id" />
-        </el-form-item>
-        <el-form-item label="创建日期" prop="createDate">
-          <el-date-picker clearable
-            v-model="form.createDate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择创建日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="部门名称" prop="departmentName">
-          <el-input v-model="form.departmentName" placeholder="请输入部门名称" />
-        </el-form-item>
-        <el-form-item label="部门编码" prop="departmentCode">
-          <el-input v-model="form.departmentCode" placeholder="请输入部门编码" />
-        </el-form-item>
-        <el-form-item label="销售区域" prop="area">
-          <el-input v-model="form.area" placeholder="请输入销售区域" />
-        </el-form-item>
-        <el-form-item label="销售组织" prop="organization">
-          <el-input v-model="form.organization" placeholder="请输入销售组织" />
-        </el-form-item>
-        <el-form-item label="最佳拜访地点" prop="visitPlace">
-          <el-input v-model="form.visitPlace" placeholder="请输入最佳拜访地点" />
-        </el-form-item>
-        <el-form-item label="最佳拜访时间" prop="visitTime">
-          <el-date-picker clearable
-            v-model="form.visitTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择最佳拜访时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="家庭地址" prop="address">
-          <el-input v-model="form.address" placeholder="请输入家庭地址" />
-        </el-form-item>
-        <el-form-item label="邮件" prop="mail">
-          <el-input v-model="form.mail" placeholder="请输入邮件" />
-        </el-form-item>
-        <el-form-item label="联系电话" prop="telephone">
-          <el-input v-model="form.telephone" placeholder="请输入联系电话" />
-        </el-form-item>
-        <el-form-item label="关键决策人" prop="decisionMaker">
-          <el-input v-model="form.decisionMaker" placeholder="请输入关键决策人" />
-        </el-form-item>
-        <el-form-item label="擅长领域" prop="fieldExpertise">
-          <el-input v-model="form.fieldExpertise" placeholder="请输入擅长领域" />
-        </el-form-item>
-        <el-form-item label="支持度" prop="support">
-          <el-input v-model="form.support" placeholder="请输入支持度" />
-        </el-form-item>
-        <el-form-item label="决策力" prop="power">
-          <el-input v-model="form.power" placeholder="请输入决策力" />
-        </el-form-item>
-        <el-form-item label="职称" prop="jobTitle">
-          <el-input v-model="form.jobTitle" placeholder="请输入职称" />
-        </el-form-item>
-        <el-form-item label="职务" prop="position">
-          <el-input v-model="form.position" placeholder="请输入职务" />
-        </el-form-item>
-        <el-form-item label="任职科室" prop="section">
-          <el-input v-model="form.section" placeholder="请输入任职科室" />
-        </el-form-item>
-        <el-form-item label="上级联系人" prop="superiorContact">
-          <el-input v-model="form.superiorContact" placeholder="请输入上级联系人" />
-        </el-form-item>
-        <el-form-item label="状态" prop="state">
-          <el-input v-model="form.state" placeholder="请输入状态" />
-        </el-form-item>
-        <el-form-item label="业务爱好" prop="hobby">
-          <el-input v-model="form.hobby" placeholder="请输入业务爱好" />
-        </el-form-item>
-        <el-form-item label="籍贯" prop="birthplace">
-          <el-input v-model="form.birthplace" placeholder="请输入籍贯" />
-        </el-form-item>
-        <el-form-item label="生日" prop="birthday">
-          <el-date-picker clearable
-            v-model="form.birthday"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择生日">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="联系人分类" prop="contactClassification">
-          <el-input v-model="form.contactClassification" placeholder="请输入联系人分类" />
-        </el-form-item>
-        <el-form-item label="所属客户名称" prop="customerName">
-          <el-input v-model="form.customerName" placeholder="请输入所属客户名称" />
-        </el-form-item>
-        <el-form-item label="所属客户编码" prop="customerCode">
-          <el-input v-model="form.customerCode" placeholder="请输入所属客户编码" />
-        </el-form-item>
-        <el-form-item label="性别" prop="gander">
-          <el-input v-model="form.gander" placeholder="请输入性别" />
-        </el-form-item>
-        <el-form-item label="姓名" prop="name">
-          <el-input v-model="form.name" placeholder="请输入姓名" />
-        </el-form-item>
-        <el-form-item label="编号" prop="code">
-          <el-input v-model="form.code" placeholder="请输入编号" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
+    <ContactList :key="timer" :source = "'Contact'" :bo="queryParams" />
   </div>
 </template>
 
 <script>
 import { listContact, getContact, delContact, addContact, updateContact } from "@/api/business/spd/bo/contact";
+import ContactList from '../contact/contactList.vue'
 
 export default {
   name: "Contact",
+  components: {ContactList},
   data() {
     return {
       // 遮罩层
@@ -564,7 +338,9 @@ export default {
         code: [
           { required: true, message: "编号不能为空", trigger: "blur" }
         ],
-      }
+      },
+      //重新加载子组件参数
+      timer: '',
     };
   },
   created() {
@@ -628,7 +404,8 @@ export default {
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
-      this.getList();
+      this.timer = new Date().getTime();
+      // this.getList();
     },
     /** 重置按钮操作 */
     resetQuery() {

+ 7 - 4
src/views/business/spd/bo/pojpsn/pojpsnList.vue

@@ -51,7 +51,7 @@
           <dict-tag :options="dict.type.mk_bo_pojpsn_job" :value="scope.row.job"/>
         </template>
       </el-table-column>
-      <el-table-column label="操作" 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"
@@ -172,7 +172,8 @@ export default {
     };
   },
   created() {
-    this.queryParams.bo = this.bo.bo;
+    //设置查询条件
+    this.queryParams.bo = this.bo.id;
     this.queryParams.boName = this.bo.boName;
     this.queryParams.staffName = this.bo.staffName;
     this.queryParams.post = this.bo.post;
@@ -233,9 +234,11 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
+      if(this.bo.id){
+        this.form.bo = this.bo.id;
+        this.form.boName = this.bo.boName;
+      }
       this.open = true;
-      this.form.bo = this.queryParams.bo;
-      this.form.boName = this.queryParams.boName;
       this.title = "添加项目成员";
     },
     /** 修改按钮操作 */

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

@@ -0,0 +1,242 @@
+<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="customerName">
+                <el-input
+                  size="small"
+                  v-model="queryParams.customerName"
+                  placeholder="客户名称"
+                  clearable
+                ></el-input>
+              </el-form-item>
+              <el-form-item prop="name">
+                <el-input
+                  size="small"
+                  v-model="queryParams.name"
+                  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="customerName"
+                header-align="center"
+                align="left"
+                sortable="custom"
+                min-width="90"
+                label="客户名称"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="name"
+                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 { listContact} from "@/api/business/spd/bo/contact";
+export default {
+  data() {
+    return {
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: undefined,
+        customerName: undefined,
+      },
+      searchForm: {
+        name: '',
+        customerName: ''
+      },
+      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;
+      listContact(this.addDateRange(this.queryParams)).then(response => {
+          this.dataList = response.rows;
+          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>

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

@@ -23,7 +23,7 @@
               <el-form-item prop="code">
                 <el-input
                   size="small"
-                  v-model="queryParams.userName"
+                  v-model="queryParams.code"
                   placeholder="客户编码"
                   clearable
                 ></el-input>
@@ -31,7 +31,7 @@
               <el-form-item prop="name">
                 <el-input
                   size="small"
-                  v-model="queryParams.nickName"
+                  v-model="queryParams.name"
                   placeholder="客户名称"
                   clearable
                 ></el-input>

+ 56 - 19
src/views/business/spd/bo/task/taskList.vue

@@ -38,9 +38,9 @@
 
     <el-table v-loading="loading" :data="taskList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <!-- <el-table-column label="主键" align="center" prop="id" /> -->
-      <el-table-column label="商机id" align="center" prop="bo" />
-      <el-table-column label="商机阶段" align="center" prop="boStage" />
+      <el-table-column label="商机id" align="center" prop="bo" v-if="source == 'Task'"/>
+      <el-table-column label="商机阶段" align="center" prop="boStage" v-if="source == 'Task'"/>
+      <el-table-column label="客户名称" align="center" prop="customerName" v-if="source == 'Task'"/>
       <el-table-column label="任务编码" align="center" prop="code" />
       <el-table-column label="任务名称" align="center" prop="name" />
       <el-table-column label="任务类型" align="center" prop="type" >
@@ -53,7 +53,6 @@
           <dict-tag :options="dict.type.mk_bo_taskstate" :value="scope.row.state"/>
         </template>
       </el-table-column>
-      <el-table-column label="客户名称" align="center" prop="customerName" />
       <el-table-column label="联系人" align="center" prop="linkmanName" />
       <el-table-column label="销售组织名称" align="center" prop="salesOrgName" />
       <el-table-column label="部门名称" align="center" prop="deptName" />
@@ -64,7 +63,7 @@
         </template>
       </el-table-column>
       <el-table-column label="任务内容" align="center" prop="content" />
-      <el-table-column label="操作" 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"
@@ -97,17 +96,24 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="商机名称" prop="boName">
+            <el-form-item label="商机名称" prop="boName" v-if="source == 'Task'">
               <el-input v-model="form.boName" placeholder="请输入商机名称" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="商机阶段" prop="boStage">
-              <el-input v-model="form.boStage" placeholder="请输入商机阶段" />
+            <el-form-item label="商机阶段" prop="boStage" v-if="source == 'Task'">
+              <el-select v-model="form.boStage" placeholder="请输入商机阶段">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_stage"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="客户" prop="customerName">
+            <el-form-item label="客户" prop="customerName" v-if="source == 'Task'">
               <el-input v-model="form.customerName" placeholder="请输入客户" >
                 <el-button slot="append" icon="el-icon-more" @click="refereCustomer"></el-button>
               </el-input>
@@ -141,8 +147,10 @@
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="联系人" prop="linkman">
-              <el-input v-model="form.linkman" placeholder="请输入联系人" />
+            <el-form-item label="联系人" prop="linkmanName">
+              <el-input v-model="form.linkmanName" placeholder="请输入联系人" >
+                <el-button slot="append" icon="el-icon-more" @click="refereContact"></el-button>
+              </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -208,6 +216,12 @@
       @doSubmit="customerSelectionsToInput"
       :single="true"
     />
+    <!-- 联系人参照 -->
+    <ContactRef
+      ref="contactSelect"
+      @doSubmit="contactSelectionsToInput"
+      :single="true"
+    />
     <!-- 组织参照 -->
     <OrgRef
       ref="orgSelect"
@@ -233,6 +247,7 @@
 import { listTask, getTask, delTask, addTask, updateTask } from "@/api/business/spd/bo/task";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import CustomerRef from '@/views/business/spd/bo/refer/customer/index.vue';
+import ContactRef from '@/views/business/spd/bo/refer/contact/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';
@@ -241,8 +256,8 @@ import StaffRef from '@/views/business/spd/bo/refer/staff/index.vue';
 export default {
   name: "TaskList",
   props:["source","bo"],
-  dicts: ['mk_bo_taskstate','mk_bo_tasktype'],
-  components: {CustomerRef,OrgRef,DeptRef,StaffRef},
+  dicts: ['mk_bo_taskstate','mk_bo_tasktype','mk_bo_stage'],
+  components: {CustomerRef,ContactRef,OrgRef,DeptRef,StaffRef},
   data() {
     return {
       // 遮罩层
@@ -291,17 +306,24 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        customerName: [
+          { required: true, message: "客户名称不能为空", trigger: "blur" }
+        ],
+        name: [
+          { required: true, message: "任务名称不能为空", trigger: "blur" }
+        ],
+        linkmanName: [
+          { required: true, message: "联系人不能为空", trigger: "blur" }
+        ],
+        deadlineDate: [
+          { required: true, message: "截止日期不能为空", trigger: "blur" }
+        ],
       }
     };
   },
   created() {
     //两种方式都可以用
-    console.log("this.props.boId",this.$props.boId,'this.boId',this.boId);
-    this.queryParams.bo = this.bo.bo;
-    // this.queryParams.boName = this.bo.boName;
-    // this.queryParams.staffName = this.bo.staffName;
-    // this.queryParams.post = this.bo.post;
-    // this.queryParams.job = this.bo.job;
+    this.queryParams.bo = this.bo.id;
     this.getList();
   },
   methods: {
@@ -369,6 +391,11 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
+      if(this.bo.id){
+        this.form.bo = this.bo.id;
+        this.form.boName = this.bo.boName;
+        this.form.boStage = this.bo.boStage;
+      }
       this.open = true;
       this.title = "添加任务";
     },
@@ -427,6 +454,16 @@ export default {
       this.form.customer = selections[0].id;
       this.form.customerName = selections[0].name;
     },
+    // 触发联系人参照列表
+    refereContact() {
+      this.$refs.contactSelect.init()
+    },
+    //联系人参照列表选择后
+    contactSelectionsToInput (selections) {
+      console.log('selections',selections);
+      this.form.linkman = selections[0].id;
+      this.form.linkmanName = selections[0].name;
+    },
     // 触发组织参照列表
     refereOrg() {
       this.$refs.orgSelect.init()

+ 244 - 117
src/views/material/basicFile/details.vue

@@ -10,7 +10,7 @@
           <el-button-group>
             <!-- <el-button size="small" @click="handleInster">新增</el-button> -->
             <el-button size="small" @click="handleBasicEdit">修改</el-button>
-            <el-button size="small" @click="handleDel">删除</el-button>
+            <!-- <el-button size="small" @click="handleDel">删除</el-button> -->
             <!-- <el-button size="small" @click="handleCopy">复制</el-button> -->
           </el-button-group>
         </el-col>
@@ -29,7 +29,7 @@
               </el-dropdown-menu>
             </el-dropdown>
 
-                                      <el-button size="small" @click="handleQuery">查询</el-button> -->
+                                                                                                                                    <el-button size="small" @click="handleQuery">查询</el-button> -->
             <el-button size="small" @click="handleRefresh">刷新</el-button>
 
           </el-button-group>
@@ -49,7 +49,7 @@
                 <el-dropdown-item :command="isInvoke(true)">启用</el-dropdown-item>
                 <el-dropdown-item :command="isInvoke(false)">停用</el-dropdown-item>
               </el-dropdown-menu>
-                                                                                     </el-dropdown> -->
+                                                                                                                                                                                   </el-dropdown> -->
           </el-button-group>
         </el-col>
 
@@ -58,7 +58,7 @@
           <el-button-group>
             <el-button size="small" @click="handleQueryForm">申请单查询</el-button>
           </el-button-group>
-                              </el-col> -->
+                                                                                                                            </el-col> -->
 
         <!-- 导入导出 -->
       <!-- <el-col :span="1.5">
@@ -66,7 +66,7 @@
             <el-button size="small" @click="handleImport">批量导入</el-button>
             <el-button size="small" @click="handleExport">批量导出</el-button>
           </el-button-group>
-                                </el-col> -->
+                                                                                                                              </el-col> -->
 
       </el-row>
 
@@ -92,8 +92,8 @@
     <el-row :gutter="10" class="mb10" v-show="activeMainTab != 'material'">
       <el-col :span="1.5">
         <el-button-group>
-          <el-button size="small" @click="handleEdit">修改</el-button>
-          <el-button size="small" @click="handleDel">删除</el-button>
+          <el-button size="small" @click="handleOtherEdit">修改</el-button>
+          <!-- <el-button size="small" @click="handleOtherDel">删除</el-button> -->
         </el-button-group>
         <el-button-group>
           <el-button size="small" @click="handleRefresh">刷新</el-button>
@@ -112,7 +112,7 @@
           <!-- 附件管理 -->
         <!-- <el-button-group>
             <el-button size="small" icon="el-icon-paperclip" @click="handleFile"></el-button>
-                              </el-button-group> -->
+                                                                                                                            </el-button-group> -->
 
           <!-- 切换 -->
         <!-- <el-button-group>
@@ -124,7 +124,7 @@
               @click="handleChangePage('next')" />
             <el-button size="small" icon="el-icon-d-arrow-right" :disabled="!handleBasicEdit"
               @click="handleChangePage('end')" />
-                              </el-button-group> -->
+                                                                                                                            </el-button-group> -->
         </el-col>
       </el-row>
 
@@ -170,11 +170,11 @@
                         <el-form-item v-else-if="f.attribute == 'select'" :label="f.name"
                           :id="(updateButtonGroup && f.apiUrl) ? 'selected' : ''">
 
-                          <el-select v-model="basicData.value[`${f.prop}Label`]" :placeholder="f.name"
+                          <el-select v-model="basicData.value[`${f.prop}Name`]" :placeholder="f.name"
                             :key="basicData.value[f.prop]" :disabled="!(updateButtonGroup && f.edit)"
                             @focus="f.apiUrl && handleQueryMore(f, '', { name: 'basicData', prop: f.prop })">
-                            <el-option v-if="f.dictId" v-for="d in f.dictValue" :key="d.dictValue" :label="d.dictLabel"
-                              :value="d.dictValue">
+                            <el-option v-if="f.dictId" v-for="d in f.dictValue" :key="d.dictCode" :label="d.dictLabel"
+                              :value="d.dictCode">
                             </el-option>
 
                             <div slot="empty"></div>
@@ -205,8 +205,8 @@
                   @selection-change="handleMainChange">
                   <el-table-column type="selection" width="55" />
                   <el-table-column type="index" label="序号" width="55" align="center" />
-                  <el-table-column v-for="m in  mainMsg.form" v-if="m.show" :label="m.name" align="center" :prop="m.prop"
-                    show-overflow-tooltip />
+                  <el-table-column v-for="m in  mainMsg.form" v-if="m.show" :label="m.name" align="center"
+                    :prop="m.attribute == 'select' ? `${m.prop}Name` : m.prop" show-overflow-tooltip />
                 </el-table>
 
               </div>
@@ -236,7 +236,7 @@
                             <!-- 下拉框 -->
                             <el-form-item v-else-if="m.attribute == 'select'" :label="m.name">
 
-                              <el-select v-model="medcineData.value[`${m.prop}Label`]" :placeholder="m.name"
+                              <el-select v-model="medcineData.value[`${m.prop}Name`]" :placeholder="m.name"
                                 :key="medcineData.value[m.prop]" :disabled="!updateButtonGroup"
                                 @focus="m.apiUrl && handleQueryMore(m, '', { name: 'medcineData', prop: m.prop })">
 
@@ -274,7 +274,7 @@
                       class="material-table">
                       <el-table-column type="index" label="序号" width="55" align="center" />
                       <el-table-column v-for="v in  unitDetails.form" v-if="v.show" :label="v.name" align="center"
-                        :prop="v.prop" show-overflow-tooltip />
+                        :prop="v.attribute == 'select' ? `${v.prop}Name` : v.prop" show-overflow-tooltip />
                     </el-table>
 
                     <!-- 辅助属性 -->
@@ -282,7 +282,7 @@
                       class="material-table">
                       <el-table-column type="index" label="序号" width="55" align="center" />
                       <el-table-column v-for="v in  propertyDetail.form" v-if="v.show" :label="v.name" align="center"
-                        :prop="v.prop" show-overflow-tooltip />
+                        :prop="v.attribute == 'select' ? `${v.prop}Name` : v.prop" show-overflow-tooltip />
                     </el-table>
 
                   </template>
@@ -295,13 +295,13 @@
                 <el-divider content-position="left">审计信息</el-divider>
                 <el-form :inline="true" label-position="right" :model="basicData.value">
                   <el-form-item label="创建人">
-                    <el-input v-model="basicData.value.createBy" size="small" readonly placeholder="创建人"></el-input>
+                    <el-input v-model="basicData.value.createByName" size="small" readonly placeholder="创建人"></el-input>
                   </el-form-item>
                   <el-form-item label="创建时间">
                     <el-input v-model="basicData.value.createTime" size="small" readonly placeholder="创建时间"></el-input>
                   </el-form-item>
                   <el-form-item label="最后修改人">
-                    <el-input v-model="basicData.value.updateBy" size="small" readonly placeholder="最后修改人"></el-input>
+                    <el-input v-model="basicData.value.updateByName" size="small" readonly placeholder="最后修改人"></el-input>
                   </el-form-item>
                   <el-form-item label="最后修改时间">
                     <el-input v-model="basicData.value.updateTime" size="small" readonly placeholder="最后修改时间"></el-input>
@@ -385,16 +385,16 @@
     <el-dialog :title="otherDeatils.title" :visible.sync="otherDeatils.show" show-close width="70%"
       :before-close="handleCloseOtherDetails" :close-on-press-escape="false" :close-on-click-modal="false"
       class="otherDialog">
-      <div>
+      <div v-loading="otherDeatils.loading">
         <!-- 其他标签页操作  修改、删除 -->
         <el-row :gutter="10" class="mb10">
           <el-col :span="1.5" v-if="!otherDeatils.isEdit">
             <el-button-group>
-              <el-button size="small" @click="handleEdit">修改</el-button>
-              <el-button size="small" @click="handleDel">删除</el-button>
+              <el-button size="small" @click="handleOtherEdit">修改</el-button>
+              <!-- <el-button size="small" @click="handleOtherDel">删除</el-button> -->
             </el-button-group>
             <el-button-group>
-              <el-button size="small" @click="handleRefresh">刷新</el-button>
+              <el-button size="small" @click="handleOtherRefresh">刷新</el-button>
             </el-button-group>
           </el-col>
           <el-col :span="1.5" v-else>
@@ -410,8 +410,7 @@
           <el-collapse-item title="物料基本信息" name="basic">
             <el-form :inline="true" label-position="right" :model="basicData.value">
             <!-- <el-form-item label="所属组织">
-                  <el-input v-model="basicData.value.orgName" placeholder="所属组织"></el-input>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   </el-form-item> -->
+                    <el-input v-model="basicData.value.orgName" placeholder="所属组织"></el-input></el-form-item> -->
               <el-form-item label="物料编码">
                 <el-input v-model="basicData.value.code" size="small" readonly placeholder="物料编码"></el-input>
               </el-form-item>
@@ -422,8 +421,7 @@
                 <el-input v-model="basicData.value.enName" size="small" readonly placeholder="英文名称"></el-input>
               </el-form-item>
             <!-- <el-form-item label="版本号">
-                <el-input v-model="basicData.value.version"  placeholder="版本号"></el-input>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   </el-form-item> -->
+                  <el-input v-model="basicData.value.version"  placeholder="版本号"></el-input></el-form-item> -->
 
             </el-form>
           </el-collapse-item>
@@ -439,15 +437,15 @@
                     <template v-if="f.show">
                       <!-- 多选框 -->
                       <el-form-item v-if="f.attribute == 'checkbox'" style="text-align: left;" class="od-msg-checkedbx">
-                        <el-checkbox :label="f.name" name="type" v-model="otherDeatils.value[f.prop]"
-                          :disabled="!(otherDeatils.isEdit && f.edit)">
+                        <el-checkbox :label="f.name" name="type" v-model="otherDeatils.value[f.prop]" true-label="0"
+                          false-label="2" :disabled="!(otherDeatils.isEdit && f.edit)">
                         </el-checkbox>
                       </el-form-item>
 
                       <!-- 下拉框 -->
                       <el-form-item v-else-if="f.attribute == 'select'" :label="f.name">
 
-                        <el-select v-model="otherDeatils.value[`${f.prop}Label`]" :placeholder="f.name"
+                        <el-select v-model="otherDeatils.value[`${f.prop}Name`]" :placeholder="f.name"
                           :key="otherDeatils.value[f.prop]" :disabled="!(otherDeatils.isEdit && f.edit)"
                           @focus="f.apiUrl && handleQueryMore(f, '', { name: 'otherDeatils', prop: f.prop })">
 
@@ -485,13 +483,13 @@
             <div class="md-auditInfo">
               <el-form :inline="true" label-position="right" :model="basicData.value">
                 <el-form-item label="创建人">
-                  <el-input v-model="basicData.value.createBy" size="small" readonly placeholder="创建人"></el-input>
+                  <el-input v-model="basicData.value.createByName" size="small" readonly placeholder="创建人"></el-input>
                 </el-form-item>
                 <el-form-item label="创建时间">
                   <el-input v-model="basicData.value.createTime" size="small" readonly placeholder="创建时间"></el-input>
                 </el-form-item>
                 <el-form-item label="最后修改人">
-                  <el-input v-model="basicData.value.updateBy" size="small" readonly placeholder="最后修改人"></el-input>
+                  <el-input v-model="basicData.value.updateByName" size="small" readonly placeholder="最后修改人"></el-input>
                 </el-form-item>
                 <el-form-item label="最后修改时间">
                   <el-input v-model="basicData.value.updateTime" size="small" readonly placeholder="最后修改时间"></el-input>
@@ -625,7 +623,7 @@ export default {
       // 副信息
       viceMsg: {
         form: [],
-        value: []
+        value: [],
       },
       // 操作弹窗
       optionDialog: {
@@ -634,6 +632,7 @@ export default {
       },
       // 其他页签操作弹窗
       otherDeatils: {
+        loading: false,
         show: false,
         title: '',
         // 查询关键字-物料id
@@ -720,42 +719,42 @@ export default {
         case 'material_finance':
           this.getTagList('material_finance', (form) => {
             this.mainMsg.form = form;
-            this.getFinanceList('');
+            this.getFinanceList(this.materialId);
           });
           break;
         // 利润中心信息
         case 'profit_center':
           this.getTagList('profit_center', (form) => {
             this.mainMsg.form = form;
-            this.getCenterList('');
+            this.getCenterList(this.materialId);
           });
           break;
         // 采购信息
         case 'material_purchase':
           this.getTagList('material_purchase', (form) => {
             this.mainMsg.form = form;
-            this.getPurchaseList();
+            this.getPurchaseList(this.materialId);
           });
           break;
         // 库存信息
         case 'material_inventory':
           this.getTagList('material_inventory', (form) => {
             this.mainMsg.form = form;
-            this.getInventoryList();
+            this.getInventoryList(this.materialId);
           });
           break;
         // 计划信息
         case 'material_plan':
           this.getTagList('material_plan', (form) => {
             this.mainMsg.form = form;
-            this.getPlanList('');
+            this.getPlanList(this.materialId);
           });
           break;
         // 成本信息
         case 'material_cost':
           this.getTagList('material_cost', (form) => {
             this.mainMsg.form = form;
-            this.getCostList('');
+            this.getCostList(this.materialId);
           });
           break;
         default: break;
@@ -872,6 +871,7 @@ export default {
         id,
         templateCode,
       ).then(res => {
+        this.loading = false;
         console.log(res, '物料基本信息');
         let { code, data } = res;
         if (code == 200) {
@@ -879,59 +879,59 @@ export default {
           _this.basicData.value = data.data;
           // this.basicData.form = data.form;
 
-          _this.handleAddReferLabel('basicData');
+          // _this.handleAddReferLabel('basicData');
 
         }
       })
     },
     // 添加参照中的label
-    handleAddReferLabel(dataName) {
-      let _this = this;
-      this[dataName].form.map(item => {
-        // 查参照
-        if (item.apiUrl && item.apiUrl != '') {
+    // handleAddReferLabel(dataName) {
+    //   let _this = this;
+    //   this[dataName].form.map(item => {
+    //     // 查参照
+    //     if (item.apiUrl && item.apiUrl != '') {
 
-          let param = {};
+    //       let param = {};
 
-          if (item.relevance && item.relevance != '') {
-            let reList = item.relevance.split(',');
-            console.log(reList, 'reList-------------------');
-            reList.forEach(i => {
-              param[i] = this.basicData.value[i]
-            })
-            console.log(param, 'param/////////////////////////');
-          }
+    //       if (item.relevance && item.relevance != '') {
+    //         let reList = item.relevance.split(',');
+    //         console.log(reList, 'reList-------------------');
+    //         reList.forEach(i => {
+    //           param[i] = this.basicData.value[i]
+    //         })
+    //         console.log(param, 'param/////////////////////////');
+    //       }
 
-          _this.getExecuteMethods(item.apiUrl, param, (data) => {
-            let { tableBody } = data;
+    //       _this.getExecuteMethods(item.apiUrl, param, (data) => {
+    //         let { tableBody } = data;
 
-            // 维护物料类别  --- 属于列表中获取label
-            if (dataName == 'materialType') {
+    //         // 维护物料类别  --- 属于列表中获取label
+    //         if (dataName == 'materialType') {
 
-              _this[dataName].value.length && (_this[dataName].value = _this[dataName].value.map(d => {
+    //           _this[dataName].value.length && (_this[dataName].value = _this[dataName].value.map(d => {
 
-                let Blabel = tableBody.filter((t) => t.id == d[item.prop])[0];
-                console.log(Blabel, 'Blabel``````````````````````````');
-                d[`${item.prop}Label`] = (Blabel && Blabel.name) || Blabel || '';
-                return d;
-              }))
+    //             let Blabel = tableBody.filter((t) => t.id == d[item.prop])[0];
+    //             console.log(Blabel, 'Blabel``````````````````````````');
+    //             d[`${item.prop}Label`] = (Blabel && Blabel.name) || Blabel || '';
+    //             return d;
+    //           }))
 
-            } else {
+    //         } else {
 
-              let Blabel = tableBody.filter((t) => t.id == _this[dataName].value[item.prop])[0];
-              console.log(Blabel, 'Blabel``````````````````````````');
-              _this[dataName].value[`${item.prop}Label`] = (Blabel && Blabel.name) || Blabel || '';
-            }
+    //           let Blabel = tableBody.filter((t) => t.id == _this[dataName].value[item.prop])[0];
+    //           console.log(Blabel, 'Blabel``````````````````````````');
+    //           _this[dataName].value[`${item.prop}Label`] = (Blabel && Blabel.name) || Blabel || '';
+    //         }
 
-            // this.count++;
-            this.loading = false;
-            console.log(_this[dataName].value, `${dataName}//////////////////////`);
-          })
-        }
-      })
-      this.materialType.loading = false;
+    //         // this.count++;
+    //         this.loading = false;
+    //         console.log(_this[dataName].value, `${dataName}//////////////////////`);
+    //       })
+    //     }
+    //   })
+    //   this.materialType.loading = false;
 
-    },
+    // },
 
 
     // 查询财务信息列表
@@ -939,8 +939,7 @@ export default {
       materialApi.financeList({ materialId }).then(res => {
         console.log(res, '查询财务信息列表');
         if (res.code == 200) {
-          this.mainMsg.value = res.rows;
-
+          this.mainMsg.value = res.data.tableBody.rows;
         }
       })
     },
@@ -995,7 +994,7 @@ export default {
       console.log(type, id, '查询其他标签页列表详情');
       this.otherDeatils.form = this.mainMsg.form;
       console.log(this.otherDeatils.form, 'this.otherDeatils.form');
-
+      this.otherDeatils.loading = true;
       switch (type) {
         // 财物信息
         case 'material_finance':
@@ -1027,33 +1026,36 @@ export default {
     // 查询财务信息详情
     getFinanceDetails(id) {
       materialApi.financeDetails(id).then(res => {
+        this.otherDeatils.loading = false;
         let _this = this;
         console.log('查询财务信息详情', res);
         if (res.code == 200) {
           this.otherDeatils.value = res.data.data;
-          _this.handleAddReferLabel('otherDeatils');
+          // _this.handleAddReferLabel('otherDeatils');
         }
       })
     },
     // 获取利润中心详情
-    getCenterDetails(materialId) {
+    getCenterDetails(id) {
       let _this = this;
-      materialApi.centerDetails(materialId).then(res => {
+      materialApi.centerDetails(id).then(res => {
+        this.otherDeatils.loading = false;
         console.log(res, '获取利润中心详情');
         if (res.code == 200) {
           this.otherDeatils.value = res.data.data;
-          _this.handleAddReferLabel('otherDeatils');
+          // _this.handleAddReferLabel('otherDeatils');
         }
       })
     },
     // 获取采购详细信息详情
-    getPurchaseDetails(materialId) {
+    getPurchaseDetails(id) {
       let _this = this;
-      materialApi.purchaseDetails(materialId).then(res => {
+      materialApi.purchaseDetails(id).then(res => {
+        this.otherDeatils.loading = false;
         console.log(res, '获取采购详细信息详情');
         if (res.code == 200) {
           this.otherDeatils.value = res.data.data;
-          _this.handleAddReferLabel('otherDeatils');
+          // _this.handleAddReferLabel('otherDeatils');
         }
       })
     },
@@ -1061,10 +1063,11 @@ export default {
     getCostDetails(id) {
       let _this = this;
       materialApi.costDetails(id).then(res => {
+        this.otherDeatils.loading = false;
         console.log(res, '获取成本信息详情');
         if (res.code == 200) {
           this.otherDeatils.value = res.data.data;
-          _this.handleAddReferLabel('otherDeatils');
+          // _this.handleAddReferLabel('otherDeatils');
         }
       })
     },
@@ -1072,21 +1075,23 @@ export default {
     getPlanDetails(id) {
       let _this = this;
       materialApi.planDetails(id).then(res => {
+        this.otherDeatils.loading = false;
         console.log(res, '获取计划信息详情');
         if (res.code == 200) {
           this.otherDeatils.value = res.data.data;
-          _this.handleAddReferLabel('otherDeatils');
+          // _this.handleAddReferLabel('otherDeatils');
         }
       })
     },
     // 获取库存详细信息详情
-    getInventoryDetails(materialId) {
+    getInventoryDetails(id) {
       let _this = this;
-      materialApi.inventoryDetails(materialId).then(res => {
+      materialApi.inventoryDetails(id).then(res => {
+        this.otherDeatils.loading = false;
         console.log(res, '获取库存详细信息详情');
         if (res.code == 200) {
           this.otherDeatils.value = res.data.data;
-          _this.handleAddReferLabel('otherDeatils');
+          // _this.handleAddReferLabel('otherDeatils');
         }
       })
     },
@@ -1100,13 +1105,13 @@ export default {
       let _this = this;
       console.log(id);
       materialApi.medcineDetailsInfo(id).then((res) => {
-
+        this.loading = false;
         console.log(res, '医药行业');
         let { code, data } = res;
         if (code == 200) {
           _this.medcineData.value = data.data || {};
           // this.medcineData.form = data.form;
-          _this.handleAddReferLabel('medcineData');
+          // _this.handleAddReferLabel('medcineData');
           console.log(' _this.medcineData', _this.medcineData, res);
         }
       })
@@ -1192,7 +1197,7 @@ export default {
         console.log(res, '根据物料id获取物料类别维护列表');
         if (res.code == 200) {
           _this.materialType.value = res.data.tableBody.rows;
-          _this.handleAddReferLabel('materialType');
+          // _this.handleAddReferLabel('materialType');
         }
       })
     },
@@ -1206,7 +1211,7 @@ export default {
       });
     },
     // 除基本信息之后的修改
-    handleEdit() {
+    handleOtherEdit() {
       console.log('除基本信息之后的修改', this.otherDeatils.queryKey);
 
       if ((this.otherDeatils.queryKey && this.otherDeatils.queryKey != '') || this.mainMsg.checkedList.length == 1) {
@@ -1227,6 +1232,14 @@ export default {
         });
       }
     },
+    // 其他标签详情弹窗-刷新
+    handleOtherRefresh() {
+      this.getOtherListDetails(this.activeMainTab, this.otherDeatils.queryKey);
+    },
+    // 其他标签详情弹窗-删除
+    handleOtherDel() {
+
+    },
     // 修改
     handleBasicEdit() {
       console.log('修改基本信息');
@@ -1242,7 +1255,8 @@ export default {
     },
     // 删除
     handleDel() {
-      console.log('删除');
+      console.log('删除----基本信息');
+
     },
     // 复制
     handleCopy() {
@@ -1314,7 +1328,8 @@ export default {
     handleSave() {
       console.log('保存修改');
       this.handleSaveMaterial(() => {
-        this.$router.go(0)
+        this.updateButtonGroup = false;
+        this.handleRefresh();
       });
     },
     // 物料类别列表选中
@@ -1432,8 +1447,38 @@ export default {
       this.optionDialog.op = '修改';
     },
     // 其他标签页弹窗保存
-    handleOtherSave() {
-      console.log('其他标签页弹窗保存');
+    async handleOtherSave() {
+      console.log('其他标签页弹窗保存', this.activeMainTab);
+      let data = this.otherDeatils.value;
+      console.log(data, 'params');
+      switch (this.activeMainTab) {
+        // 财物信息
+        case 'material_finance':
+          await this.handleSaveFinance(data);
+          break;
+        // 利润中心信息
+        case 'profit_center':
+          await this.handleSaveCenter(data);
+          break;
+        // 采购信息
+        case 'material_purchase':
+          await this.handleSavePurchase(data);
+          break;
+        // 库存信息
+        case 'material_inventory':
+          await this.handleSaveInventoryEdit(data);
+          break;
+        // 计划信息
+        case 'material_plan':
+          await this.handleSavePlan(data);
+          break;
+        // 成本信息
+        case 'material_cost':
+          await this.handleSaveCost(data);
+          break;
+        default: break;
+      }
+      this.handleOtherRefresh();
     },
     // 其他页签详情弹窗关闭事件
     handleCloseOtherDetails(done) {
@@ -1476,9 +1521,9 @@ export default {
     // 参照弹窗过滤
     handleFilterRefer() {
       // this.MoreDataDialog.key =
-      console.log(this.MoreDataDialog.key, '查询关键字');
+      console.log(this.MoreDataDialog.key, '查询关键字', this.MoreDataDialog.target);
 
-      this.handleQueryMore(this.MoreDataDialog.msg, this.MoreDataDialog.key);
+      this.handleQueryMore(this.MoreDataDialog.msg, this.MoreDataDialog.key, this.MoreDataDialog.target);
 
     },
     // 操作提示弹窗关闭
@@ -1506,33 +1551,42 @@ export default {
         //  基本信息
         this.basicData.value[this.MoreDataDialog.target.prop] = this.MoreDataDialog.value.id;
 
-        this.basicData.value[`${this.MoreDataDialog.target.prop}Label`] = this.MoreDataDialog.value.name;
-        console.log(this.basicData.value[`${this.MoreDataDialog.target.prop}Label`], '//////////基本信息///////////');
+        // this.basicData.value[`${this.MoreDataDialog.target.prop}Label`] = this.MoreDataDialog.value.name;
+        this.basicData.value[`${this.MoreDataDialog.target.prop}Name`] = this.MoreDataDialog.value.name;
+
+        console.log(this.MoreDataDialog.target.prop, 'props-----------------', this.MoreDataDialog.value);
+
+        console.log(this.basicData.value[`${this.MoreDataDialog.target.prop}`], '值', this.basicData.value[`${this.MoreDataDialog.target.prop}Name`], '//////////基本信息///////////');
 
       } else if (this.MoreDataDialog.target.name == 'medcineData') {
-        console.log('this.MoreDataDialog.value', this.MoreDataDialog.value, this.MoreDataDialog.target.prop, this.medcineData);
-        if (this.MoreDataDialog.target.prop === 'dosageFrom')
-          this.medcineData.form = this.medcineData.form.map((item) => {
-            if (item.prop === "dosageFrom") item.dictValue = [{ dictLabel: this.MoreDataDialog.value.name, dictValue: this.MoreDataDialog.value.id }]
-            return item
-          })
+        // console.log('this.MoreDataDialog.value', this.MoreDataDialog.value, this.MoreDataDialog.target.prop, this.medcineData);
+        // if (this.MoreDataDialog.target.prop === 'dosageFrom')
+        //   this.medcineData.form = this.medcineData.form.map((item) => {
+        //     if (item.prop === "dosageFrom") item.dictValue = [{ dictLabel: this.MoreDataDialog.value.name, dictValue: this.MoreDataDialog.value.id }]
+        //     return item
+        //   })
         //  医药信息
         this.medcineData.value[this.MoreDataDialog.target.prop] = this.MoreDataDialog.value.id;
 
-        this.medcineData.value[`${this.MoreDataDialog.target.prop}Label`] = this.MoreDataDialog.value.name;
+        // this.medcineData.value[`${this.MoreDataDialog.target.prop}Label`] = this.MoreDataDialog.value.name;
+        this.medcineData.value[`${this.MoreDataDialog.target.prop}Name`] = this.MoreDataDialog.value.name;
+
+        console.log(this.MoreDataDialog.target.prop, 'props-----------------', this.MoreDataDialog.value);
 
-        console.log(this.medcineData.value[`${this.MoreDataDialog.target.prop}Label`], '//////医药信息//////////');
+        console.log(this.medcineData.value[`${this.MoreDataDialog.target.prop}Name`], '//////医药信息//////////');
 
       } else if (this.MoreDataDialog.target.name == 'otherDeatils') {
 
         //  其他页签
         this.otherDeatils.value[this.MoreDataDialog.target.prop] = this.MoreDataDialog.value.id;
 
-        this.otherDeatils.value[`${this.MoreDataDialog.target.prop}Label`] = this.MoreDataDialog.value.name;
+        // this.otherDeatils.value[`${this.MoreDataDialog.target.prop}Label`] = this.MoreDataDialog.value.name;
+        this.otherDeatils.value[`${this.MoreDataDialog.target.prop}Name`] = this.MoreDataDialog.value.name;
 
-        console.log(this.otherDeatils.value[`${this.MoreDataDialog.target.prop}Label`], '/////////其他页签///////');
+        console.log(this.otherDeatils.value[`${this.MoreDataDialog.target.prop}Name`], '/////////其他页签///////');
 
       }
+      this.count++;
       this.MoreDataDialog.show = false;
     },
     // 取消-关闭参照弹窗
@@ -1563,6 +1617,60 @@ export default {
         if (res.code == 200) cb();
       })
     },
+    // 保存财务信息——单个数据
+    handleSaveFinance(data) {
+      console.log(data, '保存财务信息——单个数据');
+      materialApi.financeEdit(data).then(res => {
+        if (res.code == 200) {
+          this.otherDeatils.isEdit = false;
+        }
+      })
+    },
+    // 保存利润中心信息
+    handleSaveCenter(data) {
+      console.log(data, '保存利润中心信息');
+      materialApi.centerEdit(data).then(res => {
+        if (res.code == 200) {
+          this.otherDeatils.isEdit = false;
+        }
+      })
+    },
+    // 保存采购信息
+    handleSavePurchase(data) {
+      console.log(data, '保存采购信息');
+      materialApi.purchaseEdit(data).then(res => {
+        if (res.code == 200) {
+          this.otherDeatils.isEdit = false;
+        }
+      })
+    },
+    // 保存库存信息
+    handleSaveInventoryEdit(data) {
+      console.log(data, '保存库存信息');
+      materialApi.inventoryEdit(data).then(res => {
+        if (res.code == 200) {
+          this.otherDeatils.isEdit = false;
+        }
+      })
+    },
+    // 保存计划信息
+    handleSavePlan(data) {
+      console.log(data, '保存计划信息');
+      materialApi.planEdit(data).then(res => {
+        if (res.code == 200) {
+          this.otherDeatils.isEdit = false;
+        }
+      })
+    },
+    // 保存成本信息
+    handleSaveCost(data) {
+      console.log(data, '保存成本信息');
+      materialApi.costEdit(data).then(res => {
+        if (res.code == 200) {
+          this.otherDeatils.isEdit = false;
+        }
+      })
+    },
 
 
     // 重新加载
@@ -1581,6 +1689,7 @@ export default {
         this.medcineData.form = form;
         this.getMedcineDetails(this.materialId, 'material_medcine');
       })
+
     },
   },
   created() {
@@ -1610,6 +1719,10 @@ export default {
     padding: 12px;
     overflow-y: auto;
     overflow-x: auto;
+
+    .el-select {
+      width: 100%;
+    }
   }
 
   .md-content {
@@ -1622,10 +1735,17 @@ export default {
 
       .md-main {
         // height: calc(100vh - 625px);
-        max-height: 160px;
         margin-bottom: 10px;
-        overflow-y: auto;
-        overflow-x: hidden;
+
+        .el-form {
+          max-height: 200px;
+          overflow-y: auto;
+          overflow-x: hidden;
+
+          .el-checkbox {
+            padding: 0 58%;
+          }
+        }
       }
 
       .md-vice-content {
@@ -1650,6 +1770,13 @@ export default {
       padding-bottom: 12px;
     }
 
+    .el-form {
+      .el-checkbox {
+        width: 100%;
+        padding: 0 10%;
+      }
+    }
+
     .el-dialog__body {
       padding: 12px 20px;
       height: 80%;

+ 22 - 12
src/views/material/basicFile/index.vue

@@ -9,7 +9,7 @@
         <el-button-group>
           <!-- <el-button size="small" @click="handleInster">新增</el-button> -->
           <el-button size="small" @click="handleEdit">修改</el-button>
-          <el-button size="small" @click="handleDel">删除</el-button>
+          <!-- <el-button size="small" @click="handleDel">删除</el-button> -->
           <!-- <el-button size="small" @click="handleCopy">复制</el-button> -->
         </el-button-group>
       </el-col>
@@ -26,7 +26,7 @@
               <el-dropdown-item :command="filterCondition('stop')">显示停用</el-dropdown-item>
               <el-dropdown-item :command="filterCondition('allot')">显示已分配</el-dropdown-item>
             </el-dropdown-menu>
-                    </el-dropdown> -->
+                                                  </el-dropdown> -->
 
           <!-- <el-button size="small" @click="handleQuery">查询</el-button> -->
           <el-button size="small" @click="handleRefresh">刷新</el-button>
@@ -45,25 +45,26 @@
             </el-dropdown-menu>
           </el-dropdown>
         </el-button-group>
-                </el-col> -->
+                                              </el-col> -->
 
       <!-- 申请单查询 -->
     <!-- <el-col :span="1.5">
         <el-button-group>
           <el-button size="small" @click="handleQueryForm">申请单查询</el-button>
         </el-button-group>
-                </el-col> -->
+                                              </el-col> -->
 
       <!-- 导入导出 -->
       <el-col :span="1.5">
         <el-button-group>
-          <el-button size="small" @click="handleImport">批量导入</el-button>
+          <el-button size="small" @click="handleImport" v-hasPermi="['system:material:import']">批量导入</el-button>
           <el-button size="small" @click="handleExport" v-hasPermi="['system:material:export']">批量导出</el-button>
         </el-button-group>
       </el-col>
+
       <el-col :span="1.5">
         <!-- 查询框 -->
-        <el-form :inline="true" :model="queryForm" class="mb-query">
+        <el-form :inline="true" :model="queryForm" class="mb-query" @submit.native.prevent>
           <el-form-item label="物料名称">
             <el-input size="small" v-model="queryForm.name" placeholder="物料名称"></el-input>
           </el-form-item>
@@ -85,10 +86,10 @@
 
     <el-card class="material-list" v-loading="loading">
       <el-table :data="taskList" @cell-dblclick="handledbClick" @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55" />
+        <el-table-column type="selection" width="20" />
         <el-table-column type="index" label="序号" width="55" align="center" />
-        <el-table-column v-for="h in  tableHeader" v-if="h.show" :label="h.name" align="center" :prop="h.prop"
-          show-overflow-tooltip />
+        <el-table-column width="150" v-for="h in  tableHeader" v-if="h.show" :label="h.name" align="center"
+          :prop="h.attribute == 'select' ? `${h.prop}Name` : h.prop" show-overflow-tooltip />
       </el-table>
 
       <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
@@ -98,16 +99,16 @@
     </el-card>
 
     <!-- 导入弹窗 -->
-    <el-dialog title="批量导入" :visible.sync="importData.show" width="50%" center @before-close="handlefileDialogColse">
+    <el-dialog title="批量导入" :visible.sync="importData.show" width="30%" center @before-close="handlefileDialogColse">
       <div class="mb-import">
 
         <el-upload class="upload-demo" accept=".xls, .xlsx" ref="upload" action="#" :on-remove="handleFileRemove"
           :file-list="importData.list" :auto-upload="false" :on-change="handleChangeFile" :limit="1">
-          <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
+          <el-button slot="trigger" type="primary">选取文件</el-button>
           <!-- <el-button style="margin-left: 10px;" size="small" type="success" @click="handleSubmitUpload">上传到服务器</el-button> -->
           <div slot="tip" class="el-upload__tip">只能上传Excel文件</div>
         </el-upload>
-
+        <el-button type="success" @click="handleDownTemplate">下载模板</el-button>
       </div>
       <span slot="footer">
         <el-button @click="handleImportData('cancal')">取 消</el-button>
@@ -317,6 +318,11 @@ export default {
       }
       this.download('/system/material/export', params, `物料基本信息${new Date().getTime()}.xlsx`)
     },
+    // 下载模板
+    handleDownTemplate() {
+      console.log('下载模板');
+      this.download('/system/material/download', {}, `物料基本信息模板.xlsx`)
+    },
 
 
     // 操作弹窗显隐
@@ -432,7 +438,11 @@ export default {
 }
 
 .mb-import {
+  padding: 0 20%;
   text-align: center;
+  display: flex;
+  align-items: flex-start;
+  justify-content: space-around;
 }
 </style>
 <style scoped>

+ 4 - 2
src/views/material/changeApply/add.vue

@@ -469,7 +469,9 @@ export default {
       getChangeDetails(row.id).then(res => {
         if(res.code === 200) {
           this.basicForm = res.data
-          this.basicForm2 = res.data.medicineChange
+          if (res.data.medicineChange) {
+            this.basicForm2 = res.data.medicineChange
+          }
         }
       })
     },
@@ -570,7 +572,7 @@ export default {
           this.basicForm.registrant = data.registrant
           this.basicForm.storageConditions = data.storageCondition
           this.basicForm.transportCondition = data.transportationCondition
-          this.basicForm.remark = data.deliveryPeriod
+          this.basicForm.leadTime = data.deliveryPeriod
           if(data.medcines.length !== 0) {
             this.basicForm2.drug = data.medcines[0].isDrug
             this.basicForm2.registrationNo = data.medcines[0].registrationNo

+ 2 - 2
src/views/material/changeApply/index.vue

@@ -48,12 +48,12 @@
       <el-col :span="1.5">
         <el-button type="primary" size="small" plain @click="newAdd">新增</el-button>
       </el-col>
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button type="primary" size="small" plain>导入</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button type="primary" size="small" plain>导出</el-button>
-      </el-col>
+      </el-col> -->
       <!-- <el-col :span="1.5">
         <el-button type="primary" size="small" plain>批量提交</el-button>
       </el-col>

+ 2 - 2
src/views/material/classify/index.vue

@@ -10,12 +10,12 @@
       <el-col :span="1.5">
         <el-button type="primary" size="small" plain @click="deleteClassify">删除</el-button>
       </el-col>
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button type="primary" size="small" plain>启用</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button type="primary" size="small" plain>停用</el-button>
-      </el-col>
+      </el-col> -->
     </el-row>
 
     <el-card>

+ 442 - 131
src/views/material/requisition/add.vue

@@ -17,9 +17,23 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="四级分类" prop="classifyId">
-                <el-input :disabled="disable" v-model="basicForm.classifyId">
-                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="test01"></el-button>
-                </el-input>
+                <el-select
+                    ref="fourTag"
+                    v-model="basicForm.classifyId"
+                    placeholder="四级分类"
+                    :disabled="disable"
+                    @focus="chooseFourClass"
+                  >
+                    <el-option
+                      v-for="item in testOptions"
+                      :key="item.id"
+                      :label="item.materialType"
+                      :value="item.id"
+                    />
+                </el-select>
+                <!-- <el-input :disabled="disable" v-model="basicForm.classifyId">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseFourClass"></el-button>
+                </el-input> -->
               </el-form-item>
             </el-col>
           </el-row>
@@ -38,7 +52,7 @@
                       :label="item.label"
                       :value="item.value"
                     />
-                  </el-select>
+                </el-select>
               </el-form-item>
             </el-col>
             <el-col :span="8">
@@ -77,16 +91,44 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="计量单位" prop="unitId">
-                <el-input :disabled="disable" v-model="basicForm.unitId">
-                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="test02"></el-button>
-                </el-input>
+                <el-select
+                    ref="units"
+                    v-model="basicForm.unitId"
+                    placeholder="计量单位"
+                    :disabled="disable"
+                    @focus="chooseUnit"
+                  >
+                    <el-option
+                      v-for="item in unitOptions"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
+                    />
+                </el-select>
+                <!-- <el-input :disabled="disable" v-model="basicForm.unitId">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseUnit"></el-button>
+                </el-input> -->
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="生产厂家/代理人" prop="manufacturerId">
-                <el-input :disabled="disable" v-model="basicForm.manufacturerId">
-                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="test02"></el-button>
-                </el-input>
+                <el-select
+                    ref="factoryOrman"
+                    v-model="basicForm.manufacturerId"
+                    placeholder="生产厂家/代理人"
+                    :disabled="disable"
+                    @focus="chooseFactory"
+                  >
+                    <el-option
+                      v-for="item in factoryOptions"
+                      :key="item.id"
+                      :label="item.manufactureName"
+                      :value="item.id"
+                    />
+                </el-select>
+                <!-- <el-input :disabled="disable" v-model="basicForm.manufacturerId">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseFactory"></el-button>
+                </el-input> -->
               </el-form-item>
             </el-col>
           </el-row>
@@ -98,7 +140,23 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="产地" prop="originPlace">
-                <el-input :disabled="disable" v-model="basicForm.originPlace"></el-input>
+                <el-select
+                    ref="places"
+                    v-model="basicForm.originPlace"
+                    placeholder="产地"
+                    :disabled="disable"
+                    @focus="choosePlace"
+                  >
+                    <el-option
+                      v-for="item in placeOptions"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
+                    />
+                </el-select>
+                <!-- <el-input :disabled="disable" v-model="basicForm.originPlace">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="test01"></el-button>
+                </el-input> -->
               </el-form-item>
             </el-col>
             <el-col :span="8">
@@ -250,72 +308,7 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="近效期预警天数" prop="recentWarningPeriod">
-                <el-select
-                    v-model="basicForm.recentWarningPeriod"
-                    placeholder="近效期预警天数"
-                    clearable
-                    :disabled="disable"
-                  >
-                    <el-option
-                      v-for="item in options"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    />
-                </el-select>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row :gutter="20">
-            <el-col :span="8">
-              <el-form-item label="有效期单位" prop="expiryUnitId">
-                <el-select
-                    v-model="basicForm.expiryUnitId"
-                    placeholder="有效期单位"
-                    clearable
-                    :disabled="disable"
-                  >
-                    <el-option
-                      v-for="item in options"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    />
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="有效期至单位" prop="usefulLifeUnitId">
-                <el-select
-                    v-model="basicForm.usefulLifeUnitId"
-                    placeholder="有效期至单位"
-                    clearable
-                    :disabled="disable"
-                  >
-                    <el-option
-                      v-for="item in options"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    />
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="近效期预警天数" prop="recentWarningPeriod">
-                <el-select
-                    v-model="basicForm.recentWarningPeriod"
-                    placeholder="近效期预警天数"
-                    clearable
-                    :disabled="disable"
-                  >
-                    <el-option
-                      v-for="item in options"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    />
-                </el-select>
+                <el-input :disabled="disable" v-model="basicForm.recentWarningPeriod"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
@@ -329,7 +322,7 @@
                     :disabled="disable"
                   >
                     <el-option
-                      v-for="item in options"
+                      v-for="item in dict.type.sys_storage_condition"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value"
@@ -346,7 +339,7 @@
                     :disabled="disable"
                   >
                     <el-option
-                      v-for="item in options"
+                      v-for="item in dict.type.sys_conditions_carriage"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value"
@@ -356,26 +349,30 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="物料税类" prop="materialRate">
-                <el-input :disabled="disable" v-model="basicForm.materialRate"></el-input>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row :gutter="20">
-            <el-col :span="8">
-              <el-form-item label="交货周期" prop="deliveryPeriod">
                 <el-select
-                    v-model="basicForm.deliveryPeriod"
-                    placeholder="交货周期"
-                    clearable
+                    ref="taxs"
+                    v-model="basicForm.materialRate"
+                    placeholder="物料税类"
                     :disabled="disable"
+                    @focus="chooseTax"
                   >
                     <el-option
-                      v-for="item in options"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
+                      v-for="item in taxOptions"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
                     />
                 </el-select>
+                <!-- <el-input :disabled="disable" v-model="basicForm.materialRate">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="test01"></el-button>
+                </el-input> -->
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="8">
+              <el-form-item label="交货周期" prop="deliveryPeriod">
+                <el-input :disabled="disable" v-model="basicForm.deliveryPeriod"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="8">
@@ -392,7 +389,23 @@
           <el-row :gutter="20">
             <el-col :span="8">
               <el-form-item label="采购员" prop="puPersonnelId">
-                <el-input :disabled="disable" v-model="basicForm.puPersonnelId"></el-input>
+                <el-select
+                    ref="staffs"
+                    v-model="basicForm.puPersonnelId"
+                    placeholder="采购员"
+                    :disabled="disable"
+                    @focus="chooseStaff"
+                  >
+                    <el-option
+                      v-for="item in staffOptions"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.code"
+                    />
+                </el-select>
+                <!-- <el-input :disabled="disable" v-model="basicForm.puPersonnelId">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="test01"></el-button>
+                </el-input> -->
               </el-form-item>
             </el-col>
             <el-col :span="8">
@@ -436,7 +449,23 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="业务线" prop="businessLine">
-                <el-input :disabled="disable" v-model="basicForm.businessLine"></el-input>
+                <el-select
+                    ref="lines"
+                    v-model="basicForm.businessLine"
+                    placeholder="业务线"
+                    :disabled="disable"
+                    @focus="chooseLine"
+                  >
+                    <el-option
+                      v-for="item in lineOptions"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
+                    />
+                </el-select>
+                <!-- <el-input :disabled="disable" v-model="basicForm.businessLine">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="test01"></el-button>
+                </el-input> -->
               </el-form-item>
             </el-col>
           </el-row>
@@ -477,24 +506,24 @@
           <el-row :gutter="20">
             <el-col :span="8">
               <el-form-item label="一级分类" prop="oneClass">
-                <el-input :disabled="disable" v-model="basicForm.oneClass"></el-input>
+                <el-input disabled v-model="basicForm.oneClass"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="二级分类" prop="twoClass">
-                <el-input :disabled="disable" v-model="basicForm.twoClass"></el-input>
+                <el-input disabled v-model="basicForm.twoClass"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="三级分类" prop="threeClass">
-                <el-input :disabled="disable" v-model="basicForm.threeClass"></el-input>
+                <el-input disabled v-model="basicForm.threeClass"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row :gutter="20">
             <el-col :span="8">
               <el-form-item label="启用状态" prop="isEnable">
-                <el-input :disabled="disable" v-model="basicForm.isEnable"></el-input>
+                <el-input disabled v-model="basicForm.isEnable"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="8">
@@ -563,7 +592,9 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="剂型" prop="dosageFrom">
-                <el-input :disabled="disable" v-model="basicForm2.dosageFrom"></el-input>
+                <el-input :disabled="disable" v-model="basicForm2.dosageFrom">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="test01"></el-button>
+                </el-input>
               </el-form-item>
             </el-col>
           </el-row>
@@ -575,7 +606,19 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="养护类型" prop="curingType">
-                <el-input :disabled="disable" v-model="basicForm2.curingType"></el-input>
+                <el-select
+                    v-model="basicForm2.curingType"
+                    placeholder="养护类型"
+                    clearable
+                    :disabled="disable"
+                  >
+                    <el-option
+                      v-for="dict in dict.type.curing_type"
+                      :key="dict.value"
+                      :label="dict.label"
+                      :value="dict.value"
+                    />
+                  </el-select>
               </el-form-item>
             </el-col>
           </el-row>
@@ -704,24 +747,85 @@
     />
 
     <factory
-      ref="contractSelect2"
-      @doSubmit="selectionsToInput2"
+      ref="factory"
+      @doSubmit="acceptFactory"
       :selectData="selectData2"
       :single="true"
     />
+
+    <fourClass
+      ref="fourClass"
+      @doSubmit="acceptFourClass"
+      :selectData="selectData3"
+      :single="true"
+    />
+
+    <unit
+      ref="unit"
+      @doSubmit="acceptUnit"
+      :selectData="selectData4"
+      :single="true"
+    />
+
+    <place
+      ref="place"
+      @doSubmit="acceptPlace"
+      :selectData="selectData5"
+      :single="true"
+    />
+
+    <tax
+      ref="tax"
+      @doSubmit="acceptTax"
+      :selectData="selectData6"
+      :single="true"
+    />
+
+    <staff
+      ref="staff"
+      @doSubmit="acceptStaff"
+      :selectData="selectData7"
+      :single="true"
+    />
+
+    <serviceline
+      ref="line"
+      @doSubmit="acceptLine"
+      :selectData="selectData8"
+      :single="true"
+    />
   </div>
 </template>
 
 <script>
 import popDialog from '@/components/PopDialog/index.vue'
 import factory from '@/components/PopDialog/productFactory.vue'
+import fourClass from '@/components/PopDialog/fourClass.vue'
+import unit from '@/components/PopDialog/unit.vue'
+import place from '@/components/PopDialog/place.vue'
+import tax from '@/components/PopDialog/tax.vue'
+import staff from '@/components/PopDialog/staff.vue'
+import serviceline from '@/components/PopDialog/serviceline.vue'
 import { addReq, getReqDetail, editReq } from '@/api/requisition/basic'
+// 调用物料分类详情接口用于数据回显
+import { getDetail } from '@/api/classify/basic';
+// 生产厂商/代理人调用用于回显
+import { getProductFactory } from '@/api/changeApply/basic'
+// 计量单位,产地调用用于回显
+import { getUnit, getPlace, getTax, getStaff, getLine} from '@/api/requisition/basic'
+
 export default {
   name: 'requisition_add',
   dicts: ['sys_storage_condition', 'sys_conditions_carriage', 'sys_medicine', 'medical_instruments', 'curing_type'],
   components: {
     popDialog,
-    factory
+    factory,
+    fourClass,
+    unit,
+    place,
+    tax,
+    staff,
+    serviceline
   },
   props: ['pageStu', 'row', 'disable'],
   model: {
@@ -730,6 +834,13 @@ export default {
   },
   data() {
     return{
+      testOptions: [],
+      factoryOptions: [],
+      unitOptions: [],
+      placeOptions: [],
+      taxOptions: [],
+      staffOptions: [],
+      lineOptions: [],
       tabValue: 'first',
       basicForm: {
         billCode: '',
@@ -827,7 +938,13 @@ export default {
       // 弹窗
       name: '',
       selectData: [],
-      selectData2: []
+      selectData2: [],
+      selectData3: [],
+      selectData4: [],
+      selectData5: [],
+      selectData6: [],
+      selectData7: [],
+      selectData8: []
     }
   },
   // watch: {
@@ -856,35 +973,158 @@ export default {
   //   }
   // },
   mounted() {
-    this.$nextTick(() => {
       // console.log('页面状态',this.pageStu)
-      if(this.pageStu == 'check') {
-        // alert('详情页面:')
-        console.log('页面状态',this.pageStu)
-        console.log('数据', this.row)
-        this.getDetails(this.row)
-      } else if (this.pageStu == 'edit') {
-        // alert('修改页面')
-        console.log('页面状态',this.pageStu)
-        console.log('数据', this.row)
-        this.getDetails(this.row)
-      } else if(this.pageStu == 'add') {
-        // alert('新增页面')
-        console.log('页面状态',this.pageStu)
+    if(this.pageStu == 'check') {
+      // alert('详情页面:')
+      console.log('页面状态',this.pageStu)
+      console.log('数据', this.row)
+      this.getDetails(this.row)
+      // 获取树形详情
+      if (this.row.classifyId) {
+        this.getTreeDetails(this.row.classifyId)
+      }
+      // 生产厂家代理人用于回显
+      if (this.row.manufacturerId) {
+        this.getFactoryDetails(this.row.manufacturerId)
+      }
+      // 计量单位回显
+      if (this.row.unitId) {
+        this.getUnitDetails(this.row.unitId)
+      }
+      // 产地回显
+      if (this.row.originPlace) {
+        this.getPlaceDetails(this.row.originPlace)
       }
-    })
+      // 物料税类回显
+      if (this.row.materialRate) {
+        this.getTaxDetails(this.row.materialRate)
+      }
+      // 物料税类回显
+      if (this.row.puPersonnelId) {
+        this.getStaffDetails(this.row.puPersonnelId)
+      }
+      // 业务线回显
+      if (this.row.businessLine) {
+        this.getLineDetails(this.row.businessLine)
+      }
+    } else if (this.pageStu == 'edit') {
+      // alert('修改页面')
+      console.log('页面状态',this.pageStu)
+      console.log('数据', this.row)
+      this.getDetails(this.row)
+      // 获取树形详情
+      if (this.row.classifyId) {
+        this.getTreeDetails(this.row.classifyId)
+      }
+      // 生产厂家代理人用于回显
+      if (this.row.manufacturerId) {
+        this.getFactoryDetails(this.row.manufacturerId)
+      }
+      // 计量单位回显
+      if (this.row.unitId) {
+        this.getUnitDetails(this.row.unitId)
+      }
+      // 产地回显
+      if (this.row.originPlace) {
+        this.getPlaceDetails(this.row.originPlace)
+      }
+      // 物料税类回显
+      if (this.row.materialRate) {
+        this.getTaxDetails(this.row.materialRate)
+      }
+      // 物料税类回显
+      if (this.row.puPersonnelId) {
+        this.getStaffDetails(this.row.puPersonnelId)
+      }
+      // 业务线回显
+      if (this.row.businessLine) {
+        this.getLineDetails(this.row.businessLine)
+      }
+    } else if(this.pageStu == 'add') {
+      // alert('新增页面')
+      console.log('页面状态',this.pageStu)
+    }
   },
   methods: {
     handleClick(tab, event) {
       console.log(tab, event);
       console.log('页面状态',this.pageStu)
     },
+    // 用于回显四级分类树形选择
+    getTreeDetails(id) {
+      getDetail(id).then(res => {
+        if (res.code === 200) {
+          this.testOptions.push(res.data)
+          this.basicForm.oneClass = res.data.oneClass
+          this.basicForm.twoClass = res.data.twoClass
+          this.basicForm.threeClass = res.data.threeClass
+        }
+      })
+    },
+    // 生产厂家/代理人用于回显
+    getFactoryDetails(id) {
+       getProductFactory({id:id}).then(res => {
+        if(res.code === 200) {
+          this.factoryOptions = res.data.tableBody
+        }
+       })
+    },
+    // 计量单位回显
+    getUnitDetails(id) {
+      getUnit({id:id}).then(res => {
+        console.log('计量单位回显', res)
+        if (res.code === 200 ) {
+          this.unitOptions = res.data.tableBody
+          console.log('1111',this.unitOptions)
+        }
+      })
+    },
+    // 产地回显
+    getPlaceDetails(id) {
+      getPlace({id:id}).then(res => {
+        console.log('产地', res)
+        if (res.code === 200 ) {
+          this.placeOptions = res.data.tableBody
+        }
+      })
+    },
+    // 物料税类回显
+    getTaxDetails(id) {
+      getTax({id:id}).then(res => {
+        console.log('物料税类', res)
+        if (res.code === 200 ) {
+          this.taxOptions = res.data.tableBody
+        }
+      })
+    },
+    // 采购员回显
+    getStaffDetails(id) {
+      getStaff({id:id}).then(res => {
+        console.log('采购员', res)
+        if (res.code === 200 ) {
+          this.staffOptions = res.data.tableBody
+        }
+      })
+    },
+    // 业务线回显
+    getLineDetails(id) {
+      getLine({id:id}).then(res => {
+        console.log('业务线', res)
+        if (res.code === 200 ) {
+          this.lineOptions = res.data.tableBody
+        }
+      })
+    },
     // 如果是详情进入,则调用详情接口
     getDetails(row) {
       getReqDetail(row.id).then(res => {
         console.log('res',res)
         if(res.code === 200) {
           this.basicForm = res.data
+          if(res.data.unitId) {
+            this.basicForm.unitId = res.data.unitId.toString()
+            this.basicForm.manufacturerId = res.data.manufacturerId.toString()
+          }
           if(res.data.sysMaterialMedcineApply) {
             this.basicForm2 = res.data.sysMaterialMedcineApply
           }
@@ -893,7 +1133,6 @@ export default {
     },
     save() {
       if(this.pageStu == 'edit') {
-        alert(111)
         let sparams = {...this.basicForm, ...{status: 0}}
         sparams.sysMaterialMedcineApply = this.basicForm2
         console.log('提交参数', sparams)
@@ -907,7 +1146,6 @@ export default {
           }
         })
       } else {
-        alert(222)
         // alert('保存传status:0')
         let sparams = {...this.basicForm, ...{status: 0}}
         sparams.sysMaterialMedcineApply = this.basicForm2
@@ -1015,19 +1253,92 @@ export default {
         }
       })
     },
-    selectionsToInput2 (selections) {
-      console.log('选择的数据',selections)
-      this.basicForm.factory = selections[0].manufactureName
-    },
-    // 显示列表
     test01() {
       console.log('测试点击')
       this.$refs.contractSelect.init()
     },
-    test02() {
-      console.log('测试弹窗2');
-      this.$refs.contractSelect2.init()
-    }
+    // 选择生产厂家/代理人
+    acceptFactory (selections) {
+      console.log('选择的数据',selections)
+      this.factoryOptions = selections
+      this.basicForm.manufacturerId = selections[0].id
+      this.getFactoryDetails(selections[0].id)
+    },
+    // 生产厂家/代理人显示列表
+    chooseFactory() {
+      this.$refs.factoryOrman.blur()
+      this.$refs.factory.init()
+    },
+    // 选择四级分类
+    acceptFourClass (selections) {
+      console.log('父组件收到的数据',selections)
+      this.testOptions.push(selections)
+      console.log('收到的数据转成数组', this.testOptions)
+      this.basicForm.classifyId = selections.id
+      this.getTreeDetails(selections.id)
+    },
+    // 四级分类显示列表
+    chooseFourClass() {
+      this.$refs.fourTag.blur()
+      this.$refs.fourClass.init()
+    },
+    // 选择计量单位
+    acceptUnit (selections) {
+      console.log('父组件收到的数据',selections)
+      this.unitOptions = selections
+      console.log('绑定的数组',this.unitOptions)
+      this.basicForm.unitId = selections[0].id
+      this.getUnitDetails(selections[0].id)
+    },
+    // 计量单位显示列表
+    chooseUnit () {
+      this.$refs.units.blur()
+      this.$refs.unit.init()
+    },
+    // 选择产地
+    acceptPlace (selections) {
+      this.placeOptions = selections
+      this.basicForm.originPlace = selections[0].id
+      this.getPlaceDetails(selections[0].id)
+    },
+    // 产地显示列表
+    choosePlace () {
+      this.$refs.places.blur()
+      this.$refs.place.init()
+    },
+    // 选择物料税类
+    acceptTax (selections) {
+      this.taxOptions = selections
+      this.basicForm.materialRate = selections[0].id
+      this.getTaxDetails(selections[0].id)
+    },
+    // 物料税类显示列表
+    chooseTax () {
+      this.$refs.taxs.blur()
+      this.$refs.tax.init()
+    },
+    // 选择采购员
+    acceptStaff (selections) {
+      this.staffOptions = selections
+      this.basicForm.puPersonnelId = selections[0].code
+      this.getStaffDetails(selections[0].id)
+    },
+    // 采购员显示列表
+    chooseStaff () {
+      this.$refs.staffs.blur()
+      this.$refs.staff.init()
+    },
+    // 选择业务线
+    acceptLine (selections) {
+      this.lineOptions = selections
+      this.basicForm.businessLine = selections[0].id
+      this.getLineDetails(selections[0].id)
+    },
+    // 业务线显示列表
+    chooseLine () {
+      this.$refs.lines.blur()
+      this.$refs.line.init()
+    },
   }
 }
 </script>

+ 2 - 6
src/views/material/requisition/index.vue

@@ -48,12 +48,12 @@
       <el-col :span="1.5">
         <el-button type="primary" size="small" plain @click="newAdd">新增</el-button>
       </el-col>
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button type="primary" size="small" plain>导入</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button type="primary" size="small" plain>导出</el-button>
-      </el-col>
+      </el-col> -->
       <!-- <el-col :span="1.5">
         <el-button type="primary" size="small" plain>批量提交</el-button>
       </el-col>
@@ -74,15 +74,11 @@
         <el-table-column label="序号" align="center" prop="sort" />
         <el-table-column label="申请组织" align="center" prop="orgId" />
         <el-table-column label="单据编码" align="center" width="200" prop="code" />
-        <el-table-column label="目的组织" align="center" prop="orgId" />
         <el-table-column label="申请人" align="center" prop="createBy" />
         <el-table-column label="申请时间" align="center" width="150" prop="applicationTime" />
         <el-table-column label="单据状态" align="center" prop="status" :formatter="statusJug" />
-        <el-table-column label="启用状态" align="center" prop="status" />
         <el-table-column label="物料编码" align="center" width="150" prop="materialCode" />
         <el-table-column label="物料名称" align="center" prop="materialName" />
-        <el-table-column label="最后审批人" align="center" width="120" prop="approver" />
-        <el-table-column label="最后审核时间" align="center" width="150" prop="approvalTime" />
         <el-table-column label="创建人" align="center" prop="createBy" />
         <el-table-column label="创建时间" align="center" width="150" prop="createTime" />
         <el-table-column label="最后修改人" align="center" width="120" prop="updateBy" />

+ 7 - 3
vue.config.js

@@ -36,9 +36,13 @@ module.exports = {
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        // target: `http://test-sy.derom.com/drp-admin`, //生产
-        target: `http://172.16.63.202:8000/drp-admin`, //测试
-        // target: `http://172.16.13.113:8000/drp-admin`, //本地
+        // target: `http://172.16.100.107:8080/ruoyi-admin`, //生产
+        // target: `http://172.16.100.107:8080/drp-admin`, //测试
+        target: `http://test-sy.derom.com/drp-admin`, //测试
+        // target: `http://172.16.63.202:8000/drp-admin`, // 谁的本地
+        // target: `http://172.16.62.241:8000/drp-admin`, //笑寒本地
+        // target: `http://172.16.13.152:8000/drp-admin`, //豪哥本地
+        // target: `http://172.16.13.47:8000/drp-admin`, //石杨本地
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''