Jelajahi Sumber

1.新增企业客户管理的查询、导出与新增

GouGengquan 2 hari lalu
induk
melakukan
675f39c6af

+ 9 - 5
src/api/modules/customerCompany.js

@@ -4,13 +4,13 @@ import request from '@/utils/request'
 */
 export default {
   list(params) {
-    return request.get(`customerCompany`,{ params: params })
+    return request.get(`customerCompany`, { params: params })
   },
   detail(params) {
     return request.get(`customerCompany/${params}`)
   },
   simpleAll(params) {
-    return request.post(`customerCompany/simpleAll`,params)
+    return request.post(`customerCompany/simpleAll`, params)
   },
   add(params) {
     return request.post(`customerCompany`, params)
@@ -18,7 +18,11 @@ export default {
   edit(params) {
     return request.put(`customerCompany`, params)
   },
-   delete(params) {
-     return request.delete(`customerCompany/${params}`)
-   },
+  delete(params) {
+    return request.delete(`customerCompany/${params}`)
+  },
+  // 分页查询企业客户列表
+  getCustomerCompanyPage(params) {
+    return request.get(`customerCompany/getCustomerCompanyPage`, { params: params })
+  },
 }

+ 3 - 1
src/router/urlMap.js

@@ -162,6 +162,7 @@ import _views_statistical_major_evaluate_unit from '@/views/statistical/major/ev
 import _views_statistical_major_scene_images from '@/views/statistical/major/sceneImages'
 import _views_administration_assets_complaint_check_list from '@/views/administration/assets/complainantCheckList'
 import _views_hr_payslip_email_list from '@/views/hr/payslipEmail'
+import _views_customer_company_list from '@/views/customer/customerCompany'
 
 export default {
   _views_set_menu,
@@ -312,6 +313,7 @@ export default {
   _views_statistical_major_evaluate_unit,
   _views_statistical_major_scene_images,
   _views_administration_assets_complaint_check_list,
-  _views_hr_payslip_email_list
+  _views_hr_payslip_email_list,
+  _views_customer_company_list
 
 }

+ 1 - 1
src/views/assets/allList.vue

@@ -131,7 +131,7 @@
         </el-table-column>
       </parentTable>
     </y-page-list-layout>
-    <el-dialog title="项目终止" :visible.sync="dialogTerminateVisible" width="30%">
+    <el-dialog title="项目终止" :visible.sync="dialogTerminateVisible" width="50%">
       <el-form :model="terminateInfo" :rules="terminateInfoRules" ref="terminateForm">
         <el-row>
           <el-col>

+ 332 - 0
src/views/customer/customerCompany.vue

@@ -0,0 +1,332 @@
+<template>
+  <div class="app-container">
+    <div class="title-container">
+      <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
+    </div>
+    <y-page-list-layout :page-list="pageData" :page-para="listQuery" :get-page-list="selectPage">
+      <template slot="left">
+        <el-input style="width: 200px;float: left;" class="filter-item" v-model="listQuery.companyName" placeholder="企业名称" clearable></el-input>
+        <el-input style="width: 200px;float: left;margin-left: 10px;" class="filter-item" v-model="listQuery.parentCompany" placeholder="上级企业" clearable></el-input>
+        <el-select v-model="listQuery.companyType" filterable placeholder="企业类型(可搜索)" style=" width: 180px;margin-left: 10px;float: left;">
+          <el-option v-for="item in companyTypeOptions" :label="item.label" :value="item.value"></el-option>
+        </el-select>
+        <el-input style="width: 200px;float: left;margin-left: 10px;" class="filter-item" v-model="listQuery.address" placeholder="地址" clearable></el-input>
+        <el-input style="width: 200px;float: left;margin-left: 10px;" class="filter-item" v-model="listQuery.phone" placeholder="企业电话" clearable></el-input>
+        <el-select v-model="listQuery.clientManagerId" filterable placeholder="客户经理(可搜索)" style=" width: 180px;margin-left: 10px;float: left;">
+          <el-option v-for="(u, id) in allUsers" :label="u.name" :value="u.id"></el-option>
+        </el-select>
+        <el-select v-model="listQuery.terminal" placeholder="终端客户" style=" width: 180px;margin-left: 10px;float: left;">
+          <el-option label="是" value="true"></el-option>
+          <el-option label="否" value="false"></el-option>
+        </el-select>
+        <el-button class="filter-item" style="margin-left: 10px;float: left;" type="primary" @click="searchList" round>搜索</el-button>
+        <el-button class="filter-item" style="float: left;" round type="success" @click="resetParams()">重置</el-button>
+        <el-button class="filter-item" style="float: left;" round type="warning" @click="exportPage()">导出</el-button>
+        <PermissionButton menu-code="_views_customer_company_add" class-name="filter-item" name round type="danger" @click="openCompanyFormDialog()" />
+      </template>
+      <parentTable ref="table" v-loading="listLoading" :data="pageData.records" slot="table" style="width: 100%;">
+        <el-table-column label="企业名称" align="center" prop="companyName">
+          <template slot-scope="{row}">
+            <span>{{ row.companyName }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="上级企业" align="center" prop="parentCompany">
+          <template slot-scope="{row}">
+            <span>{{ row.parentCompany }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="企业类型" align="center" prop="companyType">
+          <template slot-scope="{row}">
+            <span>{{ row.companyType }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="地址" align="center" prop="address">
+          <template slot-scope="{row}">
+            <span>{{ row.address }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="企业电话" align="center" prop="phone">
+          <template slot-scope="{row}">
+            <span>{{ row.phone }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="维护人" align="center" prop="clientManager">
+          <template slot-scope="{row}">
+            <span>{{ row.clientManager }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="终端客户" align="center" prop="terminal">
+          <template slot-scope="{row}">
+            <span>{{ row.terminal ? '终端客户' : '非终端客户' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="来单量" align="center" prop="orderVolume">
+          <template slot-scope="{row}">
+            <span>{{ row.orderVolume }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="评估收入" align="center" prop="estimatedRevenue">
+          <template slot-scope="{row}">
+            <span>{{ row.estimatedRevenue }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="创建时间" align="center" prop="created">
+          <template slot-scope="{row}">
+            <span>{{ row.created }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" width="100" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text">修改</el-button>
+          </template>
+        </el-table-column>
+      </parentTable>
+    </y-page-list-layout>
+    <el-dialog title="新增客户" :visible.sync="dialogCompanyFormVisible" width="50%" @close="clearCompanyForm">
+      <el-form :model="companyForm" :rules="companyFormRules" ref="companyForm">
+        <el-row>
+          <el-col>
+            <el-form-item label="企业名称:" prop="name" label-width="140px" class="postInfo-container-item">
+              <el-input v-model.trim="companyForm.name" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col>
+            <el-form-item label="终端客户:" prop="terminal" label-width="140px" class="postInfo-container-item">
+              <el-select v-model="companyForm.terminal" style="width: 100%;" clearable>
+                <el-option label="是" value="true"></el-option>
+                <el-option label="否" value="false"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col>
+            <el-form-item label="上级企业:" prop="parentId" label-width="140px" class="postInfo-container-item">
+              <el-select v-model="companyForm.parentId" filterable style="width: 100%;" clearable>
+                <el-option v-for="item in parentCompany" :label="item.name" :value="item.id"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col>
+            <el-form-item label="企业类型:" prop="companyType" label-width="140px" class="postInfo-container-item">
+              <el-select v-model="companyForm.companyType" filterable style="width: 100%;" clearable>
+                <el-option v-for="item in companyTypeOptions" :label="item.label" :value="item.value"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col>
+            <el-form-item label="地址:" prop="address" label-width="140px" class="postInfo-container-item">
+              <el-input v-model="companyForm.address" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col>
+            <el-form-item label="企业电话:" prop="phone" label-width="140px" class="postInfo-container-item">
+              <el-input v-model.trim="companyForm.phone" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col>
+            <el-form-item label="维护人:" prop="clientManagerId" label-width="140px" class="postInfo-container-item">
+              <el-select v-model="companyForm.clientManagerId" filterable style="width: 100%;" clearable>
+                <el-option v-for="(u, id) in allUsers" :label="u.name" :value="u.id"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="clearCompanyForm()">取 消</el-button>
+        <el-button type="primary" @click="addCustomer()">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import YPageListLayout from '@/components/YPageListLayout';
+import Breadcrumb from '@/components/Breadcrumb';
+import PermissionButton from '@/components/PermissionButton/PermissionButton';
+import { getCookie, setCookie, removeCookie } from '@/utils/auth';
+
+export default {
+  name: 'CustomerCompanyList',
+  components: {
+    Breadcrumb,
+    YPageListLayout,
+    PermissionButton,
+  },
+  data() {
+    return {
+      companyTypeOptions: [
+        {
+          value: '银行及金融机构',
+          label: '银行及金融机构',
+        },
+        {
+          value: '政府职能部门',
+          label: '政府职能部门',
+        },
+        {
+          value: '民营企业',
+          label: '民营企业',
+        },
+        {
+          value: '事业单位',
+          label: '事业单位',
+        },
+        {
+          value: '国有企业',
+          label: '国有企业',
+        },
+        {
+          value: '房地产业',
+          label: '房地产业',
+        },
+        {
+          value: '私企',
+          label: '私企',
+        },
+        {
+          value: '国资',
+          label: '国资',
+        },
+        {
+          value: '司法',
+          label: '司法',
+        },
+        {
+          value: '制造业',
+          label: '制造业',
+        },
+      ],
+      pageData: { records: [] },
+      listLoading: false,
+      listQuery: {
+        page: 1,
+        size: 20,
+        current: 1,
+      },
+      // 用户下拉列表
+      allUsers: [],
+      // 上级企业
+      parentCompany: [],
+      dialogCompanyFormVisible: false,
+      // 企业客户表单
+      companyForm: {
+        id: null,
+        name: null,
+        terminal: null,
+        parentId: null,
+        companyType: null,
+        address: null,
+        phone: null,
+        clientManagerId: null,
+        level: null,
+      },
+      companyFormRules: {
+        name: [{ required: true, message: '企业名称不能为空', trigger: 'blur' }],
+        terminal: [{ required: true, message: '请选择是否终端客户', trigger: 'change' }],
+        companyType: [{ required: true, message: '请选择企业/单位类型', trigger: 'change' }],
+        clientManagerId: [{ required: true, message: '请选择维护人', trigger: 'change' }],
+      },
+    };
+  },
+  created() {
+    // 获取用户下拉列表
+    this.getAllUser();
+    this.selectPage();
+  },
+  methods: {
+    // 获取所有用户下拉列表
+    getAllUser() {
+      this.$api.user.simpleAll().then((res) => {
+        if (res.code === 200) {
+          this.allUsers = res.data;
+        }
+      });
+    },
+    // 获取上级企业
+    getParentCompany() {
+      let simpleAll = new Object();
+      simpleAll.terminal = 0;
+      this.$api.customerCompany.simpleAll(simpleAll).then((res) => {
+        if (res.code === 200) {
+          this.parentCompany = res.data;
+        }
+      });
+    },
+    // 条件查询
+    searchList() {
+      // 重置分页
+      this.listQuery.page = 1;
+      this.listQuery.size = 20;
+      this.listQuery.current = 1;
+      this.selectPage();
+    },
+    // 重置搜索条件
+    resetParams() {
+      this.$router.push({ query: {} });
+      this.listQuery = {
+        page: 1,
+        size: 20,
+        current: 1,
+      };
+      this.selectPage();
+    },
+    // 分页查询
+    selectPage() {
+      this.listLoading = true;
+      this.$api.customerCompany.getCustomerCompanyPage(this.listQuery).then((res) => {
+        if (res.code === 200) {
+          this.pageData = res.data;
+        }
+        this.listLoading = false;
+      });
+    },
+    // 客户列表导出
+    exportPage() {
+      this.$utils.exportUtil('/customerCompany/getCustomerCompanyPage/export', this.listQuery, '导出');
+    },
+    // 打开新增客户弹窗
+    openCompanyFormDialog() {
+      this.dialogCompanyFormVisible = true;
+      this.getParentCompany();
+    },
+    // 关闭新增客户弹窗
+    clearCompanyForm() {
+      this.$refs.companyForm.resetFields();
+      this.dialogCompanyFormVisible = false;
+    },
+    // 新增客户
+    addCustomer() {
+      this.$refs.companyForm.validate((valid) => {
+        if (valid) {
+          // 如果有上级企业,level为1
+          if (this.companyForm.parentId) {
+            this.companyForm.level = 1;
+          } else {
+            this.companyForm.level = 0;
+          }
+          this.$api.customerCompany.add(this.companyForm).then((res) => {
+            if (res.code === 200) {
+              this.clearCompanyForm();
+              this.resetParams();
+            }
+          });
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped></style>