Browse Source

fix:新增电销呼出

刘恒 2 năm trước cách đây
mục cha
commit
0602eb5fa2

+ 3 - 0
src/components/table/StandardTable.vue

@@ -33,6 +33,7 @@
       "
       "
       :rowClassName="rowClassName"
       :rowClassName="rowClassName"
       :custom-row="onClickRow"
       :custom-row="onClickRow"
+      :scroll="scroll"
     >
     >
       <template
       <template
         slot-scope="text, record, index"
         slot-scope="text, record, index"
@@ -67,6 +68,7 @@ export default {
     loading: [Boolean, Object],
     loading: [Boolean, Object],
     columns: Array,
     columns: Array,
     dataSource: Array,
     dataSource: Array,
+    scroll: Object,
     rowKey: {
     rowKey: {
       type: [String, Function],
       type: [String, Function],
       default: "key",
       default: "key",
@@ -178,6 +180,7 @@ export default {
   background: #fff;
   background: #fff;
   padding: 0 15px;
   padding: 0 15px;
   box-sizing: border-box;
   box-sizing: border-box;
+  width: 100%;
   .alert {
   .alert {
     margin-bottom: 16px;
     margin-bottom: 16px;
     .message {
     .message {

+ 16 - 0
src/pages/business/index.vue

@@ -68,6 +68,9 @@
           @selectedRowChange="selectedRowChange"
           @selectedRowChange="selectedRowChange"
           @onClickRow="onClickRow"
           @onClickRow="onClickRow"
         >
         >
+          <div slot="type" slot-scope="{ record }">
+            {{ record.agreementType == "1" ? "平台" : "私有" }}
+          </div>
         </standard-table>
         </standard-table>
       </div>
       </div>
     </div>
     </div>
@@ -113,11 +116,24 @@ const columns = [
     title: "保险公司",
     title: "保险公司",
     dataIndex: "insuranceCompanyName",
     dataIndex: "insuranceCompanyName",
   },
   },
+  {
+    title: "协议类型",
+    dataIndex: "agreementType",
+    scopedSlots: { customRender: "type" },
+  },
 
 
   {
   {
     title: "合作公司",
     title: "合作公司",
     dataIndex: "partnerCompaniesName",
     dataIndex: "partnerCompaniesName",
   },
   },
+  {
+    title: "对接人",
+    dataIndex: "dockingPerson",
+  },
+  {
+    title: "对接人联系方式",
+    dataIndex: "dockingPhone",
+  },
   {
   {
     title: "总保费",
     title: "总保费",
     dataIndex: "totalPremium",
     dataIndex: "totalPremium",

+ 6 - 13
src/pages/financial/receivablesMessage.vue

@@ -10,6 +10,7 @@
             @change="monthChange"
             @change="monthChange"
             v-model="formState.month"
             v-model="formState.month"
             valueFormat="YYYY-MM"
             valueFormat="YYYY-MM"
+            style="margin-left: 15px"
           />
           />
         </div>
         </div>
       </div>
       </div>
@@ -209,18 +210,6 @@ export default {
       this.yearShowOne = false;
       this.yearShowOne = false;
       this.getVerification();
       this.getVerification();
     },
     },
-    wholeHandleChange() {
-      this.getProvinceList(this.formState.whole);
-    },
-    provinceHandleChange() {
-      this.getCityList(this.formState.provinceId);
-    },
-    cityHandleChange() {
-      this.getAreaList(this.formState.cityId);
-    },
-    countyHandleChange() {
-      this.getStoreList(this.formState.countyId);
-    },
 
 
     getVerification() {
     getVerification() {
       this.loading = true;
       this.loading = true;
@@ -234,7 +223,6 @@ export default {
             : undefined,
             : undefined,
         })
         })
         .then((res) => {
         .then((res) => {
-          console.log(res.data);
           if (res.data.code === 200) {
           if (res.data.code === 200) {
             if (res.data.data) {
             if (res.data.data) {
               this.loading = false;
               this.loading = false;
@@ -286,6 +274,11 @@ export default {
               this.tableList = [];
               this.tableList = [];
               this.titleMessage = {};
               this.titleMessage = {};
             }
             }
+          } else {
+            this.loading = false;
+            this.tableList = [];
+            this.titleMessage = {};
+            this.$message.error(res.data.msg);
           }
           }
         });
         });
     },
     },

+ 55 - 2
src/pages/personnelManage/backLine.vue

@@ -131,6 +131,59 @@
           </dd>
           </dd>
         </dl>
         </dl>
       </div>
       </div>
+      <div>
+        <dl>
+          <dt><img src="@/assets/img/users.png" alt="" /></dt>
+          <dd>
+            <p class="other-module">
+              在职分布
+              <span class="other">
+                <span>
+                  <i :style="{ background: '#3ECBC4' }"></i>
+                  <a>在职</a>
+                </span>
+                <span>
+                  <i :style="{ background: '#F2657D' }"></i>
+                  <a>离司</a>
+                </span>
+              </span>
+            </p>
+            <div>
+              <div
+                v-if="backLinePersonnel.onJobUserProportion > 0"
+                :style="{
+                  width:
+                    (backLinePersonnel.onJobUserProportion * 100).toFixed(0) +
+                    '%',
+                  background: '#3ECBC4',
+                }"
+              >
+                {{
+                  (backLinePersonnel.onJobUserProportion * 100).toFixed(0) + "%"
+                }}
+              </div>
+              <div
+                v-if="backLinePersonnel.departUserProportion > 0"
+                :style="{
+                  width:
+                    (backLinePersonnel.departUserProportion * 100).toFixed(0) +
+                    '%',
+                  background: '#F2657D',
+                }"
+              >
+                {{
+                  (backLinePersonnel.departUserProportion * 100).toFixed(0) +
+                  "%"
+                }}
+              </div>
+            </div>
+            <h2 class="other-people">
+              <span>在职:{{ backLinePersonnel.onJobUser }}人</span>
+              <span>离司:{{ backLinePersonnel.departUser }}人</span>
+            </h2>
+          </dd>
+        </dl>
+      </div>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
@@ -216,7 +269,7 @@ export default {
     justify-content: space-between;
     justify-content: space-between;
     > div {
     > div {
       // flex: ;
       // flex: ;
-      width: 32%;
+      width: 24%;
       height: 100%;
       height: 100%;
       background: #fff;
       background: #fff;
       border-radius: 8px;
       border-radius: 8px;
@@ -300,7 +353,7 @@ export default {
     display: flex;
     display: flex;
     > div {
     > div {
       flex: none;
       flex: none;
-      width: 30%;
+      width: 20%;
     }
     }
   }
   }
 }
 }

+ 34 - 2
src/pages/personnelManage/channel.vue

@@ -78,7 +78,23 @@
             allowClear
             allowClear
           ></a-input>
           ></a-input>
         </a-form-item>
         </a-form-item>
-        <a-form-item label="" :labelCol="{ span: 5 }" :colon="false">
+        <a-form-item label="管理员" :labelCol="{ span: 5 }" :colon="false">
+          <a-select
+            style="width: 300px"
+            placeholder="请选择"
+            v-model="formState.leaderId"
+            allowClear
+            show-search
+            :filter-option="filterOption"
+          >
+            <a-select-option
+              v-for="item in manageList"
+              :key="item.id"
+              :value="item.id"
+            >
+              {{ item.name }}
+            </a-select-option>
+          </a-select>
         </a-form-item>
         </a-form-item>
         <a-form-item
         <a-form-item
           label="             "
           label="             "
@@ -185,6 +201,7 @@ export default {
         phoneNumber: undefined,
         phoneNumber: undefined,
         createtimeStart: moment().format("YYYY-MM-DD"),
         createtimeStart: moment().format("YYYY-MM-DD"),
         createtimeEnd: moment().format("YYYY-MM-DD"),
         createtimeEnd: moment().format("YYYY-MM-DD"),
+        leaderId: undefined,
       },
       },
       process: process.env.VUE_APP_API_BASE_URL,
       process: process.env.VUE_APP_API_BASE_URL,
 
 
@@ -196,6 +213,7 @@ export default {
       loading: false,
       loading: false,
 
 
       list: [],
       list: [],
+      manageList: [],
     };
     };
   },
   },
   watch: {
   watch: {
@@ -206,12 +224,26 @@ export default {
   },
   },
   mounted() {
   mounted() {
     this.getList();
     this.getList();
+    this.getManageList();
     // setTimeout(() => {
     // setTimeout(() => {
     // }, 1000);
     // }, 1000);
   },
   },
   methods: {
   methods: {
-    handleFinish() {
+    filterOption(input, option) {
+      return (
+        option.componentOptions.children[0].text
+          .toLowerCase()
+          .indexOf(input.toLowerCase()) >= 0
+      );
+    },
+    getManageList() {
       //
       //
+      this.$API.personnel.getManageUser({}).then((res) => {
+        // console.log(res);
+        if (res.data.code === 200) {
+          this.manageList = [...res.data.data];
+        }
+      });
     },
     },
     timeChange(val) {
     timeChange(val) {
       this.formState.createtimeStart = val[0];
       this.formState.createtimeStart = val[0];

+ 29 - 26
src/pages/sales/index.vue

@@ -25,7 +25,7 @@
             <a-radio-group
             <a-radio-group
               default-value="0"
               default-value="0"
               button-style="solid"
               button-style="solid"
-              v-model="formState.dateType"
+              v-model="formState.type"
               @change="getVerification()"
               @change="getVerification()"
               style="margin-left: 10px"
               style="margin-left: 10px"
             >
             >
@@ -33,8 +33,8 @@
                 value="1"
                 value="1"
                 @click="
                 @click="
                   (formState.time = []),
                   (formState.time = []),
-                    (formState.createtimeStart = ''),
-                    (formState.createtimeEnd = '')
+                    (formState.beginDate = ''),
+                    (formState.endDate = '')
                 "
                 "
               >
               >
                 当天
                 当天
@@ -43,8 +43,8 @@
                 value="2"
                 value="2"
                 @click="
                 @click="
                   (formState.time = []),
                   (formState.time = []),
-                    (formState.createtimeStart = ''),
-                    (formState.createtimeEnd = '')
+                    (formState.beginDate = ''),
+                    (formState.endDate = '')
                 "
                 "
               >
               >
                 近7天
                 近7天
@@ -53,8 +53,8 @@
                 value="3"
                 value="3"
                 @click="
                 @click="
                   (formState.time = []),
                   (formState.time = []),
-                    (formState.createtimeStart = ''),
-                    (formState.createtimeEnd = '')
+                    (formState.beginDate = ''),
+                    (formState.endDate = '')
                 "
                 "
               >
               >
                 近30天
                 近30天
@@ -68,7 +68,12 @@
           style="padding: 15px; box-sizing: border-box"
           style="padding: 15px; box-sizing: border-box"
         >
         >
           <a-form-item label="组别" :colon="false">
           <a-form-item label="组别" :colon="false">
-            <a-select style="width: 200px" placeholder="请选择">
+            <a-select
+              style="width: 300px"
+              placeholder="请选择"
+              v-model="formState.groupId"
+              allowClear
+            >
               <a-select-option
               <a-select-option
                 v-for="item in groupList"
                 v-for="item in groupList"
                 :key="item.deptId"
                 :key="item.deptId"
@@ -178,10 +183,10 @@ export default {
   data() {
   data() {
     return {
     return {
       formState: {
       formState: {
-        dateType: undefined,
+        type: undefined,
         time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
         time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
-        createtimeStart: moment().format("YYYY-MM-DD"),
-        createtimeEnd: moment().format("YYYY-MM-DD"),
+        beginDate: moment().format("YYYY-MM-DD"),
+        endDate: moment().format("YYYY-MM-DD"),
         userName: "",
         userName: "",
         groupId: "",
         groupId: "",
         deptId: "",
         deptId: "",
@@ -217,6 +222,7 @@ export default {
   },
   },
   mounted() {
   mounted() {
     this.getVerification();
     this.getVerification();
+    this.getGroupList();
     // setTimeout(() => {
     // setTimeout(() => {
     // }, 1000);
     // }, 1000);
   },
   },
@@ -224,7 +230,7 @@ export default {
     getGroupList() {
     getGroupList() {
       this.$API.sales
       this.$API.sales
         .getSalesGroupList({
         .getSalesGroupList({
-          deptId: this.formState.deptId,
+          deptId: this.formState.deptId || "99",
         })
         })
         .then((res) => {
         .then((res) => {
           if (res.data.code === 200) {
           if (res.data.code === 200) {
@@ -243,24 +249,21 @@ export default {
       this.getVerification();
       this.getVerification();
     },
     },
     onChangeTime(val) {
     onChangeTime(val) {
-      this.formState.createtimeStart = val[0];
-      this.formState.createtimeEnd = val[1];
-      this.formState.dateType = undefined;
+      this.formState.beginDate = val[0];
+      this.formState.endDate = val[1];
+      this.formState.type = undefined;
       this.pagination.current = 1;
       this.pagination.current = 1;
       this.pagination.defaultPageSize = 10;
       this.pagination.defaultPageSize = 10;
       this.getVerification();
       this.getVerification();
     },
     },
     watchMessage(item) {
     watchMessage(item) {
       //
       //
-      item;
+      // item;
+      // console.log(item);
       this.$router.push({
       this.$router.push({
-        path: "/business/agent/message",
+        path: "/sales/message",
         query: {
         query: {
-          user: { ...item },
-          time: {
-            createtimeStart: this.formState.createtimeStart,
-            createtimeEnd: this.formState.createtimeEnd,
-          },
+          userId: item.record.userId,
         },
         },
       });
       });
     },
     },
@@ -277,11 +280,11 @@ export default {
         .then((res) => {
         .then((res) => {
           if (res.data.code === 200) {
           if (res.data.code === 200) {
             this.loading = false;
             this.loading = false;
-            this.tableList = res.data.data.records;
+            this.tableList = res.data.data.content;
             this.pagination = {
             this.pagination = {
-              current: res.data.data.current,
-              defaultPageSize: res.data.data.size,
-              total: res.data.data.total,
+              current: res.data.data.pageNum,
+              defaultPageSize: res.data.data.pageSize,
+              total: res.data.data.totalSize,
             };
             };
           }
           }
         });
         });

+ 393 - 0
src/pages/sales/message.vue

@@ -0,0 +1,393 @@
+<template>
+  <div class="quote">
+    <div class="back-line-main">
+      <!-- <div class="back-line-header"></div> -->
+      <div style="background-color: #fff">
+        <div class="table-title">
+          <h2>代理人</h2>
+          <div>
+            <span>时间筛选</span>
+            <a-range-picker
+              @change="onChangeTime"
+              v-model="formState.time"
+              value-format="YYYY-MM-DD"
+              style="margin-left: 10px"
+            >
+              <a-icon slot="suffixIcon" type="calendar" />
+            </a-range-picker>
+            <a-radio-group
+              default-value="0"
+              button-style="solid"
+              v-model="formState.type"
+              @change="getVerification()"
+              style="margin-left: 10px"
+            >
+              <a-radio-button
+                value="1"
+                @click="
+                  (formState.time = []),
+                    (formState.beginDate = ''),
+                    (formState.endDate = '')
+                "
+              >
+                当天
+              </a-radio-button>
+              <a-radio-button
+                value="2"
+                @click="
+                  (formState.time = []),
+                    (formState.beginDate = ''),
+                    (formState.endDate = '')
+                "
+              >
+                近7天
+              </a-radio-button>
+              <a-radio-button
+                value="3"
+                @click="
+                  (formState.time = []),
+                    (formState.beginDate = ''),
+                    (formState.endDate = '')
+                "
+              >
+                近30天
+              </a-radio-button>
+            </a-radio-group>
+          </div>
+        </div>
+
+        <standard-table
+          bordered
+          :columns="columns"
+          :dataSource="tableList"
+          :pagination="pagination"
+          @clear="onClear"
+          @change="onChange"
+          :loading="loading"
+        >
+          <div slot="date" slot-scope="{ record }">
+            {{ moment(record.dateTime) }}
+          </div>
+        </standard-table>
+      </div>
+    </div>
+  </div>
+</template>
+            
+  <script>
+import StandardTable from "@/components/table/StandardTable";
+// import mixin from "../../minins/mixin";
+//   import tree from "@/components/tree/tree";
+import moment from "moment";
+
+const columns = [
+  {
+    title: "日期",
+    dataIndex: "dateTime",
+    // scopedSlots: { customRender: "date" },
+  },
+
+  {
+    title: "呼出时长(分钟)",
+    dataIndex: "exhaleDuration",
+  },
+  {
+    title: "呼出数量",
+    dataIndex: "outgoingCallsNumber",
+  },
+  {
+    title: "接通数量",
+    dataIndex: "connectionsNumber",
+  },
+  {
+    title: "输出成功率",
+    dataIndex: "callSuccessRate",
+  },
+  {
+    title: "添加微信人数",
+    dataIndex: "wxCount",
+  },
+  {
+    title: "添加企业微信人数",
+    dataIndex: "qywxCount",
+  },
+];
+
+export default {
+  components: {
+    StandardTable,
+    //   tree,
+  },
+  //   mixins: [mixin],
+  data() {
+    return {
+      formState: {
+        type: undefined,
+        time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
+        beginDate: moment().format("YYYY-MM-DD"),
+        endDate: moment().format("YYYY-MM-DD"),
+        userName: "",
+        groupId: "",
+        deptId: "",
+      },
+      backLinePersonnel: {},
+      columns: columns,
+      companyList: [],
+      tableList: [],
+      pagination: {
+        current: 1,
+        defaultPageSize: 10,
+        total: 0,
+        pagesize0ptions: ["10", "20", "30", "50", "100"],
+        hideOnSinglePage: false,
+        showQuickJumper: true, //
+        showSizeChanger: true, //是否可以改变pagesize
+        showTotal: (total) => `共 ${total} 条数据`,
+      },
+      loading: false,
+      wholeList: [],
+      provinceList: [],
+      cityList: [],
+      areaList: [],
+      storeList: [],
+      treeData: [
+        { title: "Expand to load", key: "0" },
+        { title: "Expand to load", key: "1" },
+        { title: "Tree Node", key: "2", isLeaf: true },
+      ],
+      amount: {},
+      groupList: [],
+    };
+  },
+  mounted() {
+    // this.$route.query.data
+
+    this.getVerification();
+    //   this.getGroupList();
+    // setTimeout(() => {
+    // }, 1000);
+  },
+  methods: {
+    getGroupList() {
+      this.$API.sales
+        .getSalesGroupList({
+          deptId: this.formState.deptId || "99",
+        })
+        .then((res) => {
+          if (res.data.code === 200) {
+            this.groupList = [...res.data.data];
+          }
+        });
+    },
+    chooseUser(val) {
+      this.formState.deptId = val;
+      this.getGroupList();
+      this.getVerification();
+    },
+    getList() {
+      this.pagination.current = 1;
+      this.pagination.defaultPageSize = 10;
+      this.getVerification();
+    },
+    onChangeTime(val) {
+      this.formState.beginDate = val[0];
+      this.formState.endDate = val[1];
+      this.formState.type = undefined;
+      this.pagination.current = 1;
+      this.pagination.defaultPageSize = 10;
+      this.getVerification();
+    },
+
+    async getVerification() {
+      this.loading = true;
+
+      this.$API.sales
+        .getSalesDetails({
+          pageNum: this.pagination.current,
+          pageSize: this.pagination.defaultPageSize,
+          ...this.formState,
+          userId: this.$route.query.userId,
+        })
+        .then((res) => {
+          if (res.data.code === 200) {
+            this.loading = false;
+            this.tableList = res.data.data.content;
+            this.pagination = {
+              current: res.data.data.pageNum,
+              defaultPageSize: res.data.data.pageSize,
+              total: res.data.data.totalSize,
+            };
+          } else {
+            this.loading = false;
+
+            this.tableList = [];
+            this.$message.error(res.data.msg);
+            this.pagination.total = 0;
+          }
+        });
+    },
+    onClear() {
+      this.$message.info("您清空了勾选的所有行");
+    },
+
+    onChange(pagination) {
+      // this.$message.info('表格状态改变了')
+
+      this.pagination = {
+        current: pagination.current,
+        defaultPageSize: pagination.pageSize,
+        total: pagination.total,
+      };
+      this.getVerification();
+    },
+  },
+};
+</script>
+  <style lang='less' scoped>
+.quote {
+  display: flex;
+  > div:first-child {
+    width: 20%;
+    background: #fff;
+    margin-right: 15px;
+  }
+  .quote-tree {
+    padding: 15px;
+    box-sizing: border-box;
+    //
+    > div:first-child {
+      border-bottom: 1px solid #f0f0f0;
+    }
+  }
+}
+.back-line-main {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  .back-line-header {
+    // padding: 15px;
+    box-sizing: border-box;
+    .back-line-header-title {
+      padding: 15px;
+      box-sizing: border-box;
+      background: #ffffff;
+      box-shadow: 0px 2px 8px 0px rgba(141, 149, 176, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 2px solid rgba(255, 255, 255, 0.2);
+      h2 {
+        margin: 0;
+      }
+      > div {
+        flex: 1;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        > dl {
+          flex: none;
+          width: 180px;
+          height: 80px;
+          display: flex;
+          //   align-items: center;
+          justify-content: space-between;
+          flex-direction: column;
+          padding: 10px;
+          box-sizing: border-box;
+
+          border-radius: 4px 4px 4px 4px;
+
+          > dd {
+            display: flex;
+            // align-items: center;
+            justify-content: flex-end;
+            margin: 0;
+            font-family: PingFang SC, PingFang SC;
+            font-weight: 500;
+            font-size: 24px;
+            // color: rgba(0, 0, 0, 0.85);
+            // padding-left: 15px;
+            box-sizing: border-box;
+          }
+        }
+        > dl:first-child {
+          background: url("../../assets/img/business1.png");
+          color: #11a6d3;
+        }
+        > dl:nth-child(2) {
+          background: url("../../assets/img/business2.png");
+          color: #f87f2c;
+        }
+        > dl:nth-child(3) {
+          background: url("../../assets/img/business3.png");
+          color: #fab600;
+        }
+        > dl:nth-child(4) {
+          background: url("../../assets/img/business4.png");
+          color: #80be38;
+        }
+        > dl:nth-child(5) {
+          background: url("../../assets/img/business5.png");
+          color: #906cef;
+        }
+        > dl:nth-child(6) {
+          background: url("../../assets/img/business6.png");
+          color: #47a2eb;
+        }
+      }
+      span {
+        display: block;
+        margin-right: 15px;
+      }
+      /deep/.ant-calendar-picker {
+        width: 300px;
+      }
+    }
+  }
+  > div {
+    // height: 152px;
+    // background: #fff;
+    .ant-form {
+      display: flex;
+      padding-top: 10px;
+      box-sizing: border-box;
+      > .ant-form-item {
+        flex: none;
+        /deep/.ant-form-item-control-wrapper {
+          width: 100%;
+        }
+      }
+    }
+    .form-item-search {
+      // display: flex;
+      // justify-content: flex-end;
+      /deep/ .ant-form-item-control {
+        display: flex;
+        justify-content: flex-end;
+      }
+    }
+  }
+  .table-title {
+    padding: 15px;
+    border-bottom: 1px solid #eee;
+    box-sizing: border-box;
+    display: flex;
+    align-items: center;
+    h2 {
+      margin: 0;
+    }
+    > div {
+      flex: 1;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
+}
+.ant-form {
+  display: flex;
+  padding-top: 10px;
+  box-sizing: border-box;
+}
+.ant-form-item {
+  // display: flex;
+}
+</style>

+ 49 - 46
src/pages/task/channel.vue

@@ -57,52 +57,55 @@
         @exportList="exportList"
         @exportList="exportList"
       ></fromRow>
       ></fromRow>
     </div>
     </div>
-    <standard-table
-      bordered
-      :columns="columns"
-      :dataSource="tableList"
-      :pagination="pagination"
-      @clear="onClear"
-      @change="onChange"
-      :loading="loading"
-    >
-      <div slot="qutationCount" slot-scope="{ text }">
-        {{ text + "条" }}
-      </div>
-      <div slot="quotationRate" slot-scope="{ text }">
-        {{ (text * 100).toFixed(2) + "%" }}
-      </div>
-      <span slot="title_slot">
-        报价率
-        <a-tooltip
-          placement="topLeft"
-          title="报价中 / 报价数"
-          arrow-point-at-center
-        >
-          <a-icon type="question-circle" />
-        </a-tooltip>
-      </span>
-      <span slot="title_slot2">
-        承保率
-        <a-tooltip
-          placement="topLeft"
-          title="承保数 / 报价数"
-          arrow-point-at-center
-        >
-          <a-icon type="question-circle" />
-        </a-tooltip>
-      </span>
-      <span slot="title_slot3">
-        核保通过率
-        <a-tooltip
-          placement="topLeft"
-          title="(承保数+ 核保数) / 报价数"
-          arrow-point-at-center
-        >
-          <a-icon type="question-circle" />
-        </a-tooltip>
-      </span>
-    </standard-table>
+    <div style="width: 100%">
+      <standard-table
+        bordered
+        :columns="columns"
+        :dataSource="tableList"
+        :pagination="pagination"
+        @clear="onClear"
+        @change="onChange"
+        :loading="loading"
+        :scroll="{ x: 1800 }"
+      >
+        <div slot="qutationCount" slot-scope="{ text }">
+          {{ text + "条" }}
+        </div>
+        <div slot="quotationRate" slot-scope="{ text }">
+          {{ (text * 100).toFixed(2) + "%" }}
+        </div>
+        <span slot="title_slot">
+          报价率
+          <a-tooltip
+            placement="topLeft"
+            title="报价中 / 报价数"
+            arrow-point-at-center
+          >
+            <a-icon type="question-circle" />
+          </a-tooltip>
+        </span>
+        <span slot="title_slot2">
+          承保率
+          <a-tooltip
+            placement="topLeft"
+            title="承保数 / 报价数"
+            arrow-point-at-center
+          >
+            <a-icon type="question-circle" />
+          </a-tooltip>
+        </span>
+        <span slot="title_slot3">
+          核保通过率
+          <a-tooltip
+            placement="topLeft"
+            title="(承保数+ 核保数) / 报价数"
+            arrow-point-at-center
+          >
+            <a-icon type="question-circle" />
+          </a-tooltip>
+        </span>
+      </standard-table>
+    </div>
   </div>
   </div>
 </template>
 </template>
   
   

+ 73 - 16
src/pages/task/insurance.vue

@@ -3,6 +3,41 @@
     <div class="back-line-header">
     <div class="back-line-header">
       <div class="back-line-header-title">
       <div class="back-line-header-title">
         <h2>保险公司</h2>
         <h2>保险公司</h2>
+        <div class="area-city">
+          <div>
+            省份:<a-select
+              style="width: 200px"
+              @change="getList()"
+              v-model="formState.provinceId"
+            >
+              <a-select-option
+                v-for="item in areaList"
+                :key="item.areaCode"
+                :label="item.areaCname"
+                :value="item.areaCode"
+              >
+                {{ item.areaCname }}
+              </a-select-option>
+            </a-select>
+          </div>
+          <div>
+            <span>城市:</span>
+            <a-select
+              style="width: 200px"
+              v-model="formState.cityId"
+              @change="getList()"
+            >
+              <a-select-option
+                v-for="item in cityList"
+                :key="item.areaCode"
+                :label="item.areaCname"
+                :value="item.areaCode"
+              >
+                {{ item.areaCname }}
+              </a-select-option>
+            </a-select>
+          </div>
+        </div>
         <div>
         <div>
           <span>时间筛选</span>
           <span>时间筛选</span>
           <a-range-picker
           <a-range-picker
@@ -170,10 +205,8 @@ export default {
   data() {
   data() {
     return {
     return {
       formState: {
       formState: {
-        whole: undefined,
         cityId: undefined,
         cityId: undefined,
-        countyId: undefined,
-        houseId: undefined,
+
         provinceId: undefined,
         provinceId: undefined,
         days: undefined,
         days: undefined,
         time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
         time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
@@ -218,12 +251,32 @@ export default {
   },
   },
   mounted() {
   mounted() {
     this.getBackLinePersonnel();
     this.getBackLinePersonnel();
+    this.getAreaList();
     // setTimeout(() => {
     // setTimeout(() => {
 
 
     // }, 1000);
     // }, 1000);
     this.getCompanyList();
     this.getCompanyList();
   },
   },
   methods: {
   methods: {
+    getList() {
+      this.pagination.current = 1;
+      this.getBackLinePersonnel();
+    },
+    getAreaList() {
+      this.$API.personnel.getAreaList().then((res) => {
+        // console.log(res);
+        if (res.data.code === 200) {
+          let arr = [];
+          res.data.data.map((item) => {
+            if (item.areaCname === "山西省") {
+              arr.push(item);
+            }
+          });
+          this.areaList = [...arr];
+          this.cityList = [...arr[0].child];
+        }
+      });
+    },
     exportList() {
     exportList() {
       delete this.formState.time;
       delete this.formState.time;
       this.$API.task
       this.$API.task
@@ -264,7 +317,9 @@ export default {
       // console.log(val);
       // console.log(val);
       this.formState.beginDate = val[0];
       this.formState.beginDate = val[0];
       this.formState.endDate = val[1];
       this.formState.endDate = val[1];
+      this.pagination.current = 1;
       this.formState.days = undefined;
       this.formState.days = undefined;
+
       this.getBackLinePersonnel();
       this.getBackLinePersonnel();
     },
     },
     getCompanyList() {
     getCompanyList() {
@@ -293,18 +348,6 @@ export default {
     handleFinish() {
     handleFinish() {
       //
       //
     },
     },
-    wholeHandleChange() {
-      this.getProvinceList(this.formState.whole);
-    },
-    provinceHandleChange() {
-      this.getCityList(this.formState.provinceId);
-    },
-    cityHandleChange() {
-      this.getAreaList(this.formState.cityId);
-    },
-    countyHandleChange() {
-      this.getStoreList(this.formState.countyId);
-    },
 
 
     getBackLinePersonnel() {
     getBackLinePersonnel() {
       this.loading = true;
       this.loading = true;
@@ -431,9 +474,23 @@ export default {
       h2 {
       h2 {
         margin: 0;
         margin: 0;
       }
       }
-      > div {
+      > div.area-city {
         flex: 1;
         flex: 1;
         display: flex;
         display: flex;
+        justify-content: center;
+        align-items: center;
+        > div {
+          // flex: 1;
+          display: flex;
+          align-items: center;
+          > span {
+            margin-left: 10px;
+          }
+        }
+      }
+      > div:last-child {
+        flex: none;
+        display: flex;
         align-items: center;
         align-items: center;
         justify-content: flex-end;
         justify-content: flex-end;
       }
       }

+ 15 - 0
src/router/config.js

@@ -73,6 +73,21 @@ const router = new Router({
 
 
           ]
           ]
         },
         },
+        {
+          path: '/sales',
+          name: '电销呼出',
+          component: PageView,
+          children: [
+            {
+              path: '/sales/message',
+              name: '电销详情',
+              hidden: true,
+              component: () => import('@/pages/sales/message'),
+
+            },
+
+          ]
+        },
 
 
         {
         {
           path: '/channel',
           path: '/channel',

+ 7 - 1
src/services/personnel.js

@@ -35,6 +35,11 @@ export async function getChannelDetails(data) {
   return request(`/userStatistics/queryChannelDetails`, METHOD.POST, data)
   return request(`/userStatistics/queryChannelDetails`, METHOD.POST, data)
 }
 }
 
 
+//获取渠道成员详情
+export async function getManageUser(data) {
+  return request(`/user/findHxUserList`, METHOD.GET, data)
+}
+
 
 
 
 
 
 
@@ -48,6 +53,7 @@ export default {
   getTeamList,
   getTeamList,
   getTeamUserList,
   getTeamUserList,
   getTeamUserDetails,
   getTeamUserDetails,
-  getChannelDetails
+  getChannelDetails,
+  getManageUser
 
 
 }
 }

+ 1 - 1
src/services/sales.js

@@ -2,7 +2,7 @@ import { request, METHOD, } from '@/utils/request'
 
 
 //获取电销组别列表
 //获取电销组别列表
 export async function getSalesGroupList(data) {
 export async function getSalesGroupList(data) {
-    return request("/khglData/queryGroupListByDeptId", METHOD.POST, data)
+    return request("/khglData/queryGroupListByDeptId", METHOD.GET, data)
 }
 }
 //获取电销列表
 //获取电销列表
 export async function getSalesList(data) {
 export async function getSalesList(data) {

+ 1 - 0
src/utils/request.js

@@ -145,6 +145,7 @@ function loadInterceptors(interceptors, options) {
     // }
     // }
     axios.interceptors.response.use(
     axios.interceptors.response.use(
       response => {
       response => {
+        console.log(response.data, 6666)
         if (response.data.code !== 200) {
         if (response.data.code !== 200) {
 
 
           return Promise.reject(response);
           return Promise.reject(response);