Explorar o código

Merge branch '作业看板' into dev

xiaohaizhao %!s(int64=2) %!d(string=hai) anos
pai
achega
cc817f24e8
Modificáronse 3 ficheiros con 573 adicións e 552 borrados
  1. 298 292
      packageA/achievement/index.js
  2. 139 132
      packageA/achievement/index.scss
  3. 136 128
      packageA/achievement/index.wxml

+ 298 - 292
packageA/achievement/index.js

@@ -1,299 +1,305 @@
 const _Http = getApp().globalData.http,
-    currency = require("../../utils/currency"),
-    CNY = (value, symbol = "", precision = 2) => currency(value, {
-        symbol,
-        precision
-    }).format();
+  currency = require("../../utils/currency"),
+  CNY = (value, symbol = "", precision = 2) => currency(value, {
+    symbol,
+    precision
+  }).format();
 Page({
-    data: {
-        dropdownItem: 0,
-        dropdown: [{
-                text: '作业看板',
-                value: 0
-            },
-            {
-                text: '线索',
-                value: 1
-            },
-            {
-                text: '客户',
-                value: 2
-            },
-            {
-                text: '项目商机',
-                value: 3
-            },
-            {
-                text: '作业单据',
-                value: 4
-            }
-        ],
-        filtratelist: [],
-        showFiltrate: false
-    },
-    onLoad(options) {
-        _Http.basic({
-            "id": 20230620102004,
-            "content": {}
-        }).then(res => {
-            console.log("获取下级部门和下级人员", res)
-            if (res.msg != '成功') return wx.showToast({
-                title: res.data,
-                icon: "none"
-            })
-            let data = {
-                label: "查询范围",
-                index: 0,
-                showName: "name", //显示字段
-                valueKey: "active", //返回Key
-                value: "id", //选中值
-                list: res.data.hr.map(v => {
-                    v.id = v.userid;
-                    // v.key = v.name + v.userid;
-                    v.type = '人员'
-                    delete(v.rowindex)
-                    delete(v.userid)
-                    return v
-                })
-            };
-            const mflat = (v, prefix) => {
-                v.subdep.forEach(s => mflat(s, v.depname));
-                v.name = v.depname; //prefix ? prefix + '/' + v.depname : v.depname
-                v.type = '部门';
-                v.id = v.departmentid;
-                // v.key = v.name + v.id;
-                delete(v.depname)
-                delete(v.departmentid)
-                delete(v.parentid)
-                delete(v.rowindex)
-                delete(v.subdep)
-                data.list.unshift(v)
-            };
-            res.data.dep.forEach(v => mflat(v))
-            data.list.map((v, i) => {
-                v.index = i;
-                if (v.type == '人员' && v.id == wx.getStorageSync('userMsg').userid) data.index = i;
-                return v
-            })
-            this.setData({
-                "filtratelist[0]": data,
-                active: data.list[data.index]
-            });
-            this.refreshModel();
-        });
-        this.refreshData();
-    },
-    openFiltrate() {
-        this.setData({
-            showFiltrate: true
+  data: {
+    dropdownItem: 0,
+    dropdown: [{
+        text: '作业看板',
+        value: 0
+      },
+      {
+        text: '线索',
+        value: 1
+      },
+      {
+        text: '客户',
+        value: 2
+      },
+      {
+        text: '项目商机',
+        value: 3
+      },
+      {
+        text: '作业单据',
+        value: 4
+      }
+    ],
+    filtratelist: [],
+    showFiltrate: false
+  },
+  onLoad(options) {
+    _Http.basic({
+      "id": 20230620102004,
+      "content": {}
+    }).then(res => {
+      console.log("获取下级部门和下级人员", res)
+      if (res.msg != '成功') return wx.showToast({
+        title: res.data,
+        icon: "none"
+      })
+      let data = {
+        label: "查询范围",
+        index: 0,
+        showName: "name", //显示字段
+        valueKey: "active", //返回Key
+        value: "id", //选中值
+        list: res.data.hr.map(v => {
+          v.id = v.userid;
+          // v.key = v.name + v.userid;
+          v.type = '人员'
+          delete(v.rowindex)
+          delete(v.userid)
+          return v
         })
-    },
-    handleFilter(e) {
-        let {
-            active
-        } = e.detail;
-        this.setData({
-            active
-        });
-        this.refreshData(active.type == '人员' ? 0 : 1, active.id);
-        this.refreshModel();
-    },
-    refreshData(type = 0, dataid = wx.getStorageSync('userMsg').userid) {
-        const conversion = (n) => {
-            const integer = (n + '').split(".")[0] + '',
-                length = integer.length,
-                regexp = /(?:\.0*|(\.\d+?)0+)$/
-            if (length <= 4) {
-                const index = 4 - length;
-                return { //元
-                    show: CNY(n, "", index).replace(regexp, '$1'),
-                    value: CNY(n, '¥')
-                }
-            } else if (length <= 8) {
-                return { //万-千万
-                    show: CNY(currency(n).divide(10000)).replace(regexp, '$1') + '万',
-                    value: CNY(n)
-                }
-            } else {
-                return { //亿
-                    show: CNY(currency(n).divide(100000000)).replace(regexp, '$1') + '亿',
-                    value: CNY(n)
-                }
+      };
+      const mflat = (v, prefix) => {
+        v.subdep.forEach(s => mflat(s, v.depname));
+        v.name = v.depname; //prefix ? prefix + '/' + v.depname : v.depname
+        v.type = '部门';
+        v.id = v.departmentid;
+        // v.key = v.name + v.id;
+        delete(v.depname)
+        delete(v.departmentid)
+        delete(v.parentid)
+        delete(v.rowindex)
+        delete(v.subdep)
+        data.list.unshift(v)
+      };
+      res.data.dep.forEach(v => mflat(v))
+      data.list.map((v, i) => {
+        v.index = i;
+        if (v.type == '人员' && v.id == wx.getStorageSync('userMsg').userid) data.index = i;
+        return v
+      })
+      this.setData({
+        "filtratelist[0]": data,
+        active: data.list[data.index]
+      });
+      this.refreshModel();
+    });
+    this.refreshData();
+  },
+  openFiltrate() {
+    this.setData({
+      showFiltrate: true
+    })
+  },
+  handleFilter(e) {
+    let {
+      active
+    } = e.detail;
+    this.setData({
+      active
+    });
+    this.refreshData(active.type == '人员' ? 0 : 1, active.id);
+    this.refreshModel();
+  },
+  refreshData(type = 0, dataid = wx.getStorageSync('userMsg').userid) {
+    const conversion = (n) => {
+      const integer = (n + '').split(".")[0] + '',
+        length = integer.length,
+        regexp = /(?:\.0*|(\.\d+?)0+)$/
+      if (length <= 4) {
+        const index = 4 - length;
+        return { //元
+          show: CNY(n, "", index).replace(regexp, '$1'),
+          value: CNY(n, '¥')
+        }
+      } else if (length <= 8) {
+        return { //万-千万
+          show: CNY(currency(n).divide(10000)).replace(regexp, '$1') + '万',
+          value: CNY(n)
+        }
+      } else {
+        return { //亿
+          show: CNY(currency(n).divide(100000000)).replace(regexp, '$1') + '亿',
+          value: CNY(n)
+        }
+      }
+    };
+    const sortOut = (obj, data, isConversion = false) => {
+      for (const key in obj) {
+        if (key == 'tab') continue;
+        for (const k in obj[key]) {
+          obj[key][k] = isConversion ? conversion(data[key + k]) : data[key + k]
+        }
+      }
+      return obj
+    };
+    const getData = (dataType) => {
+      return _Http.basic({
+        "id": 20230616131404,
+        "content": {
+          nocache: true,
+          dataType, // 1 作业数据 2 销售数据 3业绩数据
+          type,
+          dataid
+        }
+      }).then(res => {
+        let data = {};
+        switch (dataType) {
+          case 1:
+            data = {
+              tab: {
+                active: "bz",
+                list: [{
+                  name: "本周",
+                  id: "bz"
+                }, {
+                  name: "本月",
+                  id: "by"
+                }, {
+                  name: "本年",
+                  id: "bn"
+                }]
+              },
+              bz: {
+                khgj: 0,
+                khxz: 0,
+                xmgj: 0,
+                xmxz: 0,
+                xsxz: 0,
+                xsgj: 0,
+              },
+              by: {
+                khgj: 0,
+                khxz: 0,
+                xmgj: 0,
+                xmxz: 0,
+                xsxz: 0,
+                xsgj: 0,
+              },
+              bn: {
+                khgj: 0,
+                khxz: 0,
+                xmgj: 0,
+                xmxz: 0,
+                xsxz: 0,
+                xsgj: 0,
+              }
             }
-        };
-        const sortOut = (obj, data, isConversion = false) => {
-            for (const key in obj) {
-                if (key == 'tab') continue;
-                for (const k in obj[key]) {
-                    obj[key][k] = isConversion ? conversion(data[key + k]) : data[key + k]
-                }
+            break;
+          case 2:
+            data = {
+              tab: {
+                active: "bz",
+                list: [{
+                  name: "本周",
+                  id: "bz"
+                }, {
+                  name: "本月",
+                  id: "by"
+                }, {
+                  name: "本年",
+                  id: "bn"
+                }]
+              },
+              bz: {
+                chje: 0,
+                kpje: 0,
+                skje: 0,
+                xsje: 0
+              },
+              by: {
+                chje: 0,
+                kpje: 0,
+                skje: 0,
+                xsje: 0
+              },
+              bn: {
+                chje: 0,
+                kpje: 0,
+                skje: 0,
+                xsje: 0
+              }
             }
-            return obj
-        };
-        const getData = (dataType) => {
-            return _Http.basic({
-                "id": 20230616131404,
-                "content": {
-                    nocache: true,
-                    dataType, // 1 作业数据 2 销售数据 3业绩数据
-                    type,
-                    dataid
-                }
-            }).then(res => {
-                let data = {};
-                switch (dataType) {
-                    case 1:
-                        data = {
-                            tab: {
-                                active: "bz",
-                                list: [{
-                                    name: "本周",
-                                    id: "bz"
-                                }, {
-                                    name: "本月",
-                                    id: "by"
-                                }, {
-                                    name: "本年",
-                                    id: "bn"
-                                }]
-                            },
-                            bz: {
-                                khgj: 0,
-                                khxz: 0,
-                                xmgj: 0,
-                                xmxz: 0
-                            },
-                            by: {
-                                khgj: 0,
-                                khxz: 0,
-                                xmgj: 0,
-                                xmxz: 0
-                            },
-                            bn: {
-                                khgj: 0,
-                                khxz: 0,
-                                xmgj: 0,
-                                xmxz: 0
-                            }
-                        }
-                        break;
-                    case 2:
-                        data = {
-                            tab: {
-                                active: "bz",
-                                list: [{
-                                    name: "本周",
-                                    id: "bz"
-                                }, {
-                                    name: "本月",
-                                    id: "by"
-                                }, {
-                                    name: "本年",
-                                    id: "bn"
-                                }]
-                            },
-                            bz: {
-                                chje: 0,
-                                kpje: 0,
-                                skje: 0,
-                                xsje: 0
-                            },
-                            by: {
-                                chje: 0,
-                                kpje: 0,
-                                skje: 0,
-                                xsje: 0
-                            },
-                            bn: {
-                                chje: 0,
-                                kpje: 0,
-                                skje: 0,
-                                xsje: 0
-                            }
-                        }
-                        break;
-                    default:
-                        data = res.data
-                        data.tab = {
-                            active: "by",
-                            list: [{
-                                name: "本月",
-                                id: "by"
-                            }, {
-                                name: "本季",
-                                id: "bj"
-                            }, {
-                                name: "本年",
-                                id: "bn"
-                            }]
-                        }
-                        break;
-                }
-                return dataType == 3 ? data : sortOut(data, res.data, dataType == 2)
-            })
-        };
-        getData(1).then(res => {
-            this.setData({
-                zysj: res
-            })
-        });
-        getData(2).then(res => {
-            this.setData({
-                xssj: res
-            })
-        });
-        getData(3).then(res => {
-            for (const key in res) {
-                if (key == 'tab') continue;
-                res[key].target_l = conversion(res[key].target_l);
-                //实际
-                res[key].amount = conversion(res[key].amount);
-                res[key].outamount = conversion(res[key].outamount);
-                res[key].invoiceamount = conversion(res[key].invoiceamount);
-                //差额
-                res[key].unamount = CNY(res[key].unamount, '¥');
-                res[key].unamountcolor = res[key].unamount >= 0 ? '#5AB73F' : '#EB4B5C';
-                res[key].unoutamount = CNY(res[key].unoutamount, '¥');
-                res[key].unoutamountcolor = res[key].unoutamount >= 0 ? '#5AB73F' : '#EB4B5C';
-                res[key].uninvoiceamount = CNY(res[key].uninvoiceamount, '¥');
-                res[key].uninvoiceamountcolor = res[key].uninvoiceamount >= 0 ? '#5AB73F' : '#EB4B5C';
-                //达成率
-                res[key].wcamount = currency(res[key].wcamount).multiply(100) + '%';
-                res[key].wcoutamount = currency(res[key].wcoutamount).multiply(100) + '%';
-                res[key].wcinvoiceamount = currency(res[key].wcinvoiceamount).multiply(100) + '%';
+            break;
+          default:
+            data = res.data
+            data.tab = {
+              active: "by",
+              list: [{
+                name: "本月",
+                id: "by"
+              }, {
+                name: "本季",
+                id: "bj"
+              }, {
+                name: "本年",
+                id: "bn"
+              }]
             }
-            this.setData({
-                yjsj: res
-            })
-        });
-    },
-    dropdownItemChange({
-        detail
-    }) {
-        this.setData({
-            dropdownItem: detail
-        })
-        this.refreshModel();
-    },
-    changeId(e) {
-        const {
-            id,
-            name
-        } = e.currentTarget.dataset;
-        if (this.data[name].tab.active == id) return;
-        this.setData({
-            [`${name}.tab.active`]: id
-        })
-    },
-    refreshModel() {
-        const dropdownItem = this.data.dropdownItem;
-        if (dropdownItem == 0) return;
-        const model = this.selectComponent("#model" + dropdownItem);
-        if (!model) return;
-        const active = this.data.active;
-        model.init(active.type == '人员' ? '0' : '1', active.id);
-    },
-    onReady(){
-        this.selectComponent("#ListBox").setHeight(".head", this);
-    }
+            break;
+        }
+        return dataType == 3 ? data : sortOut(data, res.data, dataType == 2)
+      })
+    };
+    getData(1).then(res => {
+      this.setData({
+        zysj: res
+      })
+    });
+    getData(2).then(res => {
+      this.setData({
+        xssj: res
+      })
+    });
+    getData(3).then(res => {
+      for (const key in res) {
+        if (key == 'tab') continue;
+        res[key].target_l = conversion(res[key].target_l);
+        //实际
+        res[key].amount = conversion(res[key].amount);
+        res[key].outamount = conversion(res[key].outamount);
+        res[key].invoiceamount = conversion(res[key].invoiceamount);
+        //差额
+        res[key].unamount = CNY(res[key].unamount, '¥');
+        res[key].unamountcolor = res[key].unamount >= 0 ? '#5AB73F' : '#EB4B5C';
+        res[key].unoutamount = CNY(res[key].unoutamount, '¥');
+        res[key].unoutamountcolor = res[key].unoutamount >= 0 ? '#5AB73F' : '#EB4B5C';
+        res[key].uninvoiceamount = CNY(res[key].uninvoiceamount, '¥');
+        res[key].uninvoiceamountcolor = res[key].uninvoiceamount >= 0 ? '#5AB73F' : '#EB4B5C';
+        //达成率
+        res[key].wcamount = currency(res[key].wcamount).multiply(100) + '%';
+        res[key].wcoutamount = currency(res[key].wcoutamount).multiply(100) + '%';
+        res[key].wcinvoiceamount = currency(res[key].wcinvoiceamount).multiply(100) + '%';
+      }
+      this.setData({
+        yjsj: res
+      })
+    });
+  },
+  dropdownItemChange({
+    detail
+  }) {
+    this.setData({
+      dropdownItem: detail
+    })
+    this.refreshModel();
+  },
+  changeId(e) {
+    const {
+      id,
+      name
+    } = e.currentTarget.dataset;
+    if (this.data[name].tab.active == id) return;
+    this.setData({
+      [`${name}.tab.active`]: id
+    })
+  },
+  refreshModel() {
+    const dropdownItem = this.data.dropdownItem;
+    if (dropdownItem == 0) return;
+    const model = this.selectComponent("#model" + dropdownItem);
+    if (!model) return;
+    const active = this.data.active;
+    model.init(active.type == '人员' ? '0' : '1', active.id);
+  },
+  onReady() {
+    this.selectComponent("#ListBox").setHeight(".head", this);
+  }
 })

+ 139 - 132
packageA/achievement/index.scss

@@ -1,154 +1,161 @@
 page {
-    height: 100vh;
-    width: 100vw;
-    overflow: hidden;
+  height: 100vh;
+  width: 100vw;
+  overflow: hidden;
 }
 
 .box {
-    width: 100vw;
-    padding: 20rpx 30rpx;
+  width: 100vw;
+  padding: 20rpx 30rpx;
+  box-sizing: border-box;
+  background-color: #fff;
+  margin-top: 20rpx;
+
+  .top {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    width: 100%;
+    height: 60rpx;
+
+    .title {
+      font-size: 28rpx;
+      font-weight: bold;
+      color: #333333;
+    }
+
+    .tabs-box {
+      display: flex;
+      align-items: center;
+      height: 60rpx;
+      background: #F5F5F5;
+      border-radius: 30rpx;
+      padding: 4rpx;
+      background-color: #F5F5F5;
+      box-sizing: content-box;
+
+      .item {
+        font-size: 24rpx;
+        font-family: PingFang SC-Regular, PingFang SC;
+        color: #FFFFFF;
+        height: 52rpx;
+        line-height: 52rpx;
+        padding: 0 16rpx;
+        background-color: #F5F5F5;
+        color: #999999;
+        border-radius: 26rpx;
+        box-sizing: border-box;
+      }
+
+      .active {
+        background-color: #3874F6;
+        color: #FFFFFF;
+        transition: color 0.3s;
+      }
+    }
+  }
+
+  .spectaculars {
+    display: flex;
+    flex-wrap: wrap;
+    width: 690rpx;
+    background: #F6F6F6;
+    border-radius: 8rpx;
+    padding: 20rpx;
     box-sizing: border-box;
-    background-color: #fff;
     margin-top: 20rpx;
 
-    .top {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        width: 100%;
-        height: 60rpx;
-
-        .title {
-            font-size: 28rpx;
-            font-weight: bold;
-            color: #333333;
-        }
+    .item {
+      width: 25%;
+      text-align: center;
+
+      .label {
+        height: 34rpx;
+        line-height: 34rpx;
+        font-size: 24rpx;
+        color: rgba(23, 26, 29, 0.6);
+      }
+
+      .value {
+        height: 42rpx;
+        font-size: 30rpx;
+        line-height: 42rpx;
+        font-family: PingFangSC-Semibold-, PingFangSC-Semibold;
+        color: #171A1D;
+        margin-top: 10rpx;
+        font-weight: 700;
+      }
+    }
+  }
 
-        .tabs-box {
-            display: flex;
-            align-items: center;
-            height: 60rpx;
-            background: #F5F5F5;
-            border-radius: 30rpx;
-            padding: 4rpx;
-            background-color: #F5F5F5;
-            box-sizing: content-box;
-
-            .item {
-                font-size: 24rpx;
-                font-family: PingFang SC-Regular, PingFang SC;
-                color: #FFFFFF;
-                height: 52rpx;
-                line-height: 52rpx;
-                padding: 0 16rpx;
-                background-color: #F5F5F5;
-                color: #999999;
-                border-radius: 26rpx;
-                box-sizing: border-box;
-            }
-
-            .active {
-                background-color: #3874F6;
-                color: #FFFFFF;
-                transition: color 0.3s;
-            }
-        }
+  .row-3 {
+    .item {
+      width: 33.33% !important;
     }
+  }
 
-    .spectaculars {
-        display: flex;
-        width: 690rpx;
-        background: #F6F6F6;
-        border-radius: 8rpx;
-        padding: 20rpx;
-        box-sizing: border-box;
-        margin-top: 20rpx;
-
-        .item {
-            width: 25%;
-            text-align: center;
-
-            .label {
-                height: 34rpx;
-                line-height: 34rpx;
-                font-size: 24rpx;
-                color: rgba(23, 26, 29, 0.6);
-            }
-
-            .value {
-                height: 42rpx;
-                font-size: 30rpx;
-                line-height: 42rpx;
-                font-family: PingFangSC-Semibold-, PingFangSC-Semibold;
-                color: #171A1D;
-                margin-top: 10rpx;
-                font-weight: 700;
-            }
-        }
+  .performance {
+    width: 690rpx;
+    background: #F6F6F6;
+    border-radius: 8rpx;
+    padding: 20rpx;
+    box-sizing: border-box;
+    margin-top: 20rpx;
+
+    .title {
+      margin-right: 40rpx;
+      font-size: 30rpx;
+      font-family: PingFangSC-Semibold-, PingFangSC-Semibold;
+      color: #171A1D;
+      font-weight: 700;
+      line-height: 42rpx;
+
+      text {
+        margin-left: 40rpx;
+        font-size: 24rpx;
+        font-family: PingFang SC-Regular, PingFang SC;
+        font-weight: 400;
+      }
     }
 
-    .performance {
-        width: 690rpx;
-        background: #F6F6F6;
-        border-radius: 8rpx;
-        padding: 20rpx;
-        box-sizing: border-box;
-        margin-top: 20rpx;
+    .row {
+      margin-top: 20rpx;
+      display: flex;
+
+      .item {
+        flex: 1;
 
         .title {
-            margin-right: 40rpx;
-            font-size: 30rpx;
-            font-family: PingFangSC-Semibold-, PingFangSC-Semibold;
-            color: #171A1D;
-            font-weight: 700;
-            line-height: 42rpx;
-
-            text {
-                margin-left: 40rpx;
-                font-size: 24rpx;
-                font-family: PingFang SC-Regular, PingFang SC;
-                font-weight: 400;
-            }
+          font-size: 24rpx;
+          font-family: PingFangSC-Regular-, PingFangSC-Regular;
+          font-weight: normal;
+          color: rgba(23, 26, 29, 0.6);
+          line-height: 34rpx;
         }
 
-        .row {
-            margin-top: 20rpx;
-            display: flex;
-
-            .item {
-                flex: 1;
-
-                .title {
-                    font-size: 24rpx;
-                    font-family: PingFangSC-Regular-, PingFangSC-Regular;
-                    font-weight: normal;
-                    color: rgba(23, 26, 29, 0.6);
-                    line-height: 34rpx;
-                }
-
-                .value {
-                    height: 42rpx;
-                    line-height: 42rpx;
-                    font-size: 30rpx;
-                    font-weight: 700;
-                    font-family: PingFang SC-Regular, PingFang SC;
-                    color: #171A1D;
-                    margin-top: 10rpx;
-                }
-            }
+        .value {
+          height: 42rpx;
+          line-height: 42rpx;
+          font-size: 30rpx;
+          font-weight: 700;
+          font-family: PingFang SC-Regular, PingFang SC;
+          color: #171A1D;
+          margin-top: 10rpx;
         }
+      }
     }
+  }
 }
 
 .filtrate {
-    display: flex;
-    height: 100%;
-    align-items: center;
-    justify-content: flex-end;
-    color: var(--dropdown-menu-title-text-color, #323233);
-    font-size: var(--dropdown-menu-title-font-size, 15px);
-    line-height: var(--dropdown-menu-title-line-height, 18px);
-    max-width: 100%;
-    padding-right: 30rpx;
-    width: 72%;
+  display: flex;
+  height: 100%;
+  align-items: center;
+  justify-content: flex-end;
+  color: var(--dropdown-menu-title-text-color, #323233);
+  font-size: var(--dropdown-menu-title-font-size, 15px);
+  line-height: var(--dropdown-menu-title-line-height, 18px);
+  max-width: 100%;
+  padding-right: 30rpx;
+  width: 72%;
 }

+ 136 - 128
packageA/achievement/index.wxml

@@ -1,150 +1,158 @@
 <van-dropdown-menu active-color="#3874F6">
-    <van-dropdown-item value="{{ dropdownItem }}" options="{{ dropdown }}" bindchange='dropdownItemChange' />
-    <view class="filtrate" url="#" bindtap="openFiltrate">
-        <text style="margin-right: 6rpx;">{{active.name}}-{{active.type}}</text>
-        <van-icon name="arrow-down" />
-    </view>
+  <van-dropdown-item value="{{ dropdownItem }}" options="{{ dropdown }}" bindchange='dropdownItemChange' />
+  <view class="filtrate" url="#" bindtap="openFiltrate">
+    <text style="margin-right: 6rpx;">{{active.name}}-{{active.type}}</text>
+    <van-icon name="arrow-down" />
+  </view>
 </van-dropdown-menu>
 <view class="head" />
 <view hidden="{{dropdownItem!=0}}">
-    <Yl_ListBox pullDown='{{false}}' id='ListBox'>
-        <view class="box">
-            <view class="top">
-                <view class="title">
-                    作业数据
-                </view>
-                <view class="tabs-box">
-                    <view class="item {{zysj.tab.active==item.id?'active':''}}" wx:for="{{zysj.tab.list}}" wx:key="id" data-name="zysj" data-id="{{item.id}}" catchtap='changeId'>{{item.name}}</view>
-                </view>
-            </view>
-            <view class="spectaculars">
-                <view class="item">
-                    <view class="label">新增客户数</view>
-                    <view class="value">{{zysj[zysj.tab.active].khxz}}</view>
-                </view>
-                <view class="item">
-                    <view class="label">客户跟进次数</view>
-                    <view class="value">{{zysj[zysj.tab.active].khgj}}</view>
-                </view>
-                <view class="item">
-                    <view class="label">新增项目数</view>
-                    <view class="value">{{zysj[zysj.tab.active].xmxz}}</view>
-                </view>
-                <view class="item">
-                    <view class="label">项目跟进次数</view>
-                    <view class="value">{{zysj[zysj.tab.active].xmgj}}</view>
-                </view>
-            </view>
-        </view>
-        <view class="box">
-            <view class="top">
-                <view class="title">
-                    销售数据
-                </view>
-                <view class="tabs-box">
-                    <view class="item {{xssj.tab.active==item.id?'active':''}}" wx:for="{{xssj.tab.list}}" wx:key="id" data-name="xssj" data-id="{{item.id}}" catchtap='changeId'>{{item.name}}</view>
-                </view>
-            </view>
-            <view class="spectaculars">
-                <view class="item">
-                    <view class="label">销售金额</view>
-                    <view class="value">{{xssj[xssj.tab.active].xsje.show}}</view>
-                </view>
-                <view class="item">
-                    <view class="label">出货金额</view>
-                    <view class="value">{{xssj[xssj.tab.active].chje.show}}</view>
-                </view>
-                <view class="item">
-                    <view class="label">收款金额</view>
-                    <view class="value">{{xssj[xssj.tab.active].skje.show}}</view>
-                </view>
-                <view class="item">
-                    <view class="label">开票金额</view>
-                    <view class="value">{{xssj[xssj.tab.active].kpje.show}}</view>
-                </view>
-            </view>
-        </view>
-        <view class="box">
-            <view class="top">
-                <view class="title">
-                    业绩数据
-                </view>
-                <view class="tabs-box">
-                    <view class="item {{yjsj.tab.active==item.id?'active':''}}" wx:for="{{yjsj.tab.list}}" wx:key="id" data-name="yjsj" data-id="{{item.id}}" catchtap='changeId'>{{item.name}}</view>
-                </view>
-            </view>
-
-            <view class="performance">
-                <view class="title">订单 <text style="color: {{yjsj[yjsj.tab.active].unamountcolor}};">{{yjsj[yjsj.tab.active].unamount.value}}</text></view>
-                <view class="row">
-                    <view class="item">
-                        <view class="title">目标达成</view>
-                        <view class="value">{{yjsj[yjsj.tab.active].wcamount}}</view>
-                    </view>
-                    <view class="item">
-                        <view class="title">实际金额</view>
-                        <view class="value">{{yjsj[yjsj.tab.active].amount.show}}</view>
-                    </view>
-                    <view class="item">
-                        <view class="title">目标金额</view>
-                        <view class="value">{{yjsj[yjsj.tab.active].target_l.show}}</view>
-                    </view>
-                </view>
-            </view>
+  <Yl_ListBox pullDown='{{false}}' id='ListBox'>
+    <view class="box">
+      <view class="top">
+        <view class="title">
+          作业数据
+        </view>
+        <view class="tabs-box">
+          <view class="item {{zysj.tab.active==item.id?'active':''}}" wx:for="{{zysj.tab.list}}" wx:key="id" data-name="zysj" data-id="{{item.id}}" catchtap='changeId'>{{item.name}}</view>
+        </view>
+      </view>
+      <view class="spectaculars row-3">
+        <view class="item ">
+          <view class="label">新增线索数</view>
+          <view class="value">{{zysj[zysj.tab.active].xsxz}}</view>
+        </view>
+        <view class="item">
+          <view class="label">线索跟进数</view>
+          <view class="value">{{zysj[zysj.tab.active].xsgj }}</view>
+        </view>
+        <view class="item">
+          <view class="label">新增客户数</view>
+          <view class="value">{{zysj[zysj.tab.active].khxz}}</view>
+        </view>
+        <view class="item">
+          <view class="label">客户跟进次数</view>
+          <view class="value">{{zysj[zysj.tab.active].khgj}}</view>
+        </view>
+        <view class="item">
+          <view class="label">新增项目数</view>
+          <view class="value">{{zysj[zysj.tab.active].xmxz}}</view>
+        </view>
+        <view class="item">
+          <view class="label">项目跟进次数</view>
+          <view class="value">{{zysj[zysj.tab.active].xmgj}}</view>
+        </view>
+      </view>
+    </view>
+    <view class="box">
+      <view class="top">
+        <view class="title">
+          销售数据
+        </view>
+        <view class="tabs-box">
+          <view class="item {{xssj.tab.active==item.id?'active':''}}" wx:for="{{xssj.tab.list}}" wx:key="id" data-name="xssj" data-id="{{item.id}}" catchtap='changeId'>{{item.name}}</view>
+        </view>
+      </view>
+      <view class="spectaculars">
+        <view class="item">
+          <view class="label">销售金额</view>
+          <view class="value">{{xssj[xssj.tab.active].xsje.show}}</view>
+        </view>
+        <view class="item">
+          <view class="label">出货金额</view>
+          <view class="value">{{xssj[xssj.tab.active].chje.show}}</view>
+        </view>
+        <view class="item">
+          <view class="label">收款金额</view>
+          <view class="value">{{xssj[xssj.tab.active].skje.show}}</view>
+        </view>
+        <view class="item">
+          <view class="label">开票金额</view>
+          <view class="value">{{xssj[xssj.tab.active].kpje.show}}</view>
+        </view>
+      </view>
+    </view>
+    <view class="box">
+      <view class="top">
+        <view class="title">
+          业绩数据
+        </view>
+        <view class="tabs-box">
+          <view class="item {{yjsj.tab.active==item.id?'active':''}}" wx:for="{{yjsj.tab.list}}" wx:key="id" data-name="yjsj" data-id="{{item.id}}" catchtap='changeId'>{{item.name}}</view>
+        </view>
+      </view>
 
-            <view class="performance">
-                <view class="title">出货 <text style="color: {{yjsj[yjsj.tab.active].unoutamountcolor}};">{{yjsj[yjsj.tab.active].unoutamount.value}}</text></view>
-                <view class="row">
-                    <view class="item">
-                        <view class="title">目标达成</view>
-                        <view class="value">{{yjsj[yjsj.tab.active].wcoutamount}}</view>
-                    </view>
-                    <view class="item">
-                        <view class="title">实际金额</view>
-                        <view class="value">{{yjsj[yjsj.tab.active].outamount.show}}</view>
-                    </view>
-                    <view class="item">
-                        <view class="title">目标金额</view>
-                        <view class="value">{{yjsj[yjsj.tab.active].target_l.show}}</view>
-                    </view>
-                </view>
-            </view>
+      <view class="performance">
+        <view class="title">订单 <text style="color: {{yjsj[yjsj.tab.active].unamountcolor}};">{{yjsj[yjsj.tab.active].unamount.value}}</text></view>
+        <view class="row">
+          <view class="item">
+            <view class="title">目标达成</view>
+            <view class="value">{{yjsj[yjsj.tab.active].wcamount}}</view>
+          </view>
+          <view class="item">
+            <view class="title">实际金额</view>
+            <view class="value">{{yjsj[yjsj.tab.active].amount.show}}</view>
+          </view>
+          <view class="item">
+            <view class="title">目标金额</view>
+            <view class="value">{{yjsj[yjsj.tab.active].target_l.show}}</view>
+          </view>
+        </view>
+      </view>
 
-            <view class="performance">
-                <view class="title">开票 <text style="color: {{yjsj[yjsj.tab.active].uninvoiceamountcolor}};">{{yjsj[yjsj.tab.active].uninvoiceamount.value}}</text></view>
-                <view class="row">
-                    <view class="item">
-                        <view class="title">目标达成</view>
-                        <view class="value">{{yjsj[yjsj.tab.active].wcinvoiceamount}}</view>
-                    </view>
-                    <view class="item">
-                        <view class="title">实际金额</view>
-                        <view class="value">{{yjsj[yjsj.tab.active].invoiceamount.show}}</view>
-                    </view>
-                    <view class="item">
-                        <view class="title">目标金额</view>
-                        <view class="value">{{yjsj[yjsj.tab.active].target_l.show}}</view>
-                    </view>
-                </view>
-            </view>
+      <view class="performance">
+        <view class="title">出货 <text style="color: {{yjsj[yjsj.tab.active].unoutamountcolor}};">{{yjsj[yjsj.tab.active].unoutamount.value}}</text></view>
+        <view class="row">
+          <view class="item">
+            <view class="title">目标达成</view>
+            <view class="value">{{yjsj[yjsj.tab.active].wcoutamount}}</view>
+          </view>
+          <view class="item">
+            <view class="title">实际金额</view>
+            <view class="value">{{yjsj[yjsj.tab.active].outamount.show}}</view>
+          </view>
+          <view class="item">
+            <view class="title">目标金额</view>
+            <view class="value">{{yjsj[yjsj.tab.active].target_l.show}}</view>
+          </view>
+        </view>
+      </view>
 
+      <view class="performance">
+        <view class="title">开票 <text style="color: {{yjsj[yjsj.tab.active].uninvoiceamountcolor}};">{{yjsj[yjsj.tab.active].uninvoiceamount.value}}</text></view>
+        <view class="row">
+          <view class="item">
+            <view class="title">目标达成</view>
+            <view class="value">{{yjsj[yjsj.tab.active].wcinvoiceamount}}</view>
+          </view>
+          <view class="item">
+            <view class="title">实际金额</view>
+            <view class="value">{{yjsj[yjsj.tab.active].invoiceamount.show}}</view>
+          </view>
+          <view class="item">
+            <view class="title">目标金额</view>
+            <view class="value">{{yjsj[yjsj.tab.active].target_l.show}}</view>
+          </view>
         </view>
-    </Yl_ListBox>
+      </view>
+
+    </view>
+  </Yl_ListBox>
 </view>
 
 <view hidden="{{dropdownItem!=1}}">
-    <clue id='model1' />
+  <clue id='model1' />
 </view>
 
 <view hidden="{{dropdownItem!=2}}">
-    <client id='model2' />
+  <client id='model2' />
 </view>
 
 <view hidden="{{dropdownItem!=3}}">
-    <project id='model3' />
+  <project id='model3' />
 </view>
 
 <view hidden="{{dropdownItem!=4}}">
-    <bills id='model4' />
+  <bills id='model4' />
 </view>
 <Yl_Filtrate1 show='{{showFiltrate}}' isReset='{{false}}' list="{{filtratelist}}" bindhandle="handleFilter" />