qymljy 3 лет назад
Родитель
Сommit
22095dc812

+ 2 - 2
src/Form/QuotedPrice/add.vue

@@ -2,8 +2,8 @@
   <div>
     <el-dropdown :hide-on-click="false" @command="handleCommand">
       <span class="el-dropdown-link">
-    <el-button size="small" type="primary" @click="dialogFormVisible = true">新 建</el-button>
-  </span>
+        <el-button size="small" type="primary" >新 建</el-button>
+      </span>
       <el-dropdown-menu slot="dropdown">
         <el-dropdown-item command="项目报价">项目报价</el-dropdown-item>
         <el-dropdown-item command="客户报价">客户报价</el-dropdown-item>

+ 39 - 2
src/Form/salerPrivatecustomer/add.vue

@@ -389,6 +389,7 @@ export default {
       }
     },
     onSubmit(){
+      console.log(this.form)
       this.$refs['form'].validate(async (valid) => {
         if (!valid) return false
         const res = await this.$api.requested({
@@ -400,7 +401,25 @@ export default {
           if (this.checkResults === 0){
             this.$emit('onSuccess')
             this.$refs['form'].resetFields();
-            this.form = {}
+            this.form = {
+              sa_customersid:0,
+              sys_enterpriseid:0,
+              enterprisename:'',
+              type:'',
+              source:'',
+              parentid:0,
+              superiorenterprisename:'',
+              abbreviation:'',
+              taxno:'',
+              customergrade:'',
+              industry:'',
+              phonenumber:'',
+              province:'',
+              city:'',
+              county:'',
+              address:'',
+              ispublic:0
+            }
             this.dialogFormVisible = false
             this.checkResults = ''
             this.value = ''
@@ -430,7 +449,25 @@ export default {
     },
     onClose () {
       this.$refs['form'].resetFields();
-      this.form = {}
+      this.form = {
+        sa_customersid:0,
+        sys_enterpriseid:0,
+        enterprisename:'',
+        type:'',
+        source:'',
+        parentid:0,
+        superiorenterprisename:'',
+        abbreviation:'',
+        taxno:'',
+        customergrade:'',
+        industry:'',
+        phonenumber:'',
+        province:'',
+        city:'',
+        county:'',
+        address:'',
+        ispublic:0
+      }
       this.dialogFormVisible = false
       this.checkResults = ''
       this.value = ''

+ 12 - 2
src/HDrpManagement/projectChange/modules/detail.vue

@@ -9,7 +9,7 @@
     :turnPageId="20221020143502"
     idname="sa_projectid"
     :tags="[]"
-    :tabs="['详细信息','项目评估','关联客户','产品配置单','报价单','竞争对手','关联线索']"
+    :tabs="['详细信息','项目评估','关联客户','产品配置单','报价单','竞争对手','合同','关联线索','联系人']"
     @pageChange="pageChange"
     @onEditSuccess="queryMainData($route.query.id)">
     <!-- 使用此插槽可不传[tags] -->
@@ -65,8 +65,14 @@
       <Rival v-if="mainData" :data="mainData" />
     </div>
     <div slot="slot6" class=" normal-panel">
+      <contract v-if="mainData" :data="mainData" />
+    </div>
+    <div slot="slot7" class=" normal-panel">
       <clue v-if="mainData" :data="mainData" />
     </div>
+    <div slot="slot8" class=" normal-panel">
+      <contacts v-if="mainData" :data="mainData" />
+    </div>
   </basicDetails>
 </template>
 
@@ -85,6 +91,8 @@ import clue from './modules/clue/index'
 import setStage from '../components/setStage'
 import finish from '../components/finish'
 import recovery from '../components/recovery'
+import contacts from './modules/contacts/index'
+import contract from './modules/contract/index'
 export default {
   components:{
     Quotation,
@@ -100,7 +108,9 @@ export default {
     clue,
     setStage,
     finish,
-    recovery},
+    recovery,
+    contacts,
+    contract},
   data () {
     return {
       totalPrice:0,

+ 627 - 0
src/HDrpManagement/projectChange/modules/modules/contacts/components/add.vue

@@ -0,0 +1,627 @@
+<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="75px">
+            <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">
+                    <el-tab-pane label="企业联系人">
+                      <el-table
+                          border
+                          :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="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]"
+                              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="我的联系人" >
+                      <el-table
+                          border
+                          :data="myContacts.listData"
+                          @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]"
+                              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  label="手机号:" prop="phonenumber">
+                <el-input   autosize v-model="form.phonenumber" placeholder="请输入手机号码"></el-input>
+              </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="单位:" prop="enterprisename">
+                <el-popover
+                    placement="bottom-start"
+                    width="900"
+                    v-model="associatedCustomers.show"
+                    trigger="click">
+                  <el-tabs type="border-card" @tab-click="changeTabCustomers">
+                    <el-tab-pane label="关联客户">
+                      <el-table
+                          border
+                          :data="associatedCustomers.listData"
+                          @row-click="associatedCustomersSelect"
+                          :header-cell-style="{background:'#EEEEEE',color:'#333'}"
+                          size="mini">
+                        <el-table-column width="80" label="单位编号">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.sys_enterpriseid?scope.row.sys_enterpriseid:'--' }}</span>
+                          </template>
+                        </el-table-column>
+                        <el-table-column width="190" label="单位名称">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.enterprisename?scope.row.enterprisename:'--' }}</span>
+                          </template>
+                        </el-table-column>
+                        <el-table-column  label="单位地址">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.address?scope.row.address:'--' }}</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="handleSizeAssociatedCustomers"
+                              @current-change="handleCurrentAssociatedCustomers"
+                              :current-page="associatedCustomers.currentPage"
+                              :page-sizes="[20, 50, 100, 200]"
+                              layout="total,sizes, prev, pager, next, jumper"
+                              :total="associatedCustomers.total">
+                          </el-pagination>
+                        </div>
+                        <slot name="footerLeft"></slot>
+                      </div>
+                    </el-tab-pane>
+                    <el-tab-pane label="我的客户" >
+                      <el-table
+                          border
+                          :data="myCustomers.listData"
+                          @row-click="myCustomersSelect"
+                          :header-cell-style="{background:'#EEEEEE',color:'#333'}"
+                          size="mini">
+                        <el-table-column width="80" label="单位编号">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.sys_enterpriseid?scope.row.sys_enterpriseid:'--' }}</span>
+                          </template>
+                        </el-table-column>
+                        <el-table-column width="190" label="单位名称">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.enterprisename?scope.row.enterprisename:'--' }}</span>
+                          </template>
+                        </el-table-column>
+                        <el-table-column  label="单位地址">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.address?scope.row.address:'--' }}</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="handleSizeMyCustomers"
+                              @current-change="handleCurrentMyCustomers"
+                              :current-page="myCustomers.currentPage"
+                              :page-sizes="[20, 50, 100, 200]"
+                              layout="total,sizes, prev, pager, next, jumper"
+                              :total="myCustomers.total">
+                          </el-pagination>
+                        </div>
+                        <slot name="footerLeft"></slot>
+                      </div>
+                    </el-tab-pane>
+                  </el-tabs>
+                  <el-input  slot="reference" :disabled="form.contactsid !== 0"  autosize v-model="form.enterprisename" placeholder="请输入单位" @input="changeTabCustomers"></el-input>
+                </el-popover>
+              </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 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" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+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();
+      }
+    };
+    return {
+      dialogFormVisible:false,
+      visible:false,
+      form:{
+        contactsid: 0, //0表示新增,大于0表示选择的联系人
+        sa_projectid: 1, //项目id
+        sys_enterpriseid: 1, //关联的企业id
+        sa_project_contactsid:0,
+        enterprisename:'',
+        name: "",
+        sex: "",
+        depname: "",
+        position: "",
+        isleader: 1,
+        birthday : "",
+        phonenumber: "",
+        email: "",
+        province: "",
+        city: "",
+        county: "",
+        address: "",
+        remarks: "",
+        sys_phonebookid:''
+      },
+      rules:{
+        name: [
+          { required: true, message: '姓名不能为空', trigger: 'blur,change' },
+        ],
+        phonenumber: [
+          { required: true, validator: validateMobilePhone, trigger: 'blur' },
+        ],
+        enterprisename: [
+          { required: true, message: '单位不能为空', trigger: 'blur,change' },
+        ]
+      },
+      enterpriseContact:{
+        param:{
+          "content": {
+            "sa_projectid": '',
+            "pageNumber": 1,
+            "pageSize": 10,
+            "where": {
+              "condition": ""
+            }
+          },
+          "id": 20221219201402,
+        },
+        listData:[],
+        total:0,
+        currentPage:0,
+        show:false
+      },
+      myContacts:{
+        param:{
+          "id": 20221219161202,
+          "content": {
+            "pageNumber": 1,
+            "pageSize": 20,
+            "where": {
+              "condition": ""
+            }
+          }
+        },
+        listData:[],
+        total:0,
+        currentPage:0,
+        show:false
+      },
+      associatedCustomers:{
+        param:{
+          "id": 20220920083901,
+          "content": {
+            "pageNumber": 1,
+            "pageSize": 20,
+            "where": {
+              "condition": "",
+              "sa_projectid":'',
+              "type":4,
+            }
+          }
+        },
+        listData:[],
+        total:0,
+        currentPage:0,
+        show:false
+      },
+      myCustomers:{
+        param:{
+          "id": 20220920083901,
+          "content": {
+            "pageNumber": 1,
+            "pageSize": 20,
+            "where": {
+              "condition": "",
+              "sa_projectid":'',
+              "type":6,
+            }
+          }
+        },
+        listData:[],
+        total:0,
+        currentPage:0,
+        show:false
+      }
+    }
+  },
+  methods:{
+    onshow(){
+      this.dialogFormVisible = true
+      this.associatedCustomersList()
+      this.myCustomersList()
+      this.enterpriseContactList()
+      this.myContactList()
+      this.form.sys_enterpriseid = this.data.sys_enterpriseid
+      this.form.enterprisename = this.data.enterprisename
+    },
+    onSubmit(){
+      console.log(this.form,"添加联系人")
+      this.form.sa_projectid = this.data.sa_projectid
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 20221219135502,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit("insertSuccess")
+          this.$refs['form'].resetFields()
+          this.form = {
+            contactsid: 0, //0表示新增,大于0表示选择的联系人
+            sa_projectid: 1, //项目id
+            sys_enterpriseid: 1, //关联的企业id
+            sa_project_contactsid:0,
+            enterprisename:'',
+            name: "",
+            sex: "",
+            depname: "",
+            position: "",
+            isleader: 1,
+            birthday : "",
+            phonenumber: "",
+            email: "",
+            province: "",
+            city: "",
+            county: "",
+            address: "",
+            remarks: "",
+            sys_phonebookid:''
+          }
+          this.dialogFormVisible = false
+        })
+      })
+    },
+    searchData(){
+      this.changeTab()
+    },
+    changeTab(){
+      this.enterpriseContactList()
+      this.myContactList()
+    },
+    changeTabCustomers(){
+      this.associatedCustomersList()
+      this.myCustomersList()
+    },
+    /*企业联系人*/
+    async enterpriseContactList(){
+      this.enterpriseContact.param.content.where.condition = this.form.name
+      this.enterpriseContact.param.content.sa_projectid = this.data.sa_projectid
+      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 = Object.assign({},this.form,val)
+      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
+      const res = await this.$api.requested(this.myContacts.param)
+      console.log(res,"我的联系人")
+      this.myContacts.listData = res.data
+      this.myContacts.total = res.total
+      this.myContacts.currentPage = res.pageNumber
+    },
+    /*选择我的联系人*/
+    myContactSelect(val){
+      console.log(val,"选择的联系人")
+      this.form.enterprisename = ''
+      this.form = Object.assign({},this.form,val)
+      this.enterpriseContact.show = false
+    },
+    handleSizeChangeMy(val) {
+      // console.log(`每页 ${val} 条`);
+      this.enterpriseContact.param.content.pageSize = val
+      this.enterpriseContactList()
+    },
+    handleCurrentChangeMy(val) {
+      // console.log(`当前页: ${val}`);
+      this.enterpriseContact.param.content.pageNumber = val
+      this.enterpriseContactList()
+    },
+    /*关联客户*/
+    async associatedCustomersList(){
+      this.associatedCustomers.param.content.where.condition = this.form.enterprisename
+      this.associatedCustomers.param.content.where.sa_projectid = this.data.sa_projectid
+      const res = await this.$api.requested(this.associatedCustomers.param)
+      console.log(res,"关联客户")
+      this.associatedCustomers.listData = res.data
+      this.associatedCustomers.total = res.total
+      this.associatedCustomers.currentPage = res.pageNumber
+    },
+    associatedCustomersSelect(val){
+      console.log(val,"选择关联客户")
+      this.form.sys_enterpriseid = val.sys_enterpriseid
+      this.form.enterprisename = val.enterprisename
+      this.associatedCustomers.show = false
+    },
+    handleSizeAssociatedCustomers(val) {
+      // console.log(`每页 ${val} 条`);
+      this.associatedCustomers.param.content.pageSize = val
+      this.associatedCustomersList()
+    },
+    handleCurrentAssociatedCustomers(val) {
+      // console.log(`当前页: ${val}`);
+      this.associatedCustomers.param.content.pageNumber = val
+      this.associatedCustomersList()
+    },
+    /*我的客户*/
+    async myCustomersList(){
+      this.myCustomers.param.content.where.condition = this.form.enterprisename
+      const res = await this.$api.requested(this.myCustomers.param)
+      console.log(res,"我的客户")
+      this.myCustomers.listData = res.data
+      this.myCustomers.total = res.total
+      this.myCustomers.currentPage = res.pageNumber
+    },
+    myCustomersSelect(val){
+      console.log(val,"选择我的客户")
+      this.form.sys_enterpriseid = val.sys_enterpriseid
+      this.form.enterprisename = val.enterprisename
+      this.associatedCustomers.show = false
+    },
+    handleSizeMyCustomers(val) {
+      // console.log(`每页 ${val} 条`);
+      this.myCustomers.param.content.pageSize = val
+      this.myCustomersList()
+    },
+    handleCurrentMyCustomers(val) {
+      // console.log(`当前页: ${val}`);
+      this.myCustomers.param.content.pageNumber = val
+      this.myCustomersSelect()
+    },
+    onClose(){
+      this.$refs['form'].resetFields()
+      this.form = {
+        contactsid: 0, //0表示新增,大于0表示选择的联系人
+        sa_projectid: 1, //项目id
+        sys_enterpriseid: 1, //关联的企业id
+        sa_project_contactsid:0,
+        enterprisename:'',
+        name: "",
+        sex: "",
+        depname: "",
+        position: "",
+        isleader: 1,
+        birthday : "",
+        phonenumber: "",
+        email: "",
+        province: "",
+        city: "",
+        county: "",
+        address: "",
+        remarks: "",
+        sys_phonebookid:''
+      }
+      this.dialogFormVisible = false
+    },
+  }
+}
+
+</script>
+
+<style scoped>
+
+</style>

+ 32 - 0
src/HDrpManagement/projectChange/modules/modules/contacts/components/delContact.vue

@@ -0,0 +1,32 @@
+<template>
+  <div>
+    <el-popconfirm
+        title="确定删除该联系人嘛?"
+        @confirm="onDel"
+    >
+      <el-button size="mini" type="text" slot="reference">删除</el-button>
+    </el-popconfirm>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "delContact",
+  props:["data"],
+  methods:{
+    async onDel(){
+      const res = await this.$api.requested({
+        "id": 20221111130904,
+        "content": {
+          "sa_project_contactsids": [this.data.sa_project_contactsid]
+        }
+      })
+      this.$emit("delSuccess")
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 603 - 0
src/HDrpManagement/projectChange/modules/modules/contacts/components/edit.vue

@@ -0,0 +1,603 @@
+<template>
+  <div>
+    <el-button size="mini" type="text" @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="75px">
+            <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">
+                    <el-tab-pane label="企业联系人">
+                      <el-table
+                          border
+                          :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="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]"
+                              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="我的联系人" >
+                      <el-table
+                          border
+                          :data="myContacts.listData"
+                          @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]"
+                              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" disabled autosize v-model="form.name" placeholder="请输入姓名" @input="searchData"></el-input>
+                </el-popover>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item  label="手机号:" prop="phonenumber">
+                <el-input   autosize v-model="form.phonenumber" placeholder="请输入手机号码"></el-input>
+              </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="单位:" prop="enterprisename">
+                <el-popover
+                    placement="bottom-start"
+                    width="900"
+                    v-model="associatedCustomers.show"
+                    trigger="click">
+                  <el-tabs type="border-card" @tab-click="changeTabCustomers">
+                    <el-tab-pane label="关联客户">
+                      <el-table
+                          border
+                          :data="associatedCustomers.listData"
+                          @row-click="associatedCustomersSelect"
+                          :header-cell-style="{background:'#EEEEEE',color:'#333'}"
+                          size="mini">
+                        <el-table-column width="80" label="单位编号">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.sys_enterpriseid?scope.row.sys_enterpriseid:'--' }}</span>
+                          </template>
+                        </el-table-column>
+                        <el-table-column width="190" label="单位名称">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.enterprisename?scope.row.enterprisename:'--' }}</span>
+                          </template>
+                        </el-table-column>
+                        <el-table-column  label="单位地址">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.address?scope.row.address:'--' }}</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="handleSizeAssociatedCustomers"
+                              @current-change="handleCurrentAssociatedCustomers"
+                              :current-page="associatedCustomers.currentPage"
+                              :page-sizes="[20, 50, 100, 200]"
+                              layout="total,sizes, prev, pager, next, jumper"
+                              :total="associatedCustomers.total">
+                          </el-pagination>
+                        </div>
+                        <slot name="footerLeft"></slot>
+                      </div>
+                    </el-tab-pane>
+                    <el-tab-pane label="我的客户" >
+                      <el-table
+                          border
+                          :data="myCustomers.listData"
+                          @row-click="myCustomersSelect"
+                          :header-cell-style="{background:'#EEEEEE',color:'#333'}"
+                          size="mini">
+                        <el-table-column width="80" label="单位编号">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.sys_enterpriseid?scope.row.sys_enterpriseid:'--' }}</span>
+                          </template>
+                        </el-table-column>
+                        <el-table-column width="190" label="单位名称">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.enterprisename?scope.row.enterprisename:'--' }}</span>
+                          </template>
+                        </el-table-column>
+                        <el-table-column  label="单位地址">
+                          <template slot-scope="scope">
+                            <span >{{ scope.row.address?scope.row.address:'--' }}</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="handleSizeMyCustomers"
+                              @current-change="handleCurrentMyCustomers"
+                              :current-page="myCustomers.currentPage"
+                              :page-sizes="[20, 50, 100, 200]"
+                              layout="total,sizes, prev, pager, next, jumper"
+                              :total="myCustomers.total">
+                          </el-pagination>
+                        </div>
+                        <slot name="footerLeft"></slot>
+                      </div>
+                    </el-tab-pane>
+                  </el-tabs>
+                  <el-input  slot="reference" :disabled="form.contactsid !== 0"  autosize v-model="form.enterprisename" placeholder="请输入单位" @input="changeTabCustomers"></el-input>
+                </el-popover>
+              </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 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" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "edit",
+  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();
+      }
+    };
+    return {
+      dialogFormVisible:false,
+      visible:false,
+      form:{
+        contactsid: 0, //0表示新增,大于0表示选择的联系人
+        sa_projectid: 1, //项目id
+        sys_enterpriseid: 1, //关联的企业id
+        enterprisename:'',
+        name: "",
+        sex: "",
+        depname: "",
+        position: "",
+        isleader: 1,
+        birthday : "",
+        phonenumber: "",
+        email: "",
+        province: "",
+        city: "",
+        county: "",
+        address: "",
+        remarks: "",
+        sys_phonebookid:''
+      },
+      rules:{
+        name: [
+          { required: true, message: '姓名不能为空', trigger: 'blur,change' },
+        ],
+        phonenumber: [
+          { required: true, validator: validateMobilePhone, trigger: 'blur' },
+        ],
+        enterprisename: [
+          { required: true, message: '单位不能为空', trigger: 'blur,change' },
+        ]
+      },
+      enterpriseContact:{
+        param:{
+          "content": {
+            "sa_projectid": '',
+            "pageNumber": 1,
+            "pageSize": 10,
+            "where": {
+              "condition": ""
+            }
+          },
+          "id": 20221219201402,
+        },
+        listData:[],
+        total:0,
+        currentPage:0,
+        show:false
+      },
+      myContacts:{
+        param:{
+          "id": 20221219161202,
+          "content": {
+            "pageNumber": 1,
+            "pageSize": 20,
+            "where": {
+              "condition": ""
+            }
+          }
+        },
+        listData:[],
+        total:0,
+        currentPage:0,
+        show:false
+      },
+      associatedCustomers:{
+        param:{
+          "id": 20220920083901,
+          "content": {
+            "pageNumber": 1,
+            "pageSize": 20,
+            "where": {
+              "condition": "",
+              "sa_projectid":'',
+              "type":4,
+            }
+          }
+        },
+        listData:[],
+        total:0,
+        currentPage:0,
+        show:false
+      },
+      myCustomers:{
+        param:{
+          "id": 20220920083901,
+          "content": {
+            "pageNumber": 1,
+            "pageSize": 20,
+            "where": {
+              "condition": "",
+              "sa_projectid":'',
+              "type":6,
+            }
+          }
+        },
+        listData:[],
+        total:0,
+        currentPage:0,
+        show:false
+      }
+    }
+  },
+  methods:{
+    onshow(){
+      this.dialogFormVisible = true
+      this.associatedCustomersList()
+      this.myCustomersList()
+      this.enterpriseContactList()
+      this.myContactList()
+      this.form = Object.assign({},this.form,this.data)
+    },
+    onSubmit(){
+      console.log(this.form,"添加联系人")
+      /*this.form.sa_projectid = this.data.sa_projectid*/
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 20221219135502,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit("editSuccess")
+          this.$refs['form'].resetFields()
+          this.form = {}
+          this.dialogFormVisible = false
+        })
+      })
+    },
+    searchData(){
+      this.changeTab()
+    },
+    changeTab(){
+      this.enterpriseContactList()
+      this.myContactList()
+    },
+    changeTabCustomers(){
+      this.associatedCustomersList()
+      this.myCustomersList()
+    },
+    /*企业联系人*/
+    async enterpriseContactList(){
+      this.enterpriseContact.param.content.where.condition = this.form.name
+      this.enterpriseContact.param.content.sa_projectid = this.data.sa_projectid
+      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 = Object.assign({},this.form,val)
+      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
+      const res = await this.$api.requested(this.myContacts.param)
+      console.log(res,"我的联系人")
+      this.myContacts.listData = res.data
+      this.myContacts.total = res.total
+      this.myContacts.currentPage = res.pageNumber
+    },
+    /*选择我的联系人*/
+    myContactSelect(val){
+      console.log(val,"选择的联系人")
+      this.form.enterprisename = ''
+      this.form = Object.assign({},this.form,val)
+      this.enterpriseContact.show = false
+    },
+    handleSizeChangeMy(val) {
+      // console.log(`每页 ${val} 条`);
+      this.enterpriseContact.param.content.pageSize = val
+      this.enterpriseContactList()
+    },
+    handleCurrentChangeMy(val) {
+      // console.log(`当前页: ${val}`);
+      this.enterpriseContact.param.content.pageNumber = val
+      this.enterpriseContactList()
+    },
+    /*关联客户*/
+    async associatedCustomersList(){
+      this.associatedCustomers.param.content.where.condition = this.form.enterprisename
+      this.associatedCustomers.param.content.where.sa_projectid = this.data.sa_projectid
+      const res = await this.$api.requested(this.associatedCustomers.param)
+      console.log(res,"关联客户")
+      this.associatedCustomers.listData = res.data
+      this.associatedCustomers.total = res.total
+      this.associatedCustomers.currentPage = res.pageNumber
+    },
+    associatedCustomersSelect(val){
+      console.log(val,"选择关联客户")
+      this.form.sys_enterpriseid = val.sys_enterpriseid
+      this.form.enterprisename = val.enterprisename
+      this.associatedCustomers.show = false
+    },
+    handleSizeAssociatedCustomers(val) {
+      // console.log(`每页 ${val} 条`);
+      this.associatedCustomers.param.content.pageSize = val
+      this.associatedCustomersList()
+    },
+    handleCurrentAssociatedCustomers(val) {
+      // console.log(`当前页: ${val}`);
+      this.associatedCustomers.param.content.pageNumber = val
+      this.associatedCustomersList()
+    },
+    /*我的客户*/
+    async myCustomersList(){
+      this.myCustomers.param.content.where.condition = this.form.enterprisename
+      const res = await this.$api.requested(this.myCustomers.param)
+      console.log(res,"我的客户")
+      this.myCustomers.listData = res.data
+      this.myCustomers.total = res.total
+      this.myCustomers.currentPage = res.pageNumber
+    },
+    myCustomersSelect(val){
+      console.log(val,"选择我的客户")
+      this.form.sys_enterpriseid = val.sys_enterpriseid
+      this.form.enterprisename = val.enterprisename
+      this.associatedCustomers.show = false
+    },
+    handleSizeMyCustomers(val) {
+      // console.log(`每页 ${val} 条`);
+      this.myCustomers.param.content.pageSize = val
+      this.myCustomersList()
+    },
+    handleCurrentMyCustomers(val) {
+      // console.log(`当前页: ${val}`);
+      this.myCustomers.param.content.pageNumber = val
+      this.myCustomersSelect()
+    },
+    onClose(){
+      this.$refs['form'].resetFields()
+      this.form = {
+        contactsid: 0, //0表示新增,大于0表示选择的联系人
+        sa_projectid: 1, //项目id
+        sys_enterpriseid: 1, //关联的企业id
+        enterprisename:'',
+        name: "",
+        sex: "",
+        depname: "",
+        position: "",
+        isleader: 1,
+        birthday : "",
+        phonenumber: "",
+        email: "",
+        province: "",
+        city: "",
+        county: "",
+        address: "",
+        remarks: "",
+        sys_phonebookid:''
+      }
+      this.dialogFormVisible = false
+    },
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 118 - 0
src/HDrpManagement/projectChange/modules/modules/contacts/index.vue

@@ -0,0 +1,118 @@
+<template>
+  <div>
+    <div>
+      <add class="inline-16" :data="data" @insertSuccess="onSuccess"></add>
+      <el-input
+          placeholder="请输入搜索内容"
+          suffix-icon="el-icon-search"
+          v-model="search"
+          style="width:200px"
+          size="small"
+          class="input-with-select inline-16"
+          @keyup.native.enter="queryClick"
+          @clear="clearData"
+          clearable>
+      </el-input>
+    </div>
+    <div style="margin-top: 15px">
+      <tableLayout :layout="tablecols" :data="list" :opwidth="200" :custom="true"  fixedName="operation">
+        <template v-slot:customcol="scope">
+          <div v-if="scope.column.columnname === 'operation'">
+            <span>{{scope.column.data[scope.column.columnname]}}</span>
+          </div>
+          <p v-else>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
+        </template>
+        <template v-slot:opreation="scope">
+          <edit :data="scope.data" class="inline-16" @editSuccess="onSuccess"></edit>
+          <delContact :data="scope.data" @delSuccess="onSuccess" class="inline-16"></delContact>
+        </template>
+      </tableLayout>
+    </div>
+    <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 './components/add'
+import edit from './components/edit'
+import delContact from './components/delContact'
+export default {
+  name: "index",
+  props:["data"],
+  data() {
+    return {
+      search:"",
+      tablecols:[],
+      list:[],
+      total:0,
+      currentPage:0,
+      params:{
+        "id": 20221111131004,
+        "content": {
+          "sa_projectid": '',
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where":{
+            "conditino":""
+          }
+        }
+      }
+    }
+  },
+  components:{add,edit,delContact},
+  methods:{
+    async listData(){
+      this.params.content.where.condition = this.search
+      this.params.content.sa_projectid = this.data.sa_projectid
+      const res = await this.$api.requested(this.params)
+      this.list = res.data
+      this.total = res.total
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+    queryClick(){
+      this.params.content.pageNumber = 1
+      this.listData()
+    },
+    clearData(){
+      this.search = ''
+      this.listData()
+    },
+    onSuccess(){
+      this.listData()
+    }
+  },
+  mounted() {
+    this.listData()
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).contactsTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+/deep/.el-input__prefix {
+  display: flex;
+  align-items: center;
+}
+</style>

+ 30 - 0
src/HDrpManagement/projectChange/modules/modules/contract/components/add.vue

@@ -0,0 +1,30 @@
+<template>
+  <div>
+    <el-dropdown :hide-on-click="false" @command="handleCommand">
+      <span class="el-dropdown-link">
+        <el-button size="small" type="primary" >新 建</el-button>
+      </span>
+      <el-dropdown-menu slot="dropdown">
+        <el-dropdown-item command="项目协议">项目协议</el-dropdown-item>
+        <el-dropdown-item command="居间协议">居间协议</el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "add",
+  methods:{
+    handleCommand(val){
+      console.log(val)
+      this.type = val
+      this.drawerShow = true
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 121 - 0
src/HDrpManagement/projectChange/modules/modules/contract/index.vue

@@ -0,0 +1,121 @@
+<template>
+  <div>
+    <div>
+      <add class="inline-16" :data="data" @insertSuccess="onSuccess"></add>
+      <el-input
+          placeholder="请输入搜索内容"
+          suffix-icon="el-icon-search"
+          v-model="search"
+          style="width:200px"
+          size="small"
+          class="input-with-select inline-16"
+          @keyup.native.enter="queryClick"
+          @clear="clearData"
+          clearable>
+      </el-input>
+    </div>
+    <div style="margin-top: 15px">
+      <tableLayout :layout="tablecols" :data="list" :opwidth="200" :custom="true"  fixedName="operation">
+        <template v-slot:customcol="scope">
+          <div v-if="scope.column.columnname === 'operation'">
+            <span>{{scope.column.data[scope.column.columnname]}}</span>
+          </div>
+          <p v-else>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
+        </template>
+        <template v-slot:opreation="scope">
+<!--          <edit :data="scope.data" class="inline-16" @editSuccess="onSuccess"></edit>
+          <delContact :data="scope.data" @delSuccess="onSuccess" class="inline-16"></delContact>-->
+        </template>
+      </tableLayout>
+    </div>
+    <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 './components/add'
+export default {
+  name: "index",
+  props:["data"],
+  components:{add},
+  data(){
+    return {
+      search:"",
+      tablecols:[],
+      list:[],
+      total:0,
+      currentPage:0,
+      params:{
+        "id": 20221223102102,
+        "content": {
+          "sa_projectid": 54,
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where": {
+            "condition": "",
+            "status": "",
+            "type": "",
+            "begindate": "",
+            "enddate": ""
+          }
+        }
+      }
+    }
+  },
+  methods:{
+    async listData(){
+      this.params.content.where.condition = this.search
+      this.params.content.sa_projectid = this.data.sa_projectid
+      const res = await this.$api.requested(this.params)
+      this.list = res.data
+      this.total = res.total
+      console.log(res,'合同数据信息')
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+    queryClick(){
+      this.params.content.pageNumber = 1
+      this.listData()
+    },
+    clearData(){
+      this.search = ''
+      this.listData()
+    },
+    onSuccess(){
+      this.listData()
+    }
+  },
+  mounted() {
+    this.listData()
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).contractTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+/deep/.el-input__prefix {
+  display: flex;
+  align-items: center;
+}
+</style>

+ 1 - 0
src/SDrpManagement/QuotedPrice/components/quotedPriceProduct.vue

@@ -391,6 +391,7 @@ export default {
   },
   mounted() {
     /*this.productData()*/
+    console.log(this.sa_projectid,this.type,"产品报价信息")
   }
 }
 </script>