Explorar el Código

溧水app、小程序代码

sunyadv hace 5 años
padre
commit
b4a90fbbb1

BIN
lss_vue/dist.rar


+ 1 - 1
lss_vue/src/main.js

@@ -46,7 +46,7 @@ const router = new VueRouter({
 
 router.beforeEach((to, from, next) => {
     if (to.path == '/login') {
-        sessionStorage.removeItem('user');
+        sessionStorage.clear();
     }
 
     let user = JSON.parse(sessionStorage.getItem('user'));

+ 1 - 0
lss_vue/src/port.js

@@ -20,6 +20,7 @@ export default {
         add: '/goods/add',                                      // 添加资产
         update: '/goods/update',                                // 更新资产
         upload: '/goods/uploadFile',                            // 上传图片
+        listExcel: 'goods/listExcel',                           // Excel导出
 
         detailNo: '/goods/goodsNoDetail',                       // 资产编号详情
         addNo: 'goods/goodsNoAdd',                              // 资产编号添加

+ 1 - 0
lss_vue/src/views/Login.vue

@@ -117,6 +117,7 @@
                                     str += res.data.functions[i].code + ",";
                                 }
                                 sessionStorage.setItem('power',str)
+                                sessionStorage.setItem('assetsTab',-1)
                                 this.$router.push({ path: '/assets' });
                             } else {
                                 this.$toast({

+ 28 - 20
lss_vue/src/views/assets/assets.vue

@@ -1,5 +1,5 @@
 <template>
-	<div>
+	<div id="allocation">
         <div class="head">
             <div class="searchbox">
                 <img src="../../assets/image/search.png" class="searchbox_img">
@@ -7,7 +7,7 @@
                 <button v-on:click="searchKeyword()" class="searchbox_button">搜索</button>
             </div>
             <div class="btn_body">
-                <img v-on:click="showList()" class="btn_img" src="../../assets/image/add.png">
+                <img v-on:click.stop="showList()" class="btn_img" src="../../assets/image/add.png">
                 <div class="btn_list" v-show="popupVisible">
                     <div v-if="power.indexOf('registered_assets') > -1" v-on:click="register()"><img src="../../assets/image/register.png">登记资产</div>
                     <div v-on:click="exportExcel()"><img src="../../assets/image/export.png">导出报表</div>
@@ -15,7 +15,7 @@
             </div>
             <div class="searchkey">
                 <div class="searchkey_word">
-                    <a v-for="(item,index) in labels" :id="item.id" v-bind:class="{'active':index==0}" v-on:click="chooseTag(item.id,1)">{{item.name}}</a>
+                    <a v-for="(item,index) in labels" :id="item.id" v-bind:class="{'active':item.id==tagId}" v-on:click="chooseTag(item.id,1)">{{item.name}}</a>
                 </div>
                 <div class="searchkey_btn">
                     <img v-on:click="showFilter()" src="../../assets/image/pull_down.png">
@@ -24,7 +24,7 @@
         </div>
         <section class="_sorting-address">
             <ul class="address_first">
-                <li v-for="(item,index) in labels" :id="'btn'+item.id" v-bind:class="{'active':index==0}" v-on:click="chooseTag(item.id,0)">{{item.name}}</li>
+                <li v-for="(item,index) in labels" :id="'btn'+item.id" v-bind:class="{'active':item.id==tagId}" v-on:click="chooseTag(item.id,0)">{{item.name}}</li>
             </ul>
         </section>
         <div class="body">
@@ -63,7 +63,7 @@
                 labels: [],
                 pageNum: 1,
                 pages: 1,
-                tagId: -1,
+                tagId: sessionStorage.assetsTab==null?-1:sessionStorage.assetsTab,
                 popupVisible: false,
                 loading: false,
                 haveMore: false,
@@ -192,6 +192,7 @@
                 $("#"+id).addClass("active").siblings("a").removeClass("active");
                 $("#btn"+id).addClass("active").siblings().removeClass("active");
                 location.href = "#" + id;
+                sessionStorage.assetsTab = id;
                 $("._sorting-medical").removeClass("fixed-top");
                 $(".searchkey_btn img").removeClass("rotate")
                 $(".searchkey_btn img").addClass("rotate1")
@@ -213,34 +214,41 @@
             },
 
             exportExcel() {
-                this.http.post(this.port.label.list, {} , 
+                this.$indicator.open();
+                this.http.downloadFile(this.port.assets.listExcel, {
+                    'keyName': this.keyWord,
+                    'tagId': this.tagId==-1?"":this.tagId,
+                } , 
                 res => {
-                    if (res.code == "ok") {
-                        this.getList();
-                        var array = [{"id":-1 , "name": "全部"}];
-                        for(var i in res.data) {
-                            array.push(res.data[i]);
-                        }
-                        this.labels = array;
-                    } else {
-                        this.$toast({
-                            message: res.msg,
-                            duration: 2000
-                        });
-                    }
+                    this.$indicator.close();
+                    let url = window.URL.createObjectURL(new Blob([res]))
+                    let link = document.createElement('a')
+                    link.style.display = 'none'
+                    link.href = url
+                    link.setAttribute('download', '资产报表.xlsx')
+                    document.body.appendChild(link)
+                    link.click()
                 }, error => {
+                    this.$indicator.close();
                     this.$toast({
                         message: error,
                         duration: 2000
                     });
                 })
-                console.log('导出')
             },
+
+            globalClick(callback) {
+                var _this = this;
+                document.getElementById('allocation').onclick = function () {
+                    _this.popupVisible = false;
+                }
+            }
         },
         created() {
             this.getLabels();
         },
 		mounted() {
+            this.globalClick();
 		}
 	}
 

+ 0 - 15
lss_vue/src/views/assets/assetsDetail.vue

@@ -117,8 +117,6 @@
                 scrList: [],
                 unuList: [],
                 state: -1,
-
-                edit: [],
 			}
 		},
 		methods: {
@@ -316,19 +314,6 @@
             }
         },
         created() {
-            if(this.power.indexOf('handle_assets') > -1) {
-                this.edit.push({
-                    content: '处置',
-                    style: { background: 'rgba(38,162,255,0.9)', color: '#fff' },
-                    handler: () => this.handle(item.id)
-                })
-            }
-            if(this.power.indexOf('update_assets') > -1) {
-                this.edit.push({ content: '删除',
-                    style: { background: 'rgba(220,0,0,0.7)', color: '#fff', },
-                    handler: () => this.deleteNos(item.id)
-                })
-            }
             this.getDetail();
         },
 		mounted() {

+ 12 - 1
lss_vue/src/views/assets/assetsHandle.vue

@@ -24,6 +24,7 @@
 		data() {
 			return {
                 id: this.$route.params.id,
+                user: JSON.parse(sessionStorage.getItem("user")),
                 detail: "",
                 users: [],
                 assetsForm: {
@@ -82,7 +83,17 @@
                 this.http.post(this.port.user.list, {} , 
                 res => {
                     if (res.code == "ok") {
-                        this.users = res.data;
+                        for(var i in res.data) {
+                            // if(res.data[i].departmentGuid == this.user.deptId) {
+                                var list = res.data[i].userVOS;
+                                for(var j in list) {
+                                    this.users.push({
+                                        id: list[j].id,
+                                        name: list[j].name,
+                                    })
+                                }
+                            // }
+                        }
                     } else {
                         this.$toast({
                             message: res.msg,

+ 1 - 1
lss_vue/src/views/my/myScoreDetail.vue

@@ -9,7 +9,7 @@
             <div class="detailBox one_recordBox">
                 <div class="record_head">
                     <div>个人分:<span>{{detail.personalScore==null?'0分':detail.personalScore + '分'}}</span></div>
-                    <div>建议分:<span>{{detail.ideaScore==null?'0分':detail.ideaScore + '分'}}</span></div>
+                    <div>建议分:<span>{{detail.ideaScoreSum==null?'0分':detail.ideaScoreSum + '分'}}</span></div>
                 </div>
                 <div class="record_body">
                     <div v-on:click="showSuggest()">我的建议 <span class="toDetail"><img class="rotate" src="../../assets/image/pull_down_blue.png"></span></div>

+ 23 - 29
lss_vue_wx/index.html

@@ -101,35 +101,29 @@
                 z-index: 9999999!important;
             }
 
-            /* 滚动条样式修改 */
-            /*滚动条凹槽的颜色,还可以设置边框属性 */
-            /* ::-webkit-scrollbar-track-piece {
-                background-color:#f8f8f8;
-                -webkit-border-radius: 2em;
-                -moz-border-radius: 2em;
-                border-radius: 2em;
-            } */
-            /*滚动条的宽度*/
-            /* ::-webkit-scrollbar {
-                width:9px;
-            height: 9px;} */
-            /*滚动条的设置*/
-            /* ::-webkit-scrollbar-thumb {
-                background-color:#dddddd;
-                background-clip:padding-box;
-                -webkit-border-radius: 2em;
-                -moz-border-radius: 2em;
-                border-radius: 2em;} */
-
-            /*滚动条鼠标移上去*/
-            /* ::-webkit-scrollbar-thumb:hover {
-                background-color:#bbb;
-            } */
-
-            /*取消消息列表弹出框的内边距*/
-            /* .popover-self {
-                padding: 0 !important;
-            }     */
+                    
+            .el-rate:focus {
+                outline-width: 0;
+            }
+
+            .el-rate__icon {
+                font-size: 0.25rem;
+                border: none!important;
+                outline: 0!important;
+                box-shadow: none!important;
+                -webkit-box-shadow: none!important;
+            }
+
+            .el-rate__item {
+                border: none!important;
+                outline: 0!important;
+                box-shadow: none!important;
+            }
+
+            .el-rate__item:focus.is-active.is-focus:not(:active) {
+                    -webkit-box-shadow: none;
+                    box-shadow: none;
+            }
         </style>
     </head>
     <body>

BIN
lss_vue_wx/src/assets/image/add_black.png


BIN
lss_vue_wx/src/assets/image/del_red.png


BIN
lss_vue_wx/src/assets/image/filter.png


BIN
lss_vue_wx/src/assets/image/filter_blue.png


BIN
lss_vue_wx/src/assets/image/tab_task.png


BIN
lss_vue_wx/src/assets/image/tab_task_choose.png


+ 5 - 5
lss_vue_wx/src/main.js

@@ -5,8 +5,8 @@ import VueRouter from 'vue-router'
 
 import './assets/js/rem.js'
 
-// import ElementUI from 'element-ui'
-// import 'element-ui/lib/theme-chalk/index.css'
+import ElementUI from 'element-ui'
+import 'element-ui/lib/theme-chalk/index.css'
 
 import Mint from 'mint-ui';
 import 'mint-ui/lib/style.css';
@@ -34,7 +34,7 @@ import picker from "./assets/js/custom-picker.js"
 import "./assets/css/custom-picker.css"
 Vue.use(picker)
 
-// Vue.use(ElementUI)
+Vue.use(ElementUI)
 Vue.use(Mint);
 Vue.use(VueRouter)
 Vue.use(Vuex)
@@ -46,14 +46,14 @@ const router = new VueRouter({
 
 router.beforeEach((to, from, next) => {
     if (to.path == '/login') {
-        sessionStorage.removeItem('user');
+        sessionStorage.clear();
     }
 
     let user = JSON.parse(sessionStorage.getItem('user'));
     if (!user && to.path != '/login') {
         next({ path: '/login' })
     } else {
-        if(to.path == '/assets' || to.path == '/data' || to.path == '/my') {
+        if(to.path == '/assets' || to.path == '/task' || to.path == '/my') {
             $(".tabber").show();
         } else {
             $(".tabber").hide();

+ 20 - 1
lss_vue_wx/src/port.js

@@ -36,7 +36,26 @@ export default {
         maintainRecord: '/goods/isMaintainRecord',              // 维护记录
         exportMain: '/goods/isMaintainRecordExcel',             // 导出维护记录
     },
-    my: {
+    task: {
+        list: '/task/list',                                     // 任务列表
+        add: '/task/addOrUpdate',                               // 新增、修改任务
+        detail: '/task/detail',                                 // 任务详情
+        del: '/task/del',                                       // 删除任务
+
+        dynaList: '/taskdynamic/list',                          // 动态列表
+        
+        examList: '/taskexamine/list',                          // 审核列表
+        addExam: '/taskexamine/addOrUpdate',                    // 提交、审核
+
+        fileList: '/taskfile/list',                             // 资料列表
+        upload: '/taskfile/uploadFile',                         // 上传资料
+        delFile: '/taskfile/delFile',                           // 删除资料
+        
+        label: '/task-tags/list',                               // 任务标签列表
+        addLabel: '/task-tags/addOrUpdate',                     // 添加任务标签
+        delLabel: '/task-tags/delTags',                         // 删除任务标签
+    },
+     my: {
         newList: '/newsnotice/getNewsList',                     // 我的消息
         noReadNum: '/newsnotice/getNoReadNewsCount',            // 未读消息
 

+ 19 - 0
lss_vue_wx/src/routes.js

@@ -15,6 +15,12 @@ import assetsMaintain from './views/assets/assetsMaintain.vue'
 // 数据
 import data from './views/data/data.vue'
 
+// 任务
+import task from './views/task/task.vue'
+import taskDetail from './views/task/taskDetail.vue'
+import taskRegister from './views/task/taskRegister.vue'
+import taskEdit from './views/task/taskEdit.vue'
+
 // 我的
 import my from './views/my/my.vue'
 import myMessage from './views/my/myMessage.vue'
@@ -62,6 +68,19 @@ let routes = [
             { path: '/data', component: data, name: '数据', meta: {keepAlive: true, parentPath:'/tab_data'} }
         ]
     },
+    // 任务
+    {
+        path: '/',
+        component: Home,
+        name: '',
+        leaf: true,//只有一个节点
+        children: [
+            { path: '/task', component: task, name: '任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
+            { path: '/task/:id', component: taskDetail, name: '任务详情', meta: {keepAlive: true, parentPath:'/tab_task'} },
+            { path: '/taskRegister', component: taskRegister, name: '新增任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
+            { path: '/taskEdit/:id', component: taskEdit, name: '修改任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
+        ]
+    },
     // 我的
     {
         path: '/',

+ 6 - 6
lss_vue_wx/src/views/Home.vue

@@ -8,8 +8,8 @@
                 资产
             </mt-tab-item>
             <mt-tab-item id="tab2" @click.native="changeTab(2)">
-                <img v-if="selected == 'tab2'" slot="icon" src="../assets/image/tab_data_choose.png">
-                <img v-else slot="icon" src="../assets/image/tab_data.png">
+                <img v-if="selected == 'tab2'" slot="icon" src="../assets/image/tab_task_choose.png">
+                <img v-else slot="icon" src="../assets/image/tab_task.png">
                 任务
             </mt-tab-item>
             <mt-tab-item id="tab3" @click.native="changeTab(3)">
@@ -43,10 +43,10 @@
                         this.getNoRead();
                     }
                 } else if(type == 2) {
-                    if(this.$router.history.current.fullPath == '/data') {
+                    if(this.$router.history.current.fullPath == '/task') {
                         this.reload();
                     } else {
-                        this.$router.push({ path: '/data' });
+                        this.$router.push({ path: '/task' });
                         this.getNoRead();
                     }
                 } else if(type == 3) {
@@ -84,7 +84,7 @@
         created() {
             if(this.$router.history.current.meta.parentPath == "/tab_assets") {
                 this.selected = "tab1"
-            } else if(this.$router.history.current.meta.parentPath == "/tab_data") {
+            } else if(this.$router.history.current.meta.parentPath == "/tab_task") {
                 this.selected = "tab2"
             } else if(this.$router.history.current.meta.parentPath == "/tab_my") {
                 this.selected = "tab3"
@@ -92,7 +92,7 @@
         },
         mounted() {
             if( this.$router.history.current.fullPath == '/assets' || 
-                this.$router.history.current.fullPath == '/data' || 
+                this.$router.history.current.fullPath == '/task' || 
                 this.$router.history.current.fullPath == '/my') {
                 $(".tabber").show();
             } else {

+ 2 - 0
lss_vue_wx/src/views/Login.vue

@@ -117,6 +117,8 @@
                                     str += res.data.functions[i].code + ",";
                                 }
                                 sessionStorage.setItem('power',str)
+                                sessionStorage.setItem('taskTab','tab1')
+                                sessionStorage.setItem('assetsTab',-1)
                                 this.$router.push({ path: '/assets' });
                             } else {
                                 this.$toast({

+ 28 - 20
lss_vue_wx/src/views/assets/assets.vue

@@ -1,5 +1,5 @@
 <template>
-	<div>
+	<div id="allocation">
         <div class="head">
             <div class="searchbox">
                 <img src="../../assets/image/search.png" class="searchbox_img">
@@ -7,7 +7,7 @@
                 <button v-on:click="searchKeyword()" class="searchbox_button">搜索</button>
             </div>
             <div class="btn_body">
-                <img v-on:click="showList()" class="btn_img" src="../../assets/image/add.png">
+                <img v-on:click.stop="showList()" class="btn_img" src="../../assets/image/add.png">
                 <div class="btn_list" v-show="popupVisible">
                     <div v-if="power.indexOf('registered_assets') > -1" v-on:click="register()"><img src="../../assets/image/register.png">登记资产</div>
                     <div v-on:click="exportExcel()"><img src="../../assets/image/export.png">导出报表</div>
@@ -15,7 +15,7 @@
             </div>
             <div class="searchkey">
                 <div class="searchkey_word">
-                    <a v-for="(item,index) in labels" :id="item.id" v-bind:class="{'active':index==0}" v-on:click="chooseTag(item.id,1)">{{item.name}}</a>
+                    <a v-for="(item,index) in labels" :id="item.id" v-bind:class="{'active':item.id==tagId}" v-on:click="chooseTag(item.id,1)">{{item.name}}</a>
                 </div>
                 <div class="searchkey_btn">
                     <img v-on:click="showFilter()" src="../../assets/image/pull_down.png">
@@ -24,7 +24,7 @@
         </div>
         <section class="_sorting-address">
             <ul class="address_first">
-                <li v-for="(item,index) in labels" :id="'btn'+item.id" v-bind:class="{'active':index==0}" v-on:click="chooseTag(item.id,0)">{{item.name}}</li>
+                <li v-for="(item,index) in labels" :id="'btn'+item.id" v-bind:class="{'active':item.id==tagId}" v-on:click="chooseTag(item.id,0)">{{item.name}}</li>
             </ul>
         </section>
         <div class="body">
@@ -63,7 +63,7 @@
                 labels: [],
                 pageNum: 1,
                 pages: 1,
-                tagId: -1,
+                tagId: sessionStorage.assetsTab==null?-1:sessionStorage.assetsTab,
                 popupVisible: false,
                 loading: false,
                 haveMore: false,
@@ -192,6 +192,7 @@
                 $("#"+id).addClass("active").siblings("a").removeClass("active");
                 $("#btn"+id).addClass("active").siblings().removeClass("active");
                 location.href = "#" + id;
+                sessionStorage.assetsTab = id;
                 $("._sorting-medical").removeClass("fixed-top");
                 $(".searchkey_btn img").removeClass("rotate")
                 $(".searchkey_btn img").addClass("rotate1")
@@ -213,34 +214,41 @@
             },
 
             exportExcel() {
-                this.http.post(this.port.label.list, {} , 
+                this.$indicator.open();
+                this.http.downloadFile(this.port.assets.listExcel, {
+                    'keyName': this.keyWord,
+                    'tagId': this.tagId==-1?"":this.tagId,
+                } , 
                 res => {
-                    if (res.code == "ok") {
-                        this.getList();
-                        var array = [{"id":-1 , "name": "全部"}];
-                        for(var i in res.data) {
-                            array.push(res.data[i]);
-                        }
-                        this.labels = array;
-                    } else {
-                        this.$toast({
-                            message: res.msg,
-                            duration: 2000
-                        });
-                    }
+                    this.$indicator.close();
+                    let url = window.URL.createObjectURL(new Blob([res]))
+                    let link = document.createElement('a')
+                    link.style.display = 'none'
+                    link.href = url
+                    link.setAttribute('download', '资产报表.xlsx')
+                    document.body.appendChild(link)
+                    link.click()
                 }, error => {
+                    this.$indicator.close();
                     this.$toast({
                         message: error,
                         duration: 2000
                     });
                 })
-                console.log('导出')
             },
+
+            globalClick(callback) {
+                var _this = this;
+                document.getElementById('allocation').onclick = function () {
+                    _this.popupVisible = false;
+                }
+            }
         },
         created() {
             this.getLabels();
         },
 		mounted() {
+            this.globalClick();
 		}
 	}
 

+ 0 - 15
lss_vue_wx/src/views/assets/assetsDetail.vue

@@ -117,8 +117,6 @@
                 scrList: [],
                 unuList: [],
                 state: -1,
-
-                edit: [],
 			}
 		},
 		methods: {
@@ -316,19 +314,6 @@
             }
         },
         created() {
-            if(this.power.indexOf('handle_assets') > -1) {
-                this.edit.push({
-                    content: '处置',
-                    style: { background: 'rgba(38,162,255,0.9)', color: '#fff' },
-                    handler: () => this.handle(item.id)
-                })
-            }
-            if(this.power.indexOf('update_assets') > -1) {
-                this.edit.push({ content: '删除',
-                    style: { background: 'rgba(220,0,0,0.7)', color: '#fff', },
-                    handler: () => this.deleteNos(item.id)
-                })
-            }
             this.getDetail();
         },
 		mounted() {

+ 12 - 1
lss_vue_wx/src/views/assets/assetsHandle.vue

@@ -24,6 +24,7 @@
 		data() {
 			return {
                 id: this.$route.params.id,
+                user: JSON.parse(sessionStorage.getItem("user")),
                 detail: "",
                 users: [],
                 assetsForm: {
@@ -82,7 +83,17 @@
                 this.http.post(this.port.user.list, {} , 
                 res => {
                     if (res.code == "ok") {
-                        this.users = res.data;
+                        for(var i in res.data) {
+                            // if(res.data[i].departmentGuid == this.user.deptId) {
+                                var list = res.data[i].userVOS;
+                                for(var j in list) {
+                                    this.users.push({
+                                        id: list[j].id,
+                                        name: list[j].name,
+                                    })
+                                }
+                            // }
+                        }
                     } else {
                         this.$toast({
                             message: res.msg,

+ 1 - 0
lss_vue_wx/src/views/my/myGrade.vue

@@ -865,6 +865,7 @@
         border: 1px solid #ddd;
         border-radius: 5px;
         padding: 0.08rem;
+        min-height: 0.25rem;
     }
 
     .input textarea {

+ 1 - 1
lss_vue_wx/src/views/my/myScoreDetail.vue

@@ -9,7 +9,7 @@
             <div class="detailBox one_recordBox">
                 <div class="record_head">
                     <div>个人分:<span>{{detail.personalScore==null?'0分':detail.personalScore + '分'}}</span></div>
-                    <div>建议分:<span>{{detail.ideaScore==null?'0分':detail.ideaScore + '分'}}</span></div>
+                    <div>建议分:<span>{{detail.ideaScoreSum==null?'0分':detail.ideaScoreSum + '分'}}</span></div>
                 </div>
                 <div class="record_body">
                     <div v-on:click="showSuggest()">我的建议 <span class="toDetail"><img class="rotate" src="../../assets/image/pull_down_blue.png"></span></div>

+ 614 - 0
lss_vue_wx/src/views/task/task.vue

@@ -0,0 +1,614 @@
+<template>
+	<div id="allocation">
+        <div class="head taskHead">
+            <mt-navbar v-model="selected" class="tab_head" v-on:click.native='getList'>
+                <mt-tab-item id="tab1" :style="user.roles[0].roleDescribe == '部门领导'?'':'text-align:left;'">我的任务</mt-tab-item>
+                <mt-tab-item id="tab2" v-if="user.roles[0].roleDescribe == '部门领导'">我发布的</mt-tab-item>
+            </mt-navbar>
+            <div class="filter">
+                <img v-if="selected == 'tab2'" src="../../assets/image/add_black.png" v-on:click="register()">
+                <img v-if="!isBlue"  src="../../assets/image/filter.png" v-on:click="showFilter()">
+                <img v-else src="../../assets/image/filter_blue.png" v-on:click="showFilter()">
+            </div>
+        </div>
+        <div class="head taskHead headInput">
+            <div class="searchbox">
+                <img src="../../assets/image/search.png" class="searchbox_img">
+                <input v-on:keypress="searchKeyword" type="text" v-model="keyWord" class="searchbox_text" placeholder="搜索"/>
+            </div>
+        </div>
+        <section class="_sorting-address">
+            <div class="filter_title">任务分类</div>
+            <ul class="filter_body task_type">
+                <li v-for="(item,index) in labels" :id="'btn'+item.id" v-bind:class="{'active':index==0}" v-on:click="chooseType(index,item.id)">{{item.name}}</li>
+            </ul>
+            <div class="filter_title">任务状态</div>
+            <ul class="filter_body task_status">
+                <li v-bind:class="{'active':status == -1}" v-on:click='chooseStatus(-1)'>全部</li>
+                <li v-on:click='chooseStatus(0)'>待派发</li>
+                <li v-on:click='chooseStatus(1)'>已派发</li>
+                <li v-on:click='chooseStatus(2)'>已接收</li>
+                <li v-on:click='chooseStatus(3)'>待审核</li>
+                <li v-on:click='chooseStatus(4)'>未通过</li>
+                <li v-on:click='chooseStatus(5)'>已完成</li>
+                <li v-on:click='chooseStatus(6)'>已延期</li>
+                <li v-on:click='chooseStatus(7)'>已失效</li>
+            </ul>
+            <div class="filter_title">任务日期</div>
+            <div class="filter_body task_date">
+                <mt-field label="" placeholder="开始日期" type="date" v-model="start"></mt-field> 
+                <div class="text">至</div>
+                <mt-field label="" placeholder="结束日期" type="date" v-model="end"></mt-field>
+            </div>
+            <div class="filter_foot">
+                <mt-button type="default" class="clearFilter" v-on:click.native='clearFilter'>清空</mt-button>
+                <mt-button type="default" class="saveFilter" v-on:click.native='getList'>确认</mt-button>
+            </div>
+        </section>
+        <div class="body">
+            <div class="noList" v-if="list.length==0">
+                <img src="../../assets/image/noList.png">
+            </div> 
+            <ul v-else v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance="10">
+                <li v-for="item in list" v-on:click="jumpTo(item.id)">
+                    <div class="text item_name">
+                        <span class="item_type item_span">({{item.tagName}})</span>
+                        {{item.name}} 
+                        <span v-if="item.state==0" class="item_status item_span">待派发</span>
+                        <span v-if="item.state==1" class="item_status item_span">已派发</span>
+                        <span v-if="item.state==2" class="item_status item_span">已接收</span>
+                        <span v-if="item.state==3" class="item_status item_span">待审核</span>
+                        <span v-if="item.state==4" class="item_status item_span">未通过</span>
+                        <span v-if="item.state==5" class="item_status item_span">已完成</span>
+                        <span v-if="item.state==6" class="item_status item_span">已延期</span>
+                        <span v-if="item.state==7" class="item_status item_span">已失效</span>
+                    </div>
+                    <div class="text item_int">{{item.code}}</div>
+                    <div class="text item_content">
+                        {{item.content}}
+                    </div>
+                    <div class="text item_users">
+                        <div class="userInfo">
+                            <img src="../../assets/image/userHead.jpg">
+                            <span>{{item.publisherName}}&nbsp;&nbsp;&nbsp; {{item.planTime}}</span>
+                        </div>
+                        <div class="allUsers">
+                            <a v-for="(head,num) in item.participantsVOS">
+                                <img v-if="head.headPic==null" src="../../assets/image/userHead.jpg">
+                                <img v-else :src="head.headPic">
+                            </a>
+                        </div>
+                    </div>
+                </li>
+                <div class="order" v-if="haveMore">
+                    <span class="line"></span>
+                    <span class="txt">没有更多了</span>
+                    <span class="line"></span>
+                </div>
+            </ul>
+        </div>
+    </div>
+</template>
+
+<script>
+    import util from '../../common/js/util'
+    
+	export default {
+		data() {
+			return {
+                keyWord: "",
+                user: JSON.parse(sessionStorage.getItem("user")),
+                power: sessionStorage.getItem("power"),
+                selected: sessionStorage.taskTab==''?"tab1":sessionStorage.taskTab,
+                isBlue: false,
+                type: -1,
+                status: -1,
+                start: '',
+                end: '',
+                form: {
+                    type: -1,
+                    status: -1,
+                    start: '',
+                    end: '',
+                },
+
+                list: [],
+                labels: [],
+                pageNum: 1,
+                pages: 1,
+
+                popupVisible: false,
+                loading: false,
+                haveMore: false,
+			}
+        },
+		methods: {
+            // 任务列表
+            getList() {
+                this.$indicator.open();
+                $("._sorting-address").removeClass("fixed-top");
+                $('._navbar').attr('style','position: fixed;top:0;');
+                this.isBlue = false;
+                sessionStorage.taskTab = this.selected;
+                this.http.post(this.port.task.list, {
+                    'keyName': this.keyWord,
+                    'pageNum': this.pageNum,
+                    'uid': this.user.id,
+                    'tagId': this.form.type==-1?"":this.form.type,
+                    'state': this.form.status==-1?"":this.form.status,
+                    'startTime': this.form.start,
+                    'endTime': this.form.end,
+                    'type': this.selected=='tab1'?0:1
+                } , 
+                res => {
+                    this.$indicator.close();
+                    if (res.code == "ok") {
+                        this.list = res.data.list;
+                        this.pages = res.data.pages==0?1:res.data.pages;
+                    } else {
+                        this.$toast({
+                            message: res.msg,
+                            duration: 2000
+                        });
+                    }
+                }, error => {
+                    this.$indicator.close();
+                    this.$toast({
+                        message: error,
+                        duration: 2000
+                    });
+                })
+            },
+
+            loadMore() {
+                if(this.pageNum == this.pages) {
+                    this.haveMore = true;
+                } else if(this.pageNum < this.pages) {
+                    this.$indicator.open();
+                    this.http.post(this.port.task.list, {
+                        'keyName': this.keyWord,
+                        'pageNum': ++this.pageNum,
+                        'uid': this.user.id,
+                        'tagId': this.form.type==-1?"":this.form.type,
+                        'state': this.form.status==-1?"":this.form.status,
+                        'startTime': this.form.start,
+                        'endTime': this.from.end,
+                        'type': this.selected=='tab1'?0:1
+                    } , 
+                    res => {
+                        this.$indicator.close();
+                        if (res.code == "ok") {
+                            this.pages = res.data.pages==0?1:res.data.pages;
+                            if(res.data.list.length != 0) {
+                                for(var i in res.data.list) {
+                                    this.list.push(res.data.list[i]);
+                                }
+                            }
+                        } else {
+                            this.$toast({
+                                message: res.msg,
+                                duration: 2000
+                            });
+                        }
+                    }, error => {
+                        this.$indicator.close();
+                        this.$toast({
+                            message: error,
+                            duration: 2000
+                        });
+                    })
+                }
+            },
+
+            // 标签列表
+			getLabels() {
+                this.http.post(this.port.task.label, {} , 
+                res => {
+                    if (res.code == "ok") {
+                        this.getList();
+                        var array = [{"id":-1 , "name": "全部"}];
+                        for(var i in res.data) {
+                            array.push(res.data[i]);
+                        }
+                        this.labels = array;
+                    } else {
+                        this.$toast({
+                            message: res.msg,
+                            duration: 2000
+                        });
+                    }
+                }, error => {
+                    this.$toast({
+                        message: error,
+                        duration: 2000
+                    });
+                })
+            },
+
+            // 关键词搜索
+            searchKeyword(event) {
+                if (event.keyCode == 13) {
+                    event.preventDefault();
+                    this.getList();
+                }
+            },
+
+            // 标签筛选
+            showFilter() {
+                $("._sorting-medical").removeClass("fixed-top");
+                if($("._sorting-address").hasClass("fixed-top")){
+                    $("._sorting-address").removeClass("fixed-top");
+                    $('._navbar').attr('style','position: fixed;top:0;');
+                }else{
+                    $("._sorting-address").addClass("fixed-top");
+                    $('._navbar').attr('style','position: fixed;top:0;');
+                }
+                this.isBlue = !this.isBlue;
+            },
+
+            // 标签选择
+            chooseType(type,id) {
+                this.type = type;
+                this.form.type = id;
+                $(".task_type li:nth-child("+ (type+1) +")").addClass("active").siblings().removeClass("active")
+            },
+
+            // 清空标签
+            clearFilter() {
+                this.type = -1;
+                this.status = -1;
+                this.start = '';
+                this.end = '';
+                this.form = {
+                    type: -1,
+                    status: -1,
+                    start: '',
+                    end: '',
+                };
+                $(".task_type li:nth-child(1)").addClass("active").siblings().removeClass("active")
+                $(".task_status li:nth-child(1)").addClass("active").siblings().removeClass("active")
+                this.getList();
+            },
+
+            chooseStatus(status) {
+                this.status = status;
+                this.form.status = status;
+                $(".task_status li:nth-child("+ (status+2) +")").addClass("active").siblings().removeClass("active")
+            },
+
+            jumpTo(id) {
+                this.$router.push("/task/" + id);
+            },
+            
+            register() {
+                this.$router.push("/taskRegister");
+            },
+
+            globalClick(callback) {
+                var _this = this;
+                document.getElementById('allocation').onclick = function () {
+                    _this.popupVisible = false;
+                }
+            }
+        },
+        created() {
+            this.getLabels();
+        },
+		mounted() {
+            this.globalClick();
+		}
+	}
+
+</script>
+
+<style scoped>
+    /* 新任务头部 START */
+    .head {
+        position: fixed;
+        width: 100%;
+        box-sizing:border-box;
+        padding: 0.07rem 0.15rem 0 0.15rem;
+        background: #ffffff;
+        z-index: 105;
+    }
+
+    .headInput {
+        margin-top: 0.44rem;
+        border-bottom: 1px solid #dfdfdf;
+        z-index: 1;
+    }
+
+    .taskHead .tab_head {
+        width: 50%;
+        display: inline-flex;
+    }
+
+    .filter {
+        width: 50%;
+        float: right;
+        display: inline-block;
+        text-align: right;
+        padding: 0.08rem 0;
+    }
+
+    .filter img {
+        width: 0.18rem;
+        margin-right: 0.08rem;
+    }
+
+    .filter_foot {
+        margin-top: 0.2rem;
+    }
+
+    .filter_foot > .mint-button--normal {
+        width: 50%;
+        float: left;
+        border: none;
+        box-shadow: none;
+        border-radius: 0;
+        font-size: 0.13rem;
+    }
+
+    .clearFilter {
+        background: #fff;
+    }
+
+    .saveFilter {
+        background: #36DE95;
+        color: #fff;
+    }
+
+    .searchbox {
+        display: inline-block;
+        width: 100%;
+        position: relative;
+        margin-bottom: 0.05rem;
+    }
+
+    .searchbox img.searchbox_img {
+        width:0.18rem;
+        height: 0.18rem;
+        position: absolute;
+        left: 0.04rem;
+        top: 0.05rem;
+    }
+
+    .searchbox input.searchbox_text {
+        font-size: 0.14rem;
+        height: 0.28rem;
+        border-style:none;
+        border: 1px solid #eee/*#2680EB*/;
+        background: #eee;
+        border-radius: 50px;
+        box-sizing:border-box;
+        width: 100%;
+        padding: 0 0.45rem 0 0.33rem;
+    }
+
+    input.searchbox_text:focus{
+        outline: none;
+    }
+
+    .searchbox button.searchbox_button {
+        border: 0;
+        background-color: transparent;
+        outline: none;
+        height: 0.28rem;
+        font-size: 0.13rem;
+        background: #2680EB;
+        color: #fff;
+        border-radius: 50px;
+        padding: 0 0.12rem;
+        position: absolute;
+        right: -0.01rem;
+        top: 0;
+    }
+    /* 新任务头部 END */
+    /* 筛选栏 START */
+    ._sorting-address {
+        position:fixed;
+        top: -80%;
+        width: 100%;
+        height: 80%;
+        z-index: 1;
+        -webkit-transition-duration: 0.4s;
+        /* background: #fff; */
+        background: #efefef;
+    }
+
+    ._sorting-address .filter_title {
+        color: #999;
+        font-size: 0.13rem;
+        padding: 0.08rem 0.12rem;
+    }
+
+    ._sorting-address > ul {
+        margin: 0;
+        padding: 0;
+        overflow: auto;
+        width: 100%;
+        background: #fff;
+        box-sizing:border-box;
+        width: 100%;
+        -webkit-transition-duration: 0.4s;
+    }
+
+    ._sorting-address > ul > li {
+        display: inline-block;
+        width: 25%;
+        float: left;
+        padding: 0.08rem;
+        text-align: center;
+        box-sizing:border-box;
+        border: 1px solid #eee;
+    }
+
+    ._sorting-address > ul > li.active {
+        color: #2680EB;
+        border: 1px solid #2680EB;
+    }
+
+    .fixed-top{
+        top: 0.44rem;
+    }
+
+    .fixed-top::after{
+        content: "";
+        width: 100%;
+        height: 100%;
+        display: block;
+        /* background:rgba(0,0,0,0.2); */
+        background: #efefef;
+    }
+
+    .task_date {
+        background: #fff;
+    }
+
+    .task_date .mint-field {
+        display: inline-block;
+        width: 46%;
+        vertical-align: middle;
+    }
+
+    .task_date .text {
+        display: inline-block;
+        width: 5%;
+        line-height: 48px;
+        height: 48px;
+        vertical-align: middle;
+    }
+    /* 筛选栏 END */
+
+    /* 列表页 START */
+    .body {
+        -webkit-box-flex: 1;
+        -webkit-flex: 1;
+        -ms-flex: 1;
+        flex: 1;
+        width: 100%;
+        padding: 0.85rem 0 0 0;
+        height: calc(100% - 0.8rem);
+        overflow-y: auto;
+        background: #EFEFEF;
+    }
+
+    .body > ul {
+        margin-top: 0;
+    }
+    
+    .body > ul li {
+        padding: 0.08rem 0.15rem;
+        background: #fff;
+        margin-bottom: 0.08rem;
+        border-bottom: 1px solid #ddd;
+    }
+
+    .body > ul li .item_span {
+        color: #2680eb;
+    }
+
+    .body > ul li .item_status {
+        float: right;
+    }
+
+    .body > ul li .text {
+        line-height: 0.23rem;
+        margin: 0.05rem  0 0 0;
+    }
+    
+    .body > ul li .item_content {
+        word-wrap:break-word;
+        color: #333;
+    }
+
+    .body > ul li .item_int {
+        color: #B5B5B5;
+        font-size: 0.12rem;
+    }
+
+    .body > ul li .item_users img {
+        width: 0.18rem;
+        border-radius: 50%;
+        vertical-align: middle;
+    }
+
+    .body > ul li .item_users span {
+        vertical-align: middle;
+        margin-right: 0.12rem;
+        color: #999;
+    }
+
+    .body > ul li .userInfo {
+        width: 80%;
+        display: inline-block;
+    }
+
+    .body > ul li .userInfo span {
+        font-size: 0.12rem;
+        vertical-align: middle;
+        margin-left: 0.05rem;
+    }
+
+    .body > ul li .allUsers {
+        float: right;
+        width: 20%;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        color: #999;
+    }
+
+    .body > ul li .allUsers img:not(:first-child) {
+        margin-left: -0.07rem;
+    }
+
+    .noList {
+        text-align: center;
+        padding: 1.5rem 0;
+    }
+
+    .noList img {
+        width: 1.2rem;
+        height: 1.2rem;
+    }
+
+    .order {
+        height: 0.6rem;
+        line-height: 0.6rem;
+        text-align: center;
+    }
+
+    .order .line {
+        display: inline-block;
+        width: 1.2rem;
+        border-top: 1px solid #ccc ;
+        vertical-align: middle;
+    }
+
+    .order .txt {
+        color: #ccc;
+        font-size: 0.13rem;
+        vertical-align: middle;
+    }
+    /* 列表页 END */
+</style>
+<style>
+    .taskHead .tab_head .mint-tab-item {
+        padding: 0.08rem 0;
+    }
+
+    .taskHead .tab_head .mint-tab-item.is-selected {
+        border: none;
+    }
+
+    .taskHead .tab_head .mint-tab-item.is-selected .mint-tab-item-label {
+        color: #333;
+        font-size: 0.16rem;
+        font-weight: 600;
+    }
+
+    .task_date .mint-field input {
+        text-align: center;
+    }
+</style>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1168 - 0
lss_vue_wx/src/views/task/taskDetail.vue


+ 601 - 0
lss_vue_wx/src/views/task/taskEdit.vue

@@ -0,0 +1,601 @@
+<template>
+	<div class="detail">
+        <mt-header class="detail_head" fixed title="编辑任务">
+            <router-link to="" slot="left">
+                <mt-button icon="back" v-on:click.native='jumpBack()'></mt-button>
+            </router-link>
+        </mt-header>
+        <div class="detail_body">
+            <div class="detailBox">
+                <mt-field label="任务名称" placeholder="请输入任务名称" v-model="taskForm.name"></mt-field>
+                <mt-field label="任务编码" placeholder="请输入任务编码" v-model="taskForm.code"></mt-field>
+                <mt-field label="计划时间" placeholder="请选择计划时间" type="date" v-model="taskForm.planTime"></mt-field>
+                <mt-field label="工作量" placeholder="请输入工作量" type="number" v-model="taskForm.workLoad">天</mt-field>
+                <mt-field label="接收人" id="recUser" placeholder="请选择接收人" v-on:click.native="chooseRec()" disableClear disabled v-model="taskForm.recipientName"></mt-field>
+                <mt-field label="参与人" id="parUser" placeholder="请选择参与人" v-on:click.native="choosePar()" disableClear disabled v-model="taskForm.participantsNames"></mt-field>
+                <mt-field label="任务内容" placeholder="请输入任务内容" type="textarea" rows="4" v-model="taskForm.content"></mt-field>
+            </div>
+            <div class="detailBox">
+                <mt-field label="付款方" placeholder="请输入付款方" v-model="taskForm.payer"></mt-field>
+                <mt-field label="收款方" placeholder="请输入收款方" v-model="taskForm.payee"></mt-field>
+                <mt-field label="费用" placeholder="请输入费用" type="number" v-model="taskForm.fee">元</mt-field>
+            </div>
+            <div class="detailBox">
+                <div class="left_tag">所属分类</div>
+                <div class="right">
+                    <ul class="address_first">
+                        <li v-for="(item,index) in labels" :id="'btn'+item.id" v-bind:class="{'active':item.id==taskForm.tagId}" v-on:click="chooseTag(item.id)">
+                            {{item.name}}
+                            <img v-if="index > 4" v-on:click="delTag(item.id)" src="../../assets/image/del.png">
+                        </li>
+                        <li v-on:click="addNewTag()" class="add">+</li>
+                    </ul>
+                </div>
+            </div>
+            <div class="btn">
+                <mt-button class="allBtn" size="large" type="primary" v-on:click.native="submit()">确定</mt-button>
+                <mt-button class="allBtn" size="large" v-on:click.native="jumpBack()">取消</mt-button>
+            </div>
+        </div>
+        <mt-popup v-model="popupVisible" position="right" class="allocation">
+            <mt-header class="detail_head" fixed title="选择参与人">
+                <router-link to="" slot="left">
+                    <mt-button icon="back" v-on:click="toPrev()"></mt-button>
+                </router-link>
+            </mt-header>
+            <div class="detailBox">
+                <mt-checklist title="checkbox list" v-model="ids" :options="uselist" @change="checkon"></mt-checklist>
+            </div>
+        </mt-popup>
+    </div>
+</template>
+
+<script>
+    import { MessageBox } from 'mint-ui';
+	export default {
+		data() {
+			return {
+                id: this.$route.params.id,
+                user: JSON.parse(sessionStorage.getItem("user")),
+                detail: '',
+                taskForm: {
+                    id: this.$route.params.id,
+                    publishId: JSON.parse(sessionStorage.getItem("user")).id,
+                    name: '',
+                    code: '',
+                    planTime: '',
+                    workLoad: '',
+                    recipientName: '',
+                    recipientId: '',
+                    participantsNames: '',
+                    participantsIds: '',
+                    content: '',
+                    payer: '',
+                    payee: '',
+                    fee: '',
+                    tagId: 0,
+                },
+                labels: [],
+                
+                users: [],
+                uselist: [],
+                popupVisible: false,
+                ids: [],
+
+                canClick: true,
+			}
+		},
+		methods: {
+            getDetail() {
+                this.$indicator.open();
+                this.http.post(this.port.task.detail, {
+                    'id': this.id
+                } , 
+                res => {
+                    this.$indicator.close();
+                    if (res.code == "ok") {
+                        this.detail = res.data;
+                        var participantsIds = '',
+                            participantsNames = '';
+                        for(var i in res.data.participantsVOS) {
+                            participantsIds += res.data.participantsVOS[i].userId + ',';
+                            participantsNames += res.data.participantsVOS[i].userName + ',';
+                            this.ids.push(res.data.participantsVOS[i].userId)
+                        }
+                        participantsIds = participantsIds.substring(0,participantsIds.length-1);
+                        participantsNames = participantsNames.substring(0,participantsNames.length-1)
+
+                        this.taskForm = {
+                            id: this.$route.params.id,
+                            publishId: JSON.parse(sessionStorage.getItem("user")).id,
+                            name: res.data.name,
+                            code: res.data.code,
+                            planTime: res.data.planTime,
+                            workLoad: res.data.workLoad,
+                            recipientName: res.data.recipientName,
+                            recipientId: res.data.recipientId,
+                            participantsNames: participantsNames,
+                            participantsIds: participantsIds,
+                            content: res.data.content,
+                            payer: res.data.payer,
+                            payee: res.data.payee,
+                            fee: res.data.fee,
+                            tagId: res.data.tagId,
+                        }
+                        this.getLabels();
+                    } else {
+                        this.$toast({
+                            message: res.msg,
+                            duration: 2000
+                        });
+                    }
+                }, error => {
+                    this.$indicator.close();
+                    this.$toast({
+                        message: error,
+                        duration: 2000
+                    });
+                })
+            },
+
+            // 标签列表
+			getLabels() {
+                this.http.post(this.port.task.label, {} , 
+                res => {
+                    if (res.code == "ok") {
+                        this.labels = res.data;
+                    } else {
+                        this.$toast({
+                            message: res.msg,
+                            duration: 2000
+                        });
+                    }
+                }, error => {
+                    this.$toast({
+                        message: error,
+                        duration: 2000
+                    });
+                })
+            },
+
+            addNewTag() {
+                MessageBox({
+                    $type:'prompt',
+                    title:'',
+                    message:'请输入任务类型名称',
+                    closeOnClickModal:false,
+                    showCancelButton:true,
+                    inputValidator:function(v){
+                        if (v === null) {
+                           return true;
+                        }
+                        if (v != ""){
+                            return true
+                        } else {
+                            return false
+                        }
+                    },
+                    inputErrorMessage:'请输入任务类型名称',
+                    showInput:true
+                }).then(({ value, action }) => {
+                    if(value == null) {
+                        this.$toast({
+                            message: '创建失败',
+                            duration: 2000
+                        });
+                        return false;
+                    } else {
+                        this.$indicator.open();
+                        this.http.post(this.port.task.addLabel, {
+                            'name': value,
+                        } , 
+                        res => {
+                            this.$indicator.close();
+                            if (res.code == "ok") {
+                                this.getLabels();
+                            } else {
+                                this.$toast({
+                                    message: res.msg,
+                                    duration: 2000
+                                });
+                            }
+                        }, error => {
+                            this.$indicator.close();
+                            this.$toast({
+                                message: error,
+                                duration: 2000
+                            });
+                        })
+                    }
+                }).catch(() => {
+                });
+            },
+
+            chooseTag(id) {
+                $("#btn"+id).addClass("active").siblings().removeClass("active");
+                this.taskForm.tagId = id;
+            },
+
+            delTag(id) {
+                MessageBox.confirm('', { 
+                    message: '是否删除该分类?', 
+                        title: '', 
+                        confirmButtonText: '确定', 
+                        cancelButtonText: '取消' 
+                 }).then(action => { 
+                    if (action == 'confirm') {     //确认的回调
+                        this.http.post(this.port.task.delLabel, {
+                            'id': id
+                        } , 
+                        res => {
+                            if (res.code == "ok") {
+                                this.$toast({
+                                    message: "删除成功",
+                                    duration: 2000
+                                });
+                                this.getLabels();
+                            } else {
+                                this.$toast({
+                                    message: res.msg,
+                                    duration: 2000
+                                });
+                            }
+                        }, error => {
+                            this.$toast({
+                                message: error,
+                                duration: 2000
+                            });
+                        })
+                    }
+                 }).catch(err => { 
+                 });
+            },
+
+            // 人员列表
+            getUserList() {
+                this.http.post(this.port.user.list, {} , 
+                res => {
+                    if (res.code == "ok") {
+                        for(var i in res.data) {
+                            // if(res.data[i].departmentGuid == this.user.deptId) {
+                                var list = res.data[i].userVOS;
+                                for(var j in list) {
+                                    if(list[j].id != this.user.id) {
+                                        this.users.push({
+                                            id: list[j].id,
+                                            name: list[j].name,
+                                        })
+                                    }
+                                }
+                            // }
+                        }
+                    } else {
+                        this.$toast({
+                            message: res.msg,
+                            duration: 2000
+                        });
+                    }
+                }, error => {
+                    this.$toast({
+                        message: error,
+                        duration: 2000
+                    });
+                })
+            },
+
+            chooseRec() {
+                var _this = this;
+                var dataShippingSpace = this.users;
+                var pickerDiv = document.getElementById("recUser");
+                var pickerView = new PickerView({
+                    bindElem: pickerDiv, 
+                    data: dataShippingSpace, 
+                    title: "负责人", 
+                    leftText: "取消", 
+                    rightText: "确定", 
+                    rightFn: function(selectArr) {
+                        _this.taskForm.recipientId = selectArr[0].id;
+                        _this.taskForm.recipientName = selectArr[0].name;
+                    }
+                });
+            },
+
+            choosePar() {
+                this.uselist = [];
+                for(var i in this.users) {
+                    this.uselist.push({
+                        label: this.users[i].name,
+                        value: this.users[i].id,
+                    })
+                }
+                this.popupVisible = true;
+            },
+
+            checkon() {
+                this.taskForm.participantsIds = "";
+                this.taskForm.participantsNames = "";
+                for(var i in this.ids) {
+                    for(var j in this.uselist) {
+                        if(this.ids[i] == this.uselist[j].value) {
+                            this.taskForm.participantsIds += this.uselist[j].value + ',';
+                            this.taskForm.participantsNames += this.uselist[j].label + ',';
+                            break;
+                        }
+                    }
+                }
+                this.taskForm.participantsIds = this.taskForm.participantsIds.substring(0,this.taskForm.participantsIds.length-1);
+                this.taskForm.participantsNames = this.taskForm.participantsNames.substring(0,this.taskForm.participantsNames.length-1)
+            },
+
+            toPrev() {
+                this.popupVisible = false;
+            },
+
+            // 创建
+            submit() {
+                if(this.canClick) {
+                    this.canClick = false;
+                    if(this.taskForm.name == null || this.taskForm.name == "") {
+                        this.$toast({
+                            message: '请输入任务名称',
+                            duration: 2000
+                        });
+                        this.canClick = true;
+                        return false;
+                    } else if(this.taskForm.code == null || this.taskForm.code == "") {
+                        this.$toast({
+                            message: '请输入任务编码',
+                            duration: 2000
+                        });
+                        this.canClick = true;
+                        return false;
+                    } else if(this.taskForm.planTime == null || this.taskForm.planTime == "") {
+                        this.$toast({
+                            message: '请选择计划时间',
+                            duration: 2000
+                        });
+                        this.canClick = true;
+                        return false;
+                    } else if(this.taskForm.workLoad == null || this.taskForm.workLoad == "") {
+                        this.$toast({
+                            message: '请输入工作量',
+                            duration: 2000
+                        });
+                        this.canClick = true;
+                        return false;
+                    } else if(this.taskForm.content == null || this.taskForm.content == "") {
+                        this.$toast({
+                            message: '请输入工作内容',
+                            duration: 2000
+                        });
+                        this.canClick = true;
+                        return false;
+                    } else {
+                        this.$indicator.open();
+                        var _this = this , 
+                            form = {
+                                id: this.taskForm.id,
+                                publishId: this.user.id,
+                                name: this.taskForm.name,
+                                code: this.taskForm.code,
+                                planTime: this.taskForm.planTime,
+                                workLoad: this.taskForm.workLoad,
+                                content: this.taskForm.content,
+                                tagId: this.taskForm.tagId
+                            };
+                        if(this.taskForm.recipientId != '') {
+                            form.recipientId = this.taskForm.recipientId
+                        }
+                        if(this.taskForm.participantsIds != '') {
+                            form.participantsIdes = this.taskForm.participantsIds
+                        }
+                        if(this.taskForm.payer != '') {
+                            form.payer = this.taskForm.payer
+                        }
+                        if(this.taskForm.payee != '') {
+                            form.payee = this.taskForm.payee
+                        }
+                        if(this.taskForm.fee != '') {
+                            form.fee = this.taskForm.fee
+                        }
+                        this.http.post( this.port.task.add, form,
+                        res => {
+                            this.$indicator.close();
+                            if (res.code == "ok") {
+                                this.$toast({
+                                    message: '修改成功',
+                                    duration: 2000
+                                });
+                                setTimeout(function(){
+                                    _this.$router.go(-1);
+                                }, 1000);
+                            } else {
+                                this.canClick = true;
+                                this.$toast({
+                                    message: res.msg,
+                                    duration: 2000
+                                });
+                            }
+                        },
+                        error => {
+                            this.canClick = true;
+                            this.$indicator.close();
+                            this.$toast({
+                                message: error,
+                                duration: 2000
+                            });
+                        });
+                    }
+                } else {
+                    this.$toast({
+                        message: '请勿重复提交',
+                        duration: 2000
+                    });
+                }
+            },
+
+            jumpBack() {
+                this.$router.go(-1);
+            }
+        },
+        created() {
+            this.getUserList();
+            this.getDetail();
+        },
+		mounted() {
+            
+		}
+	}
+
+</script>
+
+<style scoped>
+    .detail_head {
+        background: #fff;
+        color: #333;
+        height: 0.4rem;
+    }
+
+    .detail_body {
+        margin-top: 0.4rem;
+        padding-bottom: 0.15rem;
+    }
+
+    .detail {
+        background: #EFEFEF;
+    }
+
+    .detailBox {
+        background: #fff;
+        margin-bottom: 0.11rem;
+    }
+
+    .left{
+        float:left;
+        /* margin: 0.15rem; */
+        padding: 0.15rem 0 0.1rem 0;
+    }
+
+    .left_tag {
+        padding: 0.15rem 0.15rem 0.1rem 0.15rem;
+    }
+
+    .right div{
+        line-height: 0.21rem;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+    }
+
+    .btn {
+        width: 80%;
+        margin: 0.2rem auto 0;
+    }
+
+    .allocation {
+        width: 100%;
+        height: 100%;
+    }
+
+    .allocation .detailBox {
+        margin-top: 0.12rem;
+    }
+
+    .address_first .current{
+        background:#eee;
+        color: #6f83ff;
+        border-left: 2px solid #6f83ff;
+    }
+
+    .right > ul {
+        margin: 0;
+        padding: 0;
+        overflow: auto;
+        -webkit-transition-duration: 0.4s;
+        box-sizing:border-box;
+        padding: 0.08rem 0.1rem;
+    }
+
+    .right > ul > li {
+        display: inline-block;
+        height: 0.2rem;
+        line-height: 0.22rem;
+        font-size: 0.14rem;
+        color: #ccc;
+        padding: 0.02rem 0.12rem;
+        margin: 0.06rem 0.07rem;
+        border: 1px solid #ccc;
+        border-radius: 50px;
+        min-width: 0.3rem;
+        text-align: center;
+        position: relative;
+    }
+
+    .right > ul > li img {
+        position: absolute;
+        top: -0.05rem;
+        right: -0.08rem;
+        width: 0.18rem;
+        height: 0.18rem;
+    }
+
+    .right > ul > li.add {
+        border: 1px solid #777;
+        color: #777;
+    }
+    
+    .right > ul > li.active {
+        border: 1px solid #2680EB;
+        color: #2680EB;
+    }
+
+    .right div img.pic {
+        width: 0.8rem;
+        height: 0.8rem;
+        margin: 0.15rem 0 0 0.3rem ;
+    }
+
+    .textColor {
+        margin-top: 0.4rem;
+        color: #8e8e8e;
+        padding: 0.12rem;
+        font-size: 0.12rem;
+    }
+
+    .example {
+        color: #8e8e8e;
+        padding: 0.02rem 0.12rem;
+        font-size: 0.12rem;
+    }
+
+    .allBtn {
+        width: 80%;
+        margin: 0.18rem auto;
+    }
+</style>
+<style>
+    .detail_head .mint-header-title {
+        font-weight: 600;
+        font-size: 0.15rem;
+    }
+
+    .detail_head .mint-button-text {
+        color: #26a2ff;
+    }
+
+    .detailBox .mint-cell {
+        padding: 0 0 0 0.02rem;
+    }
+    
+    .mint-popup.allocation  {
+        background: #efefef;
+    }
+
+    .mint-msgbox {
+        width: 70%;
+    }
+
+    .mint-cell-wrapper {
+        background-image: none;
+    }
+</style>

+ 548 - 0
lss_vue_wx/src/views/task/taskRegister.vue

@@ -0,0 +1,548 @@
+<template>
+	<div class="detail">
+        <mt-header class="detail_head" fixed title="新增任务">
+            <router-link to="" slot="left">
+                <mt-button icon="back" v-on:click.native='jumpBack()'></mt-button>
+            </router-link>
+        </mt-header>
+        <div class="detail_body">
+            <div class="detailBox">
+                <mt-field label="任务名称" placeholder="请输入任务名称" v-model="taskForm.name"></mt-field>
+                <mt-field label="任务编码" placeholder="请输入任务编码" v-model="taskForm.code"></mt-field>
+                <mt-field label="计划时间" placeholder="请选择计划时间" type="date" v-model="taskForm.planTime"></mt-field>
+                <mt-field label="工作量" placeholder="请输入工作量" type="number" v-model="taskForm.workLoad">天</mt-field>
+                <mt-field label="接收人" id="recUser" placeholder="请选择接收人" v-on:click.native="chooseRec()" disableClear disabled v-model="taskForm.recipientName"></mt-field>
+                <mt-field label="参与人" id="parUser" placeholder="请选择参与人" v-on:click.native="choosePar()" disableClear disabled v-model="taskForm.participantsNames"></mt-field>
+                <mt-field label="任务内容" placeholder="请输入任务内容" type="textarea" rows="4" v-model="taskForm.content"></mt-field>
+            </div>
+            <div class="detailBox">
+                <mt-field label="付款方" placeholder="请输入付款方" v-model="taskForm.payer"></mt-field>
+                <mt-field label="收款方" placeholder="请输入收款方" v-model="taskForm.payee"></mt-field>
+                <mt-field label="费用" placeholder="请输入费用" type="number" v-model="taskForm.fee">元</mt-field>
+            </div>
+            <div class="detailBox">
+                <div class="left_tag">所属分类</div>
+                <div class="right">
+                    <ul class="address_first">
+                        <li v-for="(item,index) in labels" :id="'btn'+item.id" v-bind:class="{'active':index==0}" v-on:click="chooseTag(item.id)">
+                            {{item.name}}
+                            <img v-if="index > 4" v-on:click="delTag(item.id)" src="../../assets/image/del.png">
+                        </li>
+                        <li v-on:click="addNewTag()" class="add">+</li>
+                    </ul>
+                </div>
+            </div>
+            <div class="btn">
+                <mt-button class="allBtn" size="large" type="primary" v-on:click.native="submit()">确定</mt-button>
+                <mt-button class="allBtn" size="large" v-on:click.native="jumpBack()">取消</mt-button>
+            </div>
+        </div>
+        <mt-popup v-model="popupVisible" position="right" class="allocation">
+            <mt-header class="detail_head" fixed title="选择参与人">
+                <router-link to="" slot="left">
+                    <mt-button icon="back" v-on:click="toPrev()"></mt-button>
+                </router-link>
+            </mt-header>
+            <div class="detailBox">
+                <mt-checklist title="checkbox list" v-model="ids" :options="uselist" @change="checkon"></mt-checklist>
+            </div>
+        </mt-popup>
+    </div>
+</template>
+
+<script>
+    import { MessageBox } from 'mint-ui';
+	export default {
+		data() {
+			return {
+                user: JSON.parse(sessionStorage.getItem("user")),
+                taskForm: {
+                    publishId: JSON.parse(sessionStorage.getItem("user")).id,
+                    name: '',
+                    code: '',
+                    planTime: '',
+                    workLoad: '',
+                    recipientName: '',
+                    recipientId: '',
+                    participantsNames: '',
+                    participantsIds: '',
+                    content: '',
+                    payer: '',
+                    payee: '',
+                    fee: '',
+                    tagId: 0,
+                },
+                labels: [],
+                
+                users: [],
+                uselist: [],
+                popupVisible: false,
+                ids: [],
+
+                canClick: true,
+			}
+		},
+		methods: {
+            // 标签列表
+			getLabels() {
+                this.http.post(this.port.task.label, {} , 
+                res => {
+                    if (res.code == "ok") {
+                        this.taskForm.tagId = res.data[0].id;
+                        this.labels = res.data;
+                    } else {
+                        this.$toast({
+                            message: res.msg,
+                            duration: 2000
+                        });
+                    }
+                }, error => {
+                    this.$toast({
+                        message: error,
+                        duration: 2000
+                    });
+                })
+            },
+
+            addNewTag() {
+                MessageBox({
+                    $type:'prompt',
+                    title:'',
+                    message:'请输入任务类型名称',
+                    closeOnClickModal:false,
+                    showCancelButton:true,
+                    inputValidator:function(v){
+                        if (v === null) {
+                           return true;
+                        }
+                        if (v != ""){
+                            return true
+                        } else {
+                            return false
+                        }
+                    },
+                    inputErrorMessage:'请输入任务类型名称',
+                    showInput:true
+                }).then(({ value, action }) => {
+                    if(value == null) {
+                        this.$toast({
+                            message: '创建失败',
+                            duration: 2000
+                        });
+                        return false;
+                    } else {
+                        this.$indicator.open();
+                        this.http.post(this.port.task.addLabel, {
+                            'name': value,
+                        } , 
+                        res => {
+                            this.$indicator.close();
+                            if (res.code == "ok") {
+                                this.getLabels();
+                            } else {
+                                this.$toast({
+                                    message: res.msg,
+                                    duration: 2000
+                                });
+                            }
+                        }, error => {
+                            this.$indicator.close();
+                            this.$toast({
+                                message: error,
+                                duration: 2000
+                            });
+                        })
+                    }
+                }).catch(() => {
+                });
+            },
+
+            chooseTag(id) {
+                $("#btn"+id).addClass("active").siblings().removeClass("active");
+                this.taskForm.tagId = id;
+            },
+
+            delTag(id) {
+                MessageBox.confirm('', { 
+                    message: '是否删除该分类?', 
+                        title: '', 
+                        confirmButtonText: '确定', 
+                        cancelButtonText: '取消' 
+                 }).then(action => { 
+                    if (action == 'confirm') {     //确认的回调
+                        this.http.post(this.port.task.delLabel, {
+                            'id': id
+                        } , 
+                        res => {
+                            if (res.code == "ok") {
+                                this.$toast({
+                                    message: "删除成功",
+                                    duration: 2000
+                                });
+                                this.getLabels();
+                            } else {
+                                this.$toast({
+                                    message: res.msg,
+                                    duration: 2000
+                                });
+                            }
+                        }, error => {
+                            this.$toast({
+                                message: error,
+                                duration: 2000
+                            });
+                        })
+                    }
+                 }).catch(err => { 
+                 });
+            },
+
+            // 人员列表
+            getUserList() {
+                this.http.post(this.port.user.list, {} , 
+                res => {
+                    if (res.code == "ok") {
+                        for(var i in res.data) {
+                            // if(res.data[i].departmentGuid == this.user.deptId) {
+                                var list = res.data[i].userVOS;
+                                for(var j in list) {
+                                    if(list[j].id != this.user.id) {
+                                        this.users.push({
+                                            id: list[j].id,
+                                            name: list[j].name,
+                                        })
+                                    }
+                                }
+                            // }
+                        }
+                    } else {
+                        this.$toast({
+                            message: res.msg,
+                            duration: 2000
+                        });
+                    }
+                }, error => {
+                    this.$toast({
+                        message: error,
+                        duration: 2000
+                    });
+                })
+            },
+
+            chooseRec() {
+                var _this = this;
+                var dataShippingSpace = this.users;
+                var pickerDiv = document.getElementById("recUser");
+                var pickerView = new PickerView({
+                    bindElem: pickerDiv, 
+                    data: dataShippingSpace, 
+                    title: "负责人", 
+                    leftText: "取消", 
+                    rightText: "确定", 
+                    rightFn: function(selectArr) {
+                        _this.taskForm.recipientId = selectArr[0].id;
+                        _this.taskForm.recipientName = selectArr[0].name;
+                    }
+                });
+            },
+
+            choosePar() {
+                this.uselist = [];
+                for(var i in this.users) {
+                    this.uselist.push({
+                        label: this.users[i].name,
+                        value: this.users[i].id,
+                    })
+                }
+                this.popupVisible = true;
+            },
+
+            checkon() {
+                this.taskForm.participantsIds = "";
+                this.taskForm.participantsNames = "";
+                for(var i in this.ids) {
+                    for(var j in this.uselist) {
+                        if(this.ids[i] == this.uselist[j].value) {
+                            this.taskForm.participantsIds += this.uselist[j].value + ',';
+                            this.taskForm.participantsNames += this.uselist[j].label + ',';
+                            break;
+                        }
+                    }
+                }
+                this.taskForm.participantsIds = this.taskForm.participantsIds.substring(0,this.taskForm.participantsIds.length-1);
+                this.taskForm.participantsNames = this.taskForm.participantsNames.substring(0,this.taskForm.participantsNames.length-1)
+            },
+
+            toPrev() {
+                this.popupVisible = false;
+            },
+
+            // 创建
+            submit() {
+                if(this.canClick) {
+                    this.canClick = false;
+                    if(this.taskForm.name == null || this.taskForm.name == "") {
+                        this.$toast({
+                            message: '请输入任务名称',
+                            duration: 2000
+                        });
+                        this.canClick = true;
+                        return false;
+                    } else if(this.taskForm.code == null || this.taskForm.code == "") {
+                        this.$toast({
+                            message: '请输入任务编码',
+                            duration: 2000
+                        });
+                        this.canClick = true;
+                        return false;
+                    } else if(this.taskForm.planTime == null || this.taskForm.planTime == "") {
+                        this.$toast({
+                            message: '请选择计划时间',
+                            duration: 2000
+                        });
+                        this.canClick = true;
+                        return false;
+                    } else if(this.taskForm.workLoad == null || this.taskForm.workLoad == "") {
+                        this.$toast({
+                            message: '请输入工作量',
+                            duration: 2000
+                        });
+                        this.canClick = true;
+                        return false;
+                    } else if(this.taskForm.content == null || this.taskForm.content == "") {
+                        this.$toast({
+                            message: '请输入工作内容',
+                            duration: 2000
+                        });
+                        this.canClick = true;
+                        return false;
+                    } else {
+                        this.$indicator.open();
+                        var _this = this , 
+                            form = {
+                                publishId: this.user.id,
+                                name: this.taskForm.name,
+                                code: this.taskForm.code,
+                                planTime: this.taskForm.planTime,
+                                workLoad: this.taskForm.workLoad,
+                                content: this.taskForm.content,
+                                tagId: this.taskForm.tagId
+                            };
+                        if(this.taskForm.recipientId != '') {
+                            form.recipientId = this.taskForm.recipientId
+                        }
+                        if(this.taskForm.participantsIds != '') {
+                            form.participantsIdes = this.taskForm.participantsIds
+                        }
+                        if(this.taskForm.payer != '') {
+                            form.payer = this.taskForm.payer
+                        }
+                        if(this.taskForm.payee != '') {
+                            form.payee = this.taskForm.payee
+                        }
+                        if(this.taskForm.fee != '') {
+                            form.fee = this.taskForm.fee
+                        }
+                        this.http.post( this.port.task.add, form,
+                        res => {
+                            this.$indicator.close();
+                            if (res.code == "ok") {
+                                this.$toast({
+                                    message: '创建成功',
+                                    duration: 2000
+                                });
+                                setTimeout(function(){
+                                    // _this.$router.push({ path: '/task' });
+                                    _this.$router.go(-1);
+                                }, 1000);
+                            } else {
+                                this.canClick = true;
+                                this.$toast({
+                                    message: res.msg,
+                                    duration: 2000
+                                });
+                            }
+                        },
+                        error => {
+                            this.canClick = true;
+                            this.$indicator.close();
+                            this.$toast({
+                                message: error,
+                                duration: 2000
+                            });
+                        });
+                    }
+                } else {
+                    this.$toast({
+                        message: '请勿重复提交',
+                        duration: 2000
+                    });
+                }
+            },
+
+            jumpBack() {
+                // this.$router.push("/task");
+                this.$router.go(-1);
+            }
+        },
+        created() {
+            this.getUserList();
+            this.getLabels();
+        },
+		mounted() {
+            
+		}
+	}
+
+</script>
+
+<style scoped>
+    .detail_head {
+        background: #fff;
+        color: #333;
+        height: 0.4rem;
+    }
+
+    .detail_body {
+        margin-top: 0.4rem;
+        padding-bottom: 0.15rem;
+    }
+
+    .detail {
+        background: #EFEFEF;
+    }
+
+    .detailBox {
+        background: #fff;
+        margin-bottom: 0.11rem;
+    }
+
+    .left{
+        float:left;
+        /* margin: 0.15rem; */
+        padding: 0.15rem 0 0.1rem 0;
+    }
+
+    .left_tag {
+        padding: 0.15rem 0.15rem 0.1rem 0.15rem;
+    }
+
+    .right div{
+        line-height: 0.21rem;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+    }
+
+    .btn {
+        width: 80%;
+        margin: 0.2rem auto 0;
+    }
+
+    .allocation {
+        width: 100%;
+        height: 100%;
+    }
+
+    .allocation .detailBox {
+        margin-top: 0.12rem;
+    }
+
+    .address_first .current{
+        background:#eee;
+        color: #6f83ff;
+        border-left: 2px solid #6f83ff;
+    }
+
+    .right > ul {
+        margin: 0;
+        padding: 0;
+        overflow: auto;
+        -webkit-transition-duration: 0.4s;
+        box-sizing:border-box;
+        padding: 0.08rem 0.1rem;
+    }
+
+    .right > ul > li {
+        display: inline-block;
+        height: 0.2rem;
+        line-height: 0.22rem;
+        font-size: 0.14rem;
+        color: #ccc;
+        padding: 0.02rem 0.12rem;
+        margin: 0.06rem 0.07rem;
+        border: 1px solid #ccc;
+        border-radius: 50px;
+        min-width: 0.3rem;
+        text-align: center;
+        position: relative;
+    }
+
+    .right > ul > li img {
+        position: absolute;
+        top: -0.05rem;
+        right: -0.08rem;
+        width: 0.18rem;
+        height: 0.18rem;
+    }
+
+    .right > ul > li.add {
+        border: 1px solid #777;
+        color: #777;
+    }
+    
+    .right > ul > li.active {
+        border: 1px solid #2680EB;
+        color: #2680EB;
+    }
+
+    .right div img.pic {
+        width: 0.8rem;
+        height: 0.8rem;
+        margin: 0.15rem 0 0 0.3rem ;
+    }
+
+    .textColor {
+        margin-top: 0.4rem;
+        color: #8e8e8e;
+        padding: 0.12rem;
+        font-size: 0.12rem;
+    }
+
+    .example {
+        color: #8e8e8e;
+        padding: 0.02rem 0.12rem;
+        font-size: 0.12rem;
+    }
+
+    .allBtn {
+        width: 80%;
+        margin: 0.18rem auto;
+    }
+</style>
+<style>
+    .detail_head .mint-header-title {
+        font-weight: 600;
+        font-size: 0.15rem;
+    }
+
+    .detail_head .mint-button-text {
+        color: #26a2ff;
+    }
+
+    .detailBox .mint-cell {
+        padding: 0 0 0 0.02rem;
+    }
+    
+    .mint-popup.allocation  {
+        background: #efefef;
+    }
+
+    .mint-msgbox {
+        width: 70%;
+    }
+
+    .mint-cell-wrapper {
+        background-image: none;
+    }
+</style>

+ 1 - 1
pcbms/src/main/java/com/hssx/pcbms/controller/TaskController.java

@@ -43,7 +43,7 @@ public class TaskController {
      * publishId :当前发布任务的人的id,participantsIdes 参与人ids 如:“1,2,3”
      * name :名称,tagId:标签id,code:模具型号,planTime:计划时间如:2019-10-10
      * ,workLoad:工作量如:10(单位:天),recipientId:接受人id,payer:付款方,content:任务内容
-     * payee:收款方,状态0-待派发 1-已派发 2-已完成 3-待审核 4-未通过 5-已延期(创建默认不传该字段)
+     * payee:收款方,状态0-待派发 1-已派发 2-已接受 3-待审核 4-未通过 5-已完成 6-已延期 7-已失效(创建默认不传该字段)
      * delayTime 延长日期(创建默认不传该字段,延期处理时传该字段)
      * 修改:,id: 任务id (以上其他字段不修改不传)
      */