347617796@qq.com 4 年之前
父节点
当前提交
42be5ed058
共有 98 个文件被更改,包括 4763 次插入0 次删除
  1. 192 0
      Component/selectEnevt/selectEnevt.acss
  2. 38 0
      Component/selectEnevt/selectEnevt.axml
  3. 90 0
      Component/selectEnevt/selectEnevt.js
  4. 7 0
      Component/selectEnevt/selectEnevt.json
  5. 63 0
      Component/selectSectionBottom/selectSectionBottom.acss
  6. 34 0
      Component/selectSectionBottom/selectSectionBottom.axml
  7. 148 0
      Component/selectSectionBottom/selectSectionBottom.js
  8. 7 0
      Component/selectSectionBottom/selectSectionBottom.json
  9. 70 0
      Component/selectSxZp/selectSxZp.acss
  10. 32 0
      Component/selectSxZp/selectSxZp.axml
  11. 123 0
      Component/selectSxZp/selectSxZp.js
  12. 3 0
      Component/selectSxZp/selectSxZp.json
  13. 二进制
      image/a7.png
  14. 二进制
      image/a_apply.png
  15. 二进制
      image/a_entry.png
  16. 二进制
      image/add_ticket.png
  17. 二进制
      image/all.png
  18. 二进制
      image/apply_list.png
  19. 二进制
      image/att_statistics.png
  20. 二进制
      image/caback6.png
  21. 二进制
      image/delete.png
  22. 二进制
      image/dept.png
  23. 二进制
      image/entry_list.png
  24. 二进制
      image/event_list_a.png
  25. 二进制
      image/kf.png
  26. 二进制
      image/my_publish.png
  27. 二进制
      image/my_task.png
  28. 二进制
      image/my_ticket.png
  29. 二进制
      image/noTask.png
  30. 二进制
      image/point_entry.png
  31. 二进制
      image/rule.png
  32. 二进制
      image/sj.png
  33. 二进制
      image/sj2.png
  34. 二进制
      image/task_hall.png
  35. 9 0
      pages/deploy/upgrade/upgrade.acss
  36. 9 0
      pages/deploy/upgrade/upgrade.axml
  37. 29 0
      pages/deploy/upgrade/upgrade.js
  38. 5 0
      pages/deploy/upgrade/upgrade.json
  39. 4 0
      pages/deploy/upgradeDetail/upgradeDetail.acss
  40. 4 0
      pages/deploy/upgradeDetail/upgradeDetail.axml
  41. 33 0
      pages/deploy/upgradeDetail/upgradeDetail.js
  42. 1 0
      pages/deploy/upgradeDetail/upgradeDetail.json
  43. 173 0
      pages/statistics/assaign/assaign.acss
  44. 77 0
      pages/statistics/assaign/assaign.axml
  45. 379 0
      pages/statistics/assaign/assaign.js
  46. 6 0
      pages/statistics/assaign/assaign.json
  47. 76 0
      pages/statistics/getTask/getTask.acss
  48. 48 0
      pages/statistics/getTask/getTask.axml
  49. 194 0
      pages/statistics/getTask/getTask.js
  50. 6 0
      pages/statistics/getTask/getTask.json
  51. 145 0
      pages/statistics/grant/grant.acss
  52. 26 0
      pages/statistics/grant/grant.axml
  53. 79 0
      pages/statistics/grant/grant.js
  54. 6 0
      pages/statistics/grant/grant.json
  55. 164 0
      pages/statistics/myGrant/myGrant.acss
  56. 33 0
      pages/statistics/myGrant/myGrant.axml
  57. 41 0
      pages/statistics/myGrant/myGrant.js
  58. 6 0
      pages/statistics/myGrant/myGrant.json
  59. 92 0
      pages/statistics/my_issue/my_issue.acss
  60. 53 0
      pages/statistics/my_issue/my_issue.axml
  61. 189 0
      pages/statistics/my_issue/my_issue.js
  62. 7 0
      pages/statistics/my_issue/my_issue.json
  63. 85 0
      pages/statistics/my_task/my_task.acss
  64. 47 0
      pages/statistics/my_task/my_task.axml
  65. 184 0
      pages/statistics/my_task/my_task.js
  66. 7 0
      pages/statistics/my_task/my_task.json
  67. 173 0
      pages/statistics/offerAreward/offerAreward.acss
  68. 76 0
      pages/statistics/offerAreward/offerAreward.axml
  69. 369 0
      pages/statistics/offerAreward/offerAreward.js
  70. 6 0
      pages/statistics/offerAreward/offerAreward.json
  71. 44 0
      pages/statistics/openPerform/openPerform.acss
  72. 18 0
      pages/statistics/openPerform/openPerform.axml
  73. 113 0
      pages/statistics/openPerform/openPerform.js
  74. 1 0
      pages/statistics/openPerform/openPerform.json
  75. 30 0
      pages/statistics/recordOne/recordOne.acss
  76. 11 0
      pages/statistics/recordOne/recordOne.axml
  77. 25 0
      pages/statistics/recordOne/recordOne.js
  78. 1 0
      pages/statistics/recordOne/recordOne.json
  79. 70 0
      pages/statistics/repetitive_tasks_detail/repetitive_tasks_detail.acss
  80. 66 0
      pages/statistics/repetitive_tasks_detail/repetitive_tasks_detail.axml
  81. 63 0
      pages/statistics/repetitive_tasks_detail/repetitive_tasks_detail.js
  82. 5 0
      pages/statistics/repetitive_tasks_detail/repetitive_tasks_detail.json
  83. 24 0
      pages/statistics/schedule/schedule.acss
  84. 15 0
      pages/statistics/schedule/schedule.axml
  85. 25 0
      pages/statistics/schedule/schedule.js
  86. 1 0
      pages/statistics/schedule/schedule.json
  87. 53 0
      pages/statistics/taskDetail/taskDetail.acss
  88. 41 0
      pages/statistics/taskDetail/taskDetail.axml
  89. 61 0
      pages/statistics/taskDetail/taskDetail.js
  90. 5 0
      pages/statistics/taskDetail/taskDetail.json
  91. 117 0
      pages/statistics/workDetail/workDetail.acss
  92. 120 0
      pages/statistics/workDetail/workDetail.axml
  93. 53 0
      pages/statistics/workDetail/workDetail.js
  94. 5 0
      pages/statistics/workDetail/workDetail.json
  95. 83 0
      pages/statistics/workpoints/workpoints.acss
  96. 29 0
      pages/statistics/workpoints/workpoints.axml
  97. 35 0
      pages/statistics/workpoints/workpoints.js
  98. 1 0
      pages/statistics/workpoints/workpoints.json

+ 192 - 0
Component/selectEnevt/selectEnevt.acss

@@ -0,0 +1,192 @@
+
+.all{
+  background-color: #fff;
+  height: 100%;
+  margin-top: 40rpx;
+  border-radius: 20rpx 20rpx 0 0; 
+  padding-top: 80rpx;
+  z-index:3
+}
+.close{
+  width: 40rpx;
+  height: 40rpx;
+  position: absolute;
+  right: 30rpx;
+  top: 70rpx;
+}
+.search{
+    background-color: #f1f1f1;
+    border-radius: 6rpx;
+    width: 80%;
+    margin: 0 auto;
+    padding:6rpx 10rpx;
+}
+.search input{
+    background-color: #f1f1f1;
+}
+.search image{
+  width: 30rpx;
+  height: 30rpx;
+  margin-left: 10rpx;
+}
+.content{
+    margin-top: 16rpx;
+    border-top: 1px solid #f1f1f1;
+    width: 100%;
+}
+.date-btn view{
+  text-align: center;
+  padding: 20rpx 0;
+}
+.date-btn view:nth-child(1){
+  background-color: #f1f1f1;
+}
+.date-btn view:nth-child(2){
+  background-color: #26a2ff;
+  color: #fff;
+}
+.data-main{
+  margin: 32rpx 0;
+  text-align: center;
+}
+
+.data-main .dateVal{
+  color: #26a2ff;
+  width: 200rpx;
+  padding: 16rpx 0;
+  border-bottom: 1px solid #26a2ff;
+  display: inline-block;
+}
+
+.ul2{
+  width: 100%;
+  background-color: #fff;
+  box-sizing: border-box;
+}
+.li{
+    padding:20rpx 24rpx;
+    border-bottom: 1px solid #f1f1f1;
+}
+.ul2 .li .xia{
+  color: #26A2FF !important;
+}
+.shu{
+  padding: 10rpx 24rpx;
+  background: #fff;
+  font-size: 28rpx;
+  color: #26A2FF;
+  border-bottom: 1px solid #f1f1f1;
+}
+.shu view:last-child{
+  color: #ccc;
+}
+
+/* 人员 */
+.scroll{
+  width: 100%;
+  background-color: #fff;
+  box-sizing: border-box;
+  height: calc(100vh - 320rpx);
+}
+.userItem{
+    padding:14rpx 24rpx;
+    border-bottom: 1px solid #f1f1f1;
+}
+.shu{
+  padding: 14rpx 24rpx;
+  background: #fff;
+  font-size: 28rpx;
+  color: #26A2FF;
+  border-bottom: 1px solid #f1f1f1;
+}
+.shu view:last-child{
+  color: #ccc;
+}
+.search{
+    background-color: #f1f1f1;
+    border-radius: 10rpx;
+    margin: 0 32rpx;
+    padding:8rpx 10rpx;
+}
+
+.search image{
+  width: 30rpx;
+  height: 30rpx;
+  margin-left: 10rpx;
+}
+.StaffFooter{
+  position: fixed;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: #fff;
+  padding: 10rpx;
+  border-top: 1px solid #f1f1f1;
+}
+
+.staffBtn{
+    background: #26A2FF;
+    color: #fff;
+    border-radius: 6rpx;
+    height: 88rpx;
+    text-align: center;
+    line-height: 88rpx;
+    padding: 0 20rpx;
+}
+.f-left{
+  overflow-x: auto;
+}
+.rule-all-text{
+  font-size: 28rpx;
+  color: #999;
+  position: relative;
+  right: 10rpx;
+  bottom: 5rpx;
+}
+.staff-all{
+  background: rgba(245, 247, 250, 1);
+  padding: 16rpx 32rpx;
+}
+.enevt_li{
+  padding:0.2rem 0.24rem;
+  border-bottom:1px solid rgb(241, 241, 241)
+}
+.main-right{
+  margin-left: 10rpx;
+}
+.main-right .name{
+  padding-top:12rpx;
+  font-size: 36rpx;
+}
+.main-right .context{
+    overflow : hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 2;
+    -webkit-box-orient: vertical;
+    padding: 10rpx 0; 
+}
+.main-right .date{
+   color: #909399;
+}
+.item{
+  padding: 10rpx 0;
+}
+.item .flex-2{
+    padding-left: 28rpx; 
+}
+.users{
+  margin-left: 20rpx;
+}
+.num{
+  font-size: 28rpx;
+  color: #909399;
+}
+.index{
+  width: 90rpx;
+  text-align: center;
+}
+.index image{
+  width: 40rpx;
+  height: 40rpx;
+}

+ 38 - 0
Component/selectEnevt/selectEnevt.axml

@@ -0,0 +1,38 @@
+<view class="all">
+  <image mode="scaleToFill" catchTap="onClose" class="close" src="../../../image/close.png"></image>
+  <form onReset="onReset">
+    <view class="search flex-box flex-v-ce">
+      <image mode="scaleToFill" src="../../../image/ss.png"></image>
+      <input placeholder="请输入姓名或事件内容搜索" onInput="bindKeyInput" class="flex-1" value="{{keyVal}}"></input>
+      <button a:if="{{isVal}}" class="delVal" formType="reset">×</button>
+    </view>
+  </form>
+  <view class="content">
+    <scroll-view class="scroll" a:if="{{list.length>0}}" scroll-y="{{true}}" onScrollToLower="onScrollToLower">
+      <radio-group class="radio-group" onChange="radioChange" name="lib">
+        <label  class="flex-box enevt_li border-bottom" a:for="{{list}}" key="label-{{index}}">
+          <img-box name="{{item.employee_name}}" imgUrl="{{item.employee_img_url}}" height="80rpx" width="80rpx" fSize="24rpx"></img-box>
+          <view class="flex-1 main-right">
+            <view class="flex-box flex-v-ce">
+              <view class="name flex-1">{{item.employee_name}}</view>
+              <view class="red da" a:if="{{item.point>0}}">+{{item.point}}{{item.ptObj.name}}</view>
+              <view class="green da" a:else>{{item.point}}{{item.ptObj.name}}</view>
+            </view>
+            <view class="flex-box flex-v-ce">
+              <view class="context flex-1" a:if="{{item.remark}}">{{item.remark}}</view>
+              <radio value="{{item}}" checked="{{item.checked}}"/>
+            </view>
+            <view class="flex-box flex-v-ce">
+              <view class="date flex-1">{{item.event_time}}</view>
+            </view>
+          </view>
+        </label  >
+        <view class="noDatas" a:if="{{isData}}">没有更多咯</view>
+      </radio-group>
+    </scroll-view>
+    <no-data a:if="{{list.length==0}}"></no-data>
+  </view>
+  <view class="StaffFooter flex-box-end">
+    <view class="staffBtn" onTap="onConfirm">确定</view>
+  </view>
+</view>

+ 90 - 0
Component/selectEnevt/selectEnevt.js

@@ -0,0 +1,90 @@
+var app = getApp()
+var that;
+Component({
+  data: {
+    list: [],//人员集合
+    isData:'',
+    page:1,
+    selectEnevt:{},
+    keyVal:'',
+  },
+  props: {
+    onClose: (data) => console.log(data),
+    onConfirm: (data) => console.log(data),
+    defaultEnevt: '',
+    defaultVal:'',
+  },
+  didMount() {
+    that = this;
+    this.setData({ keyVal: this.props.defaultVal,isVal:this.props.defaultVal? true:false })
+    that.getlist();
+  },
+  methods: {
+    radioChange: function(e) {
+      this.setData({
+        selectEnevt:e.detail.value
+      })
+    },
+    onReset() {
+      this.setData({
+        isVal: false,
+        keyVal: ''
+      })
+      that.getlist();
+    },
+    onConfirm() {
+      this.props.onConfirm(this.data.selectEnevt,this.data.keyVal);
+      this.onClose();
+    },
+    //搜索
+    bindKeyInput(e) {
+      this.setData({
+        keyVal: e.detail.value,
+        isVal: e.detail.value ? true : false
+      })
+      that.getlist();
+    },
+    //关闭
+    onClose(e) {
+      this.props.onClose();
+    },
+    //获取事件列表
+    getlist(is) {
+      app.$get('api/integral/statistics/integral', {page:that.data.page, keyword:that.data.keyVal, page_size: 20}).then((res) => {
+        var data = res.data.data.list;
+        data.map((item) => {
+          item.ptObj = app.getTypesItem(item.pt_id);
+          item.checked=false;
+          if(item.id==that.props.defaultEnevt){
+            item.checked=true;
+          }
+        })
+        if (is) {
+          if (data.length == 0) {
+            this.setData({
+              isData: true
+            })
+            return;
+          }
+          var list = that.data.list;
+          this.setData({
+            list: list.concat(data)
+          })
+        } else {
+          this.setData({ list: [] });
+          this.setData({
+            list: data,
+            isData: false
+          })
+        }
+      })
+    },
+    //上啦加载
+    onScrollToLower() {
+      if (!that.data.isData) {
+        this.setData({ page: ++that.data.page })
+        this.getlist(true);
+      }
+    },
+  },
+});

+ 7 - 0
Component/selectEnevt/selectEnevt.json

@@ -0,0 +1,7 @@
+{
+  "component": true,
+    "usingComponents": {
+    "img-box": "/Component/img-box/index",
+    "no-data": "/Component/noData/noData"
+  }
+}

+ 63 - 0
Component/selectSectionBottom/selectSectionBottom.acss

@@ -0,0 +1,63 @@
+
+.all{
+  background-color: #fff;
+  height: 100%;
+  margin-top: 40rpx;
+  border-radius: 20rpx 20rpx 0 0; 
+  padding-top: 80rpx;
+  z-index:3
+}
+.close{
+  width: 40rpx;
+  height: 40rpx;
+  position: absolute;
+  right: 30rpx;
+  top: 70rpx;
+}
+.content{
+    margin-top: 16rpx;
+    border-top: 1px solid #f1f1f1;
+    width: 100%;
+}
+.search{
+    background-color: #f1f1f1;
+    border-radius: 6rpx;
+    width: 80%;
+    margin: 0 auto;
+    padding:6rpx 10rpx;
+}
+.search input{
+    background-color: #f1f1f1;
+}
+.search image{
+  width: 30rpx;
+  height: 30rpx;
+  margin-left: 10rpx;
+}
+
+.ul{
+  background-color: #fff;
+  height: calc(100vh - 390rpx);
+}
+.li2{
+    height: 100rpx;
+    border-bottom: 1px solid #f1f1f1;
+}
+.ul .li2 .xia{
+  color: #26A2FF !important;
+  padding-right: 24rpx
+}
+
+.shu{
+  padding: 14rpx 24rpx;
+  background: #fff;
+  font-size: 28rpx;
+  color: #26A2FF;
+  border-bottom: 1px solid #f1f1f1;
+}
+.shu view:last-child{
+  color: #ccc;
+}
+.images{
+  width:50rpx;height:50rpx; margin:0 10rpx
+}

+ 34 - 0
Component/selectSectionBottom/selectSectionBottom.axml

@@ -0,0 +1,34 @@
+<view class="all">
+  <image mode="scaleToFill" catchTap="onClose" class="close" src="../../../image/close.png"></image>
+  <view class="content">
+    <view>
+      <view class="flex-box flex-v-ce shu" a:if="{{terr.length>1}}">
+        <view a:for="{{terr}}" class="flex-box flex-v-ce flex-d-wrap" data-index="{{index}}" catchTap="activeItem" data-item="{{item}}">
+          <image mode="scaleToFill" src="../../../image/right.png" style="width:20rpx;height:20rpx;margin:0 6rpx;" a:if="{{index!=0}}"/>
+          <text style="max-width:2.5rem" class="font-flex-word">{{item.name}}</text>
+        </view>
+      </view>
+      <scroll-view class="ul" scroll-y="{{true}}">
+        <view class="flex-box flex-v-ce li2" a:for="{{rule_tree}}" a:key="{{index}}">
+          <label class="flex-1">
+            <view class="flex-box flex-v-ce flex-1" style="padding-left:24rpx;">
+              <checkbox checked="{{item.checked}}" data-index="{{index}}" data-item="{{item}}" onChange="radioChange" name="{{item.id}}"/>
+              <image class="images" src="../../../image/BM.png"/>
+              <view class="font-flex-word" style="width:4rem">{{item.name}}</view>
+            </view>
+          </label>
+          <view class="xia" data-item="{{item}}" catchTap="openDown" a:if="{{item._child.length>0}}">| 下级</view>
+        </view>
+      </scroll-view>
+    </view>
+  </view>
+  <view class="StaffFooter flex-box flex-v-ce">
+    <view class="flex-1 f-left flex-box flex-v-ce">
+      <view a:for="{{selectSenction}}" style="margin-right:10rpx;" a:if="{{item.id}}">
+        <image a:if="{{item.img_url}}" class="img-url" style="width:70rpx;height:70rpx;display: inline-block;  position: relative;top: 6rpx;" src="{{item.img_url}}"></image>
+        <view a:else style="width: 70rpx;height: 70rpx;border-radius: 100%;background: #26A2FF;color: #fff;text-align: center;line-height: 70rpx;font-size: 24rpx;">{{item.name.substr(item.name.length-2)}}</view>
+      </view>
+    </view>
+    <view class="staffBtn" onTap="onConfirm">确定</view>
+  </view>
+</view>

+ 148 - 0
Component/selectSectionBottom/selectSectionBottom.js

@@ -0,0 +1,148 @@
+var app = getApp()
+var that;
+Component({
+  mixins: [],
+  data: {
+    all_rule_list: {},
+    isShow: false,
+    terr: [
+      { name: '全部', id: 0 }
+    ],
+    rule_tree: [],
+    selectSenction: [],
+  },
+  props: {
+    onConfirm: (data) => console.log(data),
+    onClose: (data) => console.log(data),
+    defaultSection: [],
+  },
+  didMount() {
+    that = this;
+    this.setData({
+      isShow: this.props.isShow,
+      terr: [{ name: '全部', id: 0 }],
+      selectSenction: this.props.defaultSection,
+    })
+    this.getBmData();
+  },
+  methods: {
+    onConfirm() {
+      if (!this.data.selectSenction) {
+        app.globalData.showToast("请选择部门");
+        return;
+      }
+      this.props.onConfirm(this.data.selectSenction);
+      this.props.onClose();
+    },
+    //点击导航栏
+    activeItem(e) {
+      var item = e.target.dataset.item;
+      var index = e.target.dataset.index;
+      var terr = this.data.terr;
+      if ((index + 1) == terr.length) { return false };
+      this.setData({ rule_tree: [] });
+      if (index == 0) {
+       var all_rule_list= this.data.all_rule_list;
+       var selectSenction=this.data.selectSenction;
+        all_rule_list.map((item) => { //设置列表的选中状态
+          item.checked = false;
+          if (selectSenction.length > 0) {
+            selectSenction.forEach(item2 => {
+              if (item.id == item2.id) {
+                item.checked = true;
+              }
+            })
+          }
+        })
+        this.setData({
+          terr: [{ name: '全部', id: 0 }],
+          rule_tree: all_rule_list
+        })
+      } else {
+        var arr = terr.slice(0, index + 1);
+        this.setData({
+          rule_tree: item._child,
+          terr: arr
+        })
+      }
+    },
+    // 点击下一级
+    openDown(e) {
+      this.setData({ rule_tree: [] });
+      var item = e.target.dataset.item;
+      var terr = this.data.terr;
+      var selectSenction=this.data.selectSenction;
+      terr.push(item);
+      if (item._child.length > 0) {
+        item._child.map(item => {
+          if (selectSenction.length > 0) {
+            selectSenction.forEach(item2 => {
+              if (item.id == item2.id) {
+                item.checked = true;
+              }
+            })
+          }
+        })
+        that.setData({
+          rule_tree: item._child,
+          terr: terr
+        })
+      }
+    },
+    radioChange: function (e) {
+      var selectSenction = this.data.selectSenction;
+      var isExist = false;
+      let item = e.target.dataset.item;
+      let index = e.target.dataset.index;
+      let checked = `rule_tree[${index}].checked`;//获取当前控制选中的字段
+      let elm = this.data.rule_tree[index].checked;//当前的状态
+      this.setData({
+        [checked]: !elm,
+      })
+      if (e.detail.value) {//当有值时选中
+        selectSenction.forEach((element, _this) => {
+          if (element.id == item.id) {
+            isExist = true;
+          }
+        });
+        if (!isExist) {
+          selectSenction.push(item);
+        }
+      } else {//取消选中
+        selectSenction.forEach((element, index, _this) => {
+          if (element.id == item.id) {
+            _this.splice(index, 1);
+          }
+        });
+      }
+      this.setData({
+        selectSenction: selectSenction
+      })
+    },
+    //获取部门列表
+    getBmData() {
+      app.$get("api/department/tree", {}).then((res) => {
+        var list = res.data.data.list || [];
+        var defaultSection = that.props.defaultSection;
+        list.map((item) => { //设置列表的选中状态
+          item.checked = false;
+          if (defaultSection.length > 0) {
+            defaultSection.forEach(item2 => {
+              if (item.id == item2.id) {
+                item.checked = true;
+              }
+            })
+          }
+        })
+        this.setData({
+          rule_tree: list,
+          all_rule_list: list,
+        })
+      })
+    },
+    //关闭
+    onClose(e) {
+      this.props.onClose();
+    },
+  },
+});

+ 7 - 0
Component/selectSectionBottom/selectSectionBottom.json

@@ -0,0 +1,7 @@
+{
+  "component": true,
+    "usingComponents": {
+    "img-box": "/Component/img-box/index",
+    "no-data": "/Component/noData/noData"
+  }
+}

+ 70 - 0
Component/selectSxZp/selectSxZp.acss

@@ -0,0 +1,70 @@
+.all-date{
+  overflow: hidden;
+  height: 100vh;
+  position: fixed;
+  left: 0;
+  right:0;
+  top:80rpx;
+  z-index: 5;
+  /* background-color: rgba(0,0,0,.7); */
+}
+.staff-header{
+  background-color: #fff;
+  box-shadow:inset 0px 0px 5px #ccc;
+  padding-top: 28rpx;
+  margin-top: 0rpx;
+  transform: translateY(-100%);
+    position: fixed;
+  left: 0;
+  right: 0;
+  z-index: 8;
+}
+
+.staff-btn view{
+  text-align: center;
+  padding: 20rpx 0;
+}
+.staff-btn view:nth-child(1){
+  background-color: #f1f1f1;
+}
+.staff-btn view:nth-child(2){
+  background-color: #26a2ff;
+  color: #fff;
+}
+
+.sx-ul{
+  width: 100%;
+  background-color: #fff;
+  height: 500rpx;
+  box-sizing: border-box;
+}
+.rule-title{
+  margin-bottom: 20rpx;
+  padding:0 28rpx;
+}
+.rule-item{
+  margin-bottom: 20rpx;
+}
+.ruleGe{
+  background: #f5f7fa;
+  padding: 16rpx;
+  font-size: 28rpx;
+  /* width: 22%; */
+  text-align: center;
+  box-sizing: border-box;
+  margin: 0rpx  1.5%  20rpx 1.5%;
+}
+.rule-all-text{
+  font-size: 28rpx;
+  color: #999;
+  position: relative;
+  right: 10rpx;
+  bottom: 5rpx;
+}
+.rule-items{
+  padding: 0 14rpx;
+}
+.ruleActive{
+    color: #26a2ff!important;
+    background: #26a2ff33!important;
+}

+ 32 - 0
Component/selectSxZp/selectSxZp.axml

@@ -0,0 +1,32 @@
+<view class="all-date">
+  <view class="data-tier" catchTap="onClose"></view>
+  <view class="staff-header {{isShow?'showPop':''}}">
+    <scroll-view class="sx-ul" scroll-y="{{true}}">
+      <view a:for="{{sxArr}}" class="rule-item">
+        <block a:if="{{item.name=='任务状态'}}">
+          <block a:if="{{typeIndex==1}}">
+            <view class="flex-box flex-v-ce rule-title">
+              <view class="flex-1">{{item.name}}</view>
+            </view>
+            <view class="flex-box flex-d-wrap rule-items">
+              <view catchTap="ruleActive" data-index="{{index}}" data-indexChild="{{idx}}" class="{{itemName.checked==true? 'ruleActive':''}} ruleGe font-flex-word" a:for="{{item.child}}" a:for-index="idx" a:for-item="itemName">{{itemName.name}}</view>
+            </view>
+          </block>
+        </block>
+        <block a:else>
+          <view class="flex-box flex-v-ce rule-title">
+            <view class="flex-1">{{item.name}}</view>
+          </view>
+          <view class="flex-box flex-d-wrap rule-items">
+            <view catchTap="ruleActive" data-index="{{index}}" data-indexChild="{{idx}}" class="{{itemName.checked==true? 'ruleActive':''}} ruleGe font-flex-word" a:for="{{item.child}}" a:for-index="idx" a:for-item="itemName">{{itemName.name}}</view>
+          </view>
+        </block>
+      </view>
+    </scroll-view>
+    <view class="flex-box staff-btn">
+      <view class="flex-1" catchTap="onClose">取消</view>
+      <view class="flex-1" catchTap="onConfirm">确定</view>
+    </view>
+  </view>
+  <view class="meng" catchTap="onClose"></view>
+</view>

+ 123 - 0
Component/selectSxZp/selectSxZp.js

@@ -0,0 +1,123 @@
+var app = getApp()
+var that;
+Component({
+  mixins: [],
+  data: {
+    isShow: false,
+    typeIndex: 1,
+    sxArr: [
+      {
+        name: '积分类型',
+        child: [
+          { name: "全部", code: 0, checked: false },
+          { name: "绩效分", code: 1, checked: false },
+          { name: "A分", code: 2, checked: false },
+          { name: "B分", code: 3, checked: false },
+        ],
+      },
+      {
+        name: '任务状态',
+        child: [
+          { name: "全部", code: "all", checked: false },
+          { name: "进行中", code: "running", checked: false },
+          { name: "已完成", code: "complete", checked: false },
+        ],
+      },
+      {
+        name: '排序',
+        child: [
+          { name: "按发布时间", code: "publish", checked: false },
+          { name: "按截止时间", code: "expire", checked: false },
+        ],
+      }
+    ],
+    sxArr2: [
+      {
+        name: '积分类型',
+        child: [
+          { name: "全部", code: 0, checked: false },
+          { name: "绩效分", code: 1, checked: false },
+          { name: "A分", code: 2, checked: false },
+          { name: "B分", code: 3, checked: false },
+        ],
+      },
+      {
+        name: '任务状态',
+        child: [
+          { name: "全部", code: "all", checked: false },
+          { name: "进行中", code: "running", checked: false },
+          { name: "已完成", code: "complete", checked: false },
+        ],
+      },
+      {
+        name: '排序',
+        child: [
+          { name: "按发布时间", code: "publish", checked: false },
+          { name: "按截止时间", code: "expire", checked: false },
+        ],
+      }
+    ],
+  },
+  props: {
+    onConfirm: (data) => console.log(data),
+    onClose: (data) => console.log(data),
+    defaultSx: ['0', 'all', 'publish'],
+    typeIndex: 1,
+  },
+  didMount() {
+    that = this;
+    var sxArr = this.data.sxArr;
+    if (this.props.defaultSx.length > 0) {
+      sxArr.map(item => {
+        item.child.map(item2 => {
+          item2.checked = false;
+          if (this.props.defaultSx[0] == item2.code) {
+            item2.checked = true;
+          }
+          if (this.props.defaultSx[1] == item2.code) {
+            item2.checked = true;
+          }
+          if (this.props.defaultSx[2] == item2.code) {
+            item2.checked = true;
+          }
+        })
+      })
+    }
+    this.setData({ isShow: this.props.isShow, sxArr: sxArr, typeIndex: this.props.typeIndex })
+  },
+  methods: {
+    //单
+    ruleActive(e) {
+      var index = e.target.dataset.index;
+      var sxArrItem = `sxArr[${index}].child`;
+      this.setData({
+        [sxArrItem]: this.data.sxArr2[index].child
+      })
+      var indexChild = e.target.dataset.indexChild;
+      var isChecked = this.data.sxArr[index].child[indexChild].checked;
+      var elem = `sxArr[${index}].child[${indexChild}].checked`;
+      this.setData({
+        [elem]: !isChecked
+      })
+    },
+    onConfirm() {
+      var sxArr = this.data.sxArr;
+      var arr = [];
+      sxArr.forEach(item => {
+        if (item.child.length > 0) {
+          item.child.forEach((a) => {
+            if (a.checked == true) {
+              arr.push(a.code);
+            }
+          })
+        }
+      });
+      this.props.onConfirm(arr);
+      this.props.onClose();
+    },
+    //关闭
+    onClose(e) {
+      this.props.onClose();
+    },
+  },
+});

+ 3 - 0
Component/selectSxZp/selectSxZp.json

@@ -0,0 +1,3 @@
+{
+  "component": true
+}

二进制
image/a7.png


二进制
image/a_apply.png


二进制
image/a_entry.png


二进制
image/add_ticket.png


二进制
image/all.png


二进制
image/apply_list.png


二进制
image/att_statistics.png


二进制
image/caback6.png


二进制
image/delete.png


二进制
image/dept.png


二进制
image/entry_list.png


二进制
image/event_list_a.png


二进制
image/kf.png


二进制
image/my_publish.png


二进制
image/my_task.png


二进制
image/my_ticket.png


二进制
image/noTask.png


二进制
image/point_entry.png


二进制
image/rule.png


二进制
image/sj.png


二进制
image/sj2.png


二进制
image/task_hall.png


+ 9 - 0
pages/deploy/upgrade/upgrade.acss

@@ -0,0 +1,9 @@
+
+.li{
+  background: #fff;
+  padding: 20rpx 28rpx;
+  margin-top: 20rpx;
+}
+.li view:nth-child(2){
+  font-size: 28rpx;
+}

+ 9 - 0
pages/deploy/upgrade/upgrade.axml

@@ -0,0 +1,9 @@
+<view>
+  <view class="body">
+    <view class="li" a:for="{{list}}" catchTap="openDetail" data-id="{{item.id}}">
+      <view class="font-flex-word">{{item.version}}</view>
+      <view class="fontColorT">发布时间:{{item.create_time}}</view>
+    </view>
+    <no-data a:if="{{list.length==0}}"></no-data>
+  </view>
+</view>

+ 29 - 0
pages/deploy/upgrade/upgrade.js

@@ -0,0 +1,29 @@
+var app = getApp();
+var that;
+Page({
+  data: {
+    list:[],
+    page:1
+  },
+  onLoad() {
+    that = this;
+    dd.setNavigationBar({ title: "版本更新" });
+    this.getList();
+  },
+  getList(){
+    app.$get("api/version/list",{page:this.data.page,page_size:100,cate:1}).then((res) => {
+      var obj=res.data.data.list;
+      this.setData({
+        list:obj
+      })
+    })
+  },  
+  //跳转
+  openDetail(e) {
+    var id = e.target.dataset.id;
+    dd.navigateTo({
+      url: '../upgradeDetail/upgradeDetail?id='+id
+    })
+  },
+
+});

+ 5 - 0
pages/deploy/upgrade/upgrade.json

@@ -0,0 +1,5 @@
+{
+  "usingComponents": {
+    "no-data":"/Component/noData/noData"
+  }
+}

+ 4 - 0
pages/deploy/upgradeDetail/upgradeDetail.acss

@@ -0,0 +1,4 @@
+.title{
+  text-align: center;
+  padding: 0.28rem
+}

+ 4 - 0
pages/deploy/upgradeDetail/upgradeDetail.axml

@@ -0,0 +1,4 @@
+<view>
+  <view class="title">{{obj.version}}</view>
+  <rich-text nodes="{{nodes}}" onTap="tap"></rich-text>
+</view>

+ 33 - 0
pages/deploy/upgradeDetail/upgradeDetail.js

@@ -0,0 +1,33 @@
+var app = getApp();
+var that;
+Page({
+  data: {
+    obj: {},
+    nodes: [{
+      
+      name: 'div',
+      attrs: {
+        class: 'wrapper',
+        style: 'color: orange;',
+      },
+      children: [{
+        type: 'text',
+        text: 'Hello World!',
+      }],
+    }],
+  },
+  onLoad(e) {
+    that = this;
+    dd.setNavigationBar({ title: "更新内容" });
+    if (e.id) {
+      this.getList(e.id);
+    }
+  },
+  getList(id) {
+    app.$get("api/version/info", { version_id: id }).then((res) => {
+      this.setData({
+        obj: res.data.data
+      })
+    })
+  },
+});

+ 1 - 0
pages/deploy/upgradeDetail/upgradeDetail.json

@@ -0,0 +1 @@
+{}

+ 173 - 0
pages/statistics/assaign/assaign.acss

@@ -0,0 +1,173 @@
+.form-top{
+  background-color: #fff;
+  padding:28rpx;
+  border-bottom: 1px solid #f1f1f1;
+}
+.form-top .flex-1{
+  text-align: right;
+  color: #969799;
+}
+.label{
+  position: relative;
+  width: 160rpx;
+  font-size: 32rpx
+}
+.isBt::before{
+  position: absolute;
+  content: "*";
+  color: #F56C6C;
+  left: -16rpx;
+}
+.inputs .li{
+  background-color: #fff;
+  padding:28rpx;
+  position: relative;
+}
+.li view:nth-child(2){
+  text-align: right;
+  color: #969799;
+}
+.title{
+  padding: 16rpx 28rpx;
+  font-size: 28rpx;
+}
+textarea{
+  padding-left: 10rpx;
+  padding-right: 0;
+  height: 150rpx;
+  position: relative;
+}
+.textarea::before{
+  position: absolute;
+  content: "*";
+  color: #F56C6C;
+  left: -16rpx;
+}
+.add{
+  background-color: #fff;
+  padding: 28rpx 28rpx;
+  color: #26A2FF;
+  margin: 28rpx 0;
+  margin-bottom: 40rpx; 
+}
+.addImg{
+  width: 50rpx;
+  height: 50rpx;
+  position: absolute;
+  bottom: 20rpx;
+  z-index: 998;
+}
+.rightImg{
+  width: 30rpx;
+  height: 30rpx;
+  margin-left: 10rpx;
+}
+.btn-area{
+  position: fixed;
+  background: #fff;
+  bottom: 0;
+  width: 100%;
+  border-top: 1px solid #f1f1f1;
+  padding: 10rpx;
+}
+.defBtn{
+  width: 90%;
+  margin: 0 auto;
+  border-radius: 10rpx;
+  height: 90rpx;
+  text-align: center;
+  line-height: 90rpx;
+}
+.showImg{
+  width: 160rpx;
+  height: 160rpx;
+  margin-bottom: 28rpx;
+  margin-right:40rpx; 
+  margin-top: 28rpx;
+}
+.detele{
+  color: #fff;
+  position: absolute;
+  height: 40rpx;
+  width: 40rpx;
+  border-radius: 100%;
+  background-color: #969799;
+  text-align: center;
+  line-height: 40rpx;
+  right: 10rpx;
+  top: 10rpx;
+}
+.box{
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: rgba(0,0,0,0.2);
+  z-index: 999;
+  transform: translate(0,100%);
+}
+.inputs{
+  margin-bottom: 200rpx;
+}
+ .inputs .li .input_text{
+  text-align: left;
+  font-size: 24rpx;
+}
+.inputs .li input{
+  width: 100%;
+}
+.jiang{
+  border: 1px solid #f1f1f1;
+  border-radius: 4rpx;
+  width: 40rpx;
+  text-align: center
+}
+.picker-box{
+  width: 110rpx;
+  border-radius: 50rpx;
+  background-color: #f1f1f1;
+  position: relative;
+  height: 60rpx;
+}
+.picker-box text{
+ text-align: center;
+ line-height: 60rpx;
+ font-size: 24rpx;
+}
+.yuan{
+  width: 50rpx;
+  height: 50rpx;
+  background: #26A2FF;
+  border-radius: 100rpx;
+  position: absolute;
+  top: 5rpx;
+}
+.picker-left{
+  left: 5rpx;
+}
+.picker-right{
+  right: 5rpx;
+}
+.userList{
+  height: 40rpx;
+  font-size: 32rpx;
+}
+.van-radio {
+    position: relative;
+    display: inline-block;
+    text-align: center;
+    width: 1.28rem;
+    height: .48rem;
+    background: #f5f7fa;
+    border-radius: .28rem;
+    z-index: 1;
+    color: #222;
+    line-height: 0.48rem;
+    font-size: 0.24rem;
+    margin-left: 20rpx;
+}
+.isTypes{
+  background: #26A2FF;
+  color: #fff
+}

+ 77 - 0
pages/statistics/assaign/assaign.axml

@@ -0,0 +1,77 @@
+<view>
+  <view>
+    <view class="inputs">
+      <view class="li">
+        <textarea class="textarea" maxlength="100" value="{{items.remark}}" onInput="bindTextAreaBlur" placeholder="请输入任务内容" data-index="{{index}}"></textarea>
+        <image mode="scaleToFill" src="../../../image/addImg.png"  class="addImg" catchTap="openImg"/>
+      </view>
+      <view style="background:#fff;padding:0 28rpx;" a:if="{{items.file_list[0]}}" class="flex-box flex-v-ce">
+        <view a:for="{{items.file_list}}" key="index" a:for-item="imgs" a:for-index="imgIndex" style="position:relative">
+          <text class="detele" data-itemIndx="{{index}}" data-index="{{imgIndex}}" catchTap="deteleImg">×</text>
+          <image mode="scaleToFill" class="showImg" src="{{imgs}}" data-index="{{imgIndex}}" data-item="{{items.file_list}}" catchTap="showImg"/>
+        </view>
+      </view>
+      <view class="flex-box li margin-bottom" style="padding:15rpx 28rpx;margin-top:24rpx">
+        <view class="label isBt" style="position: relative;top:10rpx;">任务积分</view>
+        <text class="red" style="position: relative;top:10rpx;">+</text>
+        <view class="flex-1">
+          <input value="{{item.point2}}"  placeholder="0" type="number" onInput="bindKeyInput"  class="flex-1"/>
+        </view>
+      </view>
+      <view class="flex-box flex-v-ce form-top" catchTap="openSelect" data-num="1">
+        <view class="label isBt">执行人</view>
+        <view class="flex-1 font-flex-word userList">
+          <block a:for="{{users}}">
+            <text style="font-size:32rpx">{{item.name}},</text>
+          </block>
+        </view>
+        <image mode="scaleToFill" src="../../../image/right.png" class="rightImg"/>
+      </view>
+      <view class="flex-box flex-v-ce li"  data-num="2" data-item="{{{id:items.reviewer_id,name:items.revieweName}}}" catchTap="openSelect">
+        <view class="label isBt">审批人</view>
+        <view class="flex-1">{{items.revieweName}}</view>
+        <image mode="scaleToFill" src="../../../image/right.png" class="rightImg"/>
+      </view>
+      <view class="flex-box flex-v-ce li">
+        <view class="label isBt">任务类型</view>
+        <view class="flex-1 flex-box-end flex-flex-v-ce">
+            <view a:for="{{types}}">
+                <text a:if="{{item.code!=='JX'}}"  catchTap="openType" data-id="{{item.id}}" class="van-radio {{items.pt_id==item.id? 'isTypes':''}}">{{item.name}}</text>
+            </view>
+        </view>
+      </view>
+
+      <view class="flex-box flex-v-ce li  margin-bottom" catchTap="openDate" data-index="{{index}}">
+        <view class="label isBt">截止时间</view>
+        <view class="flex-1">{{items.expire_time}}</view>
+        <image mode="scaleToFill" src="../../../image/right.png" class="rightImg"/>
+      </view>
+      <view class="li">
+        <textarea maxlength="100" value="{{item.remark}}" onInput="bindTextAreaBlur" placeholder="请输入任务描述" data-index="{{index}}"></textarea>
+      </view>
+      <view class="flex-box flex-v-ce li">
+        <view class="label">重复周期</view>
+        <view class="flex-1">
+          <picker onChange="bindObjPickerChange" value="{{arrIndex}}" range="{{objectArray}}" range-key="name">
+              <view class="row-extra">{{objectArray[arrIndex].name}}</view>
+          </picker>
+        </view>
+        <image mode="scaleToFill" src="../../../image/right.png" class="rightImg"/>
+      </view>
+      <view class="flex-box li" style="padding:15rpx 28rpx;">
+        <view class="label" style="position: relative;top:10rpx;">逾期扣分</view>
+        <text class="green" style="position: relative;top:10rpx;">-</text>
+        <view class="flex-1">
+          <input value="{{item.point2}}"  placeholder="每逾期一天扣多少分" type="number" onInput="bindKeyInput2"  class="flex-1"/>
+        </view>
+      </view>
+    </view>
+    <view class="btn-area">
+      <button type="default" loading="{{disabled}}" class="defBtn" disabled="{{disabled}}" catchTap="formSubmit">提交</button>
+    </view>
+  </view>
+  <view class="box" animation="{{animationInfo}}">
+    <select-section-staff isLeadership="{{true}}" isBoss="{{true}}" selectUser="{{users}}" onClose="onClose" onConfirm="onSelectUser" a:if="{{isShowType=='1'}}"/>
+    <select-section-staff-two superior_list="{{superior_list}}" islead="{{true}}" selectUser="{{reviewerObj}}" onClose="onClose" onConfirm="onSelectUser2" a:if="{{isShowType=='2'}}"/>
+  </view>
+</view>

+ 379 - 0
pages/statistics/assaign/assaign.js

@@ -0,0 +1,379 @@
+var app = getApp()
+var that;
+var animation;
+Page({
+  data: {
+    users: [],
+    items: {
+      targets: [],//工作执行者列表,以逗号分割的字符串或直接传入数组
+      pt_id: 3,//积分种类id
+      task_name: '',//任务名
+      task_remark: '',//任务详细描述
+      base_point: '',//任务参考积分
+      expire_time: '',//截至时间 格式:2020-02-02 12:00
+      package_id: '',//绩效任务包id 绩效任务包发布工作时必须大于0,其余工作发布为0
+      weight: '',//绩效权重 绩效任务包发布工作时必须大于0,其余工作发布为0
+      file_list: [],//附件地址列表
+      reviewer_id: '',//审批者id
+      revieweName: '',
+      timeout_deduction_point: '',//逾期扣分/月
+      unqualified: '',//评分标准 不合格-分数
+      qualified: '',//
+      satisfied: '',//
+      super_satisfied: '',//
+      cate_id: '',// 共组分类id   
+    },
+    reviewerObj: [],//默认审批人
+    objectArray: [
+      {
+        id: 0,
+        name: '不重复',
+      },
+      {
+        id: 1,
+        name: '每天重复',
+      },
+      {
+        id: 2,
+        name: '每周重复',
+      },
+      {
+        id: 3,
+        name: '每月重复',
+      },
+    ],
+    arrIndex: 0
+  },
+  onLoad() {
+    that = this;
+    dd.setNavigationBar({ title: "指派任务" });
+    that.setData({
+      types: app.globalData.types
+    })
+  },
+  bindObjPickerChange(e) {
+    console.log('picker发送选择改变,携带值为', e.detail.value);
+    this.setData({
+      arrIndex: e.detail.value,
+    });
+  },
+  openType(e) {
+    var id = e.target.dataset.id;
+    that.setData({
+      [`items.pt_id`]: id
+    })
+  },
+  onShow() {
+    animation = dd.createAnimation({
+      duration: 200,
+      timeFunction: "linear",
+    });
+  },
+  //积分输入
+  bindKeyInput(e) {
+    var point = `items.base_point`;
+    this.setData({
+      [point]: e.detail.value,
+    });
+  },
+  //积分输入
+  bindKeyInput2(e) {
+    var point = `items.timeout_deduction_point`;
+    this.setData({
+      [point]: e.detail.value,
+    });
+  },
+
+  //显示图片
+  showImg(e) {
+    var index = e.target.dataset.index;
+    var item = e.target.dataset.item
+    dd.previewImage({
+      current: index,
+      urls: item
+    });
+  },
+  //关闭规则
+  onClose() {
+    animation.translateY(1200).step();
+    that.setData({
+      animationInfo: animation.export()
+    });
+    that.setData({ isShowType: '' });
+  },
+  //选择弹窗
+  openSelect(e) {
+    var num = e.target.dataset.num;
+
+    if (e.target.dataset.item) {
+      if (e.target.dataset.item.id) {
+        that.setData({ reviewerObj: [e.target.dataset.item] });
+      } else {
+        that.setData({ reviewerObj: [] });
+      }
+    }
+    that.setData({
+      isShowType: num,
+    });
+    animation.translateY(0).step();
+    that.setData({
+      animationInfo: animation.export()
+    });
+  },
+  //删除图片
+  deteleImg(e) {
+    var index = e.target.dataset.index;//获取itemS集合中对应的files
+    var files = that.data.items.file_list;//获取itemS集合中对应的files
+    var files_box = `items.file_list`;//
+    app.globalData.arrRemoveObj(files, files[index]);
+    that.setData({
+      [files_box]: files
+    });
+
+  },
+  //图片选择
+  openImg(e) {
+    var files = that.data.items.file_list;
+    if (files.length >= 3) {
+      app.globalData.showToast("只能上传三张");
+      return false;
+    }
+    dd.chooseImage({
+      count: 1,
+      success: (res) => {
+        that.postImg(res.filePaths[0]);
+      },
+    });
+  },
+  postImg(img_url) {
+    var files_box = `items.file_list`;
+    var files = that.data.items.file_list;
+    dd.httpRequest({
+      url: app.globalData.imgHttpUrl,
+      method: 'POST',
+      data: {
+        md5: that.random_string(32),
+        'name': app.globalData.day
+      },
+      success: function (res) {
+        if (app.globalData.userData.site_id) {
+          var key = 'intesys/dd/' + app.globalData.userData.site_id + "/" + app.globalData.day + '/' + that.random_string(32) + '.png';
+        } else {
+          var key = 'intesys/dd/' + app.globalData.day + '/' + that.random_string(32) + '.png';
+        }
+        var obj = res.data.data;
+        dd.uploadFile({
+          url: app.globalData.ALIOSS_URL,
+          fileType: 'image',
+          fileName: 'file',
+          filePath: img_url,
+          formData: {
+            key: key,
+            policy: obj.policy,
+            OSSAccessKeyId: obj.accessid,
+            success_action_status: 200,
+            signature: obj.signature
+          },
+          success: (res) => {
+            if (res.statusCode == 200) {
+              if (files.length > 0) {
+                files.push('http://cdn.intesys.g107.com/' + key)
+              } else {
+                files = ['http://cdn.intesys.g107.com/' + key];
+              }
+              that.setData({
+                [files_box]: files
+              });
+              console.log(that.data.items);
+              app.globalData.showToast("已上传");
+            }
+          },
+          fail: (err) => {
+            console.log(err);
+          }
+        });
+
+      },
+      fail: function (res) {
+        app.globalData.showToast("上传失败");
+      }
+
+    })
+  },
+  random_string(len) {
+    len = len || 32
+    var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
+    var maxPos = chars.length
+    var pwd = ''
+    for (let i = 0; i < len; i++) {
+      pwd += chars.charAt(Math.floor(Math.random() * maxPos))
+    }
+    return pwd
+  },
+
+  //备注输入
+  bindTextAreaBlur: function (e) {
+    var index = e.target.dataset.index;
+    var remark = `items[${index}].remark`
+    this.setData({
+      [remark]: e.detail.value,
+    });
+  },
+  showToast(text) {
+    app.globalData.showToast(text);
+  },
+  formSubmit() {
+    var items = this.data.items;
+    var userData = this.data.users;
+    var arr = [];
+    var isTg = true;
+    var pt_id = app.getTypesItem(this.data.isGzType).id
+    if (userData.length == 0) {
+      this.showToast('请选择奖扣对象')
+      return;
+    }
+    for (var i = 0; i < items.length; i++) {
+      var obj = {};
+      var item = items[i];
+      var num = item.checked ? item.point : item.point2
+      var point;
+      if (item.checked) {
+        if (item.isArrindex != true) {
+          point = 0 - num;
+        } else {
+          point = num;
+        }
+        if (point < item.selectRule.min_point || point > item.selectRule.max_point) {
+          this.showToast(`第${i + 1}条,积分分值超出可输入范围`);
+          isTg = false;
+        }
+      } else {
+        if (item.isArrindex2 != true) {
+          point = 0 - num;
+        } else {
+          point = num;
+        }
+      }
+      if (item.checked) {
+        if (!item.rule_id) {
+          this.showToast(`第${i + 1}条请选择规则`);
+          isTg = false;
+          break;
+        }
+      } else {
+        if (!item.rule_id2) {
+          this.showToast(`第${i + 1}条请选择分类`);
+          isTg = false;
+          break;
+        }
+      }
+      if (point == 0 || !point) {
+        this.showToast(`第${i + 1}条积分分值不能为0或者为空`);
+        isTg = false;
+        break;
+      }
+
+      if (!item.remark) {
+        this.showToast(`第${i + 1}条事件内容不能为空`);
+        isTg = false;
+        break;
+      }
+      obj.rule_id = item.checked ? item.rule_id : item.rule_id2;
+      obj.item_id = item.checked ? item.item_id : 0;
+      obj.point = point;
+      obj.remark = item.remark;
+      obj.event_time = item.event_time;
+      obj.pt_id = pt_id;
+      obj.reviewer_id = item.reviewer_id ? item.reviewer_id : 0;
+      obj.files = item.files;
+      arr.push(obj);
+    }
+    var userIds = []
+    userData.map(item => {
+      userIds.push(item.id)
+    })
+    if (isTg) {
+      var data = {
+        members: JSON.stringify(userIds),
+        items: JSON.stringify(arr)
+      }
+      this.setData({ disabled: true });
+      var url = this.data.type == 'B' ? 'api/integral/point/entry' : 'api/integral/review/a/entry'
+      app.$post(url, data).then((res) => {
+        var is = true, msg;
+
+        if (this.data.type == 'B') {
+          res.data.data.list.forEach(item => {
+            if (item.status != 1) {
+              is = false;
+              msg = item.msg;
+            }
+          })
+        } else {
+          res.data.data.forEach(item => {
+            if (item.status != 1) {
+              is = false;
+              msg = item.rule_item;
+            }
+          })
+        }
+
+        if (is) {
+          this.showToast('提交成功');
+          setTimeout(() => {
+            this.setData({ disabled: false });
+            dd.navigateBack({ delta: 1 })
+          }, 1000);
+        } else {
+          this.setData({ disabled: false });
+          this.showToast(msg);
+        }
+      }).catch(err => {
+        this.setData({ disabled: false });
+      })
+    }
+  },
+  switchChange(e) {
+    var index = e.target.dataset.index;
+    var item = `items[${index}].checked`;
+    that.setData({
+      [item]: e.detail.value
+    })
+  },
+  //选择时间
+  openDate(e) {
+    var item = `items.expire_time`
+    dd.datePicker({
+      format: 'yyyy-MM-dd HH:mm',
+      currentDate: that.data.items.expire_time,
+      success: (res) => {
+        that.setData({
+          [item]: res.date
+        })
+      },
+    });
+  },
+  //选择执行人
+  onSelectUser(item) {
+    this.setData({ superior_list: [] });
+    if (item.length > 0) {
+      that.setData({
+        users: item.length > 0 ? item : [],
+        superior_list: app.globalData.userData.employee_detail.superior_list
+      })
+    }
+
+  },
+  //选择审批人
+  onSelectUser2(item) {
+    var elm = item.length > 0 ? item[0] : { id: '', name: '' };
+    var reviewer_id = `items.reviewer_id`
+    var revieweName = `items.revieweName`
+    that.setData({
+      [reviewer_id]: elm.id,
+      [revieweName]: elm.name,
+    });
+
+  },
+});
+

+ 6 - 0
pages/statistics/assaign/assaign.json

@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "select-section-staff-two":"/Component/selectSectionStaff_tow/selectSectionStaff_tow",
+    "select-section-staff":"/Component/selectSectionStaff/selectSectionStaff"
+  }
+}

+ 76 - 0
pages/statistics/getTask/getTask.acss

@@ -0,0 +1,76 @@
+
+.header{
+  background: #fff;
+  position: sticky;
+  top: 0;
+}
+.selectItems{
+     text-align: center;
+}
+.selectItems .selectImg{
+    border-left: 1px solid #f1f1f1;
+    padding: 0 20rpx;
+}
+.selectImg image{
+    width: 30rpx;
+    height: 30rpx;
+}
+.selectItems .flex-1{
+    padding: 24rpx 0;
+    text-align: center;
+    font-size: 32rpx;
+    position: relative;
+}
+.selectItems .active::before{
+      position: absolute;
+      content: " ";
+      height: 4rpx;
+      width: 100rpx;
+      background: #26A2FF;
+      bottom: 0rpx; 
+      left: 50%;
+      margin-left: -50rpx;
+}
+.main{
+    background: #fff;
+}
+.scroll {
+  height:  calc(100vh - 115rpx);
+}
+
+.defBtn {
+  border-radius: 6rpx;
+  height: 50rpx;
+  text-align: center;
+  line-height: 50rpx;
+  width: 120rpx;
+  font-size: .24rem;
+}
+
+.li-top {
+  margin-bottom: 14rpx;
+}
+
+.li-top .flex-1 {
+  padding-right: 50rpx;
+}
+.li-top text{
+  font-size: 36rpx;
+  font-weight: 600
+}
+.task {
+  background: #f5f7fa;
+  color: #909399;
+  font-size: .28rem;
+  padding: .05rem .32rem .15rem;
+}
+.li {
+  padding: 24rpx 28rpx;
+}
+
+.li-bottom text {
+  position: relative;
+  top: 10rpx;
+  font-size: 28rpx;
+}
+

+ 48 - 0
pages/statistics/getTask/getTask.axml

@@ -0,0 +1,48 @@
+<view>
+  <view class="header margin-bottom">
+    <view class="flex-box flex-v-ce selectItems border-bottom">
+      <view data-index="1" class="{{activeIndex == 1? 'active':''}} flex-1" catchTap="activeItem">待领取</view>
+      <view data-index="2" class="{{activeIndex == 2? 'active':''}} flex-1" catchTap="activeItem">已领取</view>
+    </view>
+  </view>
+  <view class="main scroll">
+    <scroll-view class="scroll" a:if="{{(activeIndex==1)&&list.length>0}}" scroll-y="{{true}}" onScrollToLower="onScrollToLower">
+      <view class="li border-bottom"  a:for="{{list}}">
+        <view class="flex-box li-top" catchTap="openDetail" data-item="{{item}}">
+          <view class="flex-1">临时任务1:帮我买瓶82年的雪碧(每天)我买瓶82年的雪碧(每天)我买瓶82年的雪碧(每天)</view>
+          <text class="fontColorX">50</text>
+        </view>
+        <view class="flex-box li-bottom">
+          <text class="flex-1 fontColorX" catchTap="openDetail" data-item="{{item}}">2020-08-08 01:11 截止</text>
+          <button type="primary" class="defBtn" data-item="{{item}}" onTap="openPerform">领取任务</button>
+        </view>
+      </view>
+      <view class="noDatas" a:if="{{isData}}">没有更多咯</view>
+    </scroll-view>
+    <scroll-view class="scroll" a:if="{{activeIndex==2&&list.length>0}}" scroll-y="{{true}}" onScrollToLower="onScrollToLower">
+      <view class="flex-box li border-bottom" data-index="1" a:for="{{list}}" catchTap="openDetail" data-item="{{item}}">
+        <img-box name="{{item.employee_name}}" imgUrl="{{item.employee_img_url}}" height="80rpx" width="80rpx" fSize="24rpx"></img-box>
+        <view class="flex-1 main-right">
+          <view class="flex-box flex-v-ce">
+            <view class="name flex-1">{{item.employee_name}}</view>
+            <view class="red" a:if="{{item.point>0}}">+{{item.point}} {{item.pt_name}}</view>
+            <view class="green" a:else>{{item.point}} {{item.pt_name}}</view>
+          </view>
+          <view class="context" a:if="{{item.remark}}">{{item.remark}}</view>
+          <view class="flex-box flex-v-ce">
+            <view class="date flex-1">{{item.event_time}}</view>
+            <view class="redBox" a:if="{{item.point>0}}">奖分成功</view>
+            <view class="greenBox" a:else>扣分成功</view>
+          </view>
+        </view>
+      </view>
+      <view class="noDatas" a:if="{{isData}}">没有更多咯</view>
+    </scroll-view>
+    <no-data a:if="{{list.length==0}}"></no-data>
+  </view>
+  <view class="pop-up">
+    <picker onChange="bindPickerChange" value="{{index}}" range="{{array}}">
+      <image class="img" mode="scaleToFill" src="../../../image/Bj.png"/>
+    </picker>
+  </view>
+</view>

+ 194 - 0
pages/statistics/getTask/getTask.js

@@ -0,0 +1,194 @@
+
+var app = getApp()
+var that;
+Page({
+  data: {
+    date: app.globalData.month,
+    activeIndex: 1,
+    page: 1,
+    showZp: false,//显示sx选择
+    parameter1: { //我指派的参数
+      pt_id: 0,//类型
+      status: 'all',//状态
+      sort: 'publish',//排序
+    },
+    parameter2: { //我的悬赏
+      pt_id: 0,
+      order_by: 'create_time',
+    },
+    list:[1,2,3]
+  },
+  onLoad(e) {
+    if (e.index) {
+      this.setData({
+        activeIndex: e.index,
+      })
+    }
+    that = this;
+    dd.setNavigationBar({ title: "我发布的任务" });
+  },
+
+  //显示选择员工
+  selectSx() {
+    if (this.data.activeIndex == 3) {
+      app.globalData.showToast("重复任务暂不支持筛选")
+      return
+    }
+    this.setData({ showZp: true })
+  },
+  //关闭弹窗
+  onClose() {
+    this.setData({
+      showZp: false,
+    })
+  },
+  //选择筛选
+  onConfirmSx(data) {
+    console.log(data);
+    if (this.data.activeIndex == 1) {
+      this.setData({
+        sxObj: data,
+        page: 1,
+        parameter1: { //我指派的参数
+          pt_id: data[0],//类型
+          status: data[1],//状态
+          sort: data[2],//排序
+        }
+      })
+    } else {
+      this.setData({
+        sxObj: data,
+        page: 1,
+        parameter2: { //我指派的参数
+          pt_id: data[0],//类型
+          order_by: data[3] == 'publish' ? 'create_time' : 'expire_time',
+        }
+      })
+    }
+    this.getData(this.data.activeIndex);
+  },
+  onShow() {
+    // if (this.data.page == 1) {
+    //   dd.hideLoading();
+    //   that.getData(that.data.activeIndex);
+    // }
+  },
+  onReset() {
+    this.setData({
+      keyword: '',
+      isVal: false,
+      page: 1,
+    })
+    this.getData(that.data.activeIndex);
+  },
+  bindPickerChange(e) {
+    dd.confirm({
+      title: '删除任务',
+      content: '删除此任务将会删除其相关记录和积分数据,确认删除吗?',
+      confirmButtonText: '确定',
+      cancelButtonText: '取消',
+      success: (result) => {
+        if (result.confirm) {
+
+        }
+      },
+    });
+  },
+  bindKeyInput(e) {
+    this.setData({
+      keyword: e.detail.value,
+      isVal: e.detail.value ? true : false,
+      page: 1,
+    })
+    this.getData(that.data.activeIndex);
+  },
+
+  getData(index, is) {
+    var urlS = ['api/integral/work/list/publisher', 'api/integral/task/publish/list', 'integral/schedule/list'];
+    var data;
+    if (index == 1) {
+      var parameter1 = this.data.parameter1;
+      data = {
+        page: that.data.page,
+        page_size: 20,
+        source_type: 1,
+        pt_id: parameter1.pt_id,//类型
+        status: parameter1.status,//状态
+        sort: parameter1.sort,//排序
+      }
+    } else if (index == 2) {
+      var parameter2 = this.data.parameter2;
+      data = {
+        page: that.data.page,
+        page_size: 20,
+        status: 'all',
+        source_type: 1,
+        pt_id: parameter2.pt_id,//类型
+        order_by: parameter2.order_by,//类型
+      }
+    } else {
+      data = {
+        page: that.data.page,
+        page_size: 20,
+      }
+    }
+    app.$get(urlS[index - 1], data).then((res) => {
+      var data = res.data.data.list;
+      var list = that.data.list;
+      data.forEach(element => {
+        if (element.pt_id) {
+          element.pt_name = app.getTypesItem(element.pt_id).name
+        }
+      });
+      if (is) {
+        if (data.length < 20) {
+          this.setData({
+            list: list.concat(data),
+            isData: true
+          })
+        } else {
+          this.setData({
+            list: list.concat(data)
+          })
+        }
+      } else {
+        this.setData({
+          list: data,
+          isData: false
+        })
+      }
+    })
+  },
+  activeItem(e) {
+    var index = e.target.dataset.index;
+    this.setData({
+      activeIndex: index,
+      page: 1,
+      // list: [],
+      sxObj:[],
+      parameter1: { //我指派的参数
+        pt_id: 0,//类型
+        status: 'all',//状态
+        sort: 'publish',//排序
+      },
+      parameter2: { //我的悬赏
+        pt_id: 0,
+        order_by: 'create_time',
+      }
+    })
+    // this.getData(index);
+  },
+  openDetail(e) {
+    var id = e.target.dataset.item.id;
+    dd.navigateTo({
+      url: '../taskDetail/taskDetail?id=' + id
+    })
+  },
+  //上啦加载
+  onScrollToLower() {
+    if (!that.data.isData) {
+      this.setData({ page: ++that.data.page })
+      this.getData(that.data.activeIndex, true);
+    }
+  },
+});

+ 6 - 0
pages/statistics/getTask/getTask.json

@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "img-box": "/Component/img-box/index",
+    "no-data":"/Component/noData/noData"
+  }
+}

+ 145 - 0
pages/statistics/grant/grant.acss

@@ -0,0 +1,145 @@
+.form-top{
+  background-color: #fff;
+  padding:28rpx;
+  border-top:18rpx solid rgba(245,247,250,1);
+}
+.form-top .flex-1{
+  text-align: right;
+  color: #969799;
+}
+.label{
+  position: relative;
+  width: 160rpx;
+  font-size: 32rpx
+}
+.isBt::before{
+  position: absolute;
+  content: "*";
+  color: #F56C6C;
+  left: -16rpx;
+}
+.inputs .li{
+  background-color: #fff;
+  padding:28rpx;
+  position: relative;
+}
+.li view:nth-child(2){
+  text-align: right;
+  color: #969799;
+}
+.title{
+  padding: 16rpx 28rpx;
+  font-size: 28rpx;
+}
+textarea{
+  padding-left: 10rpx;
+  padding-right: 0;
+  height: 200rpx;
+  position: relative;
+}
+textarea::before{
+  position: absolute;
+  content: "*";
+  color: #F56C6C;
+  left: -16rpx;
+}
+.add{
+  background-color: #fff;
+  padding: 28rpx 28rpx;
+  color: #26A2FF;
+  margin: 28rpx 0;
+  margin-bottom: 40rpx; 
+}
+.addImg{
+  width: 50rpx;
+  height: 50rpx;
+  position: absolute;
+  bottom: 20rpx;
+  z-index: 998;
+  /* background: #F56C6C; */
+}
+.rightImg{
+  width: 30rpx;
+  height: 30rpx;
+  margin-left: 10rpx;
+}
+.defBtn{
+  width: 90%;
+  margin: 0 auto;
+  border-radius: 10rpx;
+  margin-bottom: 100rpx;
+  height: 90rpx;
+  text-align: center;
+  line-height: 90rpx;
+}
+.showImg{
+  width: 160rpx;
+  height: 160rpx;
+  margin-bottom: 28rpx;
+  margin-right:40rpx; 
+  margin-top: 28rpx;
+}
+.detele{
+  color: #fff;
+  position: absolute;
+  height: 40rpx;
+  width: 40rpx;
+  border-radius: 100%;
+  background-color: #969799;
+  text-align: center;
+  line-height: 40rpx;
+  right: 10rpx;
+  top: 10rpx;
+}
+.box{
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: rgba(0,0,0,0.2);
+  z-index: 999;
+  transform: translate(0,100%);
+}
+
+.jiang{
+  border: 1px solid #f1f1f1;
+  border-radius: 4rpx;
+  width: 40rpx;
+  text-align: center
+}
+.picker-box{
+  width: 110rpx;
+  border-radius: 50rpx;
+  background-color: #f1f1f1;
+  position: relative;
+  height: 60rpx;
+}
+.picker-box text{
+ text-align: center;
+ line-height: 60rpx;
+ font-size: 24rpx;
+}
+.yuan{
+  width: 50rpx;
+  height: 50rpx;
+  background: #26A2FF;
+  border-radius: 100rpx;
+  position: absolute;
+  top: 5rpx;
+}
+.picker-left{
+  left: 5rpx;
+}
+.picker-right{
+  right: 5rpx;
+}
+.userList{
+  height: 40rpx;
+  font-size: 32rpx;
+}
+.itme-li{
+  background-color:rgb(255, 255, 255);
+  padding:0.28rem;
+  position:relative
+}

+ 26 - 0
pages/statistics/grant/grant.axml

@@ -0,0 +1,26 @@
+<view>
+  <form>
+    <view class="flex-box flex-v-ce form-top" catchTap="openSelect" data-num="1">
+      <view class="label isBt">奖扣对象</view>
+      <view class="flex-1 font-flex-word userList">
+        <block a:for="{{users}}">
+          <text style="font-size:32rpx">{{item.name}},</text>
+        </block>
+      </view>
+      <image mode="scaleToFill" src="../../../image/right.png" class="rightImg"/>
+    </view>
+    <view class="flex-box-end" style="padding:28rpx;padding-bottom:10rpx;">
+      <text class="blue" style="font-size:28rpx" catchTap="openSelect" data-num="2">关联已有事件</text>
+    </view>
+    <view class="itme-li">
+        <textarea maxlength="100"  value="{{item.remark}}" onInput="bindTextAreaBlur" placeholder="请输入奖票原因"></textarea>
+    </view>
+    <view class="btn-area" style="margin-top:28rpx;">
+        <button type="default" loading="{{disabled}}" class="defBtn" disabled="{{disabled}}" catchTap="formSubmit">提交</button>
+    </view>
+  </form>
+  <view class="box" animation="{{animationInfo}}">
+    <select-section-staff isLeadership="{{true}}" isBoss="{{true}}" selectUser="{{users}}" onClose="onClose" onConfirm="onSelectUser" a:if="{{isShowType=='1'}}"/>
+    <select-enevt defaultEnevt="{{item.id}}" defaultVal="{{defaultVal}}" onClose="onClose" onConfirm="onSelectEnevt" a:if="{{isShowType=='2'}}"/>
+  </view>
+</view>

+ 79 - 0
pages/statistics/grant/grant.js

@@ -0,0 +1,79 @@
+var app = getApp();
+var that;
+var animation;
+Page({
+  data: {
+    users:[],
+    item:{
+        remark:'',
+        id:''
+    },
+    defaultVal:'',
+  },
+  onLoad() {
+    that = this;
+    dd.setNavigationBar({ title: "发放奖票" });
+    this.setData({ isAdministrator: app.globalData.isAdministrator })
+  },
+    //备注输入
+  bindTextAreaBlur: function (e) {
+    this.setData({
+      [`item.remark`]: e.detail.value,
+    });
+  },
+  formSubmit(){
+      if(that.data.users.length==0){
+         app.globalData.showToast('请选择奖扣对象');
+         return;
+      }
+      if(!that.data.item.remark){
+         app.globalData.showToast('请输入奖票原因');
+         return;
+      }
+  },
+  //选择人
+  onSelectUser(item) {
+    //空数据
+    this.setData({ superior_list: [] });
+    if (item.length > 0) {
+        that.setData({
+          users: item.length > 0 ? item : [],
+        })
+    }
+  },
+  // 选择积分事件
+  onSelectEnevt(item,key){
+     that.setData({
+        item:{
+          remark:item.remark,
+          id:item.id
+        },
+        defaultVal:key
+    })
+  },
+    //选择弹窗
+  openSelect(e) {
+    var num = e.target.dataset.num;
+    that.setData({
+      isShowType: num,
+    });
+    animation.translateY(0).step();
+    that.setData({
+      animationInfo: animation.export()
+    });
+  },
+  onShow() {
+    animation = dd.createAnimation({
+      duration: 200,
+      timeFunction: "linear",
+    });
+  },
+    //关闭规则
+  onClose() {
+    animation.translateY(1200).step();
+    that.setData({
+      animationInfo: animation.export()
+    });
+    that.setData({ isShowType: '' });
+  },
+});

+ 6 - 0
pages/statistics/grant/grant.json

@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "select-section-staff":"/Component/selectSectionStaff/selectSectionStaff",
+    "select-enevt":"/Component/selectEnevt/selectEnevt"
+  }
+}

+ 164 - 0
pages/statistics/myGrant/myGrant.acss

@@ -0,0 +1,164 @@
+.top {
+  width: 100%;
+  height: 140rpx;
+  background-color: #26A2FF;
+  margin-bottom: 70rpx;
+  color: #fff;
+  text-align: center;
+}
+
+.top image {
+  width: 36rpx;
+  height: 36rpx;
+  margin-right: 10rpx;
+  position: relative;
+  top: 6rpx;
+}
+
+.dates {
+  width: 200rpx;
+  margin: 0 auto;
+  text-align: center;
+}
+
+.head {
+  position: absolute;
+  top: 70rpx;
+  left: 32rpx;
+  right: 32rpx;
+  border-radius: 20rpx;
+  background-color: #fff;
+  box-shadow: 0 0.04rem 0.12rem 0 rgba(0, 0, 0, .05);
+  height: 140rpx;
+  text-align: center;
+}
+
+.head .flex-1 view:nth-child(1) {
+  color: #26A2FF;
+  font-weight: 600;
+  margin-bottom: 10rpx;
+  font-size: 40rpx;
+}
+
+.head .flex-1 view:nth-child(2) {
+  color: #C0C4CC;
+  margin-bottom: 5rpx;
+  font-size: 28rpx;
+}
+
+.headed {
+  background-color: #fff;
+}
+
+.headed-box {
+  padding: 28rpx;
+  color: #303133;
+}
+
+.title {
+  color: #222;
+  position: relative;
+  font-size: 32rpx;
+  font-weight: 600;
+  padding-left: 20rpx;
+  margin: 30rpx 0;
+}
+
+.title::before {
+  position: absolute;
+  content: "";
+  height: 30rpx;
+  left: 0;
+  top: 3rpx;
+  width: 8rpx;
+  background-color: #26A2FF;
+  border-radius: 50rpx;
+}
+
+.f2-chart {
+  width: 100%;
+  height: 400rpx;
+}
+
+/* 底部 */
+
+.main {
+  padding: 28rpx;
+}
+
+.list {
+  padding: 28rpx 0;
+  border-top: 1px solid #f1f1f1;
+  font-size: 32rpx;
+}
+
+.text {
+  margin-right: 10rpx;
+  color: #303133;
+}
+
+.main .gengduo image {
+  width: 24rpx;
+  height: 24rpx;
+  position: relative;
+  top: 4rpx;
+}
+
+.gengduo {
+  color: #303133;
+  font-size: 32rpx;
+}
+
+.num {
+  font-size: 40rpx;
+}
+
+.dates text::after {
+  position: absolute;
+  /* position: relative; */
+  top: 50%;
+  right: -20rpx;
+  margin-top: -0.1rem;
+  border: 0.06rem solid;
+  border-color: transparent transparent #fff #fff;
+  -webkit-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+  opacity: .8;
+  content: '';
+}
+
+.dates .activeView::after {
+  margin-top: -0.02rem;
+  -webkit-transform: rotate(135deg);
+  transform: rotate(135deg);
+  border-color: transparent transparent #fff #fff;
+}
+
+.ticket-list__item {
+  margin-bottom: .24rem;
+  background: #fff;
+  border-radius: .2rem;
+  width: 100%;
+}
+
+.ticket_left {
+  padding: 0 .24rem;
+  margin: .24rem 0;
+  display: -webkit-box;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  -webkit-line-clamp: 2;
+  -webkit-box-orient: vertical;
+  line-height: .6rem;
+}
+
+.ticket_right {
+  padding: .24rem;
+  font-size: .32rem;
+  text-align: center;
+  border-top-right-radius: .2rem;
+  border-bottom-right-radius: .2rem;
+  color: #fff;
+  background: #c6edff;
+  background: linear-gradient(-160deg, #26a2ff, #5cb6f9);
+}

+ 33 - 0
pages/statistics/myGrant/myGrant.axml

@@ -0,0 +1,33 @@
+<view>
+  <view class="head flex-box flex-center-center">
+    <view class="flex-1">
+      <view>188</view>
+      <view>本月奖票</view>
+    </view>
+    <view class="flex-1">
+      <view>122</view>
+      <view>累计奖票</view>
+    </view>
+  </view>
+  <view class="headed margin-bottom">
+    <view class="top">
+      <view class="dates" style="padding:10rpx 0" catchTap="openDate">
+        <image mode="scaleToFill" src="../../../image/date.png"/>
+        <text style="font-size:32rpx;position: relative;" class="{{showDate? 'activeView':''}}">{{date}}</text>
+      </view>
+    </view>
+  </view>
+  <view class="main margin-bottom">
+    <view class="title" style="padding-bottom:0rpx">本月奖票</view>
+    <view class="ticket-list__item" a:for="{{list}}">
+      <view class="flex-box flex-v-ce">
+        <view class="ticket_left flex-3">加雪种</view>
+        <view class="ticket_right flex-1">
+          <view style="font-size: 0.42rem; line-height: 0.6rem;">01-06</view>
+          <view style="font-size: 0.32rem; line-height: 0.6rem;">2021</view>
+        </view>
+      </view>
+    </view>
+    <no-data a:if="{{list.length==0}}" content="没有奖票" />
+  </view>
+</view>

+ 41 - 0
pages/statistics/myGrant/myGrant.js

@@ -0,0 +1,41 @@
+
+var app = getApp()
+var that;
+var chart1;
+var chart2;
+Page({
+  data: {
+    date: app.globalData.month,
+    list: [1, 2, 3]
+  },
+  onLoad() {
+    that = this;
+    chart1, chart2 = '';
+    dd.setNavigationBar({ title: "我的奖票" });
+  },
+  //选择时间
+  openDate(e) {
+    dd.datePicker({
+      format: 'yyyy-MM',
+      currentDate: that.data.date,
+      success: (res) => {
+        that.setData({
+          date: res.date
+        })
+      },
+    });
+  },
+    //获取积分事件
+  getList() {
+    app.$get("api/integral/statistics/integral", { month:that.data.date, page: 1, page_size: 5}).then((res) => {
+      var data = res.data.data.list;
+
+    })
+  },
+  //打开更多
+  openMore() {
+    dd.navigateTo({
+      url: '../../statistics/integralEvent/integralEvent?month=' + this.data.date + '&type=BF'
+    })
+  },
+});

+ 6 - 0
pages/statistics/myGrant/myGrant.json

@@ -0,0 +1,6 @@
+{
+    "usingComponents": {
+        "f2": "@antv/my-f2",
+        "no-data":"/Component/noData/noData"
+    }
+}

+ 92 - 0
pages/statistics/my_issue/my_issue.acss

@@ -0,0 +1,92 @@
+
+.header{
+  background: #fff;
+  position: sticky;
+  top: 0;
+}
+.selectItems{
+    /* margin-top: 20rpx; */
+     text-align: center;
+}
+.selectItems .selectImg{
+    border-left: 1px solid #f1f1f1;
+    padding: 0 20rpx;
+}
+.selectImg image{
+    width: 30rpx;
+    height: 30rpx;
+}
+.selectItems .flex-2{
+    padding: 24rpx 0;
+    text-align: center;
+    font-size: 32rpx;
+    position: relative;
+}
+.selectItems .active::before{
+      position: absolute;
+      content: " ";
+      height: 4rpx;
+      width: 100rpx;
+      background: #26A2FF;
+      bottom: 0rpx; 
+      left: 50%;
+      margin-left: -50rpx;
+}
+.main{
+    background: #fff;
+}
+.li{
+   padding: 24rpx 28rpx;
+}
+.li2{
+  padding: 24rpx 28rpx;
+  border-bottom: 20rpx solid rgba(245, 247, 250, 1);
+}
+.li2 image{
+  width: 30rpx;
+  height: 30rpx;
+  margin-right: 10rpx;
+}
+.main-right{
+  margin-left: 10rpx;
+}
+.main-right .name{
+  padding-top:12rpx;
+  font-size: 36rpx;
+}
+.main-right .context{
+    overflow : hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 2;
+     font-size: 32rpx;
+    -webkit-box-orient: vertical;
+    padding: 10rpx 0; 
+}
+.main-right .date{
+   /* font-size: 24rpx; */
+   color: #909399;
+   
+}
+
+.main-right text{
+  color: #26A2FF;
+  font-size: 28rpx;
+}
+.main-right view:nth-child(1){
+  margin-right: 20rpx;
+}
+.index{
+  border-radius: 6rpx;
+  background:rgba(245, 108, 108, 0.1);
+  color: #F56C6C;
+  font-size: 24rpx;
+  padding: 0 6rpx;
+}
+.scroll {
+  height:  calc(100vh - 115rpx);
+}
+.sxImg{
+  width: 30rpx;
+  height: 30rpx;
+}

+ 53 - 0
pages/statistics/my_issue/my_issue.axml

@@ -0,0 +1,53 @@
+<view>
+  <view class="header margin-bottom">
+    <!-- <form onReset="onReset">
+      <view class="search flex-box flex-v-ce">
+        <image mode="scaleToFill" src="../../../image/ss.png"></image>
+        <input placeholder="请输入姓名或事件内容搜索" onInput="bindKeyInput" class="flex-1"></input>
+        <button a:if="{{isVal}}" class="delVal" formType="reset">×</button>
+      </view>
+    </form> -->
+    <view class="flex-box flex-v-ce selectItems border-bottom">
+      <view data-index="1" class="{{activeIndex == 1? 'active':''}} flex-2" catchTap="activeItem">我指派的</view>
+      <view data-index="2" class="{{activeIndex == 2? 'active':''}} flex-2" catchTap="activeItem">我悬赏的</view>
+      <view data-index="3" class="{{activeIndex == 3? 'active':''}} flex-2" catchTap="activeItem" style="border-right:1px solid #f1f1f1">重复任务</view>
+      <view catchTap="selectSx" class="flex-1">
+         <image mode="scaleToFill" class="sxImg" src="../../../image/sx.png"/>
+      </view>
+    </view>
+  </view>
+  <view class="main scroll">
+    <scroll-view class="scroll" a:if="{{(activeIndex==1||activeIndex==2)&&list.length>0}}" scroll-y="{{true}}" onScrollToLower="onScrollToLower">
+      <view class="flex-box li border-bottom" data-index="1" a:for="{{list}}" catchTap="openDetail" data-item="{{item}}">
+        <img-box name="{{item.employee_name}}" imgUrl="{{item.employee_img_url}}" height="80rpx" width="80rpx" fSize="24rpx"></img-box>
+        <view class="flex-1 main-right">
+          <view class="flex-box flex-v-ce">
+            <view class="name flex-1">{{item.employee_name}}</view>
+            <view class="red" a:if="{{item.point>0}}">+{{item.point}} {{item.pt_name}}</view>
+            <view class="green" a:else>{{item.point}} {{item.pt_name}}</view>
+          </view>
+          <view class="context" a:if="{{item.remark}}">{{item.remark}}</view>
+          <view class="flex-box flex-v-ce">
+            <view class="date flex-1">{{item.event_time}}</view>
+            <view class="redBox" a:if="{{item.point>0}}">奖分成功</view>
+            <view class="greenBox" a:else>扣分成功</view>
+          </view>
+        </view>
+      </view>
+      <view class="noDatas" a:if="{{isData}}">没有更多咯</view>
+    </scroll-view>
+    <scroll-view class="scroll" a:if="{{activeIndex==3&&list.length>0}}" scroll-y="{{true}}" onScrollToLower="onScrollToLower">
+      <view class="li2 border-bottom" data-index="2" a:for="{{list}}" catchTap="openDetail" data-item="{{item}}">
+          <view style="margin-bottom:10rpx;">排位吃饭</view>
+          <view class="flex-box flex-v-ce fontColorX" style="font-size:28rpx;">
+            <image mode="scaleToFill" src="../../../image/sj2.png"/>
+            <text>每天自动发布</text>
+            <text> 完成截止为1点</text>
+          </view>
+      </view>
+      <view class="noDatas" a:if="{{isData}}">没有更多咯</view>
+    </scroll-view>
+    <no-data a:if="{{list.length==0}}"></no-data>
+  </view>
+  <select-zp defaultSx="{{sxObj}}" typeIndex="{{activeIndex}}" a:if="{{showZp==true}}" isShow="{{showZp}}" onClose="onClose" onConfirm="onConfirmSx"></select-zp>
+</view>

+ 189 - 0
pages/statistics/my_issue/my_issue.js

@@ -0,0 +1,189 @@
+
+var app = getApp()
+var that;
+Page({
+  data: {
+    date: app.globalData.month,
+    activeIndex: 1,
+    page: 1,
+    showZp: false,//显示sx选择
+    parameter1: { //我指派的参数
+      pt_id: 0,//类型
+      status: 'all',//状态
+      sort: 'publish',//排序
+    },
+    parameter2: { //我的悬赏
+      pt_id: 0,
+      order_by: 'create_time',
+    },
+    list:[1,2,3]
+  },
+  onLoad(e) {
+    if (e.index) {
+      this.setData({
+        activeIndex: e.index,
+      })
+    }
+    that = this;
+    dd.setNavigationBar({ title: "我发布的任务" });
+  },
+
+  //显示选择员工
+  selectSx() {
+    if (this.data.activeIndex == 3) {
+      app.globalData.showToast("重复任务暂不支持筛选")
+      return
+    }
+    this.setData({ showZp: true })
+  },
+  //关闭弹窗
+  onClose() {
+    this.setData({
+      showZp: false,
+    })
+  },
+  //选择筛选
+  onConfirmSx(data) {
+    console.log(data);
+    if (this.data.activeIndex == 1) {
+      this.setData({
+        sxObj: data,
+        page: 1,
+        parameter1: { //我指派的参数
+          pt_id: data[0],//类型
+          status: data[1],//状态
+          sort: data[2],//排序
+        }
+      })
+    } else {
+      this.setData({
+        sxObj: data,
+        page: 1,
+        parameter2: { //我指派的参数
+          pt_id: data[0],//类型
+          order_by: data[3] == 'publish' ? 'create_time' : 'expire_time',
+        }
+      })
+    }
+    this.getData(this.data.activeIndex);
+  },
+  onShow() {
+    // if (this.data.page == 1) {
+    //   dd.hideLoading();
+    //   that.getData(that.data.activeIndex);
+    // }
+  },
+  onReset() {
+    this.setData({
+      keyword: '',
+      isVal: false,
+      page: 1,
+    })
+    this.getData(that.data.activeIndex);
+  },
+
+  bindKeyInput(e) {
+    this.setData({
+      keyword: e.detail.value,
+      isVal: e.detail.value ? true : false,
+      page: 1,
+    })
+    this.getData(that.data.activeIndex);
+  },
+
+  getData(index, is) {
+    var urlS = ['api/integral/work/list/publisher', 'api/integral/task/publish/list', 'integral/schedule/list'];
+    var data;
+    if (index == 1) {
+      var parameter1 = this.data.parameter1;
+      data = {
+        page: that.data.page,
+        page_size: 20,
+        source_type: 1,
+        pt_id: parameter1.pt_id,//类型
+        status: parameter1.status,//状态
+        sort: parameter1.sort,//排序
+      }
+    } else if (index == 2) {
+      var parameter2 = this.data.parameter2;
+      data = {
+        page: that.data.page,
+        page_size: 20,
+        status: 'all',
+        source_type: 1,
+        pt_id: parameter2.pt_id,//类型
+        order_by: parameter2.order_by,//类型
+      }
+    } else {
+      data = {
+        page: that.data.page,
+        page_size: 20,
+      }
+    }
+    app.$get(urlS[index - 1], data).then((res) => {
+      var data = res.data.data.list;
+      var list = that.data.list;
+      data.forEach(element => {
+        if (element.pt_id) {
+          element.pt_name = app.getTypesItem(element.pt_id).name
+        }
+      });
+      if (is) {
+        if (data.length < 20) {
+          this.setData({
+            list: list.concat(data),
+            isData: true
+          })
+        } else {
+          this.setData({
+            list: list.concat(data)
+          })
+        }
+      } else {
+        this.setData({
+          list: data,
+          isData: false
+        })
+      }
+    })
+  },
+  activeItem(e) {
+    var index = e.target.dataset.index;
+    this.setData({
+      activeIndex: index,
+      page: 1,
+      // list: [],
+      sxObj:[],
+      parameter1: { //我指派的参数
+        pt_id: 0,//类型
+        status: 'all',//状态
+        sort: 'publish',//排序
+      },
+      parameter2: { //我的悬赏
+        pt_id: 0,
+        order_by: 'create_time',
+      }
+    })
+    // this.getData(index);
+  },
+  openDetail(e) {
+    var id = e.target.dataset.item.id;
+    var index = e.target.dataset.index;
+    if (index == '1') {
+      dd.navigateTo({
+        url: '../prizeBuckleDetail/prizeBuckleDetail?id=' + id
+      })
+    } else {
+      dd.navigateTo({
+        url: '../repetitive_tasks_detail/repetitive_tasks_detail?id=' + id
+      })
+    }
+  },
+  //上啦加载
+  onScrollToLower() {
+    if (!that.data.isData) {
+      this.setData({ page: ++that.data.page })
+      this.getData(that.data.activeIndex, true);
+    }
+  },
+});

+ 7 - 0
pages/statistics/my_issue/my_issue.json

@@ -0,0 +1,7 @@
+{
+  "usingComponents": {
+    "img-box": "/Component/img-box/index",
+    "select-zp": "/Component/selectSxZp/selectSxZp",
+    "no-data":"/Component/noData/noData"
+  }
+}

+ 85 - 0
pages/statistics/my_task/my_task.acss

@@ -0,0 +1,85 @@
+.header {
+  background: #fff;
+  position: sticky;
+  top: 0;
+}
+
+.selectItems {
+  /* margin-top: 20rpx; */
+  text-align: center;
+}
+
+.selectItems .selectImg {
+  border-left: 1px solid #f1f1f1;
+  padding: 0 20rpx;
+}
+
+.selectImg image {
+  width: 30rpx;
+  height: 30rpx;
+}
+
+.selectItems .flex-2 {
+  padding: 24rpx 0;
+  text-align: center;
+  font-size: 32rpx;
+  position: relative;
+}
+
+.selectItems .active::before {
+  position: absolute;
+  content: " ";
+  height: 4rpx;
+  width: 100rpx;
+  background: #26A2FF;
+  bottom: 0rpx;
+  left: 50%;
+  margin-left: -50rpx;
+}
+
+.main {
+  background: #fff;
+}
+
+.li {
+  padding: 24rpx 28rpx;
+}
+
+.li-bottom text {
+  position: relative;
+  top: 10rpx;
+  font-size: 28rpx;
+}
+
+.scroll {
+  height: calc(100vh - 115rpx);
+}
+
+.sxImg {
+  width: 30rpx;
+  height: 30rpx;
+}
+
+.defBtn {
+  border-radius: 6rpx;
+  height: 50rpx;
+  text-align: center;
+  line-height: 50rpx;
+  width: 120rpx;
+  font-size: .24rem;
+}
+
+.li-top {
+  margin-bottom: 14rpx;
+}
+
+.li-top .flex-1 {
+  padding-right: 50rpx;
+}
+
+.task {
+  background: #f5f7fa;
+  color: #909399;
+  font-size: .28rem;
+  padding: .05rem .32rem .15rem;
+}

+ 47 - 0
pages/statistics/my_task/my_task.axml

@@ -0,0 +1,47 @@
+<view>
+  <view class="header margin-bottom">
+    <!--<form onReset="onReset"><view class="search flex-box flex-v-ce"><image mode="scaleToFill" src="../../../image/ss.png"></image><input placeholder="请输入姓名或事件内容搜索" onInput="bindKeyInput" class="flex-1"></input><button a:if="{{isVal}}" class="delVal" formType="reset">×</button></view></form> -->
+    <view class="flex-box flex-v-ce selectItems border-bottom">
+      <view data-index="1" class="{{activeIndex == 1? 'active':''}} flex-2" catchTap="activeItem">待完成</view>
+      <view data-index="2" class="{{activeIndex == 2? 'active':''}} flex-2" catchTap="activeItem">待审批</view>
+      <view data-index="3" class="{{activeIndex == 3? 'active':''}} flex-2" catchTap="activeItem" style="border-right:1px solid #f1f1f1">已审批</view>
+      <view catchTap="selectSx" class="flex-1">
+        <image mode="scaleToFill" class="sxImg" src="../../../image/sx.png"/>
+      </view>
+    </view>
+  </view>
+  <view class="main scroll">
+    <scroll-view class="scroll" a:if="{{(activeIndex==1)&&list.length>0}}" scroll-y="{{true}}" onScrollToLower="onScrollToLower">
+      <view class="task">今日任务</view>
+      <view class="li border-bottom"  a:for="{{list}}">
+        <view class="flex-box li-top" catchTap="openDetail" data-item="{{item}}">
+          <view class="flex-1">临时任务1:帮我买瓶82年的雪碧(每天)我买瓶82年的雪碧(每天)我买瓶82年的雪碧(每天)</view>
+          <text class="fontColorX">50</text>
+        </view>
+        <view class="flex-box li-bottom">
+          <text class="flex-1 fontColorX" catchTap="openDetail" data-item="{{item}}">2020-08-08 01:11 截止</text>
+          <button type="primary" class="defBtn" data-item="{{item}}" onTap="openPerform">完成任务</button>
+        </view>
+      </view>
+      <view class="task">待完成任务</view>
+      <view class="noDatas" a:if="{{isData}}">没有更多咯</view>
+    </scroll-view>
+    <scroll-view class="scroll" a:if="{{(activeIndex==2||activeIndex==3)&&list.length>0}}" scroll-y="{{true}}" onScrollToLower="onScrollToLower">
+      <view class="li border-bottom"  a:for="{{list}}">
+        <view class="flex-box li-top" catchTap="openDetail" data-item="{{item}}">
+          <view class="flex-1">临时任务1:帮我买瓶82年的雪碧(每天)我买瓶82年的雪碧(每天)我买瓶82年的雪碧(每天)</view>
+          <text class="fontColorX">50</text>
+        </view>
+        <view class="flex-box li-bottom">
+          <text class="flex-1 fontColorX" catchTap="openDetail" data-item="{{item}}">2020-08-08 01:11 截止</text>
+          <text class="yellow">待处理</text>
+          <text class="red">已通过</text>
+          <text class="green">已驳回</text>
+        </view>
+      </view>
+      <view class="noDatas" a:if="{{isData}}">没有更多咯</view>
+    </scroll-view>
+    <no-data a:if="{{list.length==0}}"></no-data>
+  </view>
+  <select-zp defaultSx="{{sxObj}}" typeIndex="2" a:if="{{showZp==true}}" isShow="{{showZp}}" onClose="onClose" onConfirm="onConfirmSx"></select-zp>
+</view>

+ 184 - 0
pages/statistics/my_task/my_task.js

@@ -0,0 +1,184 @@
+
+var app = getApp()
+var that;
+Page({
+  data: {
+    date: app.globalData.month,
+    activeIndex: 1,
+    page: 1,
+    list: [1, 2, 3],
+    showZp: false,//显示sx选择
+    parameter1: { //我指派的参数
+      pt_id: 0,//类型
+      status: 'all',//状态
+      sort: 'publish',//排序
+    },
+    parameter2: { //我的悬赏
+      pt_id: 0,
+      order_by: 'create_time',
+    }
+  },
+  onLoad(e) {
+    if (e.index) {
+      this.setData({
+        activeIndex: e.index,
+      })
+    }
+    that = this;
+    dd.setNavigationBar({ title: "我的任务" });
+  },
+
+  //显示选择员工
+  selectSx() {
+    this.setData({ showZp: true })
+  },
+  //关闭弹窗
+  onClose() {
+    this.setData({
+      showZp: false,
+    })
+  },
+  //选择筛选
+  onConfirmSx(data) {
+    console.log(data);
+    if (this.data.activeIndex == 1) {
+      this.setData({
+        sxObj: data,
+        page: 1,
+        parameter1: { //我指派的参数
+          pt_id: data[0],//类型
+          status: data[1],//状态
+          sort: data[2],//排序
+        }
+      })
+    } else {
+      this.setData({
+        sxObj: data,
+        page: 1,
+        parameter2: { //我指派的参数
+          pt_id: data[0],//类型
+          order_by: data[3] == 'publish' ? 'create_time' : 'expire_time',
+        }
+      })
+    }
+    this.getData(this.data.activeIndex);
+  },
+  onShow() {
+    // if (this.data.page == 1) {
+    //   dd.hideLoading();
+    //   that.getData(that.data.activeIndex);
+    // }
+  },
+  onReset() {
+    this.setData({
+      keyword: '',
+      isVal: false,
+      page: 1,
+    })
+    this.getData(that.data.activeIndex);
+  },
+
+  bindKeyInput(e) {
+    this.setData({
+      keyword: e.detail.value,
+      isVal: e.detail.value ? true : false,
+      page: 1,
+    })
+    this.getData(that.data.activeIndex);
+  },
+
+  getData(index, is) {
+    var urlS = ['api/integral/work/list/publisher', 'api/integral/task/publish/list', 'integral/schedule/list'];
+    var data;
+    if (index == 1) {
+      var parameter1 = this.data.parameter1;
+      data = {
+        page: that.data.page,
+        page_size: 20,
+        source_type: 1,
+        pt_id: parameter1.pt_id,//类型
+        status: parameter1.status,//状态
+        sort: parameter1.sort,//排序
+      }
+    } else if (index == 2) {
+      var parameter2 = this.data.parameter2;
+      data = {
+        page: that.data.page,
+        page_size: 20,
+        status: 'all',
+        source_type: 1,
+        pt_id: parameter2.pt_id,//类型
+        order_by: parameter2.order_by,//类型
+      }
+    } else {
+      data = {
+        page: that.data.page,
+        page_size: 20,
+      }
+    }
+    app.$get(urlS[index - 1], data).then((res) => {
+      var data = res.data.data.list;
+      var list = that.data.list;
+      data.forEach(element => {
+        if (element.pt_id) {
+          element.pt_name = app.getTypesItem(element.pt_id).name
+        }
+      });
+      if (is) {
+        if (data.length < 20) {
+          this.setData({
+            list: list.concat(data),
+            isData: true
+          })
+        } else {
+          this.setData({
+            list: list.concat(data)
+          })
+        }
+      } else {
+        this.setData({
+          list: data,
+          isData: false
+        })
+      }
+    })
+  },
+  activeItem(e) {
+    var index = e.target.dataset.index;
+    this.setData({
+      activeIndex: index,
+      page: 1,
+      // list: [],
+      sxObj: [],
+      parameter1: { //我指派的参数
+        pt_id: 0,//类型
+        status: 'all',//状态
+        sort: 'publish',//排序
+      },
+      parameter2: { //我的悬赏
+        pt_id: 0,
+        order_by: 'create_time',
+      }
+    })
+    // this.getData(index);
+  },
+  openPerform(e) {
+    var id = e.target.dataset.item.id;
+    dd.navigateTo({
+      url: '../openPerform/openPerform?id=' + id
+    })
+  },
+  openDetail(e) {
+    var id = e.target.dataset.item.id;
+    dd.navigateTo({
+      url: '../workDetail/workDetail?id=' + id
+    })
+  },
+  //上啦加载
+  onScrollToLower() {
+    if (!that.data.isData) {
+      this.setData({ page: ++that.data.page })
+      this.getData(that.data.activeIndex, true);
+    }
+  },
+});

+ 7 - 0
pages/statistics/my_task/my_task.json

@@ -0,0 +1,7 @@
+{
+  "usingComponents": {
+    "img-box": "/Component/img-box/index",
+    "select-zp": "/Component/selectSxZp/selectSxZp",
+    "no-data":"/Component/noData/noData"
+  }
+}

+ 173 - 0
pages/statistics/offerAreward/offerAreward.acss

@@ -0,0 +1,173 @@
+.form-top{
+  background-color: #fff;
+  padding:28rpx;
+  border-bottom: 1px solid #f1f1f1;
+}
+.form-top .flex-1{
+  text-align: right;
+  color: #969799;
+}
+.label{
+  position: relative;
+  width: 160rpx;
+  font-size: 32rpx
+}
+.isBt::before{
+  position: absolute;
+  content: "*";
+  color: #F56C6C;
+  left: -16rpx;
+}
+.inputs .li{
+  background-color: #fff;
+  padding:28rpx;
+  position: relative;
+}
+.li view:nth-child(2){
+  text-align: right;
+  color: #969799;
+}
+.title{
+  padding: 16rpx 28rpx;
+  font-size: 28rpx;
+}
+textarea{
+  padding-left: 10rpx;
+  padding-right: 0;
+  height: 150rpx;
+  position: relative;
+}
+.textarea::before{
+  position: absolute;
+  content: "*";
+  color: #F56C6C;
+  left: -16rpx;
+}
+.add{
+  background-color: #fff;
+  padding: 28rpx 28rpx;
+  color: #26A2FF;
+  margin: 28rpx 0;
+  margin-bottom: 40rpx; 
+}
+.addImg{
+  width: 50rpx;
+  height: 50rpx;
+  position: absolute;
+  bottom: 20rpx;
+  z-index: 998;
+}
+.rightImg{
+  width: 30rpx;
+  height: 30rpx;
+  margin-left: 10rpx;
+}
+.btn-area{
+  position: fixed;
+  background: #fff;
+  bottom: 0;
+  width: 100%;
+  border-top: 1px solid #f1f1f1;
+  padding: 10rpx;
+}
+.defBtn{
+  width: 90%;
+  margin: 0 auto;
+  border-radius: 10rpx;
+  height: 90rpx;
+  text-align: center;
+  line-height: 90rpx;
+}
+.showImg{
+  width: 160rpx;
+  height: 160rpx;
+  margin-bottom: 28rpx;
+  margin-right:40rpx; 
+  margin-top: 28rpx;
+}
+.detele{
+  color: #fff;
+  position: absolute;
+  height: 40rpx;
+  width: 40rpx;
+  border-radius: 100%;
+  background-color: #969799;
+  text-align: center;
+  line-height: 40rpx;
+  right: 10rpx;
+  top: 10rpx;
+}
+.box{
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: rgba(0,0,0,0.2);
+  z-index: 999;
+  transform: translate(0,100%);
+}
+.inputs{
+  margin-bottom: 200rpx;
+}
+ .inputs .li .input_text{
+  text-align: left;
+  font-size: 24rpx;
+}
+.inputs .li input{
+  width: 100%;
+}
+.jiang{
+  border: 1px solid #f1f1f1;
+  border-radius: 4rpx;
+  width: 40rpx;
+  text-align: center
+}
+.picker-box{
+  width: 110rpx;
+  border-radius: 50rpx;
+  background-color: #f1f1f1;
+  position: relative;
+  height: 60rpx;
+}
+.picker-box text{
+ text-align: center;
+ line-height: 60rpx;
+ font-size: 24rpx;
+}
+.yuan{
+  width: 50rpx;
+  height: 50rpx;
+  background: #26A2FF;
+  border-radius: 100rpx;
+  position: absolute;
+  top: 5rpx;
+}
+.picker-left{
+  left: 5rpx;
+}
+.picker-right{
+  right: 5rpx;
+}
+.userList{
+  height: 40rpx;
+  font-size: 32rpx;
+}
+.van-radio {
+    position: relative;
+    display: inline-block;
+    text-align: center;
+    width: 1.28rem;
+    height: .48rem;
+    background: #f5f7fa;
+    border-radius: .28rem;
+    z-index: 1;
+    color: #222;
+    line-height: 0.48rem;
+    font-size: 0.24rem;
+    margin-left: 20rpx;
+}
+.isTypes{
+  background: #26A2FF;
+  color: #fff
+}

+ 76 - 0
pages/statistics/offerAreward/offerAreward.axml

@@ -0,0 +1,76 @@
+<view>
+  <view>
+    <view class="inputs">
+      <view class="li">
+        <textarea class="textarea" maxlength="100" value="{{items.remark}}" onInput="bindTextAreaBlur" placeholder="请输入任务内容" data-index="{{index}}"></textarea>
+        <image mode="scaleToFill" src="../../../image/addImg.png" class="addImg" catchTap="openImg"/>
+      </view>
+      <view style="background:#fff;padding:0 28rpx;" a:if="{{items.file_list[0]}}" class="flex-box flex-v-ce">
+        <view a:for="{{items.file_list}}" key="index" a:for-item="imgs" a:for-index="imgIndex" style="position:relative">
+          <text class="detele" data-itemIndx="{{index}}" data-index="{{imgIndex}}" catchTap="deteleImg">×</text>
+          <image mode="scaleToFill" class="showImg" src="{{imgs}}" data-index="{{imgIndex}}" data-item="{{items.file_list}}" catchTap="showImg"/>
+        </view>
+      </view>
+      <view class="flex-box li margin-bottom" style="padding:15rpx 28rpx;margin-top:24rpx">
+        <view class="label isBt" style="position: relative;top:10rpx;">任务积分</view>
+        <text class="red" style="position: relative;top:10rpx;">+</text>
+        <view class="flex-1">
+          <input value="{{item.point2}}" placeholder="0" type="number" onInput="bindKeyInput" class="flex-1"/>
+        </view>
+      </view>
+      <view class="flex-box flex-v-ce li" data-num="2" data-item="{{{id:items.reviewer_id,name:items.revieweName}}}" catchTap="openSelect">
+        <view class="label isBt">审批人</view>
+        <view class="flex-1">{{items.revieweName}}</view>
+        <image mode="scaleToFill" src="../../../image/right.png" class="rightImg"/>
+      </view>
+      <view class="flex-box flex-v-ce li">
+        <view class="label isBt">任务类型</view>
+        <view class="flex-1 flex-box-end flex-flex-v-ce">
+          <view a:for="{{types}}">
+            <text a:if="{{item.code!=='JX'}}" catchTap="openType" data-id="{{item.id}}" class="van-radio {{items.pt_id==item.id? 'isTypes':''}}">{{item.name}}</text>
+          </view>
+        </view>
+      </view>
+      <view class="flex-box flex-v-ce li  margin-bottom" catchTap="openDate" data-index="{{index}}">
+        <view class="label isBt">截止时间</view>
+        <view class="flex-1">{{items.expire_time}}</view>
+        <image mode="scaleToFill" src="../../../image/right.png" class="rightImg"/>
+      </view>
+      <view class="li">
+        <textarea maxlength="100" value="{{item.remark}}" onInput="bindTextAreaBlur" placeholder="请输入任务描述" data-index="{{index}}"></textarea>
+      </view>
+      <view class="flex-box flex-v-ce li">
+        <view class="label">重复周期</view>
+        <view class="flex-1">
+          <picker onChange="bindObjPickerChange" value="{{arrIndex}}" range="{{objectArray}}" range-key="name">
+            <view class="row-extra">{{objectArray[arrIndex].name}}</view>
+          </picker>
+        </view>
+        <image mode="scaleToFill" src="../../../image/right.png" class="rightImg"/>
+      </view>
+      <view class="flex-box li" style="padding:15rpx 28rpx;">
+        <view class="label" style="position: relative;top:10rpx;">逾期扣分</view>
+        <text class="green" style="position: relative;top:10rpx;">-</text>
+        <view class="flex-1">
+          <input value="{{item.point2}}" placeholder="每逾期一天扣多少分" type="number" onInput="bindKeyInput2" class="flex-1"/>
+        </view>
+      </view>
+      <view class="flex-box flex-v-ce li" data-num="1" catchTap="openSelect">
+        <view class="label">可见范围</view>
+        <view class="flex-1 font-flex-word userList">
+          <block a:for="{{defaultSection}}">
+            <text style="font-size:32rpx">{{item.name}},</text>
+          </block>
+        </view>
+        <image mode="scaleToFill" src="../../../image/right.png" class="rightImg"/>
+      </view>
+    </view>
+    <view class="btn-area">
+      <button type="default" loading="{{disabled}}" class="defBtn" disabled="{{disabled}}" catchTap="formSubmit">提交</button>
+    </view>
+  </view>
+  <view class="box" animation="{{animationInfo}}">
+    <select-section-bottom defaultSection="{{defaultSection}}" onClose="onClose" onConfirm="onSelectSection" a:if="{{isShowType=='1'}}"/>
+    <select-section-staff-two superior_list="{{superior_list}}" isLeadership="{{false}}" selectUser="{{reviewerObj}}" onClose="onClose" onConfirm="onSelectUser2" a:if="{{isShowType=='2'}}"/>
+  </view>
+</view>

+ 369 - 0
pages/statistics/offerAreward/offerAreward.js

@@ -0,0 +1,369 @@
+var app = getApp()
+var that;
+var animation;
+Page({
+  data: {
+    items: {
+      targets: [],//工作执行者列表,以逗号分割的字符串或直接传入数组
+      pt_id: 3,//积分种类id
+      task_name: '',//任务名
+      task_remark: '',//任务详细描述
+      base_point: '',//任务参考积分
+      expire_time: '',//截至时间 格式:2020-02-02 12:00
+      package_id: '',//绩效任务包id 绩效任务包发布工作时必须大于0,其余工作发布为0
+      weight: '',//绩效权重 绩效任务包发布工作时必须大于0,其余工作发布为0
+      file_list: [],//附件地址列表
+      reviewer_id: '',//审批者id
+      revieweName: '',
+      timeout_deduction_point: '',//逾期扣分/月
+      unqualified: '',//评分标准 不合格-分数
+      qualified: '',//
+      satisfied: '',//
+      super_satisfied: '',//
+      cate_id: '',// 共组分类id   
+    },
+    reviewerObj: [],//默认审批人
+    objectArray: [
+      {
+        id: 0,
+        name: '不重复',
+      },
+      {
+        id: 1,
+        name: '每天重复',
+      },
+      {
+        id: 2,
+        name: '每周重复',
+      },
+      {
+        id: 3,
+        name: '每月重复',
+      },
+    ],
+    arrIndex: 0,
+    defaultSection:[],//选择的部门
+  },
+  onLoad() {
+    that = this;
+    dd.setNavigationBar({ title: "发布悬赏任务" });
+    that.setData({
+      types: app.globalData.types
+    })
+  },
+  bindObjPickerChange(e) {
+    this.setData({
+      arrIndex: e.detail.value,
+    });
+  },
+  openType(e) {
+    var id = e.target.dataset.id;
+    that.setData({
+      [`items.pt_id`]: id
+    })
+  },
+  onShow() {
+    animation = dd.createAnimation({
+      duration: 200,
+      timeFunction: "linear",
+    });
+  },
+  //积分输入
+  bindKeyInput(e) {
+    var point = `items.base_point`;
+    this.setData({
+      [point]: e.detail.value,
+    });
+  },
+  //积分输入
+  bindKeyInput2(e) {
+    var point = `items.timeout_deduction_point`;
+    this.setData({
+      [point]: e.detail.value,
+    });
+  },
+
+  //显示图片
+  showImg(e) {
+    var index = e.target.dataset.index;
+    var item = e.target.dataset.item
+    dd.previewImage({
+      current: index,
+      urls: item
+    });
+  },
+  //关闭规则
+  onClose() {
+    animation.translateY(1200).step();
+    that.setData({
+      animationInfo: animation.export()
+    });
+    that.setData({ isShowType: '' });
+  },
+  //选择部门
+  onSelectSection(e){
+      this.setData({
+        defaultSection:e
+      })
+  },
+  //选择弹窗
+  openSelect(e) {
+    var num = e.target.dataset.num;
+    if (e.target.dataset.item) {
+      if (e.target.dataset.item.id) {
+        that.setData({ reviewerObj: [e.target.dataset.item] });
+      } else {
+        that.setData({ reviewerObj: [] });
+      }
+    }
+    that.setData({
+      isShowType: num,
+    });
+    animation.translateY(0).step();
+    that.setData({
+      animationInfo: animation.export()
+    });
+  },
+  //删除图片
+  deteleImg(e) {
+    var index = e.target.dataset.index;//获取itemS集合中对应的files
+    var files = that.data.items.file_list;//获取itemS集合中对应的files
+    var files_box = `items.file_list`;//
+    app.globalData.arrRemoveObj(files, files[index]);
+    that.setData({
+      [files_box]: files
+    });
+
+  },
+  //图片选择
+  openImg(e) {
+    var files = that.data.items.file_list;
+    if (files.length >= 3) {
+      app.globalData.showToast("只能上传三张");
+      return false;
+    }
+    dd.chooseImage({
+      count: 1,
+      success: (res) => {
+        that.postImg(res.filePaths[0]);
+      },
+    });
+  },
+  postImg(img_url) {
+    var files_box = `items.file_list`;
+    var files = that.data.items.file_list;
+    dd.httpRequest({
+      url: app.globalData.imgHttpUrl,
+      method: 'POST',
+      data: {
+        md5: that.random_string(32),
+        'name': app.globalData.day
+      },
+      success: function (res) {
+        if (app.globalData.userData.site_id) {
+          var key = 'intesys/dd/' + app.globalData.userData.site_id + "/" + app.globalData.day + '/' + that.random_string(32) + '.png';
+        } else {
+          var key = 'intesys/dd/' + app.globalData.day + '/' + that.random_string(32) + '.png';
+        }
+        var obj = res.data.data;
+        dd.uploadFile({
+          url: app.globalData.ALIOSS_URL,
+          fileType: 'image',
+          fileName: 'file',
+          filePath: img_url,
+          formData: {
+            key: key,
+            policy: obj.policy,
+            OSSAccessKeyId: obj.accessid,
+            success_action_status: 200,
+            signature: obj.signature
+          },
+          success: (res) => {
+            if (res.statusCode == 200) {
+              if (files.length > 0) {
+                files.push('http://cdn.intesys.g107.com/' + key)
+              } else {
+                files = ['http://cdn.intesys.g107.com/' + key];
+              }
+              that.setData({
+                [files_box]: files
+              });
+              console.log(that.data.items);
+              app.globalData.showToast("已上传");
+            }
+          },
+          fail: (err) => {
+            console.log(err);
+          }
+        });
+      },
+      fail: function (res) {
+        app.globalData.showToast("上传失败");
+      }
+    })
+  },
+  random_string(len) {
+    len = len || 32
+    var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
+    var maxPos = chars.length
+    var pwd = ''
+    for (let i = 0; i < len; i++) {
+      pwd += chars.charAt(Math.floor(Math.random() * maxPos))
+    }
+    return pwd
+  },
+
+  //备注输入
+  bindTextAreaBlur: function (e) {
+    var index = e.target.dataset.index;
+    var remark = `items[${index}].remark`
+    this.setData({
+      [remark]: e.detail.value,
+    });
+  },
+  showToast(text) {
+    app.globalData.showToast(text);
+  },
+  formSubmit() {
+    var items = this.data.items;
+    var arr = [];
+    var isTg = true;
+    var pt_id = app.getTypesItem(this.data.isGzType).id
+    if (userData.length == 0) {
+      this.showToast('请选择奖扣对象')
+      return;
+    }
+    for (var i = 0; i < items.length; i++) {
+      var obj = {};
+      var item = items[i];
+      var num = item.checked ? item.point : item.point2
+      var point;
+      if (item.checked) {
+        if (item.isArrindex != true) {
+          point = 0 - num;
+        } else {
+          point = num;
+        }
+        if (point < item.selectRule.min_point || point > item.selectRule.max_point) {
+          this.showToast(`第${i + 1}条,积分分值超出可输入范围`);
+          isTg = false;
+        }
+      } else {
+        if (item.isArrindex2 != true) {
+          point = 0 - num;
+        } else {
+          point = num;
+        }
+      }
+      if (item.checked) {
+        if (!item.rule_id) {
+          this.showToast(`第${i + 1}条请选择规则`);
+          isTg = false;
+          break;
+        }
+      } else {
+        if (!item.rule_id2) {
+          this.showToast(`第${i + 1}条请选择分类`);
+          isTg = false;
+          break;
+        }
+      }
+      if (point == 0 || !point) {
+        this.showToast(`第${i + 1}条积分分值不能为0或者为空`);
+        isTg = false;
+        break;
+      }
+
+      if (!item.remark) {
+        this.showToast(`第${i + 1}条事件内容不能为空`);
+        isTg = false;
+        break;
+      }
+      obj.rule_id = item.checked ? item.rule_id : item.rule_id2;
+      obj.item_id = item.checked ? item.item_id : 0;
+      obj.point = point;
+      obj.remark = item.remark;
+      obj.event_time = item.event_time;
+      obj.pt_id = pt_id;
+      obj.reviewer_id = item.reviewer_id ? item.reviewer_id : 0;
+      obj.files = item.files;
+      arr.push(obj);
+    }
+    var userIds = []
+    userData.map(item => {
+      userIds.push(item.id)
+    })
+    if (isTg) {
+      var data = {
+        members: JSON.stringify(userIds),
+        items: JSON.stringify(arr)
+      }
+      this.setData({ disabled: true });
+      var url = this.data.type == 'B' ? 'api/integral/point/entry' : 'api/integral/review/a/entry'
+      app.$post(url, data).then((res) => {
+        var is = true, msg;
+
+        if (this.data.type == 'B') {
+          res.data.data.list.forEach(item => {
+            if (item.status != 1) {
+              is = false;
+              msg = item.msg;
+            }
+          })
+        } else {
+          res.data.data.forEach(item => {
+            if (item.status != 1) {
+              is = false;
+              msg = item.rule_item;
+            }
+          })
+        }
+
+        if (is) {
+          this.showToast('提交成功');
+          setTimeout(() => {
+            this.setData({ disabled: false });
+            dd.navigateBack({ delta: 1 })
+          }, 1000);
+        } else {
+          this.setData({ disabled: false });
+          this.showToast(msg);
+        }
+      }).catch(err => {
+        this.setData({ disabled: false });
+      })
+    }
+  },
+  switchChange(e) {
+    var index = e.target.dataset.index;
+    var item = `items[${index}].checked`;
+    that.setData({
+      [item]: e.detail.value
+    })
+  },
+  //选择时间
+  openDate(e) {
+    var item = `items.expire_time`
+    dd.datePicker({
+      format: 'yyyy-MM-dd HH:mm',
+      currentDate: that.data.items.expire_time,
+      success: (res) => {
+        that.setData({
+          [item]: res.date
+        })
+      },
+    });
+  },
+  //选择审批人
+  onSelectUser2(item) {
+    var elm = item.length > 0 ? item[0] : { id: '', name: '' };
+    var reviewer_id = `items.reviewer_id`
+    var revieweName = `items.revieweName`
+    that.setData({
+      [reviewer_id]: elm.id,
+      [revieweName]: elm.name,
+    });
+
+  },
+});
+

+ 6 - 0
pages/statistics/offerAreward/offerAreward.json

@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "select-section-staff-two":"/Component/selectSectionStaff_tow/selectSectionStaff_tow",
+    "select-section-bottom":"/Component/selectSectionBottom/selectSectionBottom"
+  }
+}

+ 44 - 0
pages/statistics/openPerform/openPerform.acss

@@ -0,0 +1,44 @@
+/* mina */
+.main{
+  background: #fff;
+}
+.itme-li{
+  background-color:rgb(255, 255, 255);
+  padding:0.28rem;
+  position:relative;
+}
+.defBtn{
+  width: 90%;
+  margin: 0 auto;
+  border-radius: 10rpx;
+  margin-bottom: 100rpx;
+  height: 90rpx;
+  text-align: center;
+  line-height: 90rpx;
+}
+textarea{
+  padding-left: 10rpx;
+  padding-right: 0;
+  height: 200rpx;
+  position: relative;
+}
+.detele{
+  color: #fff;
+  position: absolute;
+  height: 40rpx;
+  width: 40rpx;
+  border-radius: 100%;
+  background-color: #969799;
+  text-align: center;
+  line-height: 40rpx;
+  right: 10rpx;
+  top: 10rpx;
+}
+.addImg{
+  width: 50rpx;
+  height: 50rpx;
+  position: absolute;
+  bottom: 20rpx;
+  z-index: 998;
+  /* background: #F56C6C; */
+}

+ 18 - 0
pages/statistics/openPerform/openPerform.axml

@@ -0,0 +1,18 @@
+<view>
+  <view style="height:20rpx"></view>
+  <view class="main">
+    <view class="itme-li">
+      <textarea maxlength="100" value="{{item.remark}}" onInput="bindTextAreaBlur" placeholder="请输入备注(选填)" data-index="{{index}}"></textarea>
+      <image mode="scaleToFill" src="../../../image/addImg.png" data-index="{{index}}" class="addImg" catchTap="openImg"/>
+    </view>
+    <view style="background:#fff;padding:0 28rpx;" a:if="{{item.files[0]}}" class="flex-box flex-v-ce">
+      <view a:for="{{item.files}}" key="index" a:for-item="imgs" a:for-index="imgIndex" style="position:relative">
+        <text class="detele" data-itemIndx="{{index}}" data-index="{{imgIndex}}" catchTap="deteleImg">×</text>
+        <image mode="scaleToFill" class="showImg" src="{{imgs}}" data-index="{{imgIndex}}" data-item="{{item.files}}" catchTap="showImg"/>
+      </view>
+    </view>
+  </view>
+  <view class="btn-area" style="margin-top:28rpx;">
+    <button type="default" loading="{{disabled}}" class="defBtn" disabled="{{disabled}}" catchTap="formSubmit">提交</button>
+  </view>
+</view>

+ 113 - 0
pages/statistics/openPerform/openPerform.js

@@ -0,0 +1,113 @@
+var app = getApp();
+var that;
+var animation;
+Page({
+  data: {
+    users: [],
+    item: {
+      remark: '',
+      id: ''
+    },
+    defaultVal: '',
+  },
+  onLoad() {
+    that = this;
+    dd.setNavigationBar({ title: "完成任务" });
+  },
+  formSubmit() {
+    var page1 = getCurrentPages()[getCurrentPages().length - 2]//上一个页面的数据
+    console.log(page1)
+    dd.navigateBack({
+      delta: 1
+    })
+  },
+  //删除图片
+  deteleImg(e) {
+    var { itemIndx, index } = e.target.dataset;
+    var files = that.data.items[itemIndx].files;//获取itemS集合中对应的files
+    var files_box = `items[${itemIndx}].files`;//
+    app.globalData.arrRemoveObj(files, files[index]);
+    that.setData({
+      [files_box]: files
+    });
+
+  },
+  //图片选择
+  openImg(e) {
+    var index2 = e.target.dataset.index;
+    var files = that.data.items[index2].files;
+    if (files.length >= 3) {
+      app.globalData.showToast("只能上传三张");
+      return false;
+    }
+    dd.chooseImage({
+      count: 1,
+      success: (res) => {
+        that.postImg(res.filePaths[0], index2);
+      },
+    });
+  },
+  postImg(img_url, index) {
+    var files_box = `items[${index}].files`;
+    var files = this.data.items[index].files;
+    dd.httpRequest({
+      url: app.globalData.imgHttpUrl,
+      method: 'POST',
+      data: {
+        md5: that.random_string(32),
+        'name': app.globalData.day
+      },
+      success: function (res) {
+        if (app.globalData.userData.site_id) {
+          var key = 'intesys/dd/' + app.globalData.userData.site_id + "/" + app.globalData.day + '/' + that.random_string(32) + '.png';
+        } else {
+          var key = 'intesys/dd/' + app.globalData.day + '/' + that.random_string(32) + '.png';
+        }
+        var obj = res.data.data;
+        dd.uploadFile({
+          url: app.globalData.ALIOSS_URL,
+          fileType: 'image',
+          fileName: 'file',
+          filePath: img_url,
+          formData: {
+            key: key,
+            policy: obj.policy,
+            OSSAccessKeyId: obj.accessid,
+            success_action_status: 200,
+            signature: obj.signature
+          },
+          success: (res) => {
+            if (res.statusCode == 200) {
+              if (files.length > 0) {
+                files.push('http://cdn.intesys.g107.com/' + key)
+              } else {
+                files = ['http://cdn.intesys.g107.com/' + key];
+              }
+              that.setData({
+                [files_box]: files
+              });
+              app.globalData.showToast("已上传");
+            }
+          },
+          fail: (err) => {
+            console.log(err);
+          }
+        });
+      },
+      fail: function (res) {
+        app.globalData.showToast("上传失败");
+      }
+
+    })
+  },
+  random_string(len) {
+    len = len || 32
+    var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
+    var maxPos = chars.length
+    var pwd = ''
+    for (let i = 0; i < len; i++) {
+      pwd += chars.charAt(Math.floor(Math.random() * maxPos))
+    }
+    return pwd
+  },
+});

+ 1 - 0
pages/statistics/openPerform/openPerform.json

@@ -0,0 +1 @@
+{}

+ 30 - 0
pages/statistics/recordOne/recordOne.acss

@@ -0,0 +1,30 @@
+/* mina */
+.main{
+  background: #fff;
+}
+.itme-li{
+  background-color:rgb(255, 255, 255);
+  padding:0.28rem;
+  position:relative
+}
+.defBtn{
+  width: 90%;
+  margin: 0 auto;
+  border-radius: 10rpx;
+  margin-bottom: 100rpx;
+  height: 90rpx;
+  text-align: center;
+  line-height: 90rpx;
+}
+textarea{
+  padding-left: 10rpx;
+  padding-right: 0;
+  height: 200rpx;
+  position: relative;
+}
+textarea::before{
+  position: absolute;
+  content: "*";
+  color: #F56C6C;
+  left: -16rpx;
+}

+ 11 - 0
pages/statistics/recordOne/recordOne.axml

@@ -0,0 +1,11 @@
+<view>
+  <view style="height:20rpx"></view>
+  <view class="main">
+    <view class="itme-li">
+        <textarea maxlength="100"  value="{{item.remark}}" onInput="bindTextAreaBlur" placeholder="请认真填写做这件事的关键过程"></textarea>
+    </view>
+  </view>
+  <view class="btn-area" style="margin-top:28rpx;">
+    <button type="default" loading="{{disabled}}" class="defBtn" disabled="{{disabled}}" catchTap="formSubmit">提交</button>
+  </view>
+</view>

+ 25 - 0
pages/statistics/recordOne/recordOne.js

@@ -0,0 +1,25 @@
+var app = getApp();
+var that;
+var animation;
+Page({
+  data: {
+    users:[],
+    item:{
+        remark:'',
+        id:''
+    },
+    defaultVal:'',
+  },
+  onLoad() {
+    that = this;
+    dd.setNavigationBar({ title: "任务过程" });
+  },
+  formSubmit(){
+    var page1=getCurrentPages()[getCurrentPages().length-2]//上一个页面的数据
+    
+    console.log(page1)
+    dd.navigateBack({
+      delta: 1
+    })
+  }
+});

+ 1 - 0
pages/statistics/recordOne/recordOne.json

@@ -0,0 +1 @@
+{}

+ 70 - 0
pages/statistics/repetitive_tasks_detail/repetitive_tasks_detail.acss

@@ -0,0 +1,70 @@
+.header-top {
+  background: #fff;
+  padding: 20rpx 32rpx;
+}
+
+.header-top-right {
+  margin-left: 10rpx;
+}
+
+.state {
+  color: #E6A23C;
+  margin-left: 10rpx;
+}
+
+.header-main {
+  background: #fff;
+  padding: 16rpx 32rpx;
+}
+
+.header-main .laber {
+  color: #909399;
+  width: 140rpx;
+}
+
+.header-main .flex-box {
+  padding: 10rpx 0;
+}
+
+.top-left {
+  margin-left: 16rpx;
+}
+
+.top-left view:nth-child(2) {
+  color: rgb(144, 147, 153);
+  margin-top: 10rpx
+}
+
+.top-right {
+  margin-left: 16rpx;
+  text-align: center;
+  color: rgb(144, 147, 153);
+}
+
+.name {
+  font-weight: 700;
+  color: #222
+}
+.img{
+  width: 40rpx;
+  height: 40rpx;
+  position: relative;
+  top: 10rpx;
+}
+.imgs image{
+  width: 90rpx;
+  height: 90rpx;
+  margin: 0 10rpx;
+}
+
+.main-item{
+  background: #fff;
+  padding: 20rpx 32rpx;
+}
+.img-item{
+  margin: 0 10rpx;
+}
+.img-item text{
+    font-size: 24rpx;
+    text-align: center;
+}

+ 66 - 0
pages/statistics/repetitive_tasks_detail/repetitive_tasks_detail.axml

@@ -0,0 +1,66 @@
+<view>
+  <view class="header margin-bottom">
+    <view class="header-top flex-box flex-v-ce  margin-bottom">
+      <view class="flex-box flex-v-ce flex-1 ">
+        <img-box name="{{dataDetail.name}}" height="90rpx" width="90rpx" fSize="28rpx"></img-box>
+        <view class="top-left">
+          <view class="name">郭家裕悬赏的A分任务</view>
+          <view class="yellow">已过期</view>
+        </view>
+      </view>
+      <view class="name">10</view>
+    </view>
+    <view class="header-main">
+      <view class="margin-bottom">排位吃饭</view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">任务描述</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">任务记分</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">逾期扣分</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">执行周期</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box">
+        <view class="laber">任务图片</view>
+        <view class="flex-1 flex-box flex-v-ce imgs">
+          <image mode="scaleToFill" data-index="{{imgIndex}}" data-item="{{item.files}}" src="../../../image/start1.png" catchTap="showImg"/>
+          <image mode="scaleToFill" src="../../../image/start1.png"/>
+          <image mode="scaleToFill" src="../../../image/start1.png"/>
+        </view>
+      </view>
+    </view>
+  </view>
+  <view class="main">
+    <view class="margin-top main-item">
+      <view class="margin-bottom">审批者</view>
+      <view class="flex-box">
+        <view class="flex-box-v flex-center-center img-item" a:for="{{[1,2,3]}}">
+          <img-box name="{{dataDetail.name}}" height="90rpx" width="90rpx" fSize="28rpx"></img-box>
+          <text>城建</text>
+        </view>
+      </view>
+    </view>
+    <view class="margin-top main-item">
+      <view class="margin-bottom">执行者</view>
+      <view class="flex-box">
+        <view class="flex-box-v flex-center-center img-item" a:for="{{[1,2,3]}}">
+          <img-box name="{{dataDetail.name}}" height="90rpx" width="90rpx" fSize="28rpx"></img-box>
+          <text>城建</text>
+        </view>
+      </view>
+    </view>
+  </view>
+  <view class="pop-up">
+    <picker onChange="bindPickerChange" value="{{index}}" range="{{array}}">
+      <image class="img" mode="scaleToFill" src="../../../image/Bj.png"/>
+    </picker>
+  </view>
+</view>

+ 63 - 0
pages/statistics/repetitive_tasks_detail/repetitive_tasks_detail.js

@@ -0,0 +1,63 @@
+
+var app = getApp()
+var that;
+Page({
+  data: {
+    date: app.globalData.month,
+    activeIndex: 1,
+    array: ['删除任务'],
+  },
+  onLoad(e) {
+    that = this;
+    dd.setNavigationBar({ title: "任务详情" });
+    // that.getDetail(e.event_id);
+  },
+  //显示图片
+  showImg(e) {
+    var index = e.target.dataset.index;
+    var item = e.target.dataset.item
+    dd.previewImage({
+      current: index,
+      urls: item
+    });
+  },
+  bindPickerChange(e) {
+    dd.confirm({
+      title: '删除任务',
+      content: '删除此任务将会删除其相关记录和积分数据,确认删除吗?',
+      confirmButtonText: '确定',
+      cancelButtonText: '取消',
+      success: (result) => {
+        if (result.confirm) {
+
+        }
+      },
+    });
+  },
+  //显示图片
+  showImg(e) {
+    var index = e.target.dataset.index;
+    var item = e.target.dataset.item
+    dd.previewImage({
+      current: index,
+      urls: item
+    });
+  },
+  activeItem(e) {
+    var index = e.target.dataset.index;
+    this.setData({ activeIndex: index })
+  },
+  openSearch() {
+    app.globalData.showToast("暂不支持筛选");
+  },
+  getDetail(id) {
+    app.$get("api/integral/statistics/integral/info", { event_id: 533 }).then((res) => {
+      this.setData({ dataDetail: res.data.data })
+    })
+  },
+  openSchedule() {
+    dd.navigateTo({
+      url: '../schedule/schedule'
+    })
+  },
+});

+ 5 - 0
pages/statistics/repetitive_tasks_detail/repetitive_tasks_detail.json

@@ -0,0 +1,5 @@
+{
+  "usingComponents": {
+    "img-box": "/Component/img-box/index"
+  }
+}

+ 24 - 0
pages/statistics/schedule/schedule.acss

@@ -0,0 +1,24 @@
+/* mina */
+.main{
+  background: #fff;
+}
+.titles{
+  padding: .24rem .32rem;
+}
+.title{
+  font-weight: 600
+}
+.slider{
+   padding:0 .24rem ;
+   padding-top: 0;
+   padding-bottom: 0.5rem;
+}
+.defBtn{
+  width: 90%;
+  margin: 0 auto;
+  border-radius: 10rpx;
+  margin-bottom: 100rpx;
+  height: 90rpx;
+  text-align: center;
+  line-height: 90rpx;
+}

+ 15 - 0
pages/statistics/schedule/schedule.axml

@@ -0,0 +1,15 @@
+<view>
+  <view style="height:20rpx"></view>
+  <view class="main">
+    <view class="flex-box flex-v-ce titles">
+      <view class="title">任务进度</view>
+    </view>
+    <view class="slider">
+      <slider value="33" onChange="slider4change" min="25" max="50"></slider>
+      <view style="font-size: 0.28rem; padding-top: 0.24rem;">已完成0%</view>
+    </view>
+  </view>
+  <view class="btn-area" style="margin-top:28rpx;">
+    <button type="default" loading="{{disabled}}" class="defBtn" disabled="{{disabled}}" catchTap="formSubmit">提交</button>
+  </view>
+</view>

+ 25 - 0
pages/statistics/schedule/schedule.js

@@ -0,0 +1,25 @@
+var app = getApp();
+var that;
+var animation;
+Page({
+  data: {
+    users:[],
+    item:{
+        remark:'',
+        id:''
+    },
+    defaultVal:'',
+  },
+  onLoad() {
+    that = this;
+    dd.setNavigationBar({ title: "更新进度" });
+  },
+  formSubmit(){
+    var page1=getCurrentPages()[getCurrentPages().length-2]//上一个页面的数据
+    
+    console.log(page1)
+    dd.navigateBack({
+      delta: 1
+    })
+  }
+});

+ 1 - 0
pages/statistics/schedule/schedule.json

@@ -0,0 +1 @@
+{}

+ 53 - 0
pages/statistics/taskDetail/taskDetail.acss

@@ -0,0 +1,53 @@
+.header-top {
+  background: #fff;
+  padding: 20rpx 32rpx;
+}
+
+.header-top-right {
+  margin-left: 10rpx;
+}
+
+.state {
+  color: #E6A23C;
+  margin-left: 10rpx;
+}
+
+.header-main {
+  background: #fff;
+  padding: 16rpx 32rpx;
+}
+
+.header-main .laber {
+  color: #909399;
+  width: 140rpx;
+}
+
+.header-main .flex-box {
+  padding: 10rpx 0;
+}
+
+.top-left {
+  margin-left: 16rpx;
+}
+
+.top-left view:nth-child(2) {
+  color: rgb(144, 147, 153);
+  margin-top: 10rpx
+}
+
+.top-right {
+  margin-left: 16rpx;
+  text-align: center;
+  color: rgb(144, 147, 153);
+}
+
+.name {
+  font-weight: 700;
+  color: #222
+}
+.img{
+  width: 40rpx;
+  height: 40rpx;
+  position: relative;
+  top: 10rpx;
+}

+ 41 - 0
pages/statistics/taskDetail/taskDetail.axml

@@ -0,0 +1,41 @@
+<view>
+  <view class="header margin-bottom">
+    <view class="header-top flex-box flex-v-ce  margin-bottom">
+      <view class="flex-box flex-v-ce flex-1 ">
+        <img-box name="{{dataDetail.name}}" height="90rpx" width="90rpx" fSize="28rpx"></img-box>
+        <view class="top-left">
+          <view class="name">郭家裕悬赏的A分任务</view>
+          <view class="yellow">已过期</view>
+        </view>
+      </view>
+       <view class="name">10</view>
+    </view>
+    <view class="header-main">
+      <view class="flex-box flex-v-ce">
+        <view class="laber">任务内容</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">任务描述</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">任务类型</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">截止时间</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">逾期扣分</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+    </view>
+  </view>
+  <view class="pop-up">
+    <picker onChange="bindPickerChange" value="{{index}}" range="{{array}}">
+      <image class="img" mode="scaleToFill" src="../../../image/Bj.png"/>
+    </picker>    
+  </view>
+</view>

+ 61 - 0
pages/statistics/taskDetail/taskDetail.js

@@ -0,0 +1,61 @@
+
+var app = getApp()
+var that;
+Page({
+  data: {
+    date: app.globalData.month,
+    activeIndex: 1,
+    array: ['编辑任务', '删除任务'],
+  },
+  onLoad(e) {
+    that = this;
+    dd.setNavigationBar({ title: "任务详情" });
+    // that.getDetail(e.event_id);
+  },
+  bindPickerChange(e) {
+    console.log(e.detail.value,this.data.array.length)
+    if ((e.detail.value + 1) == this.data.array.length) {
+      dd.confirm({
+        title: '删除任务',
+        content: '删除此任务将会删除其相关记录和积分数据,确认删除吗?',
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        success: (result) => {
+          if (result.confirm) {
+
+          }
+        },
+      });
+    } else {
+      dd.navigateTo({
+        url: '../schedule/schedule'
+      })
+    }
+  },
+  //显示图片
+  showImg(e) {
+    var index = e.target.dataset.index;
+    var item = e.target.dataset.item
+    dd.previewImage({
+      current: index,
+      urls: item
+    });
+  },
+  activeItem(e) {
+    var index = e.target.dataset.index;
+    this.setData({ activeIndex: index })
+  },
+  openSearch() {
+    app.globalData.showToast("暂不支持筛选");
+  },
+  getDetail(id) {
+    app.$get("api/integral/statistics/integral/info", { event_id: 533 }).then((res) => {
+      this.setData({ dataDetail: res.data.data })
+    })
+  },
+  openSchedule() {
+    dd.navigateTo({
+      url: '../schedule/schedule'
+    })
+  },
+});

+ 5 - 0
pages/statistics/taskDetail/taskDetail.json

@@ -0,0 +1,5 @@
+{
+  "usingComponents": {
+    "img-box": "/Component/img-box/index"
+  }
+}

+ 117 - 0
pages/statistics/workDetail/workDetail.acss

@@ -0,0 +1,117 @@
+.header-top{
+  background: #fff;
+  padding:20rpx 32rpx;
+}
+.header-top-right{
+  margin-left: 10rpx;
+}
+.state{
+  color: #E6A23C;
+  margin-left: 10rpx;
+}
+.header-main{
+  background: #fff;
+  padding:16rpx 32rpx;
+}
+.header-main .laber{
+  color: #909399;
+  width: 140rpx;
+}
+.header-main .flex-box{
+ padding: 10rpx 0;
+}
+
+.top-left{
+  margin-left: 16rpx;
+}
+.top-left view:nth-child(2){
+  color: rgb(144, 147, 153);
+  margin-top: 10rpx
+}
+.top-right{
+  margin-left: 16rpx;
+  text-align: center;
+  color: rgb(144, 147, 153);
+}
+
+/* mina */
+.main{
+  background: #fff;
+}
+.titles{
+  padding: .24rem .32rem;
+}
+.title{
+  font-weight: 600
+}
+.slider{
+   padding:0 .24rem ;
+   padding-top: 0;
+   padding-bottom: 0.5rem;
+}
+
+.selectItems{
+     background: #fff;
+     text-align: center;
+}
+.selectItems .selectImg{
+    border-left: 1px solid #f1f1f1;
+    padding: 0 20rpx;
+}
+.img{
+    width: 40rpx;
+    height: 40rpx;
+}
+.selectImg image{
+    width: 30rpx;
+    height: 30rpx;
+}
+.selectItems .flex-1{
+    padding: 24rpx 0;
+    text-align: center;
+    font-size: 32rpx;
+    position: relative;
+}
+.selectItems .active::before{
+      position: absolute;
+      content: " ";
+      height: 4rpx;
+      width: 100rpx;
+      background: #26A2FF;
+      bottom: 0rpx; 
+      left: 50%;
+      margin-left: -50rpx;
+}
+
+.gc_item{
+  background: #fff;
+  margin-top: 20rpx;
+  padding: 0.24rem;
+  position: relative;
+}
+.delete{
+  position: absolute;
+  bottom: 0.24rem;
+  right: 0.24rem;
+  
+}
+.sum{
+    color: rgb(255, 204, 0);
+    padding: 0.16rem 0px 0px 0.32rem;
+    background: #fff;
+}
+.ji{
+  text-align: right;
+  font-size: 28rpx;
+}
+.imgs image{
+  width: 90rpx;
+  height: 90rpx;
+  margin: 0 10rpx;
+}
+.img{
+  width: 40rpx;
+  height: 40rpx;
+  position: relative;
+  top: 10rpx;
+}

+ 120 - 0
pages/statistics/workDetail/workDetail.axml

@@ -0,0 +1,120 @@
+<view>
+  <view class="header margin-bottom">
+    <view class="header-top flex-box flex-v-ce  margin-bottom">
+      <view class="flex-box flex-v-ce flex-1 ">
+        <img-box name="{{dataDetail.name}}" height="90rpx" width="90rpx" fSize="28rpx"></img-box>
+        <view class="top-left">
+          <view class="name">吴俊逸</view>
+          <view>产品运营部</view>
+        </view>
+      </view>
+      <view class="top-right">
+        <view>10</view>
+        <view>B分</view>
+      </view>
+      <view class="top-right">
+        <view>0</view>
+        <view>最终分</view>
+      </view>
+    </view>
+    <view class="header-main">
+      <view class="flex-box flex-v-ce">
+        <view class="laber">工作内容</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">截止时间</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">逾期扣分</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">任务备注</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">审批人</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">发布人</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box flex-v-ce">
+        <view class="laber">积分种类</view>
+        <view class="flex-1">积分申请</view>
+      </view>
+      <view class="flex-box">
+        <view class="laber">任务图片</view>
+        <view class="flex-1 flex-box flex-v-ce imgs">
+            <image mode="scaleToFill"  data-index="{{imgIndex}}" data-item="{{item.files}}" src="../../../image/start1.png" catchTap="showImg"/>
+            <image mode="scaleToFill" src="../../../image/start1.png"/>
+            <image mode="scaleToFill" src="../../../image/start1.png"/>
+        </view>
+      </view>
+    </view>
+  </view>
+  <view class="main border-bottom">
+    <view class="flex-box flex-v-ce titles">
+      <view class="title flex-1">任务进度</view>
+      <view class="blue" style="font-size:28rpx" catchTap="openSchedule">更新进度</view>
+    </view>
+    <view class="slider">
+      <slider value="33" onChange="slider4change" min="25" max="50"></slider>
+    </view>
+  </view>
+  <view class="footer">
+    <view class="flex-box flex-v-ce selectItems">
+      <view data-index="1" class="{{activeIndex == 1? 'active':''}} flex-1" catchTap="activeItem">任务过程</view>
+      <view data-index="2" class="{{activeIndex == 2? 'active':''}} flex-1" catchTap="activeItem">记分记录</view>
+      <view a:if="{{activeIndex == 1}}" class="flex-box-end flex-2 blue ji">
+        <text style="padding-right:24rpx">+记一条</text>
+      </view>
+      <view a:if="{{activeIndex == 2}}" class="flex-box-end flex-2 blue ji">
+        <text style="padding-right:24rpx">记分</text>
+      </view>
+    </view>
+    <view a:if="{{activeIndex == 1}}">
+      <view class="flex-box gc_item">
+        <view class="flex-box  flex-1">
+          <img-box name="{{dataDetail.name}}" height="90rpx" width="90rpx" fSize="28rpx"></img-box>
+          <view class="top-left">
+            <view class="flex-box">
+              <view class="fontColorX flex-1">吴俊逸</view>
+              <view style="font-size:28rpx">2021-01-08 18:11</view>
+            </view>
+            <view style="color:#222;margin-right:80rpx;">产品运营部产品运营部产品运营部产品运营部产品运营部</view>
+          </view>
+          <view class="delete">
+            <image mode="scaleToFill" src="../../../image/delete.png" class="img"></image>
+          </view>
+        </view>
+      </view>
+    </view>
+    <view a:else>
+      <view class="sum">合计20</view>
+      <view class="flex-box gc_item">
+        <view class="flex-box flex-1">
+          <img-box name="{{dataDetail.name}}" height="90rpx" width="90rpx" fSize="28rpx"></img-box>
+          <view class="top-left">
+            <view class="flex-box">
+              <view class="fontColorX flex-1">吴俊逸</view>
+              <view style="font-size:28rpx">2021-01-08 18:11</view>
+            </view>
+            <view style="color:#222;margin-right:80rpx;">产品运营部产品运营部产品运营部产品运营部产品运营部</view>
+          </view>
+          <view class="delete">
+            <image mode="scaleToFill" src="../../../image/delete.png" class="img"></image>
+          </view>
+        </view>
+      </view>
+    </view>
+  </view>
+  <view class="pop-up">
+    <picker onChange="bindPickerChange" value="{{index}}" range="{{array}}">
+      <image class="img2" mode="scaleToFill" src="../../../image/Bj.png"/>
+    </picker>
+  </view>
+</view>

+ 53 - 0
pages/statistics/workDetail/workDetail.js

@@ -0,0 +1,53 @@
+
+var app = getApp()
+var that;
+Page({
+  data: {
+    date: app.globalData.month,
+    activeIndex: 1,
+  },
+  onLoad(e) {
+    that = this;
+    dd.setNavigationBar({ title: "事件详情" });
+    // that.getDetail(e.event_id);
+  },
+    bindPickerChange(e) {
+    dd.confirm({
+      title: '删除任务',
+      content: '删除此任务将会删除其相关记录和积分数据,确认删除吗?',
+      confirmButtonText: '确定',
+      cancelButtonText: '取消',
+      success: (result) => {
+        if (result.confirm) {
+
+        }
+      },
+    });
+  },
+  //显示图片
+  showImg(e) {
+    var index = e.target.dataset.index;
+    var item = e.target.dataset.item
+    dd.previewImage({
+      current: index,
+      urls: item
+    });
+  },
+  activeItem(e) {
+    var index = e.target.dataset.index;
+    this.setData({ activeIndex: index })
+  },
+  openSearch() {
+    app.globalData.showToast("暂不支持筛选");
+  },
+  getDetail(id) {
+    app.$get("api/integral/statistics/integral/info", { event_id: 533 }).then((res) => {
+      this.setData({ dataDetail: res.data.data })
+    })
+  },
+  openSchedule(){
+    dd.navigateTo({
+      url: '../schedule/schedule'
+    }) 
+  },
+});

+ 5 - 0
pages/statistics/workDetail/workDetail.json

@@ -0,0 +1,5 @@
+{
+  "usingComponents": {
+    "img-box": "/Component/img-box/index"
+  }
+}

+ 83 - 0
pages/statistics/workpoints/workpoints.acss

@@ -0,0 +1,83 @@
+
+.itme-li {
+  background-color: rgb(255, 255, 255);
+  padding: 0.28rem;
+  position: relative
+}
+
+.defBtn {
+  width: 90%;
+  margin: 0 auto;
+  border-radius: 10rpx;
+  margin-bottom: 100rpx;
+  height: 90rpx;
+  text-align: center;
+  line-height: 90rpx;
+}
+
+textarea {
+  padding-left: 10rpx;
+  padding-right: 0;
+  height: 200rpx;
+  position: relative;
+}
+
+textarea::before {
+  position: absolute;
+  content: "*";
+  color: #F56C6C;
+  left: -16rpx;
+}
+
+.text {
+  padding: 28rpx 32rpx;
+  font-size: .28rem;
+  color: #909399;
+}
+.jiang{
+  border: 1px solid #f1f1f1;
+  border-radius: 4rpx;
+  width: 40rpx;
+  text-align: center
+}
+.picker-box{
+  width: 110rpx;
+  border-radius: 50rpx;
+  background-color: #f1f1f1;
+  position: relative;
+  height: 60rpx;
+}
+.picker-box text{
+ text-align: center;
+ line-height: 60rpx;
+ font-size: 24rpx;
+}
+.yuan{
+  width: 50rpx;
+  height: 50rpx;
+  background: #26A2FF;
+  border-radius: 100rpx;
+  position: absolute;
+  top: 5rpx;
+}
+.picker-left{
+  left: 5rpx;
+}
+.picker-right{
+  right: 5rpx;
+}
+.userList{
+  height: 40rpx;
+  font-size: 32rpx;
+}
+.label{
+  position: relative;
+  width: 160rpx;
+  font-size: 32rpx
+}
+.isBt::before{
+  position: absolute;
+  content: "*";
+  color: #F56C6C;
+  left: -16rpx;
+}

+ 29 - 0
pages/statistics/workpoints/workpoints.axml

@@ -0,0 +1,29 @@
+<view>
+  <view style="height:20rpx"></view>
+  <view class="main">
+    <view class="itme-li">
+      <textarea maxlength="100" value="{{item.remark}}" onInput="bindTextAreaBlur" placeholder="请认真填写做这件事的关键过程"></textarea>
+    </view>
+    <view class="text">任务执行过程可以记录奖分和扣分,任务完成后可提供评分参考</view>
+    <view class="flex-box" style="padding:15rpx 28rpx;background:#fff" >
+      <view class="label isBt" style="position: relative;top:8rpx;">积分</view>
+      <text class="red" style="position: relative;top:8rpx;" a:if="{{item.isArrindex2==true}}">+</text>
+      <text class="green" a:else style="position: relative;top:8rpx;">-</text>
+      <view class="flex-1">
+        <view class="flex-box flex-v-ce">
+          <input value="{{item.point2}}" name="{{index}}" placeholder="0" type="number" onInput="bindKeyInput2" data-index="{{index}}" class="flex-1"/>
+          <view class="picker-box" data-index="{{index}}" catchTap="bindPickerChange">
+            <view class="{{item.isArrindex2==true? 'picker-right':'picker-left'}} yuan"></view>
+            <view class="flex-box flex-v-ce" class="picker">
+              <text class="red flex-1">奖</text>
+              <text class="green flex-1">扣</text>
+            </view>
+          </view>
+        </view>
+      </view>
+    </view>
+  </view>
+  <view class="btn-area" style="margin-top:28rpx;">
+    <button type="default" loading="{{disabled}}" class="defBtn" disabled="{{disabled}}" catchTap="formSubmit">提交</button>
+  </view>
+</view>

+ 35 - 0
pages/statistics/workpoints/workpoints.js

@@ -0,0 +1,35 @@
+var app = getApp();
+var that;
+var animation;
+Page({
+  data: {
+    users: [],
+    item: {
+      remark: '',
+      id: ''
+    },
+    defaultVal: '',
+  },
+  onLoad() {
+    that = this;
+    dd.setNavigationBar({ title: "任务过程" });
+  },
+  formSubmit() {
+    var page1 = getCurrentPages()[getCurrentPages().length - 2]//上一个页面的数据
+
+    console.log(page1)
+    dd.navigateBack({
+      delta: 1
+    })
+  },
+  //选择奖还是扣(细则)
+  bindPickerChange(e) {
+    var index = e.target.dataset.index;
+    var isArrindex = `items[${index}].isArrindex`;
+    var isTrue = that.data.items[index].isArrindex
+    this.setData({
+      [isArrindex]: !isTrue,
+    });
+  },
+
+});

+ 1 - 0
pages/statistics/workpoints/workpoints.json

@@ -0,0 +1 @@
+{}