zhaoxiaohai 3 yıl önce
ebeveyn
işleme
9380330448

+ 3 - 1
app.json

@@ -108,7 +108,9 @@
                 "project/modules/task/history",
                 "salesForecasting/index",
                 "salesForecasting/detail",
-                "work/index"
+                "work/index",
+                "work/add",
+                "work/detail"
             ]
         }
     ],

+ 5 - 0
components/Yl_field/index.js

@@ -93,10 +93,15 @@ Component({
             let item = e.target.dataset.item,
                 index = this.data.form.findIndex(v => v.valueName === item.valueName),
                 value = e.detail.value;
+
             this.setData({
                 [`form[${index}].value`]: value,
                 [`form[${index}].error`]: false,
             });
+            if (item.interrupt) this.triggerEvent("interrupt", {
+                data: this.data.form[index],
+                form: this.data.form
+            });
             this.confirm();
         },
         /* 时间范围选择器 */

+ 189 - 0
packageA/work/add.js

@@ -0,0 +1,189 @@
+const _Http = getApp().globalData.http,
+    getTime = require("../../utils/getTime");
+
+Page({
+    data: {
+        showAll: false,
+        form: [{
+            label: "任务标题",
+            error: false,
+            errMsg: "",
+            type: "textarea",
+            value: "",
+            placeholder: "",
+            valueName: "title",
+            checking: "base",
+            required: true
+        }, {
+            label: "任务要求",
+            error: false,
+            errMsg: "",
+            type: "textarea",
+            value: "",
+            placeholder: "",
+            valueName: "remarks",
+            checking: "base",
+            required: false
+        }, {
+            label: "开始日期",
+            error: false,
+            errMsg: "",
+            type: "date",
+            start: getTime.formatTime(new Date(), '-').split(' ')[0],
+            value: "",
+            placeholder: "开始日期",
+            interrupt: true,
+            valueName: "starttime",
+            checking: "base",
+            required: true
+        }],
+        "content": {
+            "sys_taskid": 0,
+            "ownertable": "sys_task",
+            "ownerid": 0,
+        },
+        disabled: true
+    },
+    onLoad(options) {
+        if (options.data) {
+            let data = JSON.parse(options.data);
+            this.setData({
+                disabled: false,
+                form: this.data.form.map(v => {
+                    if (data[v.valueName]) v.value = data[v.valueName];
+                    return v
+                })
+            })
+        }
+    },
+    /* 打断处理form */
+    interrupt(e) {
+        let {
+            data,
+            form
+        } = e.detail;
+        if (data.label == '开始日期') {
+            let i = form.findIndex(v => v.label == '开始时间');
+            if (i == -1) form.push({
+                label: "开始时间",
+                error: false,
+                errMsg: "",
+                type: "time",
+                value: "00:00",
+                interrupt: true,
+                placeholder: "开始时间",
+                valueName: "starttime1",
+                checking: "base",
+                required: false
+            });
+            let obj = {
+                label: "截止日期",
+                error: false,
+                errMsg: "",
+                type: "date",
+                start: data.value,
+                value: "",
+                interrupt: true,
+                placeholder: "截止日期",
+                valueName: "endtime",
+                checking: "base",
+                required: false
+            };
+            let index = form.findIndex(v => v.label == '截止时间');
+            index == -1 ? form.push(obj) : form[index] = obj;
+        } else if (data.label == '截止日期') {
+            let i = form.findIndex(v => v.label == '截止时间');
+            if (i == -1) form.push({
+                label: "截止时间",
+                error: false,
+                errMsg: "",
+                type: "time",
+                value: "00:00",
+                interrupt: true,
+                placeholder: "截止时间",
+                valueName: "endtime1",
+                checking: "base",
+                required: false
+            });
+
+            let obj = {
+                label: "提醒时间",
+                error: false,
+                errMsg: "",
+                type: "namber",
+                value: "",
+                placeholder: "结束时间前几天提醒",
+                valueName: "remindday",
+                checking: "base",
+                required: false
+            };
+            let index = form.findIndex(v => v.label == '提醒时间');
+            index == -1 ? form.push(obj) : form[index] = pbj;
+        }
+        this.setData({
+            form
+        })
+    },
+    submit() {
+        let content = {
+            ...this.data.content,
+            ...this.selectComponent("#Form").submit()
+        };
+        content.starttime = content.starttime + ' ' + content.starttime1 || "";
+        content.endtime = content.endtime + (content.endtime1 ? ' ' + content.endtime1 : "");
+        delete(content.starttime1)
+        delete(content.endtime1)
+        _Http.basic({
+            "id": 20221211112101,
+            content
+        }).then(res => {
+            console.log("创建任务成功", res)
+            wx.showToast({
+                title: res.msg == '成功' ? "保存成功" : res.msg,
+                icon: "none"
+            });
+            if (res.msg == '成功') setTimeout(() => {
+                getCurrentPages().forEach(v => {
+                    if (v.__route__ == 'packageA/work/index') {
+                        let index = v.data.list.findIndex(v => v.sys_taskid == res.data.sys_taskid);
+                        if (index == -1) {
+                            v.data.list.unshift(res.data)
+                            this.setData({
+                                list: v.data.list,
+                                "content.total": v.data.content.total + 1
+                            })
+                        } else {
+                            this.setData({
+                                [`list[${index}]`]: res.data
+                            })
+                        }
+                    }
+                });
+                let pages = getCurrentPages(),
+                    page = pages[pages.length - 2];
+                if (page.__route__ == 'packageA/work/index') wx.redirectTo({
+                    url: '/packageA/work/detail?id=' + res.data.sys_taskid,
+                    fail(err) {
+                        console.log(err)
+                    }
+                })
+            }, 300);
+        })
+    },
+    // 是否显示全部
+    onChange({
+        detail
+    }) {
+        this.setData({
+            showAll: detail
+        })
+    },
+    /* 表单必填项是否完成 */
+    onConfirm({
+        detail
+    }) {
+        this.setData({
+            disabled: detail
+        })
+    }
+})

+ 4 - 0
packageA/work/add.json

@@ -0,0 +1,4 @@
+{
+    "usingComponents": {},
+    "navigationBarTitleText": "编辑任务"
+}

+ 23 - 0
packageA/work/add.scss

@@ -0,0 +1,23 @@
+.new-footer {
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+    position: fixed;
+    width: 100vw;
+    height: 130rpx;
+    background: #FFFFFF;
+    box-shadow: 0px -4rpx 16rpx 2rpx rgba(150, 157, 165, 0.16);
+    bottom: 0;
+
+    .new-submit {
+        width: 156rpx;
+        height: 90rpx;
+        background: #3874F6;
+        border-radius: 8rpx;
+        font-size: 28rpx;
+        font-family: PingFang SC-Bold, PingFang SC;
+        font-weight: bold;
+        color: #FFFFFF;
+        margin-right: 30rpx;
+    }
+}

+ 8 - 0
packageA/work/add.wxml

@@ -0,0 +1,8 @@
+<Yl_Headline title='基本信息' type='switch' switchLabel='仅显示必填信息' switch='{{showAll}}' bind:callBack='onChange' />
+<Yl_field id='Form' form='{{form}}' showAll='{{!showAll}}' bind:onConfirm='onConfirm' bind:interrupt="interrupt">
+    <view slot='discountrate' style="margin-right: 36rpx;">%</view>
+</Yl_field>
+<view style="height: 100rpx;" />
+<view class="new-footer">
+    <van-button custom-class='new-submit' disabled='{{disabled}}' bindclick='submit'>提交</van-button>
+</view>

+ 192 - 0
packageA/work/detail.js

@@ -0,0 +1,192 @@
+const _Http = getApp().globalData.http;
+Page({
+    data: {
+        tabsActive: 0, //tabs 选中项
+        sys_taskid: "",
+        detail: '',
+        tabsList: [{
+            label: "详细信息",
+            num: 132
+        }, {
+            label: "跟进动态",
+            num: 132
+        }, {
+            label: "操作",
+            num: 132
+        }, {
+            label: "附件",
+            num: 132
+        }],
+        tabbarList: [{
+            icon: "icon-genjin",
+            label: "跟进"
+        }, {
+            icon: "icon-genjin",
+            label: "编辑"
+        }, {
+            icon: "icon-genjin",
+            label: "完成"
+        }],
+    },
+    onLoad(options) {
+        this.setData({
+            sys_taskid: options.id
+        });
+        this.getDetail();
+    },
+    getDetail() {
+        _Http.basic({
+            "id": 20221211111901,
+            "content": {
+                "nocache": true,
+                "sys_taskid": this.data.sys_taskid
+            },
+        }).then(res => {
+            console.log("任务详情", res)
+            if (res.msg != '成功') return wx.showToast({
+                title: res.msg,
+                icon: "none"
+            });
+            this.setData({
+                detail: res.data,
+                briefs: [{
+                        label: "任务要求",
+                        value: res.data.remarks
+                    }, {
+                        label: "开始时间",
+                        value: res.data.starttime
+                    }, {
+                        label: "截止时间",
+                        value: res.data.endtime
+                    },
+                    {
+                        label: '关联页数数据',
+                        value: res.data.allocationstatus
+                    },
+                    {
+                        label: '状态',
+                        value: res.data.status
+                    }
+                ],
+                list1: [{
+                        label: "任务要求",
+                        value: res.data.remarks
+                    },
+                    {
+                        label: "开始时间",
+                        value: res.data.starttime
+                    },
+                    {
+                        label: "截止时间",
+                        value: res.data.endtime
+                    },
+                    {
+                        label: '关联页数数据',
+                        value: res.data.allocationstatus
+                    },
+                    {
+                        label: '状态',
+                        value: res.data.status
+                    }
+                ],
+                list2: [{
+                    label: "创建人",
+                    value: res.data.createby
+                }, {
+                    label: "创建时间",
+                    value: res.data.createdate
+                }, {
+                    label: "最近编辑人",
+                    value: res.data.changeby
+                }, {
+                    label: "最近编辑时间",
+                    value: res.data.changedate
+                }]
+            });
+            /* 更新列表中状态 */
+            let page = getCurrentPages().find(v => v.__route__ == 'packageA/saleClue/index');
+            if (page) {
+                let index = page.data.list.findIndex(v => v.sys_taskid == res.data.sys_taskid);
+                console.log("列表中位置", index)
+                if (index != -1) page.setData({
+                    [`list[${index}].status`]: res.data.status
+                })
+            }
+            this.getTags();
+            this.getGroup();
+            this.partialRenewal();
+        })
+    },
+    //tabs 切换
+    tabsChange({
+        detail
+    }) {
+        this.setData({
+            tabsActive: detail
+        });
+        this.partialRenewal();
+    },
+    //更新标签
+    getTags() {
+        this.selectComponent("#Tags").getTags();
+    },
+    //更新团队成员
+    getGroup() {
+        this.selectComponent("#Group").getList();
+    },
+    //局部数据更新 tabs
+    partialRenewal(init = false) {
+        let id = this.data.detail.sys_taskid;
+        let model = '';
+        let name = this.data.tabsList[this.data.tabsActive].label;
+        switch (name) {
+            case "操作":
+                model = "#Record"
+                break;
+            case "跟进动态":
+                model = "#Trace"
+                break;
+            case "附件":
+                model = "#Files"
+                break;
+        };
+        if (model) {
+            // 确定好模块ID total = null 是第一次加载 加载数据
+            // init是新增或修改需要清数据
+            let Component = this.selectComponent(model);
+            const {
+                total,
+                pageNumber,
+                pageTotal
+            } = Component.data.content;
+            if (total == null || init) {
+                Component.getList(id, init);
+            } else if (pageNumber <= pageTotal) {
+                Component.getList(id, false);
+            } else {
+                //用来判断 在搜索页面修改,与tabs选项不一致 但是切换到该选项 重置数据
+            }
+        }
+    },
+    onReachBottom() {
+        this.partialRenewal();
+    },
+    //详情按钮回调
+    tabbarOnClick({
+        detail
+    }) {
+        switch (detail.label) {
+            case "编辑":
+                wx.navigateTo({
+                    url: `/packageA/saleClue/addClue?rowData=${JSON.stringify(this.data.detail)}`,
+                })
+                break;
+            case "跟进":
+                wx.navigateTo({
+                    url: `/packageA/setclient/modules/trace/add/index?ownertable=sys_task&ownerid=${this.data.sys_taskid}`,
+                })
+                break;
+        }
+    },
+    onShareAppMessage() {}
+})

+ 10 - 0
packageA/work/detail.json

@@ -0,0 +1,10 @@
+{
+    "usingComponents": {
+        "Preview": "../setclient/modules/preview/index",
+        "Trace": "../setclient/modules/trace/index",
+        "Record": "/packageA/public/record/index",
+        "Files": "/packageA/public/files/index",
+        "Follow": "../publicClue/modules/follow/follow"
+    },
+    "navigationBarTitleText": "任务详情"
+}

+ 15 - 0
packageA/work/detail.scss

@@ -0,0 +1,15 @@
+.header {
+    background-color: #fff;
+    padding: 20rpx 30rpx 0rpx;
+    box-sizing: border-box;
+    margin-bottom: -16rpx;
+
+    .title {
+        height: 40rpx;
+        font-size: 28rpx;
+        font-family: PingFang SC-Bold, PingFang SC;
+        font-weight: bold;
+        color: #333333;
+        margin-bottom: 16rpx;
+    }
+}

+ 18 - 0
packageA/work/detail.wxml

@@ -0,0 +1,18 @@
+<view class="header">
+    <view class="title">{{detail.title}}</view>
+    <Yl-tags id="Tags" add ownertable='sys_task' ownerid='{{detail.sys_taskid}}' />
+</view>
+<!-- 简介 -->
+<Yl_Detail list="{{briefs}}">
+    <Yl-group slot='bottom' id='Group' add ownertable='sys_task' ownerid='{{detail.sys_taskid}}' />
+</Yl_Detail>
+<view style="height: 20rpx;" />
+<Yl_FunTabs list='{{tabsList}}' active='{{tabsActive}}' bind:onChenge="tabsChange">
+    <Preview slot='详细信息' list1='{{list1}}' list2='{{list2}}' />
+    <Record slot='操作' id="Record" ownertable='sys_task' ownerid='{{detail.sys_taskid}}' />
+    <Trace slot='跟进动态' id='Trace' ownertable='sys_task' ownerid='{{detail.sys_taskid}}' />
+    <Files slot='附件' id="Files" ownertable='sys_task' ownerid='{{detail.sys_taskid}}' />
+    <view style="height: 140rpx;" />
+</Yl_FunTabs>
+<!-- 底部 -->
+<Yl_Tabbar list='{{tabbarList}}' bind:callback="tabbarOnClick" />

+ 214 - 53
packageA/work/index.js

@@ -1,66 +1,227 @@
-// packageA/work/index.js
+const _Http = getApp().globalData.http,
+    getHeight = require("../../utils/getRheRemainingHeight");
 Page({
-
-    /**
-     * 页面的初始数据
-     */
     data: {
-
+        list: [],
+        navList: [{
+            label: "全部",
+            icon: "icon-webxialaxuanxiangjiantou",
+            color: "",
+            width: "",
+            id: "1"
+        }, {
+            label: "排序",
+            icon: "icon-shengxu",
+            color: "",
+            width: "",
+            id: "sort"
+        }, {
+            label: "筛选",
+            icon: "icon-shaixuan",
+            color: "",
+            width: "",
+            id: "2"
+        }],
+        content: {
+            nocache: true,
+            "type": 0,
+            "pageNumber": 1,
+            "pageSize": 20,
+            "isExport": 0,
+            "where": {
+                "condition": "",
+                "startdate": "",
+                "enddate": ""
+            },
+            "sort": []
+        },
+        classShow: false, //type类型
+        classActions: [{
+                name: '全部',
+                index: 0
+            }, {
+                name: '我负责的',
+                index: 1
+            },
+            {
+                name: '我参与的',
+                index: 2
+            },
+            {
+                name: "我下属负责的",
+                index: 3
+            }, {
+                name: "我下属参与的",
+                index: 4
+            }
+        ],
+        filter: {
+            show: false,
+            status: ['潜在', '合作中', '已终止'],
+            statusActive: "",
+            startdate: "",
+            enddate: ""
+        }
+    },
+    /* 去添加 */
+    toAdd() {
+        wx.navigateTo({
+            url: './add'
+        })
     },
-
-    /**
-     * 生命周期函数--监听页面加载
-     */
     onLoad(options) {
-
+        this.getList()
     },
-
-    /**
-     * 生命周期函数--监听页面初次渲染完成
-     */
-    onReady() {
-
+    /* 筛选状态选择 */
+    selectStatus(e) {
+        const {
+            item
+        } = e.currentTarget.dataset;
+        this.setData({
+            "filter.statusActive": this.data.filter.statusActive == item ? "" : item
+        })
     },
-
-    /**
-     * 生命周期函数--监听页面显示
-     */
-    onShow() {
-
+    /* 筛选日期范围 */
+    changeDate(e) {
+        const name = e.currentTarget.dataset.name,
+            value = e.detail.value;
+        this.setData({
+            [`filter.${name}`]: value
+        })
     },
-
-    /**
-     * 生命周期函数--监听页面隐藏
-     */
-    onHide() {
-
+    /* 处理筛选 */
+    handleFilter({
+        detail
+    }) {
+        const data = this.data.filter;
+        switch (detail) {
+            case 'confirm':
+                this.setData({
+                    'content.where.status': data.statusActive,
+                    'content.where.startdate': data.startdate,
+                    'content.where.enddate': data.enddate,
+                    'filter.show': false
+                });
+                this.getList(true);
+                break;
+            case 'reset':
+                this.setData({
+                    'filter.statusActive': "",
+                    'filter.startdate': "",
+                    'filter.enddate': "",
+                });
+                break;
+            case 'close':
+                this.setData({
+                    'filter.show': false
+                });
+                break;
+        }
     },
-
-    /**
-     * 生命周期函数--监听页面卸载
-     */
-    onUnload() {
-
+    getList(init = false) {
+        //init 用于初始化分页
+        if (init.detail != undefined) init = init.detail;
+        if (init) this.setData({
+            ['content.pageNumber']: 1
+        })
+        if (this.data.content.pageNumber > this.data.content.pageTotal) return;
+        console.log(this.data.content)
+        _Http.basic({
+            "id": 20220901162901,
+            content: this.data.content
+        }).then(res => {
+            console.log("任务列表", res)
+            this.selectComponent('#ListBox').RefreshToComplete();
+            if (res.msg != '成功') return wx.showToast({
+                title: res.data,
+                icon: "none"
+            })
+            this.setData({
+                'content.pageNumber': res.pageNumber + 1,
+                'content.pageTotal': res.pageTotal,
+                'content.total': res.total,
+                'content.sort': res.sort,
+                list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data)
+            })
+            this.getTags();
+        })
     },
-
-    /**
-     * 页面相关事件处理函数--监听用户下拉动作
-     */
-    onPullDownRefresh() {
-
+    /* 获取列表标签 */
+    getTags() {
+        let list = this.data.list,
+            ownerids = list.map(v => v.sys_taskid)
+        _Http.basic({
+            "id": 20221018102001,
+            "content": {
+                "ownertable": "sys_task",
+                ownerids
+            }
+        }).then(res => {
+            for (let key in res.data) {
+                let index = list.findIndex(v => v.sys_taskid == key);
+                list[index].tags = res.data[key]
+            };
+            this.setData({
+                list
+            })
+        })
     },
-
-    /**
-     * 页面上拉触底事件的处理函数
-     */
-    onReachBottom() {
-
+    /* 顶部条件导航回调 */
+    navClick({
+        detail
+    }) {
+        switch (detail.id) {
+            case '1':
+                this.setData({
+                    classShow: true
+                })
+                break;
+            case '2':
+                this.setData({
+                    'filter.show': true
+                })
+                break;
+            case '3':
+                this.setData({
+                    'content.sort[0].reversed': this.data.content.sort[0].reversed == 0 ? 1 : 0
+                });
+                this.getList(true)
+                break;
+            default:
+
+                break;
+        }
     },
+    /* 处理搜索 */
+    onSearch({
+        detail
+    }) {
+        this.setData({
+            "content.where.condition": detail
+        });
+        this.getList(true);
 
-    /**
-     * 用户点击右上角分享
-     */
-    onShareAppMessage() {
-
-    }
+    },
+    classClose() {
+        this.setData({
+            classShow: false
+        })
+    },
+    classSelect({
+        detail
+    }) {
+        if (this.data.content.type == detail.index) return this.classClose();
+        this.setData({
+            "content.type": detail.index,
+            'navList[0].label': detail.name
+        })
+        this.classClose();
+        this.getList(true)
+    },
+    onReady() {
+        getHeight.getHeight('.total', this).then(res => this.setData({
+            listHeight: res
+        }));
+    },
+    onShareAppMessage() {}
 })

+ 4 - 1
packageA/work/index.json

@@ -1,3 +1,6 @@
 {
-    "usingComponents": {}
+    "usingComponents": {
+        "list":"./modules/list/index"
+    },
+    "navigationBarTitleText": "任务"
 }

+ 16 - 1
packageA/work/index.scss

@@ -1 +1,16 @@
-/* packageA/work/index.wxss */
+@import "../../components/Yl_filtrate/groud.scss";
+
+page {
+    height: 100vh;
+    overflow: hidden;
+}
+
+.total {
+    height: 64rpx;
+    line-height: 64rpx;
+    font-size: 24rpx;
+    font-family: PingFang SC-Regular, PingFang SC;
+    color: #666666;
+    background: #F4F5F7;
+    padding-left: 30rpx;
+}

+ 34 - 2
packageA/work/index.wxml

@@ -1,2 +1,34 @@
-<!--packageA/work/index.wxml-->
-<text>packageA/work/index.wxml</text>
+<Yl_nav search list='{{navList}}' sort='{{content.sort}}' bind:onClick='navClick' bind:onSearch='onSearch' />
+<view class="total">共{{content.total}}个</view>
+<My_listBox id='ListBox' height="{{listHeight}}" bind:getlist='getList'>
+    <list list='{{list}}' />
+</My_listBox>
+<!-- 显示类型 -->
+<van-action-sheet show="{{ classShow }}" actions="{{ classActions }}" cancel-text="取消" bind:click-overlay='classClose' bind:cancel="classClose" bind:select="classSelect" />
+<!-- 筛选条件 -->
+<Yl_filtrate show="{{filter.show}}" bind:handle="handleFilter">
+    <view class="groud">
+        <view class="label">
+            合作状态
+        </view>
+        <view class="content">
+            <van-button custom-class='but {{filter.statusActive==item?"active":""}}' wx:for="{{filter.status}}" wx:key="item" bindtap="selectStatus" data-item="{{item}}">{{item}}</van-button>
+        </view>
+    </view>
+    <view class="groud">
+        <view class="label">
+            筛选范围
+        </view>
+        <view class="content time">
+            <picker mode="date" bindchange='changeDate' data-name="startdate">
+                <view class="tbox">{{filter.startdate||'开始时间'}}</view>
+            </picker>
+            <view class="partition">-</view>
+            <picker mode="date" bindchange='changeDate' data-name="enddate">
+                <view class="tbox">{{filter.enddate||"结束时间"}}</view>
+            </picker>
+        </view>
+    </view>
+</Yl_filtrate>
+<!-- 浮动按钮 -->
+<Yl_FloatingButton bindtap="toAdd" />

+ 11 - 0
packageA/work/modules/list/index.js

@@ -0,0 +1,11 @@
+Component({
+    properties: {
+        list: Array
+    },
+    data: {
+
+    },
+    methods: {
+
+    }
+})

+ 4 - 0
packageA/work/modules/list/index.json

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

+ 65 - 0
packageA/work/modules/list/index.scss

@@ -0,0 +1,65 @@
+.offer-list {
+    width: 100%;
+    padding: 20rpx 30rpx;
+    box-sizing: border-box;
+    background-color: #fff;
+    border-bottom: 1rpx solid #ddd;
+    font-family: PingFang SC-Regular, PingFang SC;
+
+    .tag-box {
+        margin-top: 10rpx;
+
+        .tag {
+            height: 40rpx;
+            font-size: 20rpx;
+            font-family: PingFang SC-Regular, PingFang SC;
+            padding: 0 12rpx;
+            margin-right: 8rpx;
+        }
+    }
+
+    .title {
+        position: relative;
+        display: flex;
+        height: 42rpx;
+        align-items: center;
+
+        >text {
+            display: inline-block;
+            width: 80%;
+            font-size: 30rpx;
+            color: #333333;
+        }
+
+        .status {
+            position: absolute;
+            right: -30rpx;
+            width: 132rpx;
+            height: 40rpx;
+            border-radius: 20rpx 0px 0px 20rpx;
+            box-sizing: border-box;
+            padding-left: 30rpx;
+            line-height: 40rpx;
+            font-size: 24rpx;
+            font-family: PingFang SC-Regular, PingFang SC;
+            color: #FFFFFF;
+        }
+    }
+
+    .exp {
+        height: 34rpx;
+        font-size: 24rpx;
+        color: #666;
+        margin-top: 8rpx;
+
+        text {
+            color: #333333;
+        }
+    }
+}
+
+.line-1 {
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+}

+ 27 - 0
packageA/work/modules/list/index.wxml

@@ -0,0 +1,27 @@
+<My_empty wx:if="{{list.length==0}}" />
+<navigator class="offer-list" url="/packageA/work/detail?id={{item.sys_taskid}}" wx:for="{{list}}" wx:key="item.billno">
+    <view class="title">
+        <text class="line-1">{{item.title}}</text>
+        <view class="status" style="background-color: {{backColor.getColor(item.status)}};">{{item.status}}</view>
+    </view>
+    <view class="tag-box">
+        <van-tag custom-class='tag' wx:for="{{item.tags.systemtag}}" wx:for-item='tag' color='#FA8C16' text-color='#fff' round>{{tag}}</van-tag>
+        <van-tag custom-class='tag' wx:for="{{item.tags.datatag}}" wx:for-item='tag' color='#FAAB16' text-color='#fff' round>{{tag}}</van-tag>
+    </view>
+    <view class="exp line-1">开始时间:<text>{{item.starttime}}</text></view>
+    <view class="exp line-1">截止时间:<text>{{item.endtime}}</text></view>
+</navigator>
+
+<wxs module="backColor">
+    module.exports.getColor = function (status) {
+        var color = null;
+        if (status == '新建') {
+            color = '#3874F6';
+        } else if (status == '提交') {
+            color = '#52C41A';
+        } else {
+            color = '#FA8C16';
+        };
+        return color
+    }
+</wxs>

+ 2 - 2
pages/tabbar/home/index.js

@@ -282,12 +282,12 @@ Page({
                     icon: "icon-xiaochengxutongxunlu",
                     apps: {}
                 })
-                /* gridList.push({
+                gridList.push({
                     name: "任务",
                     path: "/packageA/work/index",
                     icon: "icon-xiaochengxu_xiaoshouyuce",
                     apps: {}
-                }) */
+                })
             }
             /* 首页小组件查询 */
             try {

+ 8 - 1
project.private.config.json

@@ -84,9 +84,16 @@
                     "query": "sa_contractid=87",
                     "launchMode": "default",
                     "scene": null
+                },
+                {
+                    "name": "任务",
+                    "pathName": "packageA/work/index",
+                    "query": "",
+                    "launchMode": "default",
+                    "scene": null
                 }
             ]
         }
     },
-    "libVersion": "2.26.0"
+    "libVersion": "2.26.2"
 }