Pārlūkot izejas kodu

fix:做到一半了,不做了

ly 10 mēneši atpakaļ
vecāks
revīzija
e2ec2b4374

+ 15 - 1
src/api/business/crm/company.js

@@ -107,5 +107,19 @@ export function importCompanyZero() {
     },
     `客户导入模板${new Date().getTime()}.xlsx`
   )
-
+}
+export function getTenantApi(){
+  request.defaults.baseURL = '/ezhizao-yzbh-crm'
+  return request({
+    url: '/business/company/getTenant',
+    method: 'get'
+  })
+}
+export function saveMigrationComApi(data) {
+  request.defaults.baseURL = '/ezhizao-yzbh-crm'
+  return request({
+    url: '/business/company/saveMigrationCom',
+    method: 'post',
+    data: data
+  })
 }

+ 22 - 1
src/views/business/crm/company/index.vue

@@ -1,7 +1,8 @@
 <template>
   <div class="page-container list-container">
     <!-- 功能按钮区 -->
-    <div class="list-btns-container">
+    <div class="list-btns-container" style="display:flex;justify-content: space-between;">
+      <div>
       <el-button type="primary" size="small" icon="Plus" @click="handleAdd"
         v-hasPermi="['business:company:add']">新增</el-button>
       <el-button type="danger" size="small" icon="Delete" :disabled="multiple" @click="handleDelete"
@@ -25,6 +26,20 @@
 
       <el-button style="margin-left: 5px;" type="primary" size="small" icon="Plus"
         @click="exportZero">导入是否零申报</el-button>
+      </div>
+<!--      <el-dropdown  v-hasPermi="['business:company:Migration']" style="" trigger="click">-->
+<!--        <el-button type="primary" size="small">-->
+<!--          迁移客户<el-icon class="el-icon&#45;&#45;right"><arrow-down /></el-icon>-->
+<!--        </el-button>-->
+<!--        <template #dropdown>-->
+<!--          <el-dropdown-menu>-->
+<!--            <el-dropdown-item @click="handleMigration(0)">-->
+<!--              发起迁移</el-dropdown-item>-->
+<!--            <el-dropdown-item @click="handleMigration(1)">-->
+<!--              接收迁移</el-dropdown-item>-->
+<!--          </el-dropdown-menu>-->
+<!--        </template>-->
+<!--      </el-dropdown>-->
     </div>
     <!-- 搜索区 -->
     <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true">
@@ -105,6 +120,7 @@
     <!-- </div> -->
     <!-- 表单 -->
     <company-form ref="companyRef" :get-list="getList"></company-form>
+    <migration-view ref="migrationViewRef" :get-com-list="getList"></migration-view>
     <exportColumn ref="exportColumnRef"></exportColumn>
     <add ref="addRef" :get-list="getList"></add>
     <exports ref="exportRef" :get-list="getList"></exports>
@@ -158,6 +174,7 @@
     initArea,
   } from "@/api/business/crm/company";
   import useUserStore from "@/store/modules/user";
+  import migrationView from "@/views/business/crm/company/migrationView"
   const { proxy } = getCurrentInstance();
   /** 字典数组区 */
   const { develop_type } = proxy.useDict("develop_type");
@@ -182,6 +199,7 @@
   const selectionName = ref("");
   const selectionUser = ref({});
   const exportColumnRef = ref(null);
+  const migrationViewRef = ref(null);
 
   /** 查询 对象 */
   const queryParams = ref({
@@ -377,5 +395,8 @@
     selectionUser.value = "";
   }
   getList();
+  const handleMigration = (falg) =>{
+    migrationViewRef.value.open(falg);
+  }
 </script>
 <style scope></style>

+ 166 - 0
src/views/business/crm/company/migrationDialog.vue

@@ -0,0 +1,166 @@
+<template>
+  <el-dialog v-loading.fullscreen.lock="fullscreenLoading" :close-on-click-modal = "false"
+             v-model="outerVisible" title="发起客户迁移" width="900">
+
+    <div style="margin-bottom: 10px;
+      border-bottom: 1px solid #99a9bf; /* 设置外边框划线 */">
+      <el-form :model="sumbitFormData" label-width="auto" :rules="rules" @submit.prevent="sumbitForm"  ref="sumbitFormRef" style="max-width: 600px;">
+        <el-form-item  label="目标门店:" prop="fromTenantId">
+          <el-select v-model="sumbitFormData.fromTenantId"
+                     placeholder="目标门店"
+                     size="small"
+                     style="width: 150px">
+            <el-option
+                v-for="(key,value) in fromTenantData"
+                :key="key"
+                :label="key"
+                :value="value"
+            />
+
+          </el-select>
+        </el-form-item>
+      </el-form>
+    </div>
+    <div style="border-left: 2px solid #5cabff; padding-left:10px;"><h1 style="font-weight: bold; font-size: 16px;">选择迁移客户</h1></div>
+
+    <el-form class="list-search-container" :model="queryParams" ref="queryFormRef" :inline="true" label-width="70px">
+      <el-form-item label="客户名称:" prop="companyName">
+        <el-input v-model="queryParams.name" size="small"  placeholder="请输入客户名称" clearable style="width: 120px"
+                  @keyup.enter="handleQuery" />
+      </el-form-item>
+      <el-form-item label="负责人:" prop="leader">
+        <el-input v-model="queryParams.leaderName" size="small"  placeholder="请输入负责人" clearable style="width: 120px"
+                  @keyup.enter="handleQuery" />
+      </el-form-item>
+      <el-form-item label="客户:" prop="adviserName">
+        <el-input v-model="queryParams.adviserName" size="small"  placeholder="请输入客户" clearable style="width: 120px"
+                  @keyup.enter="handleQuery" />
+      </el-form-item>
+      <div style="display: flex; margin-right: 46px; justify-content: flex-end">
+        <el-button type="primary" icon="Search" @click="handleQuery" size="small">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery" size="small">重置</el-button>
+      </div>
+    </el-form>
+      <div style="position: relative;">
+        <el-table  @selection-change="selectable" :data="DataList" size="small" border height="90%">
+            <el-table-column type="selection"  align="center"  width="45" />
+            <el-table-column label="序号" type="index" width="55" align="center"/>
+            <el-table-column label="客户名称" align="center" prop="name">
+            </el-table-column>
+            <el-table-column label="税号" align="center" prop="socialCreditCode">
+            </el-table-column>
+            <el-table-column label="年收入" align="center" prop="annualIncome">
+            </el-table-column>
+            <el-table-column label="纳税性质" align="center" prop="taxType">
+            </el-table-column>
+            <el-table-column label="负责人" align="center" prop="leaderName">
+            </el-table-column>
+            <el-table-column label="客服" align="center" prop="adviserName">
+            </el-table-column>
+        </el-table>
+        <pagination style="height: 40px;" v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
+                    v-model:limit="queryParams.pageSize" @pagination="getComList" />
+    </div>
+    <template #footer>
+      <div class="dialog-footer">
+        <el-button @click="outerVisible = false">关闭</el-button>
+        <el-button type="primary" @click="sumbitForm">提交</el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+<script lang="ts" setup>
+import {ElButton} from "element-plus";
+import {ref} from "@vue/reactivity";
+import {computed, defineProps, getCurrentInstance, reactive, toRefs} from "vue";
+import {
+  listCompany,
+  getTenantApi,
+  saveMigrationComApi
+} from "@/api/business/crm/company";
+const { proxy } = getCurrentInstance();
+const fullscreenLoading = ref(false);
+const outerVisible = ref(false);
+const fromTenantData = ref();
+const sumbitFormRef = ref();
+const queryFormRef = ref();
+const DataList = ref();
+const total = ref(0);
+const loading = ref(false);
+interface quertParmsEntity {
+  pageNum: number,
+  pageSize: number,
+  orderByColumn: string,
+  name?:string,
+  endDateFilter?:Array<Date>,
+  fromTenantName?:string,
+  startDateFilter?:Array<Date>,
+  migratStatus?:number,
+  leaderName?:string,
+  adviserName?:string
+}
+const queryParams = ref<quertParmsEntity>({
+  pageNum: 1,
+  pageSize: 10,
+  orderByColumn: "create_time"
+});
+const props = defineProps({
+  getList: {
+    type: Function,
+    default: () => { },
+  },
+});
+const rules = computed(() => ({
+  fromTenantId: [
+    { required: true, message: "目标门店不能为空"},
+  ],
+}));
+const sumbitFormData = reactive({
+  fromTenantId: null,
+  fromTenantComId:null
+});
+const onsumbit = () => {
+  sumbitFormRef.value.sumbit();
+}
+const handleQuery = () => {
+  queryParams.value.pageNum = 1;
+}
+const resetQuery = () => {
+  proxy.$refs.queryFormRef.resetFields();
+  handleQuery();
+}
+const openView = () =>{
+  outerVisible.value = true;
+  getComList();
+}
+const sumbitForm = () => {
+ sumbitFormRef.value.validate((valid)=>{
+   if(valid){
+
+   }
+ })
+}
+const selectable = (row: any) => {
+  sumbitFormData.fromTenantComId = row.map((item) => item.id);
+}
+
+const getComList = () =>{
+  fullscreenLoading.value = true;
+  listCompany(queryParams.value).then((response:any) => {
+    DataList.value = response.rows;
+    total.value = response.total;
+    fullscreenLoading.value = false;
+  });
+  getTenantApi().then((res:any)=>{
+    fromTenantData.value = res.data.reduce((pre, cur) => {
+      pre[cur.id] = cur.companyName;
+      return pre
+    }, {})
+  })
+}
+defineExpose({
+  openView,
+});
+</script>
+<style scoped>
+</style>

+ 170 - 0
src/views/business/crm/company/migrationView.vue

@@ -0,0 +1,170 @@
+<template>
+  <div class="el-drawer__wrapper">
+    <el-drawer :title="title" v-model="visible" direction="rtl" size="100%">
+      <div class="page-container form-container">
+        <div class="form-btns-container" style="display: flex;">
+          <span class="title-label"><el-icon>
+              <Document />
+            </el-icon>
+            客户迁移信息</span>
+
+        <div style="position: absolute;top: 3px;left: 105px;">
+          <el-button type="primary" @click="openMigrationDialog()" size="small">新增</el-button>
+        </div>
+        <div class="close-btn" @click="cancel">
+          <i class="fa fa-times" aria-hidden="true" />
+        </div>
+      </div>
+        <div class="Y-scrollbar" style="
+            position: absolute;
+            top: 32px;
+            bottom: 0;
+            width: 100%;
+            overflow: auto;
+          "></div>
+        <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true" label-width="70px">
+          <el-form-item label="客户名称:" prop="companyName">
+            <el-input v-model="queryParams.companyName" size="small"  placeholder="请输入客户名称" clearable style="width: 120px"
+                      @keyup.enter="handleQuery" />
+          </el-form-item>
+          <el-form-item label="目标门店:" prop="fromTenantName">
+            <el-input v-model="queryParams.fromTenantName" size="small" placeholder="请输入目标门店" clearable style="width: 120px"
+                      @keyup.enter="handleQuery" />
+          </el-form-item>
+          <el-form-item label="状态:" prop="migratStatus">
+            <el-select v-model="queryParams.migratStatus" size="small" style="width: 120px" multiple>
+              <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item  label="发起时间:" prop="startDateFilter">
+            <el-date-picker v-model="queryParams.startDateFilter" size="small" type="daterange" clearable
+                            format="YYYY - MM - DD " value-format="YYYY-MM-DD" range-separator="至" start-placeholder="发起时间"
+                            end-placeholder="发起时间" style="width: 100%;"></el-date-picker>
+          </el-form-item>
+          <el-form-item  label="完成时间:" prop="endDateFilter">
+            <el-date-picker v-model="queryParams.endDateFilter" size="small" type="daterange" clearable
+                            format="YYYY - MM - DD " value-format="YYYY-MM-DD" range-separator="至" start-placeholder="完成时间"
+                            end-placeholder="完成时间" style="width: 100%;"></el-date-picker>
+          </el-form-item>
+          <div style="display: flex; margin-right: 46px; justify-content: flex-end">
+            <el-button type="primary" icon="Search" @click="handleQuery" size="small">搜索</el-button>
+            <el-button icon="Refresh" @click="resetQuery" size="small">重置</el-button>
+          </div>
+        </el-form>
+        <el-table v-loading="loading" :data="DataList" size="small" border height="100%">
+          <el-table-column label="序号" type="index" width="55" align="center"/>
+          <el-table-column label="客户名称" align="center" prop="companyName">
+          </el-table-column>
+          <el-table-column label="税号" align="center" prop="socialCreditCode">
+          </el-table-column>
+          <el-table-column label="目标门店" align="center" prop="fromTenantName">
+          </el-table-column>
+          <el-table-column label="发起人" align="center" prop="originator">
+          </el-table-column>
+          <el-table-column label="发起时间" align="center" prop="startDate">
+          </el-table-column>
+          <el-table-column label="迁移时间" align="center" prop="endDate">
+          </el-table-column>
+          <el-table-column label="审核人" align="center" prop="verifyName">
+          </el-table-column>
+          <el-table-column label="状态" align="center" prop="migratStatus">
+          </el-table-column>
+
+        </el-table>
+        <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
+                    v-model:limit="queryParams.pageSize" @pagination="getList" />
+      </div>
+    </el-drawer>
+    <migrationDialog ref="migrationDialogRef" :get-list="getList"></migrationDialog>
+  </div>
+
+</template>
+
+<script setup lang="ts">
+
+import {getCurrentInstance, ref, toRefs} from "vue";
+import {Document} from "@element-plus/icons-vue";
+import migrationDialog from "@/views/business/crm/company/migrationDialog"
+const { proxy } = getCurrentInstance();
+const title = ref('');
+const visible = ref(false);
+const queryFalg = ref();
+const total = ref(0);
+const loading = ref(false);
+const migrationDialogRef = ref();
+const options = ref([
+  {
+    label: "等待接收",
+    value: 1,
+  },
+  {
+    label: "已接收",
+    value: 2,
+  },
+  {
+    label: "已拒绝",
+    value: 3,
+  },
+]);
+interface quertParmsEntity {
+  pageNum: number,
+  pageSize: number,
+  orderByColumn: string,
+  companyName?:string,
+  endDateFilter?:Array<Date>,
+  fromTenantName?:string,
+  startDateFilter?:Array<Date>,
+  migratStatus?:number
+}
+interface dataEntity {
+  companyName?:string,
+  socialCreditCode?:string,
+  fromTenantName?:string,
+  originator?:string,
+  startDate?:Date,
+  endDate?:Date,
+  verifyName?:string,
+  migratStatus?:number
+}
+const queryParams = ref<quertParmsEntity>({
+  pageNum: 1,
+  pageSize: 20,
+  orderByColumn: "create_time"
+});
+const DataList = ref<Array<dataEntity>>();
+const queryRef = ref();
+const props = defineProps({
+  getComList: {
+    type: Function,
+    default: () => {},
+  },
+});
+const { getComList } = toRefs(props);
+
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+function resetQuery() {
+  proxy.$refs.queryForm.resetFields();
+  handleQuery();
+}
+const open = (falg) => {
+  queryFalg.value = falg;
+  visible.value = true;
+}
+/** 取消按钮 */
+function cancel() {
+  visible.value = false;
+}
+const getList = () =>{
+
+}
+const openMigrationDialog = () =>{
+  migrationDialogRef.value.openView()
+}
+defineExpose({
+  open,
+});
+</script>