Przeglądaj źródła

项目登记前端

lizhenhao 2 lat temu
rodzic
commit
a93ccffdb8

+ 7 - 0
src/api/program/ProgramTypeDictService.js

@@ -15,6 +15,13 @@ export default class ProgramTypeDictService {
       params: {id: id}
     })
   }
+  getList () {
+    return request({
+      url: '/program/configuration/type/getList',
+      method: 'get',
+      params: {}
+    })
+  }
   save (inputForm) {
     return request({
       url: `/program/configuration/type/save`,

+ 129 - 0
src/views/modules/program/registered/ContactForm.vue

@@ -0,0 +1,129 @@
+<template>
+  <div>
+    <el-dialog
+      :title="title"
+      :close-on-click-modal="false"
+      v-dialogDrag
+      width="1100px"
+      height="500px"
+      @close="close"
+      @keyup.enter.native="getContact"
+      :visible.sync="visible">
+      <div style="height: calc(100% - 80px);">
+<!--        <el-form size="small" :inline="true" class="query-form" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>-->
+<!--          &lt;!&ndash; 搜索框&ndash;&gt;-->
+<!--          <el-form-item label="联系人姓名" prop="name">-->
+<!--            <el-input size="small" v-model="searchForm.name" placeholder="请输入联系人姓名" 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="contactTable"
+          show-header-overflow
+          show-overflow
+          highlight-hover-row
+          :menu-config="{}"
+          :print-config="{}"
+          @sort-change=""
+          :sort-config="{remote:true}"
+          :data="dataList"
+          :checkbox-config="{}">
+          <vxe-column type="seq" width="40"></vxe-column>
+          <vxe-column type="checkbox" width="40px"></vxe-column>
+
+          <vxe-column width="" title="联系人姓名" field="name"></vxe-column>
+          <vxe-column width="" title="联系方式1" field="linkPhone"></vxe-column>
+          <vxe-column width="" title="联系方式2" field="linkMobile"></vxe-column>
+
+        </vxe-table>
+      </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="getContact()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+    </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import InputNumber from '@/views/modules/sys/workContract/InputNumber.vue'
+  import WorkClientService from '@/api/sys/WorkClientService'
+  import SelectUserTree from '@/views/modules/utils/treeUserSelect'
+  export default {
+    data () {
+      return {
+        title: '',
+        method: '',
+        visible: false,
+        loading: false,
+        tablePage: {
+          total: 0,
+          currentPage: 1,
+          pageSize: 10,
+          orders: []
+        },
+        dataList: [],
+        searchForm: {
+          id: '',
+          name: '',
+          deputy: ''
+        },
+        rowId: ''
+      }
+    },
+    workClientService: null,
+    created () {
+      this.workClientService = new WorkClientService()
+    },
+    components: {
+      SelectUserTree,
+      InputNumber
+    },
+    methods: {
+      init (id, deputy) {
+        // if (!this.commonJS.isEmpty(id)) {
+        //   this.$refs.workContractTable.setCurrentRow(id)
+        // }
+        this.searchForm.id = id
+        this.searchForm.deputy = deputy
+        this.visible = true
+        this.list()
+      },
+      // 表单提交
+      getContact () {
+        let rows = this.$refs.contactTable.getCheckboxRecords()
+        this.close()
+        this.$emit('getContact', rows, this.searchForm.deputy)
+      },
+      list () {
+        this.workClientService.findById(this.searchForm.id).then((data) => {
+          this.dataList = data.data.workClientLinkman
+        })
+      },
+      // 当前页
+      currentChangeHandle ({currentPage, pageSize}) {
+        this.tablePage.currentPage = currentPage
+        this.tablePage.pageSize = pageSize
+        this.list()
+      },
+      resetSearch () {
+        this.$refs.searchForm.resetFields()
+        this.list()
+      },
+      close () {
+        this.visible = false
+      }
+    }
+  }
+</script>

+ 167 - 0
src/views/modules/program/registered/ContractForm.vue

@@ -0,0 +1,167 @@
+<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" @keyup.enter.native="refreshList()" @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="创建人" prop="createBy">-->
+<!--            <SelectUserTree-->
+<!--              ref="companyTree"-->
+<!--              :props="{-->
+<!--                  value: 'id',             // ID字段名-->
+<!--                  label: 'name',         // 显示名称-->
+<!--                  children: 'children'    // 子级字段名-->
+<!--                }"-->
+<!--              :url="`/sys/user/treeUserDataAllOffice?type=2`"-->
+<!--              :value="searchForm.createBy"-->
+<!--              :clearable="true"-->
+<!--              :accordion="true"-->
+<!--              @getValue="(value) => {searchForm.createBy=value}"/>-->
+<!--          </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="workContractTable"
+          show-header-overflow
+          show-overflow
+          highlight-hover-row
+          :menu-config="{}"
+          :print-config="{}"
+          @sort-change=""
+          :sort-config="{remote:true}"
+          :data="dataList"
+          :checkbox-config="{}">
+          <vxe-column type="seq" width="40"></vxe-column>
+          <vxe-column type="radio" width="40px"></vxe-column>
+
+          <vxe-column width="200px" title="合同编号" field="no"></vxe-column>
+          <vxe-column  title="合同名称" field="name"></vxe-column>
+          <vxe-column width="150px" title="合同类型" field="name"></vxe-column>
+          <vxe-column width="150px" title="创建时间" field="createDate"></vxe-column>
+          <vxe-column width="100px" title="创建人" field="createBy"></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="getContract()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+    </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import InputNumber from '@/views/modules/sys/workContract/InputNumber.vue'
+  import WorkContractService from '@/api/sys/WorkContractService'
+  import SelectUserTree from '@/views/modules/utils/treeUserSelect'
+  export default {
+    data () {
+      return {
+        title: '',
+        method: '',
+        visible: false,
+        loading: false,
+        tablePage: {
+          total: 0,
+          currentPage: 1,
+          pageSize: 10,
+          orders: []
+        },
+        dataList: [],
+        searchForm: {
+          clientName: '',
+          name: '',
+          contractDates: [],
+          type: '',
+          filedType: '',
+          contractAmounts: [],
+          createBy: '',
+          procInsId: '',
+          processDefinitionId: ''
+        },
+        rowId: ''
+      }
+    },
+    workContractService: null,
+    created () {
+      this.workContractService = new WorkContractService()
+    },
+    components: {
+      SelectUserTree,
+      InputNumber
+    },
+    methods: {
+      init (id) {
+        // if (!this.commonJS.isEmpty(id)) {
+        //   this.$refs.workContractTable.setCurrentRow(id)
+        // }
+        this.visible = true
+        this.list()
+      },
+      // 表单提交
+      getContract () {
+        let row = this.$refs.workContractTable.getRadioRecord()
+        this.close()
+        this.$emit('getContract', row)
+      },
+      list () {
+        this.loading = true
+        this.workContractService.list({
+          '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.visible = false
+      }
+    }
+  }
+</script>

+ 860 - 0
src/views/modules/program/registered/ProjectForm.vue

@@ -0,0 +1,860 @@
+<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+  <div>
+    <el-dialog
+      :title="title"
+      :close-on-click-modal="false"
+      v-dialogDrag
+      width="1300px"
+      @close="close"
+      @keyup.enter.native="doSubmit"
+      :visible.sync="visible">
+      <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="method==='view'"
+               label-width="200px" @submit.native.prevent>
+        <el-divider content-position="left"><i class="el-icon-document"></i> 选择合同</el-divider>
+        <el-row  :gutter="15">
+          <el-col :span="24">
+            <el-form-item label="选择合同" prop="contractDTO.name"
+                          :rules="[
+                          {required: true, message:'合同不能为空', trigger:'blur'},
+                          {required: true, message:'合同不能为空', trigger:'change'}
+                 ]">
+              <el-input size="medium" :readonly="true" @focus="openContractForm()" v-model="inputForm.contractDTO.name" placeholder="请选择合同">
+                <el-button slot="append" icon="el-icon-search" @click="openContractForm()"></el-button>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="合同名称" prop="contractDTO.name"
+                          :rules="[
+                 ]">
+              <el-input :disabled="true" v-model="inputForm.contractDTO.name" placeholder="请填写合同名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="合同金额(元)" prop="contractDTO.name"
+                          :rules="[
+                 ]">
+              <el-input :disabled="true" v-model="inputForm.contractDTO.name" placeholder="请填写合同金额"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="委托方" prop="contractDTO.name"
+                          :rules="[
+                 ]">
+              <el-input :disabled="true" v-model="inputForm.contractDTO.name" placeholder="请填写委托方"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="合同类型" prop="contractDTO.name"
+                          :rules="[
+                 ]">
+              <el-input :disabled="true" v-model="inputForm.contractDTO.name" placeholder="请填写合同类型"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-divider content-position="left"><i class="el-icon-document"></i> 项目立项</el-divider>
+        <el-row  :gutter="15">
+          <el-col :span="12">
+            <el-form-item label="项目名称" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name33" placeholder="请输入项目名称" clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目编号" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name34" placeholder="请输入项目编号" clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目类别" prop="name"
+                          :rules="[
+                 ]">
+              <el-radio v-model="inputForm.name35" label="1" size="small" style="margin-right: 0px;width: 48%" border>资评报字</el-radio>
+              <el-radio v-model="inputForm.name35" label="2" size="small" style="margin-right: 0px;width: 48%" border>资评咨字</el-radio>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目类型" prop="name"
+                          :rules="[
+                 ]">
+              <el-select v-model="inputForm.name37" placeholder="请选择项目类型" clearable style="width: 100%;">
+                <el-option
+                  v-for="item in $dictUtils.getDictList('program_registered_type')"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="执业机构" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name36" placeholder="请输入执业机构" clearable></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="产权持有人" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.propertyHolderName" @focus="openWorkClientForm('2')" placeholder="请输入产权持有人" clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目所在地" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name2" placeholder="请输入项目所在地"clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="是否首次承做" prop="name"
+                          :rules="[
+                 ]">
+              <el-radio v-model="inputForm.name3" v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" size="small" style="margin-right: 0px;width: 48%" border>
+                {{item.label}}</el-radio>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="inputForm.name3 === '0'">
+            <el-form-item label="已连续承做几年" prop="name"
+                          :rules="[
+                 ]">
+              <el-input-number
+                v-model="inputForm.name4"
+                controls-position="right"
+                style="width:100%"
+                :precision="1"
+                :step="0.1"
+                :min="0"
+                placeholder="请输入已连续承做几年"
+                :controls="false"
+                clearable>
+              </el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估费用核算年度" prop="name"
+                          :rules="[
+                 ]">
+              <el-date-picker
+                v-model="inputForm.name5"
+                type="year"
+                value-format="yyyy"
+                placeholder="选择评估费用核算年度"
+                style="width:100%"
+                placement="bottom-start"
+                clearable>
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目经理" prop="name"
+                          :rules="[
+                 ]">
+<!--              <el-input v-model="inputForm.name6" placeholder="请输入项目经理"clearable></el-input>-->
+              <SelectUserTree
+                ref="companyTree"
+                size="medium"
+                :props="{
+                  value: 'id',             // ID字段名
+                  label: 'name',         // 显示名称
+                  children: 'children'    // 子级字段名
+                }"
+                :url="`/sys/user/treeUserDataAllOffice?type=2`"
+                :value="inputForm.name6"
+                :clearable="true"
+                :accordion="true"
+                @getValue="(value) => {inputForm.name6=value}"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="报告类型" prop="name"
+                          :rules="[
+                 ]">
+              <el-select v-model="inputForm.name7" placeholder="请选择报告类型" clearable style="width: 100%;">
+                <el-option
+                  v-for="item in $dictUtils.getDictList('program_registered_report_type')"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="所属行业" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name8" placeholder="请输入所属行业"clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="企业类型" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name9" placeholder="请输入企业类型"clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="风险等级" prop="name"
+                          :rules="[
+                 ]">
+              <el-radio v-model="inputForm.name10" v-for="item in $dictUtils.getDictList('program_registered_risk_level')" :label="item.value" size="small" style="margin-right: 0px;width: 31%" border>
+                {{item.label}}</el-radio>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目来源" prop="name"
+                          :rules="[
+                 ]">
+              <el-select v-model="inputForm.name11" placeholder="请选择项目来源" clearable style="width: 100%;">
+                <el-option
+                  v-for="item in $dictUtils.getDictList('program_registered_source')"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="预估收入(元)" prop="name"
+                          :rules="[
+                 ]">
+              <el-input-number
+                v-model="inputForm.name12"
+                controls-position="right"
+                style="width:100%;"
+                :precision="2"
+                placeholder="请输入预估收入(元)"
+                :controls="false"
+                :step="0.01"
+                :min="0"
+                clearable>
+              </el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="计划完成时间" prop="name"
+                          :rules="[
+                 ]">
+              <el-date-picker
+                v-model="inputForm.name13"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择计划完成时间"
+                style="width:100%"
+                placement="bottom-start"
+                clearable>
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="计划使用人数" prop="name"
+                          :rules="[
+                 ]">
+              <el-input-number
+                v-model="inputForm.name14"
+                controls-position="right"
+                style="width:100%"
+                :precision="0"
+                :min="0"
+                placeholder="请输入计划使用人数"
+                :controls="false"
+                clearable>
+              </el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="约定书(份)" prop="name"
+                          :rules="[
+                 ]">
+              <el-input-number
+                v-model="inputForm.name15"
+                controls-position="right"
+                style="width:100%"
+                :precision="0"
+                :min="0"
+                placeholder="请输入约定书(份)"
+                :controls="false"
+                clearable>
+              </el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="预算工时" prop="name"
+                          :rules="[
+                 ]">
+              <el-input-number
+                v-model="inputForm.name16"
+                controls-position="right"
+                style="width:100%"
+                :precision="1"
+                :step="0.1"
+                :min="0"
+                placeholder="请输入预算工时"
+                :controls="false"
+                clearable>
+              </el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="备注" prop="name"
+                          :rules="[
+                 ]">
+              <el-input type="textarea" v-model="inputForm.name17" maxlength="500" placeholder="请输入备注" show-word-limit></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-divider content-position="left"><i class="el-icon-document"></i> 委派单</el-divider>
+        <el-row  :gutter="15">
+          <el-col :span="12">
+            <el-form-item label="被评估企业" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.assessmentEnterpriseName" @focus="openWorkClientForm('3')" placeholder="请输入被评估企业"clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="联系人及电话" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name19" placeholder="请输入联系人及电话"clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="委托人与被评估单位关系" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name20" placeholder="请输入委托人与被评估单位关系"clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估方法" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name21" placeholder="请输入评估方法"clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估目的" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name22" placeholder="请输入评估目的"clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估基准日" prop="name"
+                          :rules="[
+                 ]">
+              <el-date-picker
+                v-model="inputForm.name23"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择评估基准日"
+                style="width:100%"
+                placement="bottom-start"
+                clearable>
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估服务收费总额" prop="name"
+                          :rules="[
+                 ]">
+              <el-input-number
+                v-model="inputForm.name24"
+                controls-position="right"
+                style="width:100%;"
+                :precision="2"
+                placeholder="请输入评估服务收费总额"
+                :controls="false"
+                :step="0.01"
+                :min="0"
+                clearable>
+              </el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目开发人" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name25" placeholder="请输入项目开发人"clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目类型" prop="name"
+                          :rules="[
+                 ]">
+              <el-select v-model="inputForm.name26" placeholder="请选择项目类型" clearable style="width: 100%">
+                <el-option-group
+                  v-for="(type,index) in typeDictList"
+                  :key="type.id"
+                  :label="type.type">
+                  <el-option
+                    v-for="item in typeDictList[index].childrenList"
+                    :key="item.id"
+                    :label="item.type"
+                    :value="item.id">
+                  </el-option>
+                </el-option-group>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估对象" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name27" placeholder="请输入评估对象"clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="预计现场工作起止日期" prop="name"
+                          :rules="[
+                 ]">
+              <el-date-picker
+                size="medium"
+                v-model="inputForm.name28"
+                type="daterange"
+                range-separator="至"
+                style="width: 100%  "
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                placement="bottom-start"
+                clearabl>
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="预计出报告时间" prop="name"
+                          :rules="[
+                 ]">
+              <el-date-picker
+                v-model="inputForm.name29"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择预计出报告时间"
+                style="width:100%"
+                placement="bottom-start"
+                clearable>
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+
+
+          <el-col :span="12">
+            <el-form-item label="本所是否具备承接胜任能力" prop="name"
+                          :rules="[
+                 ]">
+              <el-radio v-model="inputForm.name30" v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" size="small" style="margin-right: 0px;width: 48%" border>
+                {{item.label}}</el-radio>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="是否影响本所承做人员独立性" prop="name"
+                          :rules="[
+                 ]">
+              <el-radio v-model="inputForm.name31" v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" size="small" style="margin-right: 0px;width: 48%" border>
+                {{item.label}}</el-radio>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目承做方式" prop="name"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.name32" placeholder="请输入项目承做方式"clearable></el-input>
+            </el-form-item>
+          </el-col>
+
+        </el-row>
+        <el-divider content-position="left"><i class="el-icon-document"></i>
+          产权持有人联系人
+          <vxe-button style="margin-left: 20px"status="primary" :disabled="method==='view'" size="mini" @click="openContactForm('2')">
+            新增
+          </vxe-button>
+        </el-divider>
+        <el-row  :gutter="15" >
+          <vxe-table
+            border
+            show-overflow
+            ref="equityTable"
+            class="vxe-table-element"
+            :data="inputForm.equityList"
+            style="margin-left: 5em"
+            @cell-click=""
+            @edit-closed=""
+            highlight-current-row
+            :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
+          >
+            <vxe-table-column field="name" title="联系人" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input :disabled="true" v-model="scope.row.name" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="linkPhone" title="联系方式1" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input :disabled="true" v-model="scope.row.linkPhone" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="linkMobile" title="联系方式2" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input :disabled="true" v-model="scope.row.linkMobile" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="rank" title="职位" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input v-model="scope.row.rank" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="remarks" title="备注" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input v-model="scope.row.remarks" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column title="操作" width="100">
+              <template v-slot="scope">
+                <el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'equity')">删除</el-button>
+              </template>
+            </vxe-table-column>
+          </vxe-table>
+        </el-row>
+        <el-divider content-position="left"><i class="el-icon-document"></i>
+          项目直接对接人
+          <vxe-button style="margin-left: 20px"status="primary" :disabled="method==='view'" size="mini" @click="openContactForm('3')">
+            新增
+          </vxe-button>
+        </el-divider>
+        <el-row  :gutter="15" >
+          <vxe-table
+            border
+            show-overflow
+            ref="contactTable"
+            class="vxe-table-element"
+            :data="inputForm.contactList"
+            style="margin-left: 5em"
+            @cell-click=""
+            @edit-closed=""
+            highlight-current-row
+            :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
+          >
+            <vxe-table-column field="name" title="联系人" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input :disabled="true" v-model="scope.row.name" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="linkPhone" title="联系方式1" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input :disabled="true" v-model="scope.row.linkPhone" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="linkMobile" title="联系方式2" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input :disabled="true" v-model="scope.row.linkMobile" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="rank" title="职位" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input v-model="scope.row.rank" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="remarks" title="备注" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input v-model="scope.row.remarks" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column title="操作" width="100">
+              <template v-slot="scope">
+                <el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'contact')">删除</el-button>
+              </template>
+            </vxe-table-column>
+          </vxe-table>
+        </el-row>
+
+        <el-divider content-position="left"><i class="el-icon-document"></i>
+          项目组成员
+          <vxe-button style="margin-left: 20px"status="primary" :disabled="method==='view'" size="mini" @click="insertEvent('member')">
+            新增
+          </vxe-button>
+        </el-divider>
+        <el-row  :gutter="15">
+          <vxe-table
+            border
+            show-overflow
+            ref="memberTable"
+            class="vxe-table-element"
+            :data="inputForm.memberList"
+            style="margin-left: 5em"
+            @cell-click=""
+            @edit-closed=""
+            highlight-current-row
+            :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
+          >
+            <vxe-table-column field="name" title="姓名" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input maxlength="10" v-model="scope.row.name" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="hour" title="预计工时(时)" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input maxlength="10" v-model="scope.row.hour" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="type" title="人员类型" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input maxlength="10" v-model="scope.row.type" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column field="position" title="项目职务" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <el-input maxlength="10" v-model="scope.row.position" ></el-input>
+              </template>
+            </vxe-table-column>
+            <vxe-table-column title="操作" width="100">
+              <template v-slot="scope">
+                <el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'member')">删除</el-button>
+              </template>
+            </vxe-table-column>
+          </vxe-table>
+        </el-row>
+      </el-form>
+      <!--        附件-->
+      <UpLoadComponent ref="uploadComponent"></UpLoadComponent>
+      <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="doSubmit()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+    </span>
+    </el-dialog>
+    <ContractForm  ref="contractForm" @getContract="getContract"></ContractForm>
+    <WorkClientForm  ref="workClientForm" @getWorkClient="getWorkClient"></WorkClientForm>
+    <ContactForm  ref="contactForm" @getContact="getContact"></ContactForm>
+  </div>
+</template>
+
+<script>
+  import ProgramTypeDictService from '@/api/program/ProgramTypeDictService'
+  import ContractForm from './ContractForm'
+  import WorkClientForm from './WorkClientForm'
+  import ContactForm from './ContactForm'
+  import UpLoadComponent from '@/views/common/UpLoadComponent'
+  import SelectUserTree from '@/views/modules/utils/treeUserSelect'
+  export default {
+    data () {
+      return {
+        title: '',
+        method: '',
+        visible: false,
+        loading: false,
+        typeDictList: [],
+        inputForm: {
+          contractDTO: {
+            name: ''
+          },
+          programTypeDTO: {
+            id: '',
+            name: ''
+          },
+          name: '',
+          memberList: [],
+          contactList: [],
+          equityList: [],
+          fileList: []
+        }
+      }
+    },
+    programTypeDictService: null,
+    created () {
+      this.programTypeDictService = new ProgramTypeDictService()
+    },
+    components: {
+      ContractForm,
+      SelectUserTree,
+      UpLoadComponent,
+      WorkClientForm,
+      ContactForm
+    },
+    methods: {
+      init (method, id) {
+        this.method = method
+        this.inputForm = {
+          propertyHolder: '',
+          propertyHolderName: '',
+          assessmentEnterprise: '',
+          assessmentEnterpriseName: '',
+          contractDTO: {
+            name: ''
+          },
+          programTypeDTO: {
+            id: '',
+            name: ''
+          },
+          name: '',
+          name36: '江苏兴光资产评估有限公司',
+          memberList: [],
+          contactList: [],
+          equityList: [],
+          fileList: []
+        }
+        this.getTypeList()
+        if (method === 'add') {
+          this.title = `项目登记`
+          this.inputForm.parentId = '0'
+        } else if (method === 'edit') {
+          this.inputForm.id = id
+          this.title = '修改项目类型'
+        } else if (method === 'view') {
+          this.inputForm.id = id
+          this.title = '查看项目类型'
+        } else if (method === 'addChild') {
+          this.title = '新建子项目类型'
+          this.inputForm.parentId = id
+        }
+        this.visible = true
+        this.loading = false
+        this.$nextTick(() => {
+          this.$refs.inputForm.resetFields()
+          if (method === 'edit' || method === 'view') { // 修改或者查看
+            this.loading = true
+            this.programTypeDictService.queryById(this.inputForm.id).then(({data}) => {
+              this.inputForm = this.recover(this.inputForm, data)
+              this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
+              this.$refs.uploadComponent.newUpload(method, this.inputForm.fileList, 'program')
+              this.loading = false
+            })
+          }
+          if (method !== 'edit' && method !== 'view') {
+            this.$refs.uploadComponent.newUpload(method, [], 'program')
+          }
+        })
+      },
+      // 表单提交
+      doSubmit () {
+        this.$refs['inputForm'].validate((valid) => {
+          if (valid) {
+            this.loading = true
+            if (this.$refs.uploadComponent.checkProgress()) {
+              this.loading = false
+              return
+            }
+            this.inputForm.fileList = this.$refs.uploadComponent.getDataList()
+            this.programTypeDictService.save(this.inputForm).then(({data}) => {
+              this.close()
+              this.$message.success(data)
+              this.$emit('refreshDataList')
+              this.loading = false
+            }).catch(() => {
+              this.loading = false
+            })
+          }
+        })
+      },
+      openContractForm () {
+        if (!this.commonJS.isEmpty(this.inputForm.contractDTO.id)) {
+          this.$refs.contractForm.init(this.inputForm.contractDTO.id)
+        } else {
+          this.$refs.contractForm.init()
+        }
+      },
+      getContract (row) {
+        this.inputForm.contractDTO = row
+      },
+      openWorkClientForm (deputy) {
+        if (!this.commonJS.isEmpty(this.inputForm.propertyHolder)) {
+          this.$refs.workClientForm.init(this.inputForm.propertyHolder, deputy)
+        } else {
+          this.$refs.workClientForm.init(null, deputy)
+        }
+      },
+      getWorkClient (row, deputy) {
+        if (deputy === '2') {
+          this.inputForm.propertyHolderName = row.name
+          this.inputForm.propertyHolder = row.id
+        }
+        if (deputy === '3') {
+          this.inputForm.assessmentEnterpriseName = row.name
+          this.inputForm.assessmentEnterprise = row.id
+        }
+      },
+      openContactForm (deputy) {
+        if (deputy === '2') {
+          if (this.commonJS.isEmpty(this.inputForm.propertyHolder)) {
+            this.$message.error('请先填写产权持有人')
+          } else {
+            this.$refs.contactForm.init(this.inputForm.propertyHolder, deputy)
+          }
+        }
+        if (deputy === '3') {
+          if (this.commonJS.isEmpty(this.inputForm.assessmentEnterprise)) {
+            this.$message.error('请先填写被评估企业')
+          } else {
+            this.$refs.contactForm.init(this.inputForm.assessmentEnterprise, deputy)
+          }
+        }
+      },
+      getContact (rows, deputy) {
+        if (deputy === '2') {
+          console.log(rows)
+          this.inputForm.equityList = rows
+        }
+        if (deputy === '3') {
+          this.inputForm.contactList = rows
+        }
+      },
+      close () {
+        this.$refs.uploadComponent.clearUpload()
+        this.$refs.inputForm.resetFields()
+        this.visible = false
+      },
+      getTypeList () {
+        this.programTypeDictService.getList().then(({data}) => {
+          this.typeDictList = data
+        })
+      },
+      // 删除
+      removeEvent (row, rowIndex, type) {
+        if (type === 'member') {
+          this.$refs.memberTable.remove(row)
+          this.inputForm.memberList.splice(rowIndex, 1)
+        }
+        if (type === 'contact') {
+          this.$refs.contactTable.remove(row)
+          this.inputForm.contactList.splice(rowIndex, 1)
+        }
+        if (type === 'equity') {
+          this.$refs.equityTable.remove(row)
+          this.inputForm.equityList.splice(rowIndex, 1)
+        }
+      },
+      // 新增
+      // eslint-disable-next-line no-dupe-keys
+      async insertEvent (type) {
+        if (type === 'member') {
+          await this.$refs.memberTable.insert().then((data) => {
+            this.inputForm.memberList.push(data)
+          })
+        }
+        if (type === 'contact') {
+          await this.$refs.contactTable.insert().then((data) => {
+            this.inputForm.contactList.push(data)
+          })
+        }
+        if (type === 'equity') {
+          await this.$refs.equityTable.insert().then((data) => {
+            this.inputForm.equityList.push(data)
+          })
+        }
+      }
+    }
+  }
+</script>
+<style scoped>
+  /deep/ .el-input-number .el-input__inner {
+    text-align: left;
+  }
+</style>

+ 168 - 0
src/views/modules/program/registered/ProjectList.vue

@@ -0,0 +1,168 @@
+<template>
+  <div class="page">
+    <el-form size="small" :inline="true" class="query-form" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
+      <!-- 搜索框-->
+      <el-form-item prop="type">
+        <el-input size="small" v-model="searchForm.type" placeholder="请输入项目类型名称" clearable></el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="refreshList()" 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>
+    <div class="bg-white top" style="">
+      <vxe-toolbar :refresh="{query: refreshList}" custom>
+        <template #buttons>
+          <el-button v-if="hasPermission('program:configuration:type:add')" type="primary" size="small" icon="el-icon-plus" @click="add()">新建</el-button>
+          <el-button v-if="hasPermission('program:configuration:type:del')" type="danger"   size="small" icon="el-icon-delete" @click="del()" :disabled="$refs.typeDictTable && $refs.typeDictTable.getCheckboxRecords().length === 0" plain>删除</el-button>
+        </template>
+      </vxe-toolbar>
+      <div style="height: calc(100% - 50px)">
+        <vxe-table
+          border="inner"
+          auto-resize
+          resizable
+          height="auto"
+          :loading="loading"
+          size="small"
+          ref="typeDictTable"
+          show-header-overflow
+          show-overflow
+          highlight-hover-row
+          :menu-config="{}"
+          @sort-change="sortChangeHandle"
+          :sort-config="{remote:true}"
+          :data="dataList"
+          :tree-config="{transform: true, rowField: 'id', parentField: 'parentId'}"
+          :checkbox-config="{}">
+          <vxe-column type="seq" width="40"></vxe-column>
+          <vxe-column type="checkbox" width="40" ></vxe-column>
+          <vxe-column width="180" title="项目类型名称" field="type" align="left" tree-node></vxe-column>
+          <vxe-column width="180" title="序号" field="sort"></vxe-column>
+          <vxe-column title="备注" field="remarks"></vxe-column>
+          <vxe-column title="操作" width="230px" fixed="right" align="center">
+            <template  slot-scope="scope">
+              <el-button v-if="hasPermission('program:configuration:type:edit')&&scope.row.parentId === '0'" type="text" icon="el-icon-plus" size="small" @click="addChild(scope.row.id)">新建子类型</el-button>
+              <el-button v-if="hasPermission('program:configuration:type:edit')" type="text" icon="el-icon-edit" size="small" @click="edit(scope.row.id)">修改</el-button>
+              <el-button v-if="hasPermission('program:configuration:type:del')" type="text"  icon="el-icon-delete" size="small" @click="del(scope.row.id)">删除</el-button>
+            </template>
+          </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>
+    </div>
+    <ProjectForm  ref="projectForm" @refreshDataList="refreshList"></ProjectForm>
+  </div>
+</template>
+
+<script>
+  import ProgramTypeDictService from '@/api/program/ProgramTypeDictService'
+  import ProjectForm from './ProjectForm'
+  export default {
+    data () {
+      return {
+        searchForm: {
+          type: '',
+          sort: ''
+        },
+        dataList: [],
+        tablePage: {
+          total: 0,
+          currentPage: 1,
+          pageSize: 10,
+          orders: []
+        },
+        loading: false
+      }
+    },
+    programTypeDictService: null,
+    created () {
+      this.programTypeDictService = new ProgramTypeDictService()
+    },
+    components: {
+      ProjectForm
+    },
+    mounted () {
+      this.refreshList()
+    },
+    methods: {
+      // 新增
+      add () {
+        this.$refs.projectForm.init('add', '')
+      },
+      addChild (id) {
+        this.$refs.projectForm.init('addChild', id)
+      },
+      // 修改
+      edit (id) {
+        id = id || this.$refs.typeDictTable.getCheckboxRecords().map(item => {
+          return item.id
+        })[0]
+        this.$refs.projectForm.init('edit', id)
+      },
+      // 查看
+      view (id) {
+        this.$refs.projectForm.init('view', id)
+      },
+      // 获取数据列表
+      refreshList () {
+        // this.loading = true
+        // this.programTypeDictService.list({
+        //   '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.refreshList()
+      },
+      // 排序
+      sortChangeHandle (column) {
+        this.tablePage.orders = []
+        if (column.order != null) {
+          this.tablePage.orders.push({column: this.$utils.toLine(column.property), asc: column.order === 'asc'})
+        }
+        this.refreshList()
+      },
+      // 删除
+      del (id) {
+        let ids = id || this.$refs.typeDictTable.getCheckboxRecords().map(item => {
+          return item.id
+        }).join(',')
+        this.$confirm(`确定删除所选项吗?`, '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.loading = true
+          this.programTypeDictService.delete(ids).then(({data}) => {
+            this.$message.success(data)
+            this.refreshList()
+            this.loading = false
+          })
+        })
+      },
+      resetSearch () {
+        this.$refs.searchForm.resetFields()
+        this.refreshList()
+      }
+    }
+  }
+</script>

+ 217 - 0
src/views/modules/program/registered/WorkClientForm.vue

@@ -0,0 +1,217 @@
+<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" @keyup.enter.native="list()" @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="创建时间" prop="createDates">
+            <el-date-picker
+              placement="bottom-start"
+              v-model="searchForm.createDates"
+              type="datetimerange"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期">
+            </el-date-picker>
+          </el-form-item>
+
+          <el-form-item label="客户性质" prop="companyType">
+            <el-select v-model="searchForm.companyType" placeholder="请选择" style="width:100%;">
+              <el-option
+                v-for="item in $dictUtils.getDictList('customer_nature')"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="客户行业" prop="companyIndustry">
+            <el-select v-model="searchForm.companyIndustry" placeholder="请选择" style="width:100%;">
+              <el-option
+                v-for="item in $dictUtils.getDictList('industry')"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="统一社会信用代码" prop="uscCode">
+            <el-input size="small" v-model="searchForm.uscCode" placeholder="请输入统一社会信用代码" clearable></el-input>
+          </el-form-item>
+
+          <el-form-item label="创建人" prop="createBy">
+            <SelectUserTree
+              ref="companyTree"
+              :props="{
+                  value: 'id',             // ID字段名
+                  label: 'name',         // 显示名称
+                  children: 'children'    // 子级字段名
+                }"
+              :url="`/sys/user/treeUserDataAllOffice?type=2`"
+              :value="searchForm.createBy"
+              :clearable="true"
+              :accordion="true"
+              @getValue="(value) => {searchForm.createBy=value}"/>
+          </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="workClientTable"
+          show-header-overflow
+          show-overflow
+          highlight-hover-row
+          :menu-config="{}"
+          :print-config="{}"
+          @sort-change=""
+          :sort-config="{remote:true}"
+          :data="dataList"
+          :checkbox-config="{}">
+          <vxe-column type="seq" width="40"></vxe-column>
+          <vxe-column type="radio" width="40px"></vxe-column>
+
+          <vxe-column width="300px"  title="客户名称" field="name">
+          </vxe-column>
+<!--          <vxe-column width="200px"  title="代表方" field="deputy" ></vxe-column>-->
+          <vxe-column width="100px"  title="客户性质" field="companyType" >
+            <template slot-scope="scope">
+              {{ $dictUtils.getDictLabel("customer_nature", scope.row.companyType, '-') }}
+            </template>
+          </vxe-column>
+          <vxe-column width="100px"  title="客户行业" field="companyIndustry" >
+            <template slot-scope="scope">
+              {{ $dictUtils.getDictLabel("industry", scope.row.companyIndustry, '-') }}
+            </template>
+          </vxe-column>
+          <vxe-column width="200px" title="统一社会信用代码" field="uscCode" > </vxe-column>
+          <vxe-column width="100px" title="创建人" field="createBy" > </vxe-column>
+          <vxe-column width="150px" title="创建时间" field="createDate" > </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="getWorkClient()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+    </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import WorkClientService from '@/api/sys/WorkClientService'
+  import SelectUserTree from '@/views/modules/utils/treeUserSelect'
+  import SelectTree from '@/components/treeSelect/treeSelect.vue'
+  export default {
+    data () {
+      return {
+        title: '',
+        method: '',
+        visible: false,
+        loading: false,
+        tablePage: {
+          total: 0,
+          currentPage: 1,
+          pageSize: 10,
+          orders: []
+        },
+        dataList: [],
+        searchForm: {
+          name: '',
+          areaId: '',
+          createDates: [],
+          companyType: '',
+          companyIndustry: '',
+          clientType: '',
+          uscCode: '',
+          createBy: '',
+          deputy: ''
+        },
+        rowId: ''
+      }
+    },
+    workClientService: null,
+    created () {
+      this.workClientService = new WorkClientService()
+    },
+    components: {
+      SelectUserTree,
+      SelectTree
+    },
+    methods: {
+      init (id, deputy) {
+        // if (!this.commonJS.isEmpty(id)) {
+        //   this.$refs.workContractTable.setCurrentRow(id)
+        // }
+        this.searchForm.deputy = deputy
+        this.visible = true
+        this.list()
+      },
+      // 表单提交
+      getWorkClient () {
+        let row = this.$refs.workClientTable.getRadioRecord()
+        this.close()
+        this.$emit('getWorkClient', row, this.searchForm.deputy)
+      },
+      list () {
+        this.loading = true
+        this.workClientService.list({
+          '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.visible = false
+      }
+    }
+  }
+</script>