浏览代码

联系人调整,联系人画像调整

qymljy 1 年之前
父节点
当前提交
5d28a497b0

+ 67 - 5
src/Form/QuotedPrice/edit.vue

@@ -69,8 +69,8 @@
               </el-form-item>
             </el-col>
 
-            <el-col :span="24">
-              <el-form-item label="联系人:" label-width="100px" prop="name">
+<!--            <el-col :span="24">
+              <el-form-item label="联系www人:" label-width="100px" prop="name">
                 <el-popover
                     placement="bottom"
                     width="700"
@@ -91,6 +91,33 @@
               <el-form-item label="电话:" label-width="100px" >
                 <el-input  v-model="form.telephone" autocomplete="off" placeholder="电话" disabled></el-input>
               </el-form-item>
+            </el-col>-->
+            <el-col  :span="24">
+              <el-form-item label="联系人:" label-width="100px" prop="name">
+                <contactsNewTemplate ref="contactsRef"  :sys_enterpriseid="form.sys_enterpriseid" :name="form.contactsname"  :disabled="form.sys_enterpriseid === ''" @contactData="contactData" @inputChange="inputChange" @focus="$refs.contactsRef.listData($refs.contactsRef.param.content.pageNumner = 1)" placement="left-start"></contactsNewTemplate>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="isPhone">
+              <el-form-item label="联系方式:" label-width="100px" >
+                <el-button-group >
+                  <el-radio v-model="isPhone" :label="true" disabled>手机号</el-radio>
+                  <el-radio v-model="isPhone" :label="false" disabled>座机电话</el-radio>
+                </el-button-group>
+                <el-input v-model="phonenumber" disabled placeholder="请输入手机号" style="width: 100%;margin-top: 10px" @input="telephoneChange('手机')"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="!isPhone">
+              <el-form-item label="联系方式:" label-width="100px" >
+                <el-button-group disabled>
+                  <el-radio v-model="isPhone" :label="true" disabled>手机号</el-radio>
+                  <el-radio v-model="isPhone" :label="false" disabled>座机电话</el-radio>
+                </el-button-group>
+                <div style="width: 100%">
+                  <el-input v-model="areaCode" placeholder="请输入区号" style="width:25%;margin-top: 10px" disabled></el-input>
+                  <span style="color: #999999">——</span>
+                  <el-input v-model="telephone" placeholder="请输入座机电话" style="width:68%;margin-top: 10px" disabled></el-input>
+                </div>
+              </el-form-item>
             </el-col>
             <el-col  :span="24">
               <el-form-item label="报价日期:" label-width="100px">
@@ -175,10 +202,11 @@ import selectSalesman from '@/SDrpManagement/QuotedPrice/components/selectSalesm
 import {mapGetters} from "vuex";
 
 import selectTemplate from '@/template/quotation/index.vue'
+
 export default {
   name: "edit",
   props:['data','btnType'],
-  components:{quotedPriceProduct,quotedPriceItemClass,selectSalesman,selectTemplate},
+  components:{quotedPriceProduct,quotedPriceItemClass,selectSalesman,selectTemplate,contactsNewTemplate},
   data(){
     var discountrate = (rule,value,callback) =>{
       if (this.form.discountrate < 0 || this.form.discountrate > 100){
@@ -305,7 +333,11 @@ export default {
           { required: true, message: '请选择联系人', trigger: 'change'},
         ]*/
       },
-      itemtype:[]
+      itemtype:[],
+      isPhone:true,
+      areaCode:'',
+      telephone:'',
+      phonenumber:''
     }
   },
   computed:{
@@ -340,6 +372,17 @@ export default {
       }else {
         this.isQuotedPrice = false
       }
+      if (this.data.contactsphonenumber.indexOf('-') != '-1'){
+        this.isPhone = false
+        this.areaCode = this.data.contactsphonenumber.substring(0,this.data.contactsphonenumber.indexOf('-'))
+        this.telephone = this.data.contactsphonenumber.substring(this.areaCode.length+1)
+        this.telephone = this.areaCode + '-' + this.telephone
+        this.phonenumber = ''
+      }else {
+        this.isPhone = true
+        this.phonenumber = this.data.contactsphonenumber
+        this.telephone = ''
+      }
     },
     onClose(){
       this.drawer = false
@@ -590,7 +633,25 @@ export default {
       }else {
         this.customerList(this.customerParam.content.pageNumber = 1)
       }
-    }
+    },
+    inputChange(val){
+      this.form.name = val
+    },
+    contactData(val){
+      this.form.name = val.name
+      this.form.contactsid = val.contactsid
+      if (val.phonenumber.indexOf('-') != '-1'){
+        this.isPhone = false
+        this.areaCode = val.phonenumber.substring(0,val.phonenumber.indexOf('-'))
+        this.telephone = val.phonenumber.substring(this.areaCode.length+1)
+        this.telephone = this.areaCode + '-' + this.telephone
+        this.phonenumber = ''
+      }else {
+        this.isPhone = true
+        this.phonenumber = val.phonenumber
+        this.telephone = ''
+      }
+    },
    /* async mainData(val) {
       const res = await this.$api.requested({
         "id": 20220930103501,
@@ -623,6 +684,7 @@ export default {
       }
       console.log("权限结果",this.mainData.disabled)
     }*/
+
   },
   mounted() {
     this.queryItemType()

+ 33 - 0
src/HDrpManagement/contactProfile/modules/detail.vue

@@ -133,6 +133,16 @@
                     </div>
                     <div v-else>--</div>
                   </div>
+                  <div v-else-if="scope.data.columnname === 'tradingstatus'">
+                    <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '未成交'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#333333" v-else-if="scope.data.data[[scope.data.columnname]] == '多次成交'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                  </div>
+                  <div v-else-if="scope.data.columnname === 'status'">
+                    <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '潜在'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#52c41a" v-else-if="scope.data.data[[scope.data.columnname]] == '合作中'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已终止'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                  </div>
                   <div v-else>
                     {{ scope.data.data[scope.data.columnname] || '--' }}
                   </div>
@@ -176,6 +186,15 @@
                   <div v-else-if="scope.data.columnname === 'signamount_due'">
                     {{scope.data.data[scope.data.columnname]?'¥'+tool.formatAmount(scope.data.data[scope.data.columnname],2):'¥0.00'}}
                   </div>
+                  <div v-else-if="scope.data.columnname === 'status'">
+                    <span style="color:#52c41a" v-if="scope.data.data[[scope.data.columnname]] == '跟进中'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已失败'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已结案'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                  </div>
+                  <div v-else-if="scope.data.columnname === 'projecttype'">
+                    {{scope.data.data.projecttype + '-' + scope.data.data.projecttype_remarks}}
+                  </div>
                   <div v-else>
                     {{ scope.data.data[scope.data.columnname] || '--' }}
                   </div>
@@ -226,6 +245,12 @@
                   <div v-else-if="scope.data.columnname === 'begdate'">
                     {{scope.data.data.begdate?scope.data.data.begdate +'至' + scope.data.data.enddate:'--'}}
                   </div>
+                  <div v-else-if="scope.data.columnname === 'status'">
+                    <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '新建'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#52c41a" v-else-if="scope.data.data[[scope.data.columnname]] == '提交'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#333333" v-else-if="scope.data.data[[scope.data.columnname]] == '审核'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '复核'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                  </div>
                   <div v-else style="text-wrap:wrap;word-wrap: break-word;white-space: normal;">
                     {{ scope.data.data[scope.data.columnname] || '--' }}
                   </div>
@@ -281,6 +306,14 @@
                   <div v-else-if="scope.data.columnname == 'unwriteoffamount'">
                     {{scope.data.data.unwriteoffamount && tool.formatAmount(scope.data.data.unwriteoffamount || 0,2,'¥')  }}
                   </div>
+                  <div v-else-if="scope.data.columnname == 'status'">
+                    <span style="color:#000000" v-if="scope.data.data[[scope.data.columnname]] == '新建'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#d90a0a" v-else-if="scope.data.data[[scope.data.columnname]] == '提交'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#e09a1a" v-if="scope.data.data[[scope.data.columnname]] == '交期待确认'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#3874f6" v-else-if="scope.data.data[[scope.data.columnname]] == '交期确认'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#52C41A" v-if="scope.data.data[[scope.data.columnname]] == '审核'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                    <span style="color:#b2c0ea" v-else-if="scope.data.data[[scope.data.columnname]] == '关闭'">{{scope.data.data[[scope.data.columnname]]}}</span>
+                  </div>
                   <div v-else style="text-wrap:wrap;word-wrap: break-word;white-space: normal;">
                     {{ scope.data.data[scope.data.columnname] || '--' }}
                   </div>

+ 47 - 71
src/HDrpManagement/projectChange/modules/modules/quotation/modules/add.vue

@@ -143,77 +143,30 @@
               </el-form-item>
             </el-col>
             <el-col  :span="24">
-              <el-form-item label="电话:" label-width="100px" >
-                <el-input  v-model="form.telephone" autocomplete="off" placeholder="电话" disabled></el-input>
+              <el-form-item label="联系人:" label-width="100px" prop="name">
+                <contactsNewTemplate ref="contactsRef"  :sys_enterpriseid="form.sys_enterpriseid" :name="form.name"  :disabled="form.sys_enterpriseid === ''" @contactData="contactData" @inputChange="inputChange" @focus="$refs.contactsRef.listData($refs.contactsRef.param.content.pageNumner = 1)" placement="left-start"></contactsNewTemplate>
               </el-form-item>
             </el-col>
-            <el-col   :span="24">
-              <el-form-item label="联系人:" label-width="100px" >
-                <el-popover
-                    placement="bottom"
-                    width="700"
-                    trigger="click"
-                    v-model="contactsShow"
-                    @show="contactsList">
-                  <el-input
-                      style="width:300px;margin-bottom: 10px"
-                      placeholder="请输入内容"
-                      v-model="contactsParam.content.where.condition"
-                      clearable
-                      @clear="contactsList(contactsParam.content.pageNumber = 1)"
-                      size="mini"
-                      @keyup.enter.native="contactsList(contactsParam.content.pageNumber = 1)">
-                    <i slot="prefix" class="el-icon-search" @click="contactsList(contactsParam.content.pageNumber = 1)"></i>
-                  </el-input>
-                  <el-table :data="contacts.contactsData" @row-click="contactsData">
-                    <el-table-column
-                        label="姓名"
-                        width="180">
-                      <template slot-scope="scope">
-                        <span style="margin-left: 10px">{{ scope.row.name?scope.row.name:'--' }}</span>
-                      </template>
-                    </el-table-column>
-                    <el-table-column
-                        label="手机号"
-                        width="180">
-                      <template slot-scope="scope">
-                        <span style="margin-left: 10px">{{ scope.row.phonenumber?scope.row.phonenumber:'--' }}</span>
-                      </template>
-                    </el-table-column>
-                    <el-table-column
-                        label="邮箱"
-                        width="180">
-                      <template slot-scope="scope">
-                        <span style="margin-left: 10px">{{ scope.row.email?scope.row.email:'--' }}</span>
-                      </template>
-                    </el-table-column>
-                    <el-table-column
-                        label="地址"
-                    >
-                      <template slot-scope="scope">
-                        <span style="margin-left: 10px">{{ scope.row.address?scope.row.address:'--' }}</span>
-                      </template>
-                    </el-table-column>
-                  </el-table>
-                  <div class="container normal-panel" style="text-align:right">
-                    <el-pagination
-                        background
-                        small
-                        @size-change="handleSizeChangeContacts"
-                        @current-change="handleCurrentChangeContacts"
-                        :page-sizes="[10,20,50,100,]"
-                        layout="total,sizes, prev, pager, next, jumper"
-                        :current-page="contacts.currentPage"
-                        :total="contacts.total">
-                    </el-pagination>
-                  </div>
-                  <el-input slot="reference"  :readonly="true" v-model="form.name" autocomplete="off" placeholder="请选择联系人"  @input="selectContacts"></el-input>
-                </el-popover>
+            <el-col :span="24" v-if="isPhone">
+              <el-form-item label="联系方式:" label-width="100px" >
+                <el-button-group >
+                  <el-radio v-model="isPhone" :label="true" disabled>手机号</el-radio>
+                  <el-radio v-model="isPhone" :label="false" disabled>座机电话</el-radio>
+                </el-button-group>
+                <el-input v-model="phonenumber" disabled placeholder="请输入手机号" style="width: 100%;margin-top: 10px" @input="telephoneChange('手机')"></el-input>
               </el-form-item>
             </el-col>
-            <el-col  :span="24">
-              <el-form-item label="联系人手机号:" label-width="100px" >
-                <el-input  v-model="form.phonenumber" autocomplete="off" placeholder="手机号" disabled></el-input>
+            <el-col :span="24" v-if="!isPhone">
+              <el-form-item label="联系方式:" label-width="100px" >
+                <el-button-group disabled>
+                  <el-radio v-model="isPhone" :label="true" disabled>手机号</el-radio>
+                  <el-radio v-model="isPhone" :label="false" disabled>座机电话</el-radio>
+                </el-button-group>
+                <div style="width: 100%">
+                  <el-input v-model="areaCode" placeholder="请输入区号" style="width:25%;margin-top: 10px" disabled></el-input>
+                  <span style="color: #999999">——</span>
+                  <el-input v-model="telephone" placeholder="请输入座机电话" style="width:68%;margin-top: 10px" disabled></el-input>
+                </div>
               </el-form-item>
             </el-col>
             <el-col  :span="24">
@@ -298,10 +251,11 @@
 
 <script>
 import quotedPriceProduct from '@/SDrpManagement/QuotedPrice/components/quotedPriceProduct'
+import contactsNewTemplate from '@/template/contactsNewTemplate/index1'
 export default {
   name: "add",
   props:["data","flagTag"],
-  components:{quotedPriceProduct},
+  components:{quotedPriceProduct,contactsNewTemplate},
   data(){
     var discountrate = (rule,value,callback) =>{
       if (this.form.discountrate < 0 || this.form.discountrate > 100){
@@ -429,7 +383,11 @@ export default {
           { required: false, validator: discountrate, trigger: 'change'},
         ],
       },
-      itemtype:[]
+      itemtype:[],
+      isPhone:true,
+      areaCode:'',
+      telephone:'',
+      phonenumber:''
     }
   },
   methods:{
@@ -659,7 +617,25 @@ export default {
     /*修改折扣数据*/
     discountrateChange(){
       this.form.discountrate = Math.round(this.form.discountrate * 100)/100
-    }
+    },
+    inputChange(val){
+      this.form.name = val
+    },
+    contactData(val){
+      this.form.name = val.name
+      this.form.contactsid = val.contactsid
+      if (val.phonenumber.indexOf('-') != '-1'){
+        this.isPhone = false
+        this.areaCode = val.phonenumber.substring(0,val.phonenumber.indexOf('-'))
+        this.telephone = val.phonenumber.substring(this.areaCode.length+1)
+        this.telephone = this.areaCode + '-' + this.telephone
+        this.phonenumber = ''
+      }else {
+        this.isPhone = true
+        this.phonenumber = val.phonenumber
+        this.telephone = ''
+      }
+    },
   },
   mounted() {
     const date = new Date()
@@ -691,4 +667,4 @@ export default {
   display: flex;
   align-items: center;
 }
-</style>
+</style>

+ 51 - 11
src/SDrpManagement/QuotedPrice/modules/ProjectQuotationAdd.vue

@@ -69,7 +69,7 @@
               </el-form-item>
             </el-col>
 
-            <el-col  :span="24">
+<!--            <el-col  :span="24">
               <el-form-item label="联系人:" label-width="100px" prop="name">
                 <el-popover
                     placement="bottom"
@@ -81,18 +81,35 @@
                   <el-input slot="reference" :readonly="true" v-model="form.name" autocomplete="off" placeholder="请选择联系人" :disabled="form.sys_enterpriseid === ''" ></el-input>
                 </el-popover>
               </el-form-item>
-            </el-col>
+            </el-col>-->
             <el-col  :span="24">
-              <el-form-item label="联系人手机号:" label-width="100px" >
-                <el-input  v-model="form.phonenumber" autocomplete="off" placeholder="手机号" disabled></el-input>
+              <el-form-item label="联系人:" label-width="100px" prop="name">
+                <contactsNewTemplate ref="contactsRef"  :sys_enterpriseid="form.sys_enterpriseid" :name="form.name"  :disabled="form.sys_enterpriseid === ''" @contactData="contactData" @inputChange="inputChange" @focus="$refs.contactsRef.listData($refs.contactsRef.param.content.pageNumner = 1)" placement="left-start"></contactsNewTemplate>
               </el-form-item>
             </el-col>
-            <el-col  :span="24">
-              <el-form-item label="电话:" label-width="100px" >
-                <el-input  v-model="form.telephone" autocomplete="off" placeholder="电话" disabled></el-input>
+            <el-col :span="24" v-if="isPhone">
+              <el-form-item label="联系方式:" label-width="100px" >
+                <el-button-group >
+                  <el-radio v-model="isPhone" :label="true" disabled>手机号</el-radio>
+                  <el-radio v-model="isPhone" :label="false" disabled>座机电话</el-radio>
+                </el-button-group>
+                <el-input v-model="phonenumber" disabled placeholder="请输入手机号" style="width: 100%;margin-top: 10px" @input="telephoneChange('手机')"></el-input>
               </el-form-item>
             </el-col>
-            <el-col   :span="24">
+            <el-col :span="24" v-if="!isPhone">
+              <el-form-item label="联系方式:" label-width="100px" >
+                <el-button-group disabled>
+                  <el-radio v-model="isPhone" :label="true" disabled>手机号</el-radio>
+                  <el-radio v-model="isPhone" :label="false" disabled>座机电话</el-radio>
+                </el-button-group>
+                <div style="width: 100%">
+                  <el-input v-model="areaCode" placeholder="请输入区号" style="width:25%;margin-top: 10px" disabled></el-input>
+                  <span style="color: #999999">——</span>
+                  <el-input v-model="telephone" placeholder="请输入座机电话" style="width:68%;margin-top: 10px" disabled></el-input>
+                </div>
+              </el-form-item>
+            </el-col>
+            <el-col  :span="24">
               <el-form-item label="报价日期:" label-width="100px">
                 <el-date-picker
                     v-model="form.billdate"
@@ -174,10 +191,11 @@ import selectSalesman from '../components/selectSalesman'
 import {mapGetters} from "vuex";
 
 import selectTemplate from '@/template/quotation/index.vue'
+import contactsNewTemplate from '@/template/contactsNewTemplate/index1'
 export default {
   name: "ProjectQuotationAdd",
   props:["drawerShow","typeData"],
-  components:{quoted_price_product,selectSalesman,selectTemplate},
+  components:{quoted_price_product,selectSalesman,selectTemplate,contactsNewTemplate},
   data(){
     var discountrate = (rule,value,callback) =>{
       if (this.form.discountrate < 0 || this.form.discountrate > 100){
@@ -304,7 +322,11 @@ export default {
           { required: true, message: '请选择联系人', trigger: 'change'},
         ]*/
       },
-      itemtype:[]
+      itemtype:[],
+      isPhone:true,
+      areaCode:'',
+      telephone:'',
+      phonenumber:''
     }
   },
   computed:{
@@ -544,7 +566,25 @@ export default {
       }else {
         this.customerList(this.customerParam.content.pageNumber = 1)
       }
-    }
+    },
+    inputChange(val){
+      this.form.name = val
+    },
+    contactData(val){
+      this.form.name = val.name
+      this.form.contactsid = val.contactsid
+      if (val.phonenumber.indexOf('-') != '-1'){
+        this.isPhone = false
+        this.areaCode = val.phonenumber.substring(0,val.phonenumber.indexOf('-'))
+        this.telephone = val.phonenumber.substring(this.areaCode.length+1)
+        this.telephone = this.areaCode + '-' + this.telephone
+        this.phonenumber = ''
+      }else {
+        this.isPhone = true
+        this.phonenumber = val.phonenumber
+        this.telephone = ''
+      }
+    },
 
 
 

+ 583 - 0
src/SDrpManagement/QuotedPrice/modules/ProjectQuotationAddcopy2.vue

@@ -0,0 +1,583 @@
+<template>
+  <div>
+    <el-drawer
+        :title="title"
+        :visible.sync="drawer"
+        size="600px"
+        direction="rtl"
+        append-to-body
+        :show-close="false"
+        @close="onClose">
+      <div class="drawer__panel" style="margin-bottom: 0px">
+        <el-row style="margin-top: 10px" :gutter="10">
+          <el-form :model="form" :rules="rules" ref="form"  size="mini" label-position="right">
+            <el-col :span="24">
+              <el-form-item label="报价类型:" label-width="100px" >
+                <el-input v-model="form.type" autocomplete="off" placeholder="报价类型" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col  :span="24" v-if="isQuotedPrice">
+              <el-form-item label="项目名称:" label-width="100px" prop="projectname">
+                <el-popover
+                    placement="bottom"
+                    width="700"
+                    trigger="click"
+                    v-model="projectShow"
+                    @show="projectList">
+                  <selectTemplate type="项目" ref="projectTemplate" :param="projectParam" @selectData="projectData"></selectTemplate>
+                  <el-input slot="reference" :readonly="true"  v-model="form.projectname" autocomplete="off" placeholder="请选择项目"  ></el-input>
+                </el-popover>
+
+              </el-form-item>
+            </el-col>
+            <el-col  :span="24" v-if="isQuotedPrice">
+              <el-form-item label="项目编号:" label-width="100px" >
+                <el-input  v-model="form.projectnum" autocomplete="off" placeholder="项目编号" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col  :span="24" v-if="isQuotedPrice">
+              <el-form-item label="客户名称:" label-width="100px" prop="enterprisename">
+                <el-popover
+                    placement="bottom"
+                    width="700"
+                    trigger="click"
+                    v-model="customerShow"
+                    @show="customerList">
+                  <selectTemplate type="客户" ref="customerTemplate" :param="customerParam" @selectData="customerData"></selectTemplate>
+                  <el-input slot="reference" :readonly="true" v-model="form.enterprisename" autocomplete="off" placeholder="请选择客户" :disabled="form.sa_projectid === ''" ></el-input>
+                </el-popover>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="客户名称:" label-width="100px" prop="enterprisename" v-if="!isQuotedPrice">
+                <el-popover
+                    placement="bottom"
+                    width="700"
+                    trigger="click"
+                    v-model="customerShow"
+                    @show="customerList">
+                  <el-tabs type="border-card" v-model="activeName"  @tab-click="handleClick">
+                    <el-tab-pane label="客户" name="客户">
+                      <selectTemplate type="客户" ref="customerTemplate" :param="customerParam" @selectData="customerData"></selectTemplate>
+                    </el-tab-pane>
+                    <el-tab-pane label="合作伙伴" name="合作伙伴">
+                      <selectTemplate type="客户" ref="distributorTemplate" :param="customerParam" @selectData="distributorData"></selectTemplate>
+                    </el-tab-pane>
+                  </el-tabs>
+                  <el-input slot="reference"  :readonly="true"  v-model="form.enterprisename" autocomplete="off" placeholder="请选择客户" ></el-input>
+                </el-popover>
+              </el-form-item>
+            </el-col>
+
+            <el-col  :span="24">
+              <el-form-item label="联系人:" label-width="100px" prop="name">
+                <el-popover
+                    placement="bottom"
+                    width="700"
+                    trigger="click"
+                    v-model="contactsShow"
+                    @show="contactsList">
+                  <selectTemplate type="联系人" ref="contactTemplate" :param="contactsParam" @selectData="contactsData"></selectTemplate>
+                  <el-input slot="reference" :readonly="true" v-model="form.name" autocomplete="off" placeholder="请选择联系人" :disabled="form.sys_enterpriseid === ''" ></el-input>
+                </el-popover>
+              </el-form-item>
+            </el-col>
+            <el-col  :span="24">
+              <el-form-item label="联系人手机号:" label-width="100px" >
+                <el-input  v-model="form.phonenumber" autocomplete="off" placeholder="手机号" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col  :span="24">
+              <el-form-item label="电话:" label-width="100px" >
+                <el-input  v-model="form.telephone" autocomplete="off" placeholder="电话" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col   :span="24">
+              <el-form-item label="报价日期:" label-width="100px">
+                <el-date-picker
+                    v-model="form.billdate"
+                    style="width: 100%"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                    placeholder="选择日期"
+                    :picker-options="pickerOptions">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="有效期:" label-width="100px" prop="date">
+                <el-date-picker
+                    v-model="form.date"
+                    style="width: 100%"
+                    type="daterange"
+                    value-format="yyyy-MM-dd"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    :picker-options="pickerOptions">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col  :span="24" >
+              <el-form-item label="产品系列:" label-width="100px" prop="itemtype">
+                <el-select
+                    ref="sle"
+                    style="width:100%;"
+                    v-model="form.itemtype"
+                    multiple
+                    placeholder="请选择产品系列"
+                    size="mini"
+                >
+                  <el-option
+                      v-for="item in itemtype"
+                      :key="item.index"
+                      :label="item.value"
+                      :value="item.value"
+                  >
+                    <span style="float: left">{{ item.value }}</span>
+                    <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?item.remarks:'暂无描述' }}</span>
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col  :span="24">
+              <el-form-item label="业务员:" label-width="100px" prop="salername">
+                <el-popover
+                    placement="bottom"
+                    trigger="manual"
+                    v-model="salesmanVisible"
+                    width="500">
+                  <selectSalesman  ref="selectSalesman"  :radio="true" @onSelect="salesmanChange" @onCancel="salesmanVisible = false"></selectSalesman>
+                  <el-input readonly type="text" slot="reference" size="small" @focus="showChange" v-model="form.salername" placeholder="请选择业务员"></el-input>
+                </el-popover>
+              </el-form-item>
+            </el-col>
+            <el-col  :span="24">
+              <el-form-item label="备注:" label-width="100px" prop="remarks">
+                <el-input  v-model="form.remarks" autocomplete="off" placeholder="请输入备注信息" type="textarea" autosize></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="onClose" class="normal-btn-width">取 消</el-button>
+        <el-button  size="small" type="primary" @click="getSubmit" :loading="loading" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import quoted_price_product from '../components/quotedPriceProduct'
+import selectSalesman from '../components/selectSalesman'
+import {mapGetters} from "vuex";
+
+import selectTemplate from '@/template/quotation/index.vue'
+export default {
+  name: "ProjectQuotationAdd",
+  props:["drawerShow","typeData"],
+  components:{quoted_price_product,selectSalesman,selectTemplate},
+  data(){
+    var discountrate = (rule,value,callback) =>{
+      if (this.form.discountrate < 0 || this.form.discountrate > 100){
+        callback(new Error('请输入0-100%'))
+      } else {
+        callback();
+      }
+    }
+    return {
+      search:'',
+      title:'',
+      projectShow:false,
+      customerShow:false,
+      contactsShow:false,
+      salesmanVisible:false,
+      activeName:'客户',
+      projectParam:{
+        "id": 20221020143503,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 10,
+          "type":1, //  1:我负责的;2:我参与的;3:我下属负责的;4:我下属参与的
+          "where": {
+            "condition": "",
+            "startdate": "",
+            "enddate": "",
+            "status":"",//跟进中、已成交、已失败
+            "projecttype":"",
+            "stagename":"",
+            "tag":""
+          }
+        },
+      },
+      customerParam:{
+        "id": 20220920083901,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 10,
+          "where": {
+            "condition": "",
+            "type":4,
+            "sa_projectid":""
+          }
+        }
+      },
+      contactsParam:{
+        "id": "20221022165503",
+        "version": 1,
+        "content": {
+          "sys_enterpriseid":"",
+          "pageNumber": 1,
+          "pageSize": 10,
+          "where": {
+            "condition": "",
+            "workaddress": 0//0表示人,1表示地址
+          }
+        }
+      },
+      salerParam:{
+        "id":20230306144402,
+        "content":{
+          "type":'',////type:1客户2:项目
+          "sys_enterpriseid":'',//type=1
+          "sa_projectid":'' //type=2时传
+        }
+      },
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() + 3600 * 1000 * 24 < Date.now() ;
+        },
+      },
+      drawer:false,
+      isQuotedPrice:false,
+      date:[],
+      productObj:{},
+      form:{
+        date:[],
+        totalPrice:'',
+        type:'',
+        projectnum:'',
+        enterprisename:'',
+        name:'',
+        phonenumber:'',
+        fax:'',
+        telephone:'',
+        specialOffer:'否',
+        sa_quotedpriceid:0,     //sat_notice_classid<=0时 为新增
+        sys_enterpriseid: "",
+        contactsid:0,
+        sa_projectid: '',
+        discountrate: '',
+        remarks: "",
+        invaliddate: "",
+        projectname: "",
+        address: "",
+        billdate:"",
+        enddate:'',
+        begdate:'',
+        saler_hrid:'',
+        salername:'',
+        itemtype:[],
+        quotedpricenotes: [
+          "1、报价为含税13%税率, 含运费 ",
+          "2、报价有限期 2023-02-02 13:16:47至2023-02-22 13:16:47",
+        ]
+      },
+      rules:{
+        projectname:[
+          { required: true, message: '请选择项目', trigger: 'change'},
+        ],
+        enterprisename:[
+          { required: true, message: '请选择客户', trigger: 'change'},
+        ],
+        date:[
+          { required: true, message: '请选择有效期', trigger: 'change'},
+        ],
+        itemtype:[
+          { required: true, message: '请选择产品系列', trigger: 'change'},
+        ],
+        discountrate:[
+          { required: false, validator: discountrate, trigger: 'change'},
+        ],
+        /*name:[
+          { required: true, message: '请选择联系人', trigger: 'change'},
+        ]*/
+      },
+      itemtype:[]
+    }
+  },
+  computed:{
+    ...mapGetters({
+      loading:'loading'
+    })
+  },
+  methods:{
+    onClose(){
+      this.drawer = false
+      this.$emit('addSuccess')
+    },
+    /*创建报价单,获取商品信息*/
+    onSubmit(type){
+
+      if (this.form.date.length === 0){
+        this.form.begdate = ''
+        this.form.enddate = ''
+        this.form.sa_quotedpriceid = 0
+      }else {
+        this.form.begdate = this.form.date[0]
+        this.form.enddate = this.form.date[1]
+        this.form.sa_quotedpriceid = 0
+        this.form.quotedpricenotes[1] = "2、报价有限期" + this.form.begdate + "至" + this.form.enddate
+      }
+
+
+      this.$refs.form.validate(async (valid) => {
+        if (!valid) return false
+        this.form.discountrate = (this.form.discountrate /100).toFixed(3)
+        const res = await this.$api.requested({
+          "id": 20221020164803,
+          "content": this.form
+        })
+        setTimeout(()=>{
+          this.$refs.quoterPrice.quoterPrice(res.data.sa_quotedpriceid,this.form.type,type)
+          this.form.sa_quotedpriceid = res.data.sa_quotedpriceid
+
+        },500)
+      })
+    },
+    /*导入创建报价单校验*/
+    onCheckFormImport(){
+      if (this.form.date.length === 0){
+        this.form.begdate = ''
+        this.form.enddate = ''
+      }else {
+        this.form.begdate = this.form.date[0]
+        this.form.enddate = this.form.date[1]
+        this.form.quotedpricenotes[1] = "2、报价有限期" + this.form.begdate + "至" + this.form.enddate
+      }
+      this.$refs.form.validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 20221020164803,
+          "content": this.form
+        })
+        this.$refs.quoterPrice.quoterImport(res.data.sa_quotedpriceid,this.form.type)
+        this.form.sa_quotedpriceid = res.data.sa_quotedpriceid
+      })
+    },
+    /*提交*/
+    getSubmit(){
+      if (this.form.date.length === 0){
+        this.form.begdate = ''
+        this.form.enddate = ''
+      }else {
+        this.form.begdate = this.form.date[0]
+        this.form.enddate = this.form.date[1]
+        this.form.quotedpricenotes[1] = "2、报价有限期" + this.form.begdate + "至" + this.form.enddate
+      }
+
+      this.$refs.form.validate(async (valid) => {
+        if (!valid) return false
+        this.$store.commit('setLoading',true)
+        this.form.discountrate = this.form.discountrate?(this.form.discountrate / 100).toFixed(4):''
+        const res = await this.$api.requested({
+          "id": 20221020164803,
+          "content": this.form
+        })
+        this.tool.showMessage(res,() => {
+          this.$store.commit('setLoading',false)
+          this.drawer = false
+          this.$emit('addSuccess')
+          this.$store.dispatch('changeDetailDrawer',true)
+          this.$router.push({path:'/quotedPriceDetail',query:{id:res.data.sa_quotedpriceid,rowindex:res.data.rowindex}})
+        })
+      })
+    },
+    /*修改后的产品数据*/
+    productDataChange(val){
+      let obj = val.map(e=>{
+        return {
+          sa_quotedprice_itemsid:e.sa_quotedprice_itemsid,
+          itemid:e.itemid,
+          oldprice:e.marketprice,
+          price:e.price,
+          discountrate:(e.discountrate/100).toFixed(4),
+          qty:e.qty
+        }
+      })
+      this.productObj = obj
+    },
+    async changeData(obj){
+      const res = await this.$api.requested({
+        "id": 20221021095403,
+        "content": {
+          "sa_quotedpriceid":this.form.sa_quotedpriceid,     //sat_notice_classid<=0时 为新增
+          "items":obj
+        }
+      })
+      this.$emit('addSuccess')
+    },
+    projectList(){
+      this.$refs.projectTemplate.listData()
+    },
+    /*可选客户*/
+    customerList(){
+      if (this.form.type === '客户报价'){
+        this.form.sa_projectid = 0
+        this.customerParam.content.where.sa_projectid = 0
+        this.customerParam.content.where.type = 19
+      }else {
+        this.customerParam.content.where.type = 4
+        this.customerParam.content.where.sa_projectid = this.form.sa_projectid
+      }
+      this.$refs.customerTemplate.listData()
+    },
+
+    /*可选择合作伙伴*/
+    distributorList(){
+      this.customerParam.content.where.sa_projectid = 0
+      this.customerParam.content.where.type = 20
+      this.$refs.distributorTemplate.listData()
+    },
+    /*可选联系人*/
+    contactsList(){
+      this.contactsParam.content.sys_enterpriseid = this.form.sys_enterpriseid
+      this.$refs.contactTemplate.listData()
+    },
+
+    /*项目选择信息*/
+    projectData(val){
+      this.form.sa_projectid = val.sa_projectid
+      this.form.projectname = val.projectname
+      this.form.projectnum = val.projectnum
+      this.form.sys_enterpriseid = ''
+      this.form.enterprisename = ''
+      this.form.contactsid = 0
+      this.form.name = ''
+      this.form.phonenumber = ''
+      this.form.fax = ''
+      this.form.telephone = ''
+      this.projectShow = false
+      this.salerParam.content.type = 2
+      this.salerParam.content.sa_projectid = this.form.sa_projectid
+      this.querySalesman()
+    },
+    /*客户选择信息*/
+    customerData(val){
+      this.form.sys_enterpriseid = val.sys_enterpriseid
+      this.form.enterprisename = val.enterprisename
+      this.form.contactsid = 0
+      this.form.name = ''
+      this.form.phonenumber = ''
+      this.form.fax = ''
+      this.form.telephone = ''
+      this.customerShow = false
+      if (!this.isQuotedPrice){
+        this.salerParam.content.type = 1
+        this.salerParam.content.sys_enterpriseid = this.form.sys_enterpriseid
+        this.querySalesman()
+      }
+    },
+    /*合作伙伴选择信息*/
+    distributorData(val){
+      this.form.sys_enterpriseid = val.sys_enterpriseid
+      this.form.enterprisename = val.enterprisename
+      this.form.contactsid = 0
+      this.form.contactsname = ''
+      this.form.contactsphonenumber = ''
+      this.form.fax = ''
+      this.form.telephone = ''
+      this.customerShow = false
+      if (!this.isQuotedPrice){
+        this.salerParam.content.type = 1
+        this.salerParam.content.sys_enterpriseid = this.form.sys_enterpriseid
+        this.querySalesman()
+      }
+    },
+    /*联系人选择信息*/
+    contactsData(val){
+      this.form.contactsid = val.contactsid
+      this.form.name = val.name
+      this.form.phonenumber = val.phonenumber
+      this.form.fax = val.fax
+      this.form.telephone = val.telephone
+      this.contactsShow = false
+    },
+    /*查询产品系列*/
+    queryItemType(){
+      this.$store.dispatch('optiontypeselect','itemtype').then(res => {
+        this.itemtype = res.data
+      })
+    },
+    /*业务员*/
+    showChange(){
+      this.salesmanVisible = true
+      if (this.isQuotedPrice){
+        this.$refs.selectSalesman.param.content.type = 2
+        this.$refs.selectSalesman.param.content.sa_projectid = this.form.sa_projectid
+        this.$refs.selectSalesman.listData()
+      }else {
+        this.$refs.selectSalesman.param.content.type = 1
+        this.$refs.selectSalesman.param.content.sys_enterpriseid = this.form.sys_enterpriseid
+        this.$refs.selectSalesman.listData()
+      }
+
+    },
+    salesmanChange(data){
+      this.form.saler_hrid = data[0].hrid
+      this.form.salername = data[0].name
+      this.salesmanVisible = false
+    },
+    async querySalesman(){
+      const res = await this.$api.requested(this.salerParam)
+      this.form.salername = res.data[0].name
+      this.form.saler_hrid = res.data[0].hrid
+    },
+    /*修改折扣数据*/
+    discountrateChange(){
+      this.form.discountrate = Math.round(this.form.discountrate * 100)/100
+    },
+    handleClick(tab){
+      if (tab.name === '合作伙伴'){
+        this.distributorList(this.customerParam.content.pageNumber = 1)
+      }else {
+        this.customerList(this.customerParam.content.pageNumber = 1)
+      }
+    }
+
+
+
+  },
+  mounted() {
+    if (this.drawerShow){this.drawer = true}
+    this.form.type = this.typeData
+    if (this.typeData === '项目报价'){
+      this.isQuotedPrice = true
+      this.title = '新建项目报价单'
+    }else {
+      this.isQuotedPrice = false
+      this.title = '新建客户报价单'
+    }
+    const date = new Date()
+    this.form.billdate = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate()
+    this.form.sa_quotedpriceid = 0
+    this.queryItemType()
+  },
+  created() {
+
+  }
+}
+</script>
+
+<style scoped>
+>>> .el-divider--horizontal {
+  height: 1px;
+  width: 100%;
+  margin: 0px;
+}
+/deep/.el-input__prefix {
+  display: flex;
+  align-items: center;
+}
+</style>

+ 148 - 0
src/template/contactsNewTemplate/index1.vue

@@ -0,0 +1,148 @@
+<template>
+  <div>
+    <el-popover
+        :placement="placement || 'bottom-start'"
+        width="900"
+        v-model="show"
+        trigger="click">
+      <el-input  autosize v-model="param.content.where.condition" placeholder="搜索" @change="listData" style="width: 200px;margin-bottom: 10px"></el-input>
+      <el-table
+          border
+          height="500px"
+          :data="list"
+          @row-click="contactSelect"
+          :header-cell-style="{background:'#EEEEEE',color:'#333'}"
+          size="mini">
+        <el-table-column width="80" label="姓名">
+          <template slot-scope="scope">
+            <span >{{ scope.row.name?scope.row.name:'--' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column width="120" label="联系方式">
+          <template slot-scope="scope">
+            <span >{{ scope.row.phonenumber?scope.row.phonenumber:'--' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column width="200"  label="邮箱">
+          <template slot-scope="scope">
+            <span >{{ scope.row.email?scope.row.email:'--' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column width="200"  label="单位">
+          <template slot-scope="scope">
+            <span >{{ scope.row.enterprisename?scope.row.enterprisename:'--' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column width="120"  label="部门">
+          <template slot-scope="scope">
+            <span >{{ scope.row.position?scope.row.position:'--' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column width="120"  label="职位">
+          <template slot-scope="scope">
+            <span >{{ scope.row.depname?scope.row.depname:'--' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column width="80"  label="性别">
+          <template slot-scope="scope">
+            <span >{{ scope.row.sex?scope.row.sex:'--' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column width="120"  label="生日">
+          <template slot-scope="scope">
+            <span >{{ scope.row.birthday?scope.row.birthday:'--' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column width="300"  label="家庭住址">
+          <template slot-scope="scope">
+            <span >{{ scope.row.address?scope.row.address:'--' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column width="200"  label="备注">
+          <template slot-scope="scope">
+            <span >{{ scope.row.remarks?scope.row.remarks:'--' }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div  class="container normal-panel" style="text-align:right">
+        <el-pagination
+            background
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-sizes="[20, 50, 100, 200]"
+            :page-size="20"
+            layout="total,sizes, prev, pager, next, jumper"
+            :total="total">
+        </el-pagination>
+      </div>
+      <el-input  slot="reference"  autosize v-model="name" placeholder="请填写联系人" @focus="listData"  :disabled="disabled" @change="inputChange"></el-input>
+    </el-popover>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "index",
+  props:['disabled','sys_enterpriseid','name','placement'],
+  data(){
+    return {
+      list:[],
+      show:false,
+      currentPage:0,
+      total:0,
+      param:{
+        "id": 20240531165504,
+        "content": {
+          "sys_enterpriseid":"",// 客户 sys_enterprise  项目 sa_project
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where":{
+            "condition":""
+          }
+
+        }
+      }
+    }
+  },
+  methods:{
+    async listData(){
+      this.param.content.sys_enterpriseid = this.sys_enterpriseid
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    contactSelect(val){
+      this.name = val.name
+      this.show = false
+      this.param.content.where.condition = ''
+      this.$emit('contactData',val)
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    inputChange(){
+      this.$emit('inputChange',this.name)
+    }
+  },
+  watch:{
+    'show':function (val){
+      if (!val){
+        this.param.content.where.condition = ''
+      }
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>