Jelajahi Sumber

项目联系人人员选择功能开发

user5 2 tahun lalu
induk
melakukan
7a5fe28b1a

+ 7 - 0
src/api/cw/projectRecords/ProjectRecordsService.js

@@ -78,4 +78,11 @@ export default class ProjectRecordsService {
       method: 'get'
     })
   }
+  getContractClientList (params) {
+    return request({
+      url: '/cw_work_client/info/getContractClientList',
+      method: 'get',
+      params: params
+    })
+  }
 }

+ 179 - 0
src/views/modules/cw/projectRecords/CwClientPageForm.vue

@@ -0,0 +1,179 @@
+<template>
+  <div>
+    <el-dialog
+      :title="title"
+      :close-on-click-modal="false"
+      v-dialogDrag
+      width="1100px"
+      height="500px"
+      @close="close"
+      @keyup.enter.native=""
+      :visible.sync="visible">
+      <div style="height: calc(100% - 80px);">
+          <el-form size="small" :inline="true" class="query-form" ref="searchForm" :model="searchForm" @submit.native.prevent>
+            <!-- 搜索框-->
+            <el-form-item label="姓名" prop="name">
+              <el-input size="small" v-model="searchForm.name" placeholder="请输入姓名" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="联系方式1" prop="contactFirst">
+              <el-input size="small" v-model="searchForm.contactFirst" placeholder="请输入联系方式1" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="联系方式2" prop="contactSecond">
+              <el-input size="small" v-model="searchForm.contactSecond" placeholder="请输入联系方式2" clearable></el-input>
+            </el-form-item>
+
+            <el-form-item>
+              <el-button type="primary" @click="list()" size="small" icon="el-icon-search">查询</el-button>
+              <el-button @click="resetSearch()" size="small" icon="el-icon-refresh-right">重置</el-button>
+            </el-form-item>
+          </el-form>
+
+          <vxe-table
+            border="inner"
+            auto-resize
+            resizable
+            height="400px"
+            :loading="loading"
+            size="small"
+            ref="projectTable"
+            show-header-overflow
+            show-overflow
+            highlight-hover-row
+            :menu-config="{}"
+            :print-config="{}"
+            @sort-change=""
+            :sort-config="{remote:true}"
+            :data="dataList"
+            :row-config="{isCurrent: true}"
+            :checkbox-config="{trigger: 'row'}"
+          >
+            <vxe-column type="seq" width="60" title="序号"></vxe-column>
+            <vxe-column type="checkbox" width="40px"></vxe-column>
+            <vxe-column min-width="120" align="center" title="姓名" field="name"></vxe-column>
+            <vxe-column min-width="160" align="center" title="部门" field="officeId"></vxe-column>
+            <vxe-column min-width="160" align="center" title="职务" field="position"></vxe-column>
+            <vxe-column min-width="160" align="center" title="联系方式1" field="contactFirst"></vxe-column>
+            <vxe-column min-width="160" align="center" title="联系方式2" field="contactSecond"></vxe-column>
+
+          </vxe-table>
+          <vxe-pager
+            background
+            size="small"
+            :current-page="tablePage.currentPage"
+            :page-size="tablePage.pageSize"
+            :total="tablePage.total"
+            :page-sizes="[10, 20, 100, 1000, {label: '全量数据', value: 1000000}]"
+            :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
+            @page-change="currentChangeHandle">
+          </vxe-pager>
+        </div>
+      <span slot="footer" class="dialog-footer">
+      <el-button size="small" @click="close()" icon="el-icon-circle-close">关闭</el-button>
+      <el-button size="small" type="primary" v-if="method != 'view'" @click="getProgram()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+    </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import ProjectRecordsService from '@/api/cw/projectRecords/ProjectRecordsService'
+  export default {
+    data () {
+      return {
+        title: '联系人选择',
+        method: '',
+        visible: false,
+        loading: false,
+        tablePage: {
+          total: 0,
+          currentPage: 1,
+          pageSize: 10,
+          orders: []
+        },
+        dataList: [],
+        searchForm: {
+          contractId: '', // 合同id
+          name: '',
+          sex: '',
+          officeId: '',
+          position: '',
+          contactFirst: '',
+          contactSecond: ''
+        },
+        checkType: '',
+        detail: '',
+        num: true // num为true是多选,false是单选
+      }
+    },
+    projectRecordsService: null,
+    created () {
+      this.projectRecordsService = new ProjectRecordsService()
+    },
+    components: {
+    },
+    methods: {
+      /**
+       * @param contractId 合同id
+       */
+      init (contractId) {
+        console.log(contractId)
+        if (this.commonJS.isEmpty(contractId)) {
+          this.$message.error('请先选择合同信息')
+          return
+        }
+        this.searchForm.contractId = contractId
+        this.visible = true
+        this.list()
+      },
+      // 表单提交
+      getProgram () {
+        let rows
+        if (this.commonJS.isEmpty(this.$refs.projectTable.getCheckboxRecords())) {
+          this.$message.error('请至少选择一条数据')
+          return
+        }
+        if (this.num === false) {
+          if (this.$refs.projectTable.getCheckboxRecords().length > 1) {
+            this.$message.error('最多选择一条数据')
+            return
+          }
+        }
+        rows = this.$refs.projectTable.getCheckboxRecords()
+        this.close()
+        this.$emit('getProgram', rows)
+      },
+      list () {
+        this.loading = true
+        this.projectRecordsService.getContractClientList({
+          'current': this.tablePage.currentPage,
+          'size': this.tablePage.pageSize,
+          'orders': this.tablePage.orders,
+          ...this.searchForm
+        }).then(({data}) => {
+          this.dataList = data.records
+          this.tablePage.total = data.total
+          this.loading = false
+        })
+      },
+      // 当前页
+      currentChangeHandle ({currentPage, pageSize}) {
+        this.tablePage.currentPage = currentPage
+        this.tablePage.pageSize = pageSize
+        this.list()
+      },
+      resetSearch () {
+        this.$refs.searchForm.resetFields()
+        this.list()
+      },
+      close () {
+        this.detail = ''
+        this.visible = false
+      }
+    }
+  }
+</script>
+<style>
+  .messageZindex {
+    z-index:9999 !important;
+  }
+</style>

+ 73 - 1
src/views/modules/cw/projectRecords/ProjectRecordsAddForm.vue

@@ -282,6 +282,9 @@
                     <el-button type="primary" style="margin-bottom: 15px" size="mini" :disabled="status === 'audit' || status === 'taskFormDetail'" @click="insertEvent('contact')">
                       新增客户联系人
                     </el-button>
+                    <el-button style="margin-left: 20px" type="primary" :disabled="status === 'audit' || status === 'taskFormDetail'" size="mini" @click="openProjectClientContactPageForm()"  plain>
+                      选择联系人
+                    </el-button>
                   </el-row>
                   <el-row  :gutter="15">
                     <el-form :disabled="status === 'audit' || status === 'taskFormDetail'">
@@ -382,10 +385,12 @@
     <WorkClientChooseForm ref="workClientChooseForm" @getWorkClientChoose="getWorkClientChoose"></WorkClientChooseForm>
     <CwProjectBusinessTypeListForm ref="cwProjectBusinessTypeListForm" @getBusinessType="getBusinessType"></CwProjectBusinessTypeListForm>
     <ContractNameForm ref="contractNameForm"></ContractNameForm>
+    <CwClientPageForm ref="cwClientPageForm" @getProgram="getProgram"></CwClientPageForm>
   </div>
 </template>
 
 <script>
+  import CwClientPageForm from './CwClientPageForm'
   import UpLoadComponent from '@/views/common/UpLoadComponent'
   import SelectUserTree from '@/views/modules/utils/treeUserSelect'
   import SelectTree from '@/components/treeSelect/treeSelect.vue'
@@ -454,6 +459,7 @@
           realHeader: '',
           clientContactsName: '',
           reportType: '',
+          programRow: '',
           cwProjectClientContactDTOList: []
         },
         keyWatch: '',
@@ -516,6 +522,7 @@
       }
     },
     components: {
+      CwClientPageForm,
       SelectUserTree,
       UpLoadComponent,
       SelectTree,
@@ -695,7 +702,14 @@
           realHeader: '',
           clientContactsName: '',
           reportType: '',
-          cwProjectClientContactDTOList: []
+          cwProjectClientContactDTOList: [],
+          contactFirst: '',
+          contactSecond: '',
+          email: '',
+          fax: '',
+          name: '',
+          position: '',
+          sex: ''
         }
         this.$refs.uploadComponent.clearUpload()
         this.$refs.inputForm.resetFields()
@@ -740,6 +754,64 @@
           this.tableKeyContact = Math.random()
         }
       },
+
+      openProjectClientContactPageForm () {
+        this.$refs.cwClientPageForm.init(this.inputForm.contractId)
+        if (this.inputForm.cwProjectClientContactDTOList.length > 0) {
+          this.programRow = this.inputForm.cwProjectClientContactDTOList.length
+        } else {
+          this.programRow = this.inputForm.cwProjectClientContactDTOList.length
+        }
+      },
+      getProgram (rows) {
+        rows.forEach((item, index) => {
+          if (index === 0) {
+            console.log(this.programRow)
+            let d = {
+              contactFirst: '',
+              contactSecond: '',
+              email: '',
+              fax: '',
+              name: '',
+              officeId: '',
+              position: '',
+              remarks: '',
+              sex: ''
+            }
+            this.$refs.contactTable.insertAt(d)
+            this.inputForm.cwProjectClientContactDTOList.push(d)
+            this.tableKeyContact = Math.random()
+
+            let r = this.inputForm.cwProjectClientContactDTOList[this.programRow]
+            r.name = item.name
+            r.contactFirst = item.contactFirst
+            r.contactSecond = item.contactSecond
+            r.email = item.email
+            r.fax = item.fax
+            r.officeId = item.officeId
+            r.position = item.position
+            r.remarks = item.remarks
+            r.sex = item.sex
+            this.inputForm.cwProjectClientContactDTOList[this.programRow] = r
+          } else {
+            let r = {
+              name: item.name,
+              contactFirst: item.contactFirst,
+              contactSecond: item.contactSecond,
+              email: item.email,
+              fax: item.fax,
+              officeId: item.officeId,
+              position: item.position,
+              remarks: item.remarks,
+              sex: item.sex
+            }
+            this.inputForm.cwProjectClientContactDTOList.push(r)
+          }
+        })
+        this.$forceUpdate()
+        this.programRow = ''
+        // this.inputForm.reconciliationArea = this.inputForm.financeInvoiceBaseDTOList[0].location
+      },
       // 删除
       removeEvent (row, rowIndex, type) {
         if (type === 'client') {

+ 5 - 2
src/views/modules/cw/workClientInfo/WorkClientAddForm.vue

@@ -1069,7 +1069,10 @@
         if (this.commonJS.isNotEmpty(this.inputForm.uscCode)) {
           this.workClientService.queryUscCodeIsUse(this.inputForm.uscCode).then(({data}) => {
             this.workClientService.queryUscCodeById(this.inputForm.id).then((uscCode) => {
-              if (data.use === 'false' || uscCode.data === this.inputForm.uscCode) {
+              console.log(123456789)
+              console.log(uscCode)
+              console.log(this.inputForm.uscCode)
+              if (data.use === 'false' || uscCode.data.uscCode === this.inputForm.uscCode) {
                 this.uscCodeMessage = ''
                 this.workClientService.queryNameIsUse(this.inputForm.name).then((client) => {
                   this.workClientService.queryNameById(this.inputForm.id).then((name) => {
@@ -1568,7 +1571,7 @@
           this.workClientService.queryUscCodeIsUse(this.inputForm.uscCode).then(({data}) => {
             if (this.commonJS.isNotEmpty(this.inputForm.id)) {
               this.workClientService.queryUscCodeById(this.inputForm.id).then((uscCode) => {
-                if (data.use !== 'false' && this.commonJS.isNotEmpty(data.use) && this.commonJS.isNotEmpty(data.id) && this.inputForm.uscCode !== uscCode.data) {
+                if (data.use !== 'false' && this.commonJS.isNotEmpty(data.use) && this.commonJS.isNotEmpty(data.id) && this.inputForm.uscCode !== uscCode.data.uscCode) {
                   this.uscCodeMessage = '该客户已存在'
                   if (data.isUpdate === 'false') {
                     this.$message.error('该客户信息已存在并且数据正在修改中')