From db64fc3d6ff2809ec6b5d8cc42a21c67746df209 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期五, 25 八月 2023 19:23:46 +0800
Subject: [PATCH] 采购订单的 添加  2023-8-25

---
 src/components/makepager/TableCommonView.vue                        |    2 
 src/api/purchaseManage/purchase.js                                  |   99 +++
 src/assets/style/index.scss                                         |  115 +++
 src/views/purchaseManage/purchase/components/SelectClientDialog.vue |  192 +++++
 src/views/purchaseManage/purchase/components/AddPurchase.vue        |  704 +++++++++++++++++++++
 src/views/purchaseManage/purchase/index.vue                         |   39 
 src/components/makepager/CommonFormTableView.vue                    |   14 
 src/views/purchaseManage/purchase/components/AddPurchase2.vue       |  536 ++++++++++++++++
 src/views/purchaseManage/purchase/components/BomDialog.vue          |  272 ++++++++
 9 files changed, 1,960 insertions(+), 13 deletions(-)

diff --git a/src/api/purchaseManage/purchase.js b/src/api/purchaseManage/purchase.js
new file mode 100644
index 0000000..cefa894
--- /dev/null
+++ b/src/api/purchaseManage/purchase.js
@@ -0,0 +1,99 @@
+import request from "@/common/untils/request.js"
+
+// 閿�鍞嚎绱㈠垪琛�
+export function getSalesLeadsList(data) {
+  return request({
+    url: "/api/salesLeads/list",
+    method: "post",
+    data
+  })
+}
+// 娣诲姞閿�鍞嚎绱�
+export function getAddSalesLeads(data) {
+  return request({
+    url: "/api/salesLeads/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎閿�鍞嚎绱�
+export function getDeleteSalesLeads(data) {
+  return request({
+    url: "/api/salesLeads/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊閿�鍞嚎绱�
+export function getUpdateSalesLeads(data) {
+  return request({
+    url: "/api/salesLeads/update",
+    method: "put",
+    data
+  })
+}
+
+// 鎺ㄨ繘閿�鍞嚎绱�
+export function pushSalesSources(data) {
+  return request({
+    url: "/api/salesLeads/push",
+    method: "post",
+    data
+  })
+}
+
+// 鍟嗘満鏉ユ簮鍒楄〃
+export function getSalesSourcesList() {
+  return request({
+    url: "/api/salesSources/list",
+    method: "get"
+  })
+}
+// 娣诲姞鎶ヤ环鍗�
+export function getAddQuotation(data) {
+  return request({
+    url: "/api/quotation/add",
+    method: "post",
+    data
+  })
+}
+// 鏇存柊鎶ヤ环鍗�
+export function getUpdateQuotation(data) {
+  return request({
+    url: "/api/quotation/update",
+    method: "put",
+    data
+  })
+}
+// 鑾峰彇瀹㈡埛鏉ユ簮绛夋墍鏈夋暟鎹�
+export function getAllData() {
+  return request({
+    url: "/api/data/getAllData",
+    method: "get"
+  })
+}
+// 瀹㈡埛绠$悊鍒楄〃
+export function getClientList(data) {
+  return request({
+    url: "/api/client/list",
+    method: "post",
+    data
+  })
+}
+// ----bom --- 瑷堥噺鍠綅 鐨勬暩鎿� 
+export function postGetUnitDictList(data) {
+  return request({
+    url: "/api-s/v1/dict/getUnitDictList",
+    method: "post",
+    data
+  })
+}
+
+// ----bom --- 瑷堥噺鍠綅 鐨勬暩鎿�  鏇存柊 
+export function postGetSaveSUnitDict(data) {
+  return request({
+    url: "/api-s/v1/dict/saveUnitDict",
+    method: "post",
+    data
+  })
+}
\ No newline at end of file
diff --git a/src/assets/style/index.scss b/src/assets/style/index.scss
index 361de82..bed3e65 100644
--- a/src/assets/style/index.scss
+++ b/src/assets/style/index.scss
@@ -11,3 +11,118 @@
   border: 0;
   outline: 0;
 }
+// 闂磋窛
+.margin_left_3px{
+  margin-left:3px;
+}
+.margin_left_5px{
+  margin-left:5px;
+}
+.margin_left_10px{
+  margin-left:10px;
+}
+.margin_left_15px{
+  margin-left:15px;
+}
+.margin_left_20px{
+  margin-left:20px;
+}
+.margin_right_5px{
+  margin-right:5px;
+}
+.margin_right_10px{
+  margin-right:10px;
+}
+.margin_right_15px{
+  margin-right:15px!important;
+}
+.margin_right_20px{
+  margin-right:20px;
+}
+.margin_right_40px{
+  margin-right:40px;
+}
+.margin_top_10px{
+  margin-top:10px;
+}
+.margin_top_20px{
+  margin-top:20px;
+}
+.margin_top_30px{
+  margin-top:30px;
+}
+.margin_top_35px{
+  margin-top:35px;
+}
+.margin_top_40px{
+  margin-top:40px;
+}
+.margin_bottom_2px{
+  margin-bottom:2px;
+}
+.margin_bottom_10px{
+  margin-bottom:10px!important;
+}
+.margin_bottom_15px{
+  margin-bottom:15px!important;
+}
+.margin_bottom_20px{
+  margin-bottom:20px!important;
+}
+.margin_bottom_30px{
+  margin-bottom:30px!important;
+}
+.margin_bottom_40px{
+  margin-bottom:40px!important;
+}
+.margin_bottom_50px{
+  margin-bottom:50px!important;
+}
+// 
+.float_left{
+  float:left;
+}
+.float_right{
+  float:right;
+}
+// 
+.line_height_32px{
+  line-height:32px;
+}
+.text_indent_20{
+  text-indent:20px;
+}
+.text_indent_30{
+  text-indent:30px;
+}
+// 瀛椾綋澶у皬
+.font_size_12{
+  font-size:12px;
+}
+.font_size_13{
+  font-size:13px;
+}
+.font_size_14{
+  font-size:14px;
+}
+.font_size_15{
+  font-size:15px;
+}
+.font_size_16{
+  font-size:16px;
+}
+.font_size_18{
+  font-size:18px;
+}
+.font_size_20{
+  font-size:20px!important;
+}
+.font_size_30{
+  font-size:30px!important;
+}
+.font_size_40{
+  font-size:40px!important;
+}
+.cursor_pointer{
+  cursor: pointer;
+}
\ No newline at end of file
diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 55fee16..035740b 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -63,7 +63,7 @@
                     <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i>
                   </div>
                   <div class="common-select-btn" @click="clearupClient(scope.row)">
-                    <i class="el-icon-edit-outline" title="娓呴櫎"></i>
+                    <i class="el-icon-remove-outline" title="娓呴櫎"></i>
                   </div>
                 </div>
               </el-form-item>
@@ -129,7 +129,7 @@
       <el-button size="small" type="primary" @click="add">鏂板</el-button>
       <!-- <el-button size="small" type="primary" disabled>瀵煎叆鏄庣粏</el-button> -->
       <el-button size="small" type="primary" @click="empty">娓呯┖</el-button>
-      <el-button size="small" type="primary" @click="recalculate" :disabled="isRecalculate ? false : true"
+      <el-button size="small" v-if="recalculateShow" type="primary" @click="recalculate" :disabled="isRecalculate ? false : true"
         >閲嶇畻</el-button
       >
     </div>
@@ -185,10 +185,16 @@
           total: false,
           refundable: false,
           sumProp: [],
+          titleProp:["#", "浜у搧鍚嶇О"],
           mergeNumber: 1
         }
       }
-    }
+    },
+    recalculateShow:{
+      type:[Boolean],
+      defalut:true,
+    },
+    
   },
   data() {
     return {
@@ -263,7 +269,7 @@
           sums[index] = "灏忚:"
           return
         }
-        const title = ["#", "浜у搧鍚嶇О"]
+        const title = this.showSummary.titleProp
         // 鍘婚櫎鏌愪簺涓嶉渶瑕佽绠楃殑鏁版嵁
         if (title.includes(column.label)) {
           sums[index] = ""
diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue
index bb3f2c3..25cf1d1 100644
--- a/src/components/makepager/TableCommonView.vue
+++ b/src/components/makepager/TableCommonView.vue
@@ -33,7 +33,7 @@
               ? "--"
               : dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop])
           }}</span>
-          <span v-else-if="item.isClick && scope.row[item.prop]" class="sel-name" @click="selNameClick(scope.row)">{{
+          <span v-else-if="item.isClick && scope.row[item.prop]" class="sel-name" @click="selCommonClick(scope.row)">{{
             scope.row[item.prop]
           }}</span>
           <span v-else-if="item.isFirst">{{ scope.row[item.prop] ? "鏄�" : "鍚�" }}</span>
diff --git a/src/views/purchaseManage/purchase/components/AddPurchase.vue b/src/views/purchaseManage/purchase/components/AddPurchase.vue
new file mode 100644
index 0000000..816cb6d
--- /dev/null
+++ b/src/views/purchaseManage/purchase/components/AddPurchase.vue
@@ -0,0 +1,704 @@
+<template>
+  <div class="add-quotation">
+    <el-dialog
+      :title="editCommonConfig.title + '閲囪喘鍗�'"
+      :visible.sync="editConfig.visible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+      append-to-body
+      custom-class="iframe-dialog"
+    >
+      <el-form
+        ref="form"
+        :model="editConfig.infomation"
+        :rules="rules"
+        label-position="right"
+        label-width="130px"
+        size="mini"
+        style="height: 60vh; overflow-x: hidden"
+      >
+        <!-- 淇℃伅 -->
+        <div class="basic-info">
+          <!-- 鍩烘湰淇℃伅 -->
+          <div class="basic-info-title">鍩烘湰淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item
+                  label="閲囪喘绫诲瀷"
+                  prop="brand"
+                  class="form-item float_left"
+                >
+                  <el-select
+                    placeholder="璇烽�夋嫨閲囪喘绫诲瀷"
+                    v-model="editConfig.infomation.client_name"
+                    clearable
+                    style="width: calc(100% - 30px)"
+                  >
+                    <el-option
+                      v-for="ele in plcBrandList"
+                      :key="ele.id"
+                      :label="ele.name"
+                      :value="ele.name"
+                    ></el-option>
+                  </el-select>
+                  <i
+                    class="el-icon-setting margin_left_10px cursor_pointer"
+                    style="font-size: 20px; color: #333"
+                    @click="handleShow"
+                  ></i>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="渚涘簲鍟嗗悕绉�" prop="client_name">
+                  <div class="custom-name">
+                    <el-autocomplete
+                      style="width: calc(100% - 40px)"
+                      v-model="editConfig.infomation.client_name"
+                      :fetch-suggestions="
+                        (queryString, callback) => {
+                          querySearchAsync(queryString, callback, 'client');
+                        }
+                      "
+                      value-key="name"
+                      placeholder="璇烽�夋嫨"
+                      @select="handleSelectClient('client', $event)"
+                    ></el-autocomplete>
+                    <div
+                      class="common-select-btn"
+                      @click="selClientClick('client')"
+                    >
+                      <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i>
+                    </div>
+                    <div
+                      v-if="
+                        editConfig.infomation.client_name &&
+                        editConfig.infomation.client_name.length > 0
+                      "
+                      class="common-select-btn"
+                      @click="clearupClient('client')"
+                    >
+                      <i class="el-icon-remove-outline" title="娓呴櫎"></i>
+                    </div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鍗曟嵁鏉ユ簮" prop="number">
+                  <el-input
+                    v-model="editConfig.infomation.number"
+                    placeholder="璇峰~鍐�"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閲囪喘鍗曞悕绉�" prop="number">
+                  <el-input
+                    v-model="editConfig.infomation.number"
+                    placeholder="璇峰~鍐�"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="渚涘簲鍟嗚仈绯讳汉" prop="number">
+                  <el-input
+                    v-model="editConfig.infomation.number"
+                    placeholder="璇峰~鍐�"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴鐢佃瘽" prop="contact_phone">
+                  <el-input
+                    v-model="editConfig.infomation.contact_phone"
+                    placeholder="璇峰~鍐�"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="绛剧害鏃ユ湡" prop="validity_date">
+                  <el-date-picker
+                    v-model="editConfig.infomation.validity_date"
+                    style="width: 100%"
+                    type="date"
+                    placeholder="閫夋嫨鏃ユ湡"
+                    value-format="yyyy-MM-dd"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="浜や粯鏃ユ湡" prop="validity_date">
+                  <el-date-picker
+                    v-model="editConfig.infomation.validity_date"
+                    style="width: 100%"
+                    type="date"
+                    placeholder="閫夋嫨鏃ユ湡"
+                    value-format="yyyy-MM-dd"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="澶囨敞淇℃伅" prop="member_id">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 3, maxRows: 4 }"
+                    maxlength="500"
+                    clearable
+                    v-model="editConfig.infomation.member_id"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 浜у搧绠$悊 -->
+          <div class="basic-info-title" style="display: flex">浜у搧淇℃伅</div>
+          <div class="product-view">
+            <CommonFormTableView
+              :show-summary="showSummary"
+              :recalculateShow="false"
+              :product-table-list="productTableList"
+              @inputContent="inputContent"
+              @addProductClick="addProductClick"
+              @emptyProductClick="emptyProductClick"
+              @recalculateProductClick="recalculateProductClick"
+              @clearupProduct="clearupProduct"
+            />
+          </div>
+          <div class="table-bottom">
+            <div class="table-bottom-item">
+              <div class="table-bottom-l">
+                <el-form-item label="鏁村崟鎶樻墸" prop="member_id">
+                  <el-select
+                    v-model="editConfig.infomation.fieldName"
+                    placeholder="璇烽�夋嫨"
+                    filterable
+                  >
+                    <el-option label="鐧惧垎姣旈檷浠�" :value="1"></el-option>
+                    <el-option label="鐩存帴闄嶄环" :value="2"></el-option>
+                  </el-select>
+                </el-form-item>
+              </div>
+              <div class="table-bottom-r">
+                <el-form-item label="" prop="member_id">
+                  <el-input
+                    v-model="editConfig.infomation.number"
+                    size="mini"
+                    placeholder="璇峰~鍐�"
+                  ></el-input>
+                </el-form-item>
+              </div>
+            </div>
+            <div class="table-bottom-item">
+              <div class="table-bottom-l">
+                <el-form-item label="璋冩暣" prop="member_id">
+                  <el-select
+                    v-model="editConfig.infomation.fieldName"
+                    placeholder="璇烽�夋嫨"
+                    filterable
+                  >
+                    <el-option label="澧炲姞" :value="1"></el-option>
+                    <el-option label="鍑忓皯" :value="2"></el-option>
+                  </el-select>
+                </el-form-item>
+              </div>
+              <div class="table-bottom-r">
+                <el-form-item label="" prop="member_id">
+                  <el-input
+                    v-model="editConfig.infomation.number"
+                    size="mini"
+                    placeholder="璇峰~鍐�"
+                  ></el-input>
+                </el-form-item>
+              </div>
+            </div>
+            <div class="table-bottom-item">
+              <div class="table-bottom-l">鍚堣</div>
+              <div class="table-bottom-r">26000.00</div>
+            </div>
+          </div>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <!-- <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button> -->
+        <el-button type="primary" size="small" @click="saveClick('form')"
+          >淇濆瓨</el-button
+        >
+        <el-button size="small" @click="editConfig.visible = false"
+          >鍙栨秷</el-button
+        >
+      </div>
+      <!-- 閫夋嫨瀹㈡埛 -->
+      <SelectClientDialog
+        v-if="editSelectClientConfig.editVisible"
+        :edit-common-config="editSelectClientConfig"
+        @selClient="selClient"
+      />
+    </el-dialog>
+    <BomDialog
+      ref="editDialog"
+      @sucessSet="handleGetBomKindDictList"
+      @handleConfirmSave="handleConfirmSave"
+      :workList="plcBrandList"
+      title="閲囪喘绫诲瀷"
+    ></BomDialog>
+  </div>
+</template>
+
+<script>
+import CommonFormTableView from "@/components/makepager/CommonFormTableView";
+import BomDialog from "@/views/purchaseManage/purchase/components/BomDialog";
+import {
+  getAddQuotation,
+  getUpdateQuotation,
+  getAllData,
+} from "@/api/purchaseManage/purchase";
+// import {
+//   postGetUnitDictList,
+//   postGetSaveSUnitDict,
+// } from "@/api/purchaseManage/purchase";
+import SelectClientDialog from "@/views/purchaseManage/purchase/components/SelectClientDialog";
+export default {
+  name: "QuotationDialog",
+  props: {
+    editCommonConfig: {
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          title: "鍒涘缓",
+          infomation: {},
+        };
+      },
+    },
+  },
+  components: { SelectClientDialog, CommonFormTableView,BomDialog },
+  computed: {
+    searchCommonHeight() {
+      return this.$refs.searchCommonView.offsetHeight;
+    },
+    contactNamelist() {
+      return this.$store.state.getClientName.contactNamelist;
+    },
+  },
+  data() {
+    return {
+      dialogWidth: "50%",
+      editConfig: this.editCommonConfig,
+      rules: {
+        client_id: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+        number: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+        quotation_status_id: [
+          { required: true, message: "璇烽�夋嫨", trigger: "change" },
+        ],
+        member_id: [
+          { required: true, message: "璇烽�夋嫨璐熻矗浜�", trigger: "change" },
+        ],
+        contact_phone: [
+          {
+            required: true,
+            message: "璇峰~鍐�",
+            trigger: "change",
+          },
+          { validator: this.validatorPhone, trigger: "change" },
+        ],
+      },
+      memberOptions: [],
+      quotationStatusOptions: [{ id: 1, name: "涓嶇煡閬�" }], // 鎶ヤ环鍗曠姸鎬�
+      currencyOptions: [{ id: 1, name: "浜烘皯甯�" }], // 甯佺
+      approvalWorkflowOptions: [], // 瀹℃壒娴佺▼
+      productTableList: {},
+      showSummary: {
+        show: true,
+        total: false,
+        sumProp: ["Amount", "total"],
+        titleProp: [
+          "缂栧彿",
+          "浜у搧鍚嶇О",
+          "浜у搧缂栧彿",
+          "璁¢噺鍗曚綅",
+          "瑙勬牸鍨嬪彿",
+          "閲囪喘鍗曚环",
+          "鎻忚堪",
+        ],
+        mergeNumber: 4,
+      },
+      editSelectClientConfig: {
+        editVisible: false,
+        title: "",
+        infomation: {},
+      },
+      clientId: this.editCommonConfig.infomation.client_id,
+      contactId: this.editCommonConfig.infomation.contact_id,
+      saleChanceId: this.editCommonConfig.infomation.sale_chance_id,
+      tableData: [],
+      productId: 1,
+      isNoProduct: true,
+      clientList: [],
+      plcBrandList:[],
+    };
+  },
+  created() {
+    this.setTableForm();
+    this.getCommonData();
+  },
+  methods: {
+    // PLC閰嶇疆璁剧疆
+    handleShow() {
+      // this.handleGetBomKindDictList();
+      this.$refs.editDialog.editDialogVisible = true;
+    },
+    //  PLC閰嶇疆
+    handleGetBomKindDictList(val) {
+      console.log(val,'val')
+      // postGetUnitDictList().then((res) => {
+      //   this.plcBrandList = res.data;
+      //   if (val) {
+      //     for (let i in this.plcBrandList) {
+      //       if (this.plcBrandList[i].isDefault) {
+      //         this.form.unit = this.form.unit
+      //           ? this.form.unit
+      //           : this.plcBrandList[i].name;
+      //         this.$set(this.form, "unit", this.form.unit);
+      //         break;
+      //       }
+      //     }
+      //   }
+      // });
+    },
+    handleConfirmSave(data) {
+      console.log(data,'data')
+      // postGetSaveSUnitDict({ data: data }).then((res) => {
+      //   if (res.code == 200) {
+      //     this.$message({
+      //       message: "鎿嶄綔鎴愬姛锛�",
+      //       type: "success",
+      //     });
+      //     this.$refs.editDialog.editDialogVisible = false;
+      //     this.handleGetBomKindDictList();
+      //   }
+      // });
+    },
+    validatorPhone(rule, value, callback) {
+      if (value) {
+        if (value == undefined || value == null) {
+          callback(new Error("璇疯緭鍏�"));
+        } else {
+          if (value.length != 11) {
+            callback(new Error("闀垮害鍦�11涓瓧绗︼紒"));
+          } else {
+            var reg =
+              /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/;
+            if (!reg.test(value)) {
+              callback(new Error("璇峰~鍐欐纭殑鑱旂郴鐢佃瘽锛�"));
+            } else {
+              callback();
+            }
+          }
+        }
+      } else {
+        callback();
+      }
+    },
+    getCommonData() {
+      getAllData()
+        .then((res) => {
+          this.memberOptions = res.data.member;
+          this.quotationStatusOptions = res.data.quotationStatus;
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+
+    // 淇濆瓨
+    saveClick(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          for (let i = 0; i < this.tableData.length; i++) {
+            if (this.tableData[i].name.length === 0) {
+              this.isNoProduct = true;
+              break;
+            } else {
+              this.isNoProduct = false;
+            }
+          }
+          if (this.isNoProduct) {
+            this.$message.error("浜у搧鍚嶇О涓嶈兘涓虹┖");
+          } else {
+            const params = this.saveParams();
+            console.log(params);
+            if (this.editConfig.title === "鍒涘缓") {
+              getAddQuotation(params).then((res) => {
+                console.log(res);
+                this.editConfig.visible = false;
+                if (res.code === 200) {
+                  this.$message.success("娣诲姞鎴愬姛");
+                  this.$parent.getData();
+                }
+              });
+            } else {
+              getUpdateQuotation(params).then((res) => {
+                this.editConfig.visible = false;
+                if (res.code === 200) {
+                  this.$message.success("缂栬緫鎴愬姛");
+                  this.$parent.getData();
+                }
+              });
+            }
+          }
+        } else {
+          console.log("error submit");
+          return false;
+        }
+      });
+    },
+    saveParams() {
+      let data = this.editConfig.infomation;
+      let params = {
+        id: this.editConfig.title === "鍒涘缓" ? 0 : data.id,
+        client_id: this.clientId || 0,
+        conditions: data.conditions || "",
+        contact_id: this.contactId || 0,
+        file: data.file || "",
+        member_id: data.member_id || 0,
+        number: data.number || "",
+        quotation_status_id: data.quotation_status_id || 0,
+        sale_chance_id: this.saleChanceId || 0,
+        validity_date: data.validity_date || "",
+        products: this.tableData,
+      };
+      return params;
+    },
+    handleClose() {
+      this.editConfig.visible = false;
+    },
+    // 閫夋嫨瀹㈡埛鐩稿叧鏂规硶
+    querySearchAsync(queryString, cb, value) {
+      var restaurants = [];
+      if (value === "client") {
+        restaurants = this.clientList;
+      } else if (value === "contact") {
+        restaurants = this.contactNamelist;
+      }
+      var results = queryString
+        ? restaurants.filter(this.createStateFilter(queryString))
+        : restaurants;
+      cb(results);
+    },
+    createStateFilter(queryString) {
+      return (state) => {
+        return (
+          state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0
+        );
+      };
+    },
+    handleSelectClient(value, item) {
+      console.log(value);
+      if (value === "client") {
+        this.clientId = item.id;
+      } else if (value === "chance") {
+        this.saleChanceId = item.id;
+      } else {
+        this.contactId = item.id;
+      }
+    },
+    selClientClick() {
+      this.editSelectClientConfig.editVisible = true;
+    },
+    selClient(row) {
+      this.editConfig.infomation.client_name = row.name;
+      this.clientId = row.id;
+    },
+    // 娓呴櫎宸查�夋嫨鐢ㄦ埛
+    clearupClient(value) {
+      if (value == "client") {
+        this.editConfig.infomation.client_name = "";
+        this.$set(this.editConfig.infomation, "client_name", "");
+        this.clientId = null;
+        this.$forceUpdate();
+      }
+    },
+    // 娣诲姞闄勪欢
+    addAnnexClick() {},
+    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
+    setFormatClick() {},
+    setTableForm() {
+      if (
+        this.editConfig.title === "鍒涘缓" ||
+        this.editConfig.infomation.products.length === 0
+      ) {
+        this.tableData = [
+          {
+            productId: this.productId,
+            id: 0,
+            amount: 0,
+            desc: "",
+            name: "",
+            number: "",
+            price: 0,
+            total: 0,
+          },
+        ];
+      } else {
+        this.tableData = this.editConfig.infomation.products;
+        this.tableData.map((item, index) => {
+          item.productId = index + 1;
+        });
+      }
+      this.productTableList = {
+        tableData: this.tableData,
+        tableColumn: [
+          { label: "缂栧彿", prop: "productId", width: 40 },
+          {
+            label: "浜у搧鍚嶇О",
+            prop: "name",
+            productName: true,
+            isRequird: true,
+          },
+          { label: "浜у搧缂栧彿", prop: "number" },
+          { label: "璁¢噺鍗曚綅", prop: "number" },
+          { label: "瑙勬牸鍨嬪彿", prop: "number" },
+          { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true },
+          {
+            label: "閲囪喘鍗曚环",
+            prop: "price",
+            inputFloat: true,
+            isRequird: true,
+          },
+          { label: "浠风◣鍚堣", prop: "total", inputFloat: true },
+          { label: "鎻忚堪", prop: "name", input: true },
+        ],
+      };
+    },
+    // 浜у搧鍒楄〃杈撳叆
+    inputContent(val, prop, row) {
+      this.productId = row.productId;
+      this.tableData.map((item) => {
+        if (item.productId === row.productId) {
+          item[prop] = val;
+        }
+      });
+    },
+    // 浜у搧鏂板
+    addProductClick() {
+      this.productId++;
+      this.tableData.push({
+        productId: this.productId,
+        id: 0,
+        amount: 0,
+        desc: "",
+        name: "",
+        number: "",
+        price: 0,
+        total: 0,
+      });
+      this.showSummary.show = true;
+    },
+    //  浜у搧娓呯┖
+    emptyProductClick() {
+      this.productId = 1;
+      this.tableData = [
+        {
+          productId: this.productId,
+          id: 0,
+          amount: 0,
+          desc: "",
+          name: "",
+          number: "",
+          price: 0,
+          total: 0,
+        },
+      ];
+      this.productTableList.tableData = this.tableData;
+    },
+    // 浜у搧閲嶇畻
+    recalculateProductClick() {},
+    clearupProduct(data) {
+      this.tableData = data;
+      this.productTableList.tableData = this.tableData;
+    },
+  },
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.table-bottom {
+  width: 500px;
+  float: right;
+  margin-right: 20px;
+  margin-top: 10px;
+  height: auto;
+  line-height: 30px;
+  font-size: 14px;
+  font-weight: 700;
+  margin-bottom: 20px;
+  color: #333;
+  .table-bottom-item {
+    width: 100%;
+    text-align: right;
+    .table-bottom-l {
+      width: 250px;
+      float: left;
+    }
+    .table-bottom-r {
+      width: calc(100% - 250px);
+      float: right;
+    }
+  }
+}
+::v-deep {
+  .iframe-dialog .el-dialog__body {
+    .basic-info {
+      overflow: hidden;
+      .basic-info-title {
+        background-color: #f4f8fe;
+        padding-left: 10px;
+        font-size: 15px;
+        font-weight: bold;
+        color: #666;
+        height: 42px;
+        line-height: 42px;
+      }
+      .basic-info-view {
+        margin-top: 10px;
+        padding-right: 40px;
+        .custom-name,
+        .common-select {
+          display: flex;
+          .common-select-sel {
+            width: 270px;
+          }
+          .common-select-btn {
+            margin-left: 5px;
+            font-size: 16px;
+            cursor: pointer;
+          }
+        }
+      }
+      .annex-view {
+        display: flex;
+        color: #6166d3;
+        .setFormat {
+          margin-left: 10px;
+        }
+      }
+    }
+    .unflod-collapse {
+      display: flex;
+      height: 30px;
+      justify-content: center;
+      align-items: center;
+      color: #6166d3;
+    }
+    .dialog-footer {
+      background-color: #f5f5f5;
+      height: 55px;
+      line-height: 55px;
+    }
+  }
+}
+</style>
diff --git a/src/views/purchaseManage/purchase/components/AddPurchase2.vue b/src/views/purchaseManage/purchase/components/AddPurchase2.vue
new file mode 100644
index 0000000..031cb3b
--- /dev/null
+++ b/src/views/purchaseManage/purchase/components/AddPurchase2.vue
@@ -0,0 +1,536 @@
+<template>
+  <el-dialog
+    :close-on-click-modal="false"
+    :visible.sync="islook"
+    width="60rem"
+    class="add-event-dialog"
+    @close="shutdown"
+  >
+    <div slot="title" class="tac drawerHeader">
+      <span>{{ editRow.id ? "缂栬緫" : "鍒涘缓" }}閲囪喘鍗�</span>
+    </div>
+    <div class="dialog-content-box">
+      <div class="margin_bottom_20px font_size_14 title">鍩虹淇℃伅</div>
+      <el-form
+        ref="form"
+        :rules="rules"
+        :model="form"
+        label-width="120px"
+        label-position="left"
+      >
+        <el-form-item
+          label="閲囪喘绫诲瀷"
+          prop="brand"
+          class="form-item float_left"
+        >
+          <el-select
+            placeholder="璇烽�夋嫨閲囪喘绫诲瀷"
+            v-model="form.brand"
+            clearable
+            style="width: calc(100% - 30px)"
+          >
+            <el-option
+              v-for="ele in plcBrandList"
+              :key="ele.id"
+              :label="ele.name"
+              :value="ele.name"
+            ></el-option>
+          </el-select>
+          <i
+            class="el-icon-setting margin_left_10px cursor_pointer"
+            style="font-size: 20px; color: #333"
+            @click="handleShow"
+          ></i>
+        </el-form-item>
+        <el-form-item label="渚涘簲鍟嗗悕绉�" prop="returnNumber" class="form-item">
+          <el-input
+            v-model="form.returnNumber"
+            maxlength="50"
+            clearable
+            placeholder="璇疯緭鍏�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鍗曟嵁鏉ユ簮" prop="returnName" class="form-item">
+          <el-input
+            v-model="form.returnName"
+            maxlength="50"
+            clearable
+            placeholder="璇疯緭鍏�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="閲囪喘鍗曞悕绉�" prop="returnName" class="form-item">
+          <el-input
+            v-model="form.returnName"
+            maxlength="50"
+            clearable
+            placeholder="璇疯緭鍏�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="渚涘簲鍟嗚仈绯讳汉" prop="returnName" class="form-item">
+          <el-input
+            v-model="form.returnName"
+            maxlength="50"
+            clearable
+            placeholder="璇疯緭鍏�"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="鑱旂郴浜虹數璇�" prop="contact_phone" class="form-item">
+          <el-input
+            v-model="form.contact_phone"
+            placeholder="璇疯緭鍏�"
+            maxlength="11"
+            show-word-limit
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="绛剧害鏃ユ湡" prop="returnAt" class="form-item">
+          <el-date-picker
+            v-model="form.returnAt"
+            style="width: 100%"
+            type="date"
+            placeholder="閫夋嫨鏃ユ湡"
+            value-format="yyyy-MM-dd"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="浜や粯鏃ユ湡" prop="returnAt" class="form-item">
+          <el-date-picker
+            v-model="form.returnAt"
+            style="width: 100%"
+            type="date"
+            placeholder="閫夋嫨鏃ユ湡"
+            value-format="yyyy-MM-dd"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="澶囨敞淇℃伅" prop="remark" class="form-item-two">
+          <el-input
+            type="textarea"
+            :autosize="{ minRows: 3, maxRows: 4 }"
+            maxlength="500"
+            clearable
+            v-model="form.remark"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <div class="form-bottom-box">
+        <div class="form-bottom-box-top">
+          <div class="margin_bottom_2px font_size_14 title">浜у搧淇℃伅</div>
+        </div>
+
+        <el-table
+          ref="multipleTable"
+          :header-cell-style="{ background: '#f1f3f8', color: '#000009' }"
+          :data="returnItems"
+          tooltip-effect="dark"
+          height="calc(100% - 80px)"
+          row-key="id"
+          border
+          style="width: 100%; padding: 0"
+        >
+          <el-table-column label="搴忓彿" type="index" width="80">
+          </el-table-column>
+          <el-table-column label="宸ュ叿绫诲瀷" prop="toolType" width="120">
+            <!-- <template slot-scope="scope">
+                {{ scope.row.toolType }}
+              </template> -->
+          </el-table-column>
+          <el-table-column prop="toolNumber" label="宸ュ叿缂栫爜">
+          </el-table-column>
+          <el-table-column prop="toolName" label="宸ュ叿鍚嶇О"> </el-table-column>
+          <el-table-column label="鎿嶄綔" width="100">
+            <template slot-scope="scope">
+              <el-button @click="deleteClick(scope)" type="text" size="small"
+                >绉婚櫎</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="font_size_14 margin_top_10px float_right">
+          褰掕繕鎬绘暟锛歿{ returnItems ? returnItems.length : 0 }}
+        </div>
+      </div>
+    </div>
+    <div slot="footer" class="dialog-footer tac">
+      <el-button @click="shutdown">鍙栨秷</el-button>
+
+      <el-button type="primary" @click="onSubmit(form)">纭畾</el-button>
+    </div>
+    <BomDialog
+      ref="editDialog"
+      @sucessSet="handleGetBomKindDictList"
+      @handleConfirmSave="handleConfirmSave"
+      :workList="plcBrandList"
+      title="PLC鍝佺墝"
+    ></BomDialog>
+  </el-dialog>
+</template>
+
+<script>
+import BomDialog from "@/views/purchaseManage/purchase/components/BomDialog";
+import {
+  postGetUnitDictList,
+  postGetSaveSUnitDict,
+} from "@/api/purchaseManage/purchase";
+export default {
+  components: {
+    BomDialog,
+  },
+  props: {
+    editRow: {
+      type: [Object],
+      default: () => {
+        return {};
+      },
+    },
+  },
+  data() {
+    return {
+      islook: false,
+      showWorkerList: [],
+      form: {
+        remark: "",
+        returnAt: "",
+        returnName: "",
+        returnNumber: "",
+        returnObj: "",
+        returnerId: "",
+        returnerName: "",
+        contact_phone: "",
+      },
+
+      rules: {
+        // 鎵嬫満鍙�
+        contact_phone: [
+          {
+            required: true,
+            message: "璇峰~鍐�",
+            trigger: "change",
+          },
+          { validator: this.validatorPhone, trigger: "change" },
+        ],
+        // 棰嗙敤缂栧彿
+        returnNumber: [
+          {
+            required: true,
+            message: "璇峰~鍐�",
+            trigger: "change",
+          },
+        ],
+        // 褰掕繕鍚嶇О
+        returnName: [
+          {
+            required: true,
+            message: "璇峰~鍐�",
+            trigger: "change",
+          },
+        ],
+        // 褰掕繕鏃堕棿
+        returnAt: [
+          {
+            required: true,
+            message: "璇烽�夋嫨",
+            trigger: "change",
+          },
+        ],
+        // 褰掕繕浜�
+        returnObj: [
+          {
+            required: true,
+            message: "璇烽�夋嫨",
+            trigger: "change",
+          },
+        ],
+      },
+
+      returnItems: [], //瀛楀吀涓嬬殑琛ㄦ牸
+      PreObj: {
+        pageSize: 0,
+        page: 0,
+        projectID: "",
+      },
+
+      // 鏌愪汉鐨勯鐢ㄦ槑缁�
+      toolsObj: {
+        takeName: "",
+        page: 1,
+        pageSize: 500,
+        takerId: "",
+        toolName: "",
+        toolType: "",
+      },
+      plcBrandList: [],
+    };
+  },
+  mounted() {},
+  watch: {
+    editRow(val) {
+      if (val.id && this.islook) {
+        this.initFormData(val);
+      }
+    },
+    islook(val) {
+      if (val) {
+        this.returnItems = [];
+        this.form = {
+          remark: "",
+          returnAt: "",
+          returnName: "",
+          returnNumber: "",
+          returnerId: "",
+          returnerName: "",
+          returnObj: "",
+          contact_phone: "",
+        };
+
+        if (this.editRow && this.editRow.id) {
+          this.initFormData(this.editRow);
+        }
+      }
+    },
+  },
+  methods: {
+    validatorPhone(rule, value, callback) {
+      if (value) {
+        if (value == undefined || value == null) {
+          callback(new Error("璇疯緭鍏�"));
+        } else {
+          if (value.length != 11) {
+            callback(new Error("闀垮害鍦�11涓瓧绗︼紒"));
+          } else {
+            var reg =
+              /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/;
+            if (!reg.test(value)) {
+              callback(new Error("璇峰~鍐欐纭殑鑱旂郴鐢佃瘽锛�"));
+            } else {
+              callback();
+            }
+          }
+        }
+      } else {
+        callback();
+      }
+    },
+    // PLC閰嶇疆璁剧疆
+    handleShow() {
+      this.handleGetBomKindDictList();
+      this.$refs.editDialog.editDialogVisible = true;
+    },
+    //  PLC閰嶇疆
+    handleGetBomKindDictList(val) {
+      postGetUnitDictList().then((res) => {
+        this.unitList = res.data;
+        if (val) {
+          for (let i in this.unitList) {
+            if (this.unitList[i].isDefault) {
+              this.form.unit = this.form.unit
+                ? this.form.unit
+                : this.unitList[i].name;
+              this.$set(this.form, "unit", this.form.unit);
+              break;
+            }
+          }
+        }
+      });
+    },
+    handleConfirmSave(data) {
+      postGetSaveSUnitDict({ data: data }).then((res) => {
+        if (res.code == 200) {
+          this.$message({
+            message: "鎿嶄綔鎴愬姛锛�",
+            type: "success",
+          });
+          this.$refs.editDialog.editDialogVisible = false;
+          this.handleGetBomKindDictList();
+        }
+      });
+    },
+    returnChange(val) {
+      if (val) {
+        this.toolsObj.takerId = this.form.returnObj.split("&")[0];
+      } else {
+        this.toolsObj.takerId = "";
+      }
+    },
+
+    // 娣诲姞宸ュ叿 棰嗙敤鏄庣粏
+    selectTools(frockType, selections) {
+      for (let i in selections) {
+        let isPush = true;
+        if (this.returnItems.length > 0) {
+          for (let j in this.returnItems) {
+            if (selections[i].id == this.returnItems[j].toolNumber) {
+              isPush = false;
+            }
+          }
+        }
+
+        if (isPush) {
+          let toolName = "";
+          if (frockType == "妯″叿") {
+            toolName = selections[i].moldName;
+          } else if (frockType == "妫�鍏�") {
+            toolName = selections[i].gaugeName;
+          } else {
+            toolName = selections[i].frockName;
+          }
+          let item = {
+            toolType: frockType,
+            toolNumber: selections[i].id,
+            toolName: toolName,
+          };
+          this.returnItems.push(item);
+        }
+      }
+    },
+
+    initFormData(row) {
+      if (row.id) {
+        let form = JSON.parse(JSON.stringify(row));
+        this.form = {
+          remark: form.remark,
+          returnAt: form.ReturnAt,
+          contact_phone: form.contact_phone,
+          returnName: form.ReturnName,
+          returnNumber: form.ReturnNumber,
+          returnerId: form.ReturnerId,
+          returnerName: form.ReturnerName,
+          returnObj: "",
+          id: row.id,
+        };
+
+        if (this.form.returnerId && this.form.returnerName) {
+          this.form.returnObj =
+            this.form.returnerId + "&" + this.form.returnerName;
+        }
+        this.returnItems = this.editRow.ReturnItems;
+      }
+    },
+
+    deleteClick(scope) {
+      this.returnItems.splice(scope.$index, 1);
+      this.$forceUpdate();
+      this.$message({
+        type: "success",
+        message: "绉婚櫎鎴愬姛锛�",
+      });
+    },
+    onSubmit() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          let params = JSON.parse(JSON.stringify(this.form));
+          params.returnerId = params.returnObj.split("&")[0];
+          params.returnerName = params.returnObj.split("&")[1];
+          params.returnItems = this.returnItems;
+          if (this.editRow && this.editRow.id) {
+            params.id = this.editRow.id;
+            // editReturn(params).then((res) => {
+            //   if (res.code == 200) {
+            //     this.$message.success("缂栬緫鎴愬姛锛�");
+            //     this.$emit("shutdown", this.form);
+            //     this.shutdown();
+            //   }
+            // });
+          } else {
+            // addReturn(params).then((res) => {
+            //   if (res.code == 200) {
+            //     this.$message.success("娣诲姞鎴愬姛锛�");
+            //     this.$emit("shutdown", this.form);
+            //     this.shutdown();
+            //   }
+            // });
+          }
+        }
+      });
+    },
+    shutdown() {
+      this.islook = false;
+      this.$refs.form.resetFields();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-tabs__content {
+  height: calc(100% - 55px);
+  overflow-y: auto;
+}
+.title {
+  height: 42px;
+  line-height:42px;
+  font-weight: 700px;
+  padding: 0 10px;
+  color: #333;
+  background: rgb(236, 244, 255);
+}
+.form-bottom-box {
+  height: calc(100% - 340px);
+
+  .form-bottom-box-top {
+    height: 50px;
+    overflow: hidden;
+  }
+}
+.form-item {
+  width: calc(50% - 20px);
+  float: left;
+  &:nth-of-type(odd) {
+    margin-right: 20px;
+  }
+}
+.form-item-two {
+  width: 100%;
+  float: left;
+}
+.form-item-three {
+  width: calc(100% - 20px);
+  float: left;
+}
+.form-item-check {
+  width: calc(33% - 40px);
+  float: left;
+  &:nth-of-type(odd) {
+    margin-right: 20px;
+  }
+}
+.title {
+  width: 100%;
+}
+.dialog-content-box {
+  height: 580px;
+  padding-bottom: 50px;
+  overflow-y: auto;
+
+  .el-form {
+    overflow: hidden;
+    padding: 0 10px;
+  }
+}
+.num-identify {
+  padding: 5px 8px;
+  background-color: rgba(255, 153, 0, 1);
+  border-radius: 6px;
+  font-size: 14px;
+  color: #fff;
+  font-weight: 600;
+}
+.drawerHeader {
+  // position:relative;
+  .identify {
+    width: 80px;
+    height: 25px;
+    line-height: 25px;
+    text-align: center;
+    border: 1px solid rgba(255, 153, 0, 1);
+    border-radius: 6px;
+    font-size: 16px;
+    color: rgba(255, 153, 0, 1);
+    transform: rotate(15deg);
+    font-weight: 600;
+    margin-right: 100px;
+    margin-top: 12px;
+    float: right;
+  }
+}
+</style>
diff --git a/src/views/purchaseManage/purchase/components/BomDialog.vue b/src/views/purchaseManage/purchase/components/BomDialog.vue
new file mode 100644
index 0000000..3a302b6
--- /dev/null
+++ b/src/views/purchaseManage/purchase/components/BomDialog.vue
@@ -0,0 +1,272 @@
+<template>
+  <el-dialog
+    :close-on-click-modal="false"
+    :visible.sync="editDialogVisible"
+    width="623px"
+    class="add-event-dialog"
+    @close="shutdown"
+  >
+    <div slot="title" class="tac drawerHeader">
+      <span> {{title}}缁勪欢</span>
+    </div>
+  
+    <div class="dialog-content-box">
+      <el-table
+      v-if="isTableShow"
+        :header-cell-style="{ background: '#f1f3f8', color: '#000009' }"
+        ref="multipleTable"
+        :data="BomTableData"
+        height="100%"
+        tooltip-effect="dark"
+      >
+        <el-table-column prop="unit" label="绫诲埆">
+          <template slot-scope="scope">
+          <el-input v-model="scope.row.name"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createdAt" label="璁句负榛樿">
+          <template slot-scope="scope">
+          <el-switch @change="switchChange(scope,scope.row.isDefault)"  v-model="scope.row.isDefault"></el-switch>
+          </template>
+    
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" width="100">
+          <template slot-scope="scope">
+            <!-- <i class="el-icon-top" id="iconStyle"></i>
+           <i class="el-icon-bottom"  id="iconStyle"></i> -->
+            <i class="el-icon-delete" id="iconStyle" @click="handleDelete(scope)"></i>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+      <div slot="footer" class="drawerFooter">
+        <el-button
+          @click="handleAdd()"
+          style="margin-left: 16px; color: #fff; background-color: #ee790c"
+          >鏂板</el-button
+        >
+        <el-button @click="shutdown">鍙栨秷</el-button
+        ><el-button
+          type="primary"
+          @click="handleConfirmSave()"
+          style="margin-left: 16px; color: #fff; background-color: #2a78fb"
+          >纭畾</el-button
+        >
+      </div>
+    
+  </el-dialog>
+</template>
+
+<script>
+
+
+export default {
+  props: {
+    title:{
+      type:String,
+    },
+    editRow: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    workList:{
+      type:Array,
+    }
+  },
+  data() {
+    return {
+      editDialogVisible: false,
+      isTableShow:true,
+      form: {},
+      BomTableData: [1],
+      work: 1,
+      flag: "add",
+      Tabs: "msg",
+      tableData: [
+        {
+          date: "PEBU",
+          name: "PE甯�",
+          number: "21",
+          unit: "鍚�",
+        },
+      ],
+      rules: {
+        id: [{ required: true, message: "璇疯緭鍏ョ墿鏂欑紪鐮�", trigger: "blur" }],
+        name: [
+          { required: true, message: "璇疯緭鍏ョ墿鏂欏悕绉�", trigger: "blur" },
+          
+        ],
+        specs: [{ required: true, message: "璇疯緭鍏ョ墿鏂欒鏍�", trigger: "blur" }],
+        type: [{ required: true, message: "璇疯緭鍏ョ墿鏂欏瀷鍙�", trigger: "blur" }],
+        amount: [
+          {
+            required: true,
+            message: "璇疯緭鍏ユ暟閲�",
+            trigger: "blur",
+          },
+        ],
+        unit: [
+          {
+            required: true,
+            message: "璇疯緭鍏ュ崟浣�",
+            trigger: "blur",
+          },
+        ],
+        model: [
+          { required: true, message: "璇烽�夋嫨鐗╂枡绫诲瀷", trigger: "change" },
+        ],
+      },
+    };
+  },
+  watch: {
+    editDialogVisible(newVal){
+      if(newVal){
+       this.BomTableData=  JSON.parse(
+        JSON.stringify(this.workList))
+      }
+    },
+    workList(){
+      this.BomTableData=JSON.parse(
+        JSON.stringify(this.workList))
+    }  
+  },
+  mounted() {
+  },
+  methods: {
+    handleAdd() {
+      this.BomTableData.push({name:'',isDefault:false});
+    },
+    handleDelete(scope) {
+      this.BomTableData.splice(scope.$index,1)
+      // this.BomTableData=this.BomTableData.filter(i=>{
+      //   return i.id!=id
+      // })
+
+    },
+    switchChange(scope,val){
+      let arr=[]
+      for(let i in this.BomTableData){
+        if(this.BomTableData[i].isDefault){
+          arr.push(i)
+        }
+      }
+      if(arr.length>1){
+        this.$message({
+          message: '鍙兘璁句竴涓负榛樿',
+          type: "warning",
+        });
+        scope.row.isDefault=!val
+      }
+    },
+    handleConfirmSave() {
+      let arr=[]
+      for(let i in this.BomTableData){
+        if(this.BomTableData[i].isDefault){
+          arr.push(i)
+        }
+      }
+      if(arr.length>1){
+        this.$message({
+          message: '鍙兘璁句竴涓负榛樿',
+          type: "warning",
+        });
+      }else{ 
+        this.$emit('handleConfirmSave',this.BomTableData)
+      }
+    },
+   
+    shutdown() {
+      this.editDialogVisible = false;
+      
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.dialog-content-box {
+  height:400px;
+  .form-item {
+    width: 65%;
+  }
+  .form-item2 {
+    width: calc(50% - 5px);
+    float:left;
+   
+  }
+}
+  #iconStyle {
+    font-size: 20px !important;
+  }
+ 
+
+::v-deep .el-form {
+  width: 389px;
+  .input-box .input-content input {
+    margin: 0;
+    margin-right: 3px;
+  }
+  .el-input__inner,
+  .el-textarea__inner {
+    line-height: 18px;
+    font-family: PingFangSC;
+  }
+}
+::v-deep .el-tabs__header {
+  border: none;
+  .el-tabs__nav {
+    border: none;
+   
+  }
+}
+::v-deep .el-form-item__content {
+  width: 263px;
+  .input-box {
+    width: 263px;
+  }
+}
+::v-deep .el-form-item__label {
+  font-size: 13px !important;
+  color: #000;
+  font-family: PingFangSC;
+  text-align: center !important;
+  width: 60px;
+}
+::v-deep .input-box .input-content input {
+  width: 23px;
+  height: 26px;
+  border-color: rgba(0, 0, 0, 0.1);
+  font-family: PingFangSC;
+}
+::v-deep .el-icon-minus {
+  width: 13px !important;
+  height: 26px !important;
+  line-height: 38px !important;
+  color: #e5e5e5;
+  font-size: 13px;
+}
+::v-deep .el-input__inner {
+  font-size: 13px !important;
+  color: rgba(0, 0, 0, 0.9);
+}
+::v-deep .el-input__inner::placeholder {
+  color: rgba(0, 0, 0, 0.4);
+}
+::v-deep .el-form-item__error {
+  font-family: PingFangSC;
+}
+.self {
+  ::v-deep .el-input__inner {
+  }
+}
+::v-deep .el-select-dropdown {
+  position: absolute !important;
+  top: 36px !important;
+  left: 0px !important;
+}
+::v-deep .el-select-dropdown__wrap {
+  overflow: auto !important;
+}
+</style>
diff --git a/src/views/purchaseManage/purchase/components/SelectClientDialog.vue b/src/views/purchaseManage/purchase/components/SelectClientDialog.vue
new file mode 100644
index 0000000..ae0c94c
--- /dev/null
+++ b/src/views/purchaseManage/purchase/components/SelectClientDialog.vue
@@ -0,0 +1,192 @@
+<template>
+  <div class="edit-selClient-box">
+    <el-dialog
+      :title="'瀹㈡埛绠$悊'"
+      :visible.sync="editConfig.editVisible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+      :append-to-body="true"
+      :close-on-click-modal="false"
+    >
+      <div class="bg-view">
+        <div class="query-bg">
+          <SearchCommonView
+            ref="searchCommonView"
+            :search-options="searchOptions"
+            @searchClick="searchClick"
+            @resetClick="resetClick"
+          />
+          <div class="btn">
+            <!-- <el-button type="primary" size="mini" disabled>璁剧疆瀛楁</el-button>
+            <el-button type="primary" size="mini" disabled>蹇�熷垱寤�</el-button> -->
+          </div>
+        </div>
+        <TableCommonView
+          ref="tableListRef"
+          v-loading="loading"
+          :table-list="tableList"
+          :select-box="false"
+          @selCommonClick="selNameClick"
+        >
+        </TableCommonView>
+        <div slot="footer" class="dialog-footer">
+          <div class="remark">璇存槑锛氭敮鎸佸瀛楁妯$硦鏌ヨ锛屼粎鏄剧ず绗﹀悎鏉′欢鐨勫墠5鏉℃暟鎹�</div>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getClientList
+} from "@/api/purchaseManage/purchase";
+export default {
+  name: "EditSelClientDialog",
+  props: {
+    editCommonConfig: {
+      type: Object,
+      default: () => {
+        return {
+          editVisible: false,
+          title: "",
+          infomation: {}
+        }
+      }
+    }
+  },
+  components: {},
+  computed: {},
+  data() {
+    return {
+      dialogWidth: "50%",
+      editConfig: this.editCommonConfig,
+      queryInput: "",
+      select: "1",
+      tableData: [],
+      searchSelOptions: [],
+      loading: false,
+      searchOptions: [],
+      tableList: {},
+      search_map: {}
+    }
+  },
+  created() {
+    this.setTable()
+    this.getData()
+  },
+  methods: {
+    setTable() {
+      this.tableList = {
+        tableInfomation: [],
+        tableColumn: [
+          { label: "瀹㈡埛鍚嶇О", prop: "name", min: 100, isClick: true },
+          { label: "瀹㈡埛缂栧彿", prop: "number" },
+          { label: "瀹㈡埛鐘舵��", prop: "client_status" },
+          { label: "閿�鍞礋璐d汉", prop: "member_name", min: 100 },
+          { label: "娉曞畾浠h〃浜�", prop: "representative", min: 100 },
+          { label: "娉ㄥ唽鏃堕棿", prop: "registration_time" },
+          { label: "缁忚惀鑼冨洿", prop: "business_scope" },
+          { label: "璇︾粏鍦板潃", prop: "detail_address" },
+          { label: "澶囨敞", prop: "remark" }
+        ]
+      }
+      this.searchOptions = []
+      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
+        const label = this.tableList.tableColumn[i].label
+        const value = this.tableList.tableColumn[i].prop
+        this.searchOptions.push({ value: value, label: label })
+      }
+    },
+    handleClose() {
+      this.editConfig.editVisible = false
+    },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getClientList({
+        search_map: this.search_map,
+        page: 0,
+        pageSize: 0
+      })
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item,
+                  client_status: item.client_status.name,
+                  member_name: item.member.username
+                }
+              })
+              this.tableList.tableInfomation = list.slice(0, 5) || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
+    selNameClick(row) {
+      this.editConfig.editVisible = false
+      this.$emit("selClient", row)
+    },
+    // 鎼滅储
+    searchClick(val, content) {
+      console.log(val, content)
+      this.search_map = {
+        [val.value]: content
+      }
+      this.getData()
+    },
+    resetClick() {
+      this.search_map = {}
+      this.getData()
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.bg-view {
+  margin: 10px;
+  .query-bg {
+    margin-left: -20px;
+    margin-bottom: 10px;
+    display: flex;
+    justify-content: space-between;
+    .el-input {
+      width: 310px;
+      .el-select {
+        width: 100px;
+      }
+    }
+    .btn {
+      float: right;
+    }
+  }
+}
+.sel-name {
+  color: $color-primary;
+  cursor: pointer;
+}
+.dialog-footer {
+  height: 40px;
+  line-height: 40px;
+  color: red;
+}
+::v-deep {
+  .input-with-select .el-input-group__prepend {
+    background-color: #fff;
+  }
+}
+</style>
diff --git a/src/views/purchaseManage/purchase/index.vue b/src/views/purchaseManage/purchase/index.vue
index 52a58c6..6d1b7f3 100644
--- a/src/views/purchaseManage/purchase/index.vue
+++ b/src/views/purchaseManage/purchase/index.vue
@@ -23,7 +23,7 @@
           <template slot="tableButton">
             <el-table-column label="鎿嶄綔" width="120" fixed="right">
               <template slot-scope="scope">
-                <el-button type="text"  size="small" @click="editClick"  style="margin-right: 5px"
+                <el-button type="text"  size="small" @click="editClick(scope.row)"  style="margin-right: 5px"
                   >缂栬緫</el-button
                 >
                 <el-button  @click="submitClick(scope.row)" type="text" size="small">鎻愪氦</el-button>
@@ -41,18 +41,24 @@
     <!-- <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-rightContent-config="editSalesLeadConfig" /> -->
     <!-- 璇︽儏 -->
     <DetailSupplier v-if="commonDetail.visible" :common-detail="commonDetail" @submitClick="submitClick" />
+    <AddPurchase2 ref="add"  :editRow="editRow" @shutdown="getData" />
+    <!-- 鏂板缓/缂栬緫 -->
+    <AddPurchase v-if="editConfig.visible" :edit-common-config="editConfig" />
   </div>
 </template>
 
 <script>
 import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
-import { getSalesLeadsList, getDeleteSalesLeads } from "@/api/client/salesLead"
+import {
+  getSalesLeadsList, getDeleteSalesLeads 
+} from "@/api/purchaseManage/purchase";
 import DetailSupplier from "@/views/purchaseManage/purchase/DetailSupplier"
-
+import AddPurchase2 from "@/views/purchaseManage/purchase/components/AddPurchase2"
+import AddPurchase from "@/views/purchaseManage/purchase/components/AddPurchase"
 export default {
   name: "SupplierManage",
   props: {},
-  components: { DetailSupplier },
+  components: { DetailSupplier,AddPurchase2,AddPurchase },
   mixins: [pageMixin],
   computed: {},
   data() {
@@ -63,7 +69,13 @@
         visible: false,
         infomation: {}
       },
-      search_map: {}
+      search_map: {},
+      editRow:{},
+      editConfig: {
+        visible: false,
+        title: "鍒涘缓",
+        infomation: {}
+      },
     }
   },
   created() {
@@ -125,10 +137,21 @@
       this.getData()
     },
     // 鏂板缓
-    addBtnClick() {},
+    addBtnClick() {
+      // this.editRow = {};
+      // this.$refs.add.islook = true;
+      this.editConfig.visible = true
+      this.editConfig.title = "鍒涘缓"
+      this.editConfig.infomation = { }
+    },
+    
     // 缂栬緫
-    editClick(){
-
+    editClick(row){
+      // this.editRow = row;
+      // this.$refs.add.islook = true;
+      this.editConfig.visible = true
+      this.editConfig.title = "缂栬緫"
+      this.editConfig.infomation = { ...row }
     },
     // 纭鍙戣揣
     submitClick() {

--
Gitblit v1.8.0