Jelajahi Sumber

我的客户联系人调整暂存

qymljy 1 tahun lalu
induk
melakukan
b4417bb690

+ 4 - 4
src/HManagement/addressList/addressBook/index.vue

@@ -70,11 +70,11 @@
           </div>
           <div v-else>--</div>
         </div>
-        <div v-else-if="scope.data.column.columnname === 'isCustomers'">
-          <div>{{scope.data.column.data.sa_customersid?scope.data.column.data.sa_customersid === 0?'否':'是':'否'}}</div>
+        <div v-else-if="scope.data.column.columnname === 'islinkcustomer'">
+          <div>{{scope.data.column.data[[scope.data.column.columnname]]?scope.data.column.data[[scope.data.column.columnname]] === 0?'否':'是':'否'}}</div>
         </div>
-        <div v-else-if="scope.data.column.columnname === 'isProject'">
-          <div>{{scope.data.column.data.sa_projectid?scope.data.column.data.sa_projectid === 0?'否':'是':'否'}}</div>
+        <div v-else-if="scope.data.column.columnname === 'islinkproject'">
+          <div>{{scope.data.column.data[[scope.data.column.columnname]]?scope.data.column.data[[scope.data.column.columnname]] === 0?'否':'是':'否'}}</div>
         </div>
         <div v-else>
           {{scope.data.column.data[[scope.data.column.columnname]]?scope.data.column.data[[scope.data.column.columnname]]:'--'}}

+ 2 - 2
src/HManagement/addressList/addressBook/modules/customerData.vue

@@ -68,7 +68,7 @@ export default {
       param:{
         "id": 20231215134204,
         "content": {
-          "sys_enterpriseid":'',
+          "sys_phonebookid":'',
           "pageNumber": 1,
           "pageSize": 20,
         }
@@ -77,7 +77,7 @@ export default {
   },
   methods:{
     async listData(){
-      this.param.content.sys_enterpriseid = this.data.sys_enterpriseid
+      this.param.content.sys_phonebookid = this.data.sys_phonebookid
       const res = await this.$api.requested(this.param)
       this.list = res.data
     },

+ 2 - 2
src/HManagement/addressList/addressBook/modules/projectData.vue

@@ -74,7 +74,7 @@ export default {
       param:{
         "id": 20231215134304,
         "content": {
-          "sa_projectid":'',
+          "sys_phonebookid":'',
           "pageNumber": 1,
           "pageSize": 20,
         }
@@ -83,7 +83,7 @@ export default {
   },
   methods:{
     async listData(){
-      this.param.content.sa_projectid = this.data.sa_projectid
+      this.param.content.sys_phonebookid = this.data.sys_phonebookid
       const res = await this.$api.requested(this.param)
       this.list = res.data
     },

+ 150 - 0
src/SDrpManagement/salerPrivatecustomer/detail/modules/contacts/listCopy.vue

@@ -0,0 +1,150 @@
+<template>
+  <div>
+    <div class="flex-align-center normal-margin">
+      <add class="inline-16" :data="data"  @insertSuccess="onSuccess" v-if="tool.checkAuth($route.name,'contactManage') && data.disabled"></add>
+      <el-input
+          style="width:300px"
+          placeholder="请输入内容"
+          v-model="search"
+          clearable
+          @clear="clearData()"
+          size="small"
+          @keyup.enter.native="queryClick()">
+        <i slot="prefix" class="el-icon-search" @click="queryClick()"></i>
+      </el-input>
+    </div>
+    <tableLayout :layout="tablecols" :data="list" :opwidth="200" :custom="true"  :height="tableHieght" fixedName="operation">
+      <template v-slot:customcol="scope">
+        <div v-if="scope.column.columnname === 'tag'">
+          <el-tag v-for="item in scope.column.data.tag" color="#FA8C16" size="mini" type="warning" effect="dark" style="margin-right: 5px">
+            <span>{{item}}</span>
+          </el-tag>
+        </div>
+        <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+      </template>
+      <template v-slot:opreation="scope">
+        <el-button class="inline-16" type="text" size="mini" @click="goDetail(scope.data)">详 情</el-button>
+        <edit  :data="scope.data" :enterprisename="data.enterprisename" :disabled="data.disabled" @updateSuccess="onSuccess"></edit>
+        <toVoid  :data="scope.data" :disabled="data.disabled" @toVoidSuccess="onSuccess" ></toVoid>
+      </template>
+    </tableLayout>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="currentPage"
+          :page-size="params.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+import add from './modules/add'
+import edit from './modules/edit'
+import toVoid from './modules/toVoid'
+import {mapGetters} from 'vuex'
+export default {
+  name: "list",
+  props:["data"],
+  data(){
+    return {
+      tableHieght:"600px",
+      tablecols:[],
+      list:[],
+      total:0,
+      currentPage:0,
+      search:"",
+      params:{
+        "id": "20221022165503",
+        "content": {
+          "sys_enterpriseid": "",
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where": {
+            "condition": "",
+            "workaddress":0
+          }
+        }
+      }
+    }
+  },
+  components:{
+    add,edit,toVoid
+  },
+  computed:{
+    ...mapGetters({
+      dataToForm:'dataToForm'
+    })
+  },
+  methods:{
+    async listData(){
+      this.params.content.sys_enterpriseid = this.data.sys_enterpriseid
+      const res = await this.$api.requested(this.params)
+      console.log(res,"表数据")
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+    onSuccess(){
+     this.listData()
+    },
+    clearData(){
+      this.search = ""
+      this.queryClick()
+    },
+    queryClick(){
+      this.params.content.where.condition = this.search
+      this.listData()
+    },
+    goDetail(val){
+      this.$store.dispatch('changeDetailDrawer',false)
+      this.$nextTick(()=>{
+        let route = this.$route
+        if (route.path !== 'phonebookDetail') {
+          this.oldRoute = {path:route.path,query:route.query}
+          this.$store.dispatch('setHistoryRouter',this.oldRoute)
+        }
+        this.$router.push({
+          path:'/phonebookDetail',
+          query:{contactsid:val.contactsid}
+        })
+        this.$store.dispatch('changeDetailDrawer',true)
+      })
+    }
+  },
+  mounted() {
+    this.listData()
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).contactsTable.tablecols
+  },
+  watch:{
+    "dataToForm":function (val){
+      console.log(val)
+    }
+  }
+}
+</script>
+
+<style scoped>
+/deep/.el-input__prefix {
+  display: flex;
+  align-items: center;
+}
+
+</style>

+ 28 - 155
src/SDrpManagement/salerPrivatecustomer/detail/modules/contacts/modules/add.vue

@@ -14,157 +14,7 @@
           <el-form :model="form" :rules="rules"  ref="form"  size="mini" label-position="right" label-width="90px">
             <el-col :span="24">
               <el-form-item  label="姓名:" prop="name">
-                <el-popover
-                    placement="bottom-start"
-                    width="900"
-                    v-model="enterpriseContact.show"
-                    trigger="click">
-                  <el-tabs type="border-card" @tab-click="changeTab" v-model="activeName">
-                    <el-tab-pane label="企业联系人" name="first" >
-                      <el-table
-                          border
-                          height="500px"
-                          :data="enterpriseContact.listData"
-                          @row-click="enterpriseContactSelect"
-                          :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 style="display:flex;align-items:center;flex-direction:row-reverse;justify-content:space-between">
-                        <div class="container normal-panel" style="text-align:right">
-                          <el-pagination
-                              background
-                              @size-change="handleSizeChangeEnterprise"
-                              @current-change="handleCurrentChangeEnterprise"
-                              :current-page="enterpriseContact.currentPage"
-                              :page-sizes="[20, 50, 100, 200]"
-                              :page-size="20"
-                              layout="total,sizes, prev, pager, next, jumper"
-                              :total="enterpriseContact.total">
-                          </el-pagination>
-                        </div>
-                        <slot name="footerLeft"></slot>
-                      </div>-->
-                    </el-tab-pane>
-                    <el-tab-pane label="我的联系人" name="second">
-                        <el-table
-                            border
-                            :data="myContacts.listData"
-                            height="500px"
-                            @row-click="myContactSelect"
-                            :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="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 style="display:flex;align-items:center;flex-direction:row-reverse;justify-content:space-between">
-                          <div class="container normal-panel" style="text-align:right">
-                            <el-pagination
-                                background
-                                @size-change="handleSizeChangeMy"
-                                @current-change="handleCurrentChangeMy"
-                                :current-page="myContacts.currentPage"
-                                :page-sizes="[20, 50, 100, 200]"
-                                :page-size="20"
-                                layout="total,sizes, prev, pager, next, jumper"
-                                :total="myContacts.total">
-                            </el-pagination>
-                          </div>
-                          <slot name="footerLeft"></slot>
-                        </div>-->
-                    </el-tab-pane>
-                  </el-tabs>
-                  <el-input  slot="reference"  autosize v-model="form.name" placeholder="请输入姓名" @input="searchData"></el-input>
-                </el-popover>
+                <contactsNewTemplate ownertable="sys_enterprise" :ownerid="data.sys_enterpriseid" @contactData="contactData"></contactsNewTemplate>
               </el-form-item>
             </el-col>
             <el-col :span="24">
@@ -280,10 +130,11 @@
 
 <script>
 import {mapGetters} from "vuex";
-
+import contactsNewTemplate from '@/template/contactsNewTemplate/index'
 export default {
   name: "add",
   props:["data"],
+  components:{contactsNewTemplate},
   data(){
     var validateMobilePhone = (rule, value, callback) => {
       if (value === '') {
@@ -427,15 +278,15 @@ export default {
           this.form.phonenumber = this.form.areaCode + "-" + this.form.telephone
         }
         const res = await this.$api.requested({
-          "id": "20221018141802",
+          "id": "20240531151704",
           "content": this.form
         })
         this.tool.showMessage(res,async ()=>{
           let res2 = await this.$api.requested({
             "id": 20220929090901,
             "content": {
-              "ownertable":"plm_unit",
-              "ownerid":res.data.contactsid,
+              "ownertable":"sys_phonebook",
+              "ownerid":res.data.sys_phonebookid,
               "datatag": this.tags
             }
           })
@@ -558,6 +409,28 @@ export default {
       this.form.sys_phonebookid = val.sys_phonebookid
       this.enterpriseContact.show = false
     },
+    contactData(val){
+      this.form.name = val.name
+      if (val.phonenumber.indexOf('-') != '-1'){
+        this.form.isTelephone = '1'
+        this.form.areaCode = val.phonenumber.substring(0,val.phonenumber.indexOf('-'))
+        this.form.telephone = val.phonenumber.substring(this.form.areaCode.length+1)
+        this.form.phonenumber = ''
+      }else {
+        this.form.isTelephone = '0'
+        this.form.phonenumber = val.phonenumber
+        this.form.areaCode = ''
+        this.form.telephone = ''
+      }
+      this.form.email = val.email
+      this.form.position = val.position
+      this.form.depname = val.depname
+      this.form.sex = val.sex
+      this.form.birthday = val.birthday
+      this.form.address = val.address
+      this.form.remarks = val.remarks
+      this.form.sys_phonebookid = val.sys_phonebookid
+    },
     handleSizeChangeMy(val) {
       // console.log(`每页 ${val} 条`);
       this.myContacts.param.content.pageSize = val

+ 628 - 0
src/SDrpManagement/salerPrivatecustomer/detail/modules/contacts/modules/addCopy.vue

@@ -0,0 +1,628 @@
+<template>
+  <div>
+    <el-button size="small" type="primary" @click="onshow">新 建</el-button>
+    <el-drawer
+        title="新建联系人"
+        :visible.sync="dialogFormVisible"
+        size="600px"
+        direction="rtl"
+        :show-close="false"
+        append-to-body
+        @close="onClose">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules"  ref="form"  size="mini" label-position="right" label-width="90px">
+            <el-col :span="24">
+              <el-form-item  label="姓名:" prop="name">
+                <el-popover
+                    placement="bottom-start"
+                    width="900"
+                    v-model="enterpriseContact.show"
+                    trigger="click">
+                  <el-tabs type="border-card" @tab-click="changeTab" v-model="activeName">
+                    <el-tab-pane label="企业联系人" name="first" >
+                      <el-table
+                          border
+                          height="500px"
+                          :data="enterpriseContact.listData"
+                          @row-click="enterpriseContactSelect"
+                          :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 style="display:flex;align-items:center;flex-direction:row-reverse;justify-content:space-between">
+                        <div class="container normal-panel" style="text-align:right">
+                          <el-pagination
+                              background
+                              @size-change="handleSizeChangeEnterprise"
+                              @current-change="handleCurrentChangeEnterprise"
+                              :current-page="enterpriseContact.currentPage"
+                              :page-sizes="[20, 50, 100, 200]"
+                              :page-size="20"
+                              layout="total,sizes, prev, pager, next, jumper"
+                              :total="enterpriseContact.total">
+                          </el-pagination>
+                        </div>
+                        <slot name="footerLeft"></slot>
+                      </div>-->
+                    </el-tab-pane>
+                    <el-tab-pane label="我的联系人" name="second">
+                        <el-table
+                            border
+                            :data="myContacts.listData"
+                            height="500px"
+                            @row-click="myContactSelect"
+                            :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="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 style="display:flex;align-items:center;flex-direction:row-reverse;justify-content:space-between">
+                          <div class="container normal-panel" style="text-align:right">
+                            <el-pagination
+                                background
+                                @size-change="handleSizeChangeMy"
+                                @current-change="handleCurrentChangeMy"
+                                :current-page="myContacts.currentPage"
+                                :page-sizes="[20, 50, 100, 200]"
+                                :page-size="20"
+                                layout="total,sizes, prev, pager, next, jumper"
+                                :total="myContacts.total">
+                            </el-pagination>
+                          </div>
+                          <slot name="footerLeft"></slot>
+                        </div>-->
+                    </el-tab-pane>
+                  </el-tabs>
+                  <el-input  slot="reference"  autosize v-model="form.name" placeholder="请输入姓名" @input="searchData"></el-input>
+                </el-popover>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item>
+                <el-radio v-model="form.isTelephone" label="0">手机号</el-radio>
+                <el-radio v-model="form.isTelephone" label="1">座机电话</el-radio>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.isTelephone == '1'">
+              <el-form-item label="联系方式:" prop="telephone" >
+                <el-input v-model="form.areaCode" style="width: 25%" autocomplete="on" placeholder="请填写区号"></el-input>
+                <span style="color: #999999">——</span>
+                <el-input v-model="form.telephone" style="width: 68%" autocomplete="on" placeholder="请填写座机电话"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24"  >
+              <el-form-item v-if="form.isTelephone == '0'" label="联系方式:" prop="phonenumber" :rules="[
+              { required: true, message: '手机号码不能为空'},
+              { pattern:/^1[3-9][0-9]\d{8}$/, message: '请输入正确手机号码',trigger: 'blur' }
+            ]">
+                <el-input v-model="form.phonenumber" autocomplete="on" placeholder="请填写手机号码"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="微信:" prop="wechatnum">
+                <el-input  autosize v-model="form.wechatnum" placeholder="请输入微信" ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="标签:" >
+                <el-select v-model="tags" style="width: 100%" placeholder="请选择标签" size="small" multiple  class="inline-16">
+                  <el-option
+                      v-for="item in tagList"
+                      :key="item.index"
+                      :label="item.tag"
+                      :value="item.tag"
+                      :disabled="hasDisabledTag(item)">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="邮箱:" :rules="[
+              { pattern:/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, message: '请输入有效的邮箱',trigger: 'blur' }
+            ]">
+                <el-input   autosize v-model="form.email" placeholder="请输入邮箱"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="传真:" >
+                <el-input  autosize v-model="form.fax" placeholder="请输入传真" ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="单位:" >
+                <el-input  autosize v-model="form.enterprisename" placeholder="请输入单位" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="部门:" >
+                <el-input  autosize v-model="form.depname" placeholder="请输入部门"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="职位:" >
+                <el-input  autosize v-model="form.position" placeholder="请输入职位"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="性别:" >
+                <el-radio v-model="form.sex" label="男">男</el-radio>
+                <el-radio v-model="form.sex" label="女">女</el-radio>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="生日:" >
+                <el-date-picker
+                    v-model="form.birthday"
+                    value-format="yyyy-MM-dd"
+                    type="date"
+                    placeholder="选择日期"
+                    style="width: 100%"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="家庭住址:" >
+                <el-input type="textarea" rows="5" v-model="form.address" placeholder="请输入家庭住址"></el-input>
+              </el-form-item>
+            </el-col>
+<!--            <el-col :span="24">
+              <el-form-item  label="群组:" >
+                <el-input  autosize v-model="groupname" placeholder="请输入群组" disabled></el-input>
+              </el-form-item>
+            </el-col>-->
+
+            <el-col :span="24">
+              <el-form-item  label="备注:" >
+                <el-input type="textarea"  rows="5" v-model="form.remarks" placeholder="请输入备注"></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" :loading="loading"  @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import {mapGetters} from "vuex";
+
+export default {
+  name: "add",
+  props:["data"],
+  data(){
+    var validateMobilePhone = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('手机号不可为空'));
+      } else {
+        if (value !== '') {
+          var reg=/^1[3456789]\d{9}$/;
+          if(!reg.test(value)){
+            callback(new Error('请输入有效的手机号码'));
+          }
+        }
+        callback();
+      }
+    };
+    var telephone = (rule,value,callback) =>{
+      if (this.form.areaCode === '' && this.form.telephone === ''){
+        callback(new Error('座机电话不能为空'))
+      } else  {
+        var reg=/^0\d{2,3}-\d{7,8}$/
+        let telephone = this.form.areaCode + '-' + this.form.telephone
+        if (!reg.test(telephone)){
+          callback(new Error('请输入正确座机电话'))
+        } else {
+          callback();
+        }
+      }
+
+    }
+    return {
+      dialogFormVisible:false,
+      activeName:'first',
+      visible:false,
+      tagList:[],
+      tags:[],
+      groupname:'客户联系人',
+      form:{
+        contactsid: 0,
+        sys_enterpriseid: "",
+        name: "",
+        sex: "",
+        depname: "",
+        position: "",
+        birthday: "",
+        phonenumber: "",
+        email: "",
+        address: "",
+        remarks: "",
+        enterprisename:'',
+        province: "",
+        city: "",
+        county: "",
+        workaddress: 0,
+        isdefault: 1,
+        isprimary: 1,
+        sys_phonebookid:'',
+        telephone:'',
+        fax:'',
+        ownerid: this.$route.query.id,
+        ownertable: "sa_customers",
+        isTelephone:'0',
+        areaCode:'',
+      },
+      rules:{
+        name: [
+          { required: true, message: '姓名不能为空', trigger: 'blur,change' },
+        ],
+        // phonenumber: [
+        //   { required: true, validator: validateMobilePhone, trigger: 'blur' },
+        // ]
+        telephone:[
+          { required: true, validator: telephone, trigger: 'change' }
+        ],
+      },
+      enterpriseContact:{
+        param:{
+          "content": {
+            "sys_enterpriseid": '',
+            "pageNumber": 1,
+            "pageSize": 9999,
+            "where": {
+              "condition": ""
+            }
+          },
+          "id": 20221219193002,
+        },
+        listData:[],
+        total:0,
+        currentPage:0,
+        show:false
+      },
+      myContacts:{
+        param:{
+          "id": 20221219161202,
+          "content": {
+            "pageNumber": 1,
+            "pageSize": 9999,
+            "ownertable":'sa_customers',
+            "ownerid":'',
+            "where": {
+              "condition": ""
+            }
+          }
+        },
+        listData:[],
+        total:0,
+        currentPage:0,
+        show:false
+      },
+      paramTag:{
+        "id":"20220929085401",
+        "content":{
+          "nocache":true,
+          "ownertable":"",
+          "ownerid":0,
+        }
+      }
+    }
+  },
+  computed:{
+    ...mapGetters({
+      loading:'loading'
+    })
+  },
+  methods:{
+    onshow(){
+      this.dialogFormVisible = true
+      this.activeName = 'first'
+      this.enterpriseContact.param.content.pageNumber = 1
+      this.myContacts.param.content.pageNumber = 1
+      this.enterpriseContactList()
+      this.myContactList()
+      this.getTag()
+      this.form.sys_enterpriseid = this.data.sys_enterpriseid
+      this.form.enterprisename = this.data.enterprisename
+    },
+    onSubmit(){
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        this.$store.commit('setLoading',true)
+        if (this.form.isTelephone == '1'){
+          this.form.phonenumber = this.form.areaCode + "-" + this.form.telephone
+        }
+        const res = await this.$api.requested({
+          "id": "20221018141802",
+          "content": this.form
+        })
+        this.tool.showMessage(res,async ()=>{
+          let res2 = await this.$api.requested({
+            "id": 20220929090901,
+            "content": {
+              "ownertable":"plm_unit",
+              "ownerid":res.data.contactsid,
+              "datatag": this.tags
+            }
+          })
+          this.$emit("insertSuccess")
+          this.$refs['form'].resetFields()
+          this.tags = []
+          this.form = {
+            contactsid: 0,
+            sys_enterpriseid: "",
+            name: "",
+            sex: "",
+            depname: "",
+            position: "",
+            birthday: "",
+            phonenumber: "",
+            email: "",
+            address: "",
+            remarks: "",
+            enterprisename:'',
+            province: "",
+            city: "",
+            county: "",
+            workaddress: 0,
+            isdefault: 1,
+            isprimary: 1,
+            sys_phonebookid:'',
+            telephone:'',
+            fax:'',
+            ownerid: this.$route.query.id,
+            ownertable: "sa_customers",
+            isTelephone:'0',
+            areaCode:'',
+          }
+          this.$store.commit('setLoading',false)
+          this.dialogFormVisible = false
+        })
+      })
+    },
+    searchData(){
+      this.changeTab()
+    },
+    changeTab(){
+      this.enterpriseContactList()
+      this.myContactList()
+    },
+    /*企业联系人*/
+    async enterpriseContactList(){
+      this.enterpriseContact.param.content.where.condition = this.form.name
+      this.enterpriseContact.param.content.sys_enterpriseid = this.data.sys_enterpriseid
+      const res = await this.$api.requested(this.enterpriseContact.param)
+      this.enterpriseContact.listData = res.data
+      this.enterpriseContact.total = res.total
+      this.enterpriseContact.currentPage = res.pageNumber
+    },
+    /*选择企业联系人*/
+    enterpriseContactSelect(val){
+      this.form.name = val.name
+      if (val.phonenumber.indexOf('-') != '-1'){
+        this.form.isTelephone = '1'
+        this.form.areaCode = val.phonenumber.substring(0,val.phonenumber.indexOf('-'))
+        this.form.telephone = val.phonenumber.substring(this.form.areaCode.length+1)
+        this.form.phonenumber = ''
+      }else {
+        this.form.isTelephone = '0'
+        this.form.phonenumber = val.phonenumber
+        this.form.areaCode = ''
+        this.form.telephone = ''
+      }
+      this.form.email = val.email
+      this.form.position = val.position
+      this.form.depname = val.depname
+      this.form.sex = val.sex
+      this.form.birthday = val.birthday
+      this.form.address = val.address
+      this.form.remarks = val.remarks
+      this.enterpriseContact.show = false
+    },
+    handleSizeChangeEnterprise(val) {
+      // console.log(`每页 ${val} 条`);
+      this.enterpriseContact.param.content.pageSize = val
+      this.enterpriseContactList()
+    },
+    handleCurrentChangeEnterprise(val) {
+      // console.log(`当前页: ${val}`);
+      this.enterpriseContact.param.content.pageNumber = val
+      this.enterpriseContactList()
+    },
+    /*我的联系人*/
+    async myContactList(){
+      this.myContacts.param.content.where.condition = this.form.name
+      this.myContacts.param.content.sys_enterpriseid = this.data.sys_enterpriseid
+      this.myContacts.param.content.ownerid = this.data.sys_enterpriseid
+      const res = await this.$api.requested(this.myContacts.param)
+
+      this.myContacts.listData = res.data
+      this.myContacts.total = res.total
+      this.myContacts.currentPage = res.pageNumber
+    },
+    /*选择我的联系人*/
+    myContactSelect(val){
+      this.form.name = val.name
+      if (val.phonenumber.indexOf('-') != '-1'){
+        this.form.isTelephone = '1'
+        this.form.areaCode = val.phonenumber.substring(0,val.phonenumber.indexOf('-'))
+        this.form.telephone = val.phonenumber.substring(this.form.areaCode.length+1)
+        this.form.phonenumber = ''
+      }else {
+        this.form.isTelephone = '0'
+        this.form.phonenumber = val.phonenumber
+        this.form.areaCode = ''
+        this.form.telephone = ''
+      }
+      this.form.email = val.email
+      this.form.position = val.position
+      this.form.depname = val.depname
+      this.form.sex = val.sex
+      this.form.birthday = val.birthday
+      this.form.address = val.address
+      this.form.remarks = val.remarks
+      this.form.sys_phonebookid = val.sys_phonebookid
+      this.enterpriseContact.show = false
+    },
+    handleSizeChangeMy(val) {
+      // console.log(`每页 ${val} 条`);
+      this.myContacts.param.content.pageSize = val
+      this.myContactList()
+    },
+    handleCurrentChangeMy(val) {
+      // console.log(`当前页: ${val}`);
+      this.myContacts.param.content.pageNumber = val
+      this.myContactList()
+    },
+    onClose(){
+      this.$refs['form'].resetFields()
+      this.tags = []
+      this.form = {
+        contactsid: 0,
+        sys_enterpriseid: "",
+        name: "",
+        sex: "",
+        depname: "",
+        position: "",
+        birthday: "",
+        phonenumber: "",
+        email: "",
+        address: "",
+        remarks: "",
+        enterprisename:'',
+        province: "",
+        city: "",
+        county: "",
+        workaddress: 0,
+        isdefault: 1,
+        isprimary: 1,
+        sys_phonebookid:'',
+        telephone:'',
+        fax:'',
+        ownerid: this.$route.query.id,
+        ownertable: "sa_customers",
+        isTelephone:'0',
+        areaCode:'',
+      }
+      this.dialogFormVisible = false
+    },
+    async getTag(){
+      this.paramTag.content.ownertable = 'plm_unit'
+      const res = await this.$api.requested(this.paramTag)
+      this.tagList = res.data.option
+
+    },
+    hasDisabledTag (item) {
+      let arr = []
+      let arr2 = []
+      arr = this.tagList.filter(item=>{
+        return this.tags.includes(item.tag)
+      })
+      arr.forEach(e=>{
+        arr2 = arr2.concat(e.mutextag)
+      })
+      arr2 = this.tags.length === 0?[]:arr2
+      let _isSame = arr2.some(tag=>item.tag === tag)
+      return _isSame
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 112 - 0
src/template/contactsNewTemplate/index.vue

@@ -0,0 +1,112 @@
+<template>
+  <div>
+    <el-popover
+        placement="bottom-start"
+        width="900"
+        v-model="show"
+        trigger="click">
+      <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>
+      <el-input  slot="reference"  autosize v-model="name" placeholder="请填写联系人" @focus="listData" @change="listData" :disabled="disabled"></el-input>
+    </el-popover>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "index",
+  props:['disabled','ownertable','ownerid'],
+  data(){
+    return {
+      list:[],
+      show:false,
+      name:'',
+      param:{
+        "id": 20240531152004,
+        "content": {
+          "ownertable":"sa_project",// 客户 sys_enterprise  项目 sa_project
+          "ownerid":"7074",// 客户 sys_enterpriseid  项目 sa_projectid
+          "where":{
+            "condition":""
+          }
+
+        }
+      }
+    }
+  },
+  methods:{
+    async listData(){
+      this.param.content.where.condition = this.name
+      this.param.content.ownertable = this.ownertable
+      this.param.content.ownerid = this.ownerid
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+    },
+    contactSelect(val){
+      this.name = val.name
+      this.show = false
+      this.$emit('contactData',val)
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>