Explorar o código

请假申请移动端提交

chenjun hai 1 ano
pai
achega
49bd1616d8

+ 9 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/leave/controller/LeaveController.java

@@ -6,6 +6,7 @@ import com.zjugis.business.flow.leave.controller.vo.LeaveUpdateReqVO;
 import com.zjugis.business.flow.leave.service.LeaveService;
 import com.zjugis.framework.workflow.model.BaseController;
 import com.zjugis.framework.workflow.workflow.WorkFlow;
+import com.zjugis.framework.workflow.workflow.WorkFlowMobile;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -39,6 +40,14 @@ public class LeaveController extends BaseController {
         return resultPage(map);
     }
 
+    @WorkFlowMobile(isReceiveMaterial = true, isReceiveOpinion = true)
+    @ResponseBody
+    @GetMapping("/mobileIndex")
+    public String mobileIndex(String activityTemplateId, String flowInstanceId, String userId) throws Exception {
+        Map<String, Object> map = leaveService.getFormParams(flowInstanceId, userId);
+        return resultPage(map);
+    }
+
     @PostMapping("/getLeaveDays")
     @Operation(summary = "获取请假天数")
     public String getLeaveDays(@Valid @RequestBody List<LeaveDaysReqVO> reqVO) {

+ 587 - 0
zjugis-business/src/main/resources/templates/Leave/js/mobileIndex.js

@@ -0,0 +1,587 @@
+(function () {
+    let attendanceIndex = ''
+    let isTimes = []
+    var addDataThat = null;
+    let viewState = z.ui.comm.getUrlParam("_o");
+    let read = z.ui.comm.getUrlParam("read");
+    window.onload = function (ex) {
+        let timeObject = document.querySelector('#timeObject')
+        let arrays = JSON.parse(timeObject.value)
+        let attendanceType = document.querySelector('.attendance-type-show')
+        let tbodyBoss = document.querySelector('.tbody')
+        var lists = []
+        var trFragment = document.createDocumentFragment();
+        z.ui.select("[name='createReqVO$leaveType']").bindEvents({
+            onAfterSelect: function (value, data) {
+                lists = []
+                attendanceIndex = value
+                if (value == '81') {
+                    attendanceType.style = 'display:flex !important'
+                    tbodyBoss.innerHTML = ''
+                } else {
+                    attendanceType.style = 'display:none'
+                }
+            }
+        });
+        // z.ui.date("[name='createReqVO$createTime']").setValue(getDate());
+        addDataThat = $("#addData")
+        $("#addData").click(function () {
+            addDataThat.attr('disabled', "true");
+            var dataObj = {}
+            let listsLength = lists.length
+            if (arrays.length > 0) {
+                listsLength = arrays.length + lists.length
+            }
+            if (attendanceIndex == '81') {
+                if (listsLength > 0) {
+                    z.ui.alertWarning("哺乳假只能申请一条")
+                    return
+                }
+            }
+            trFragment.appendChild(generateTableTrHtml(listsLength))
+            $(".tbody").append(trFragment)
+            let timeObj = {
+                index: listsLength,
+                startTime: "",
+                endTime: '',
+            }
+            timeSelector({
+                ele: ".startTimeRange" + listsLength,
+                name: "LeaveTimeDO[" + listsLength + "]$startTimeRange",
+                callback: function (val) {
+                    let startDate = z.ui.laydate("[name='LeaveTimeDO[" + listsLength + "]$startTime']").getValue();
+                    if (!startDate) {
+                        $("[name='LeaveTimeDO[" + listsLength + "]$startTimeRange']").find("input").val("");
+                        z.ui.alertWarning("请先选择起始日期!")
+                        return;
+                    }
+                    timeObj.startTime = Date.parse(startDate + " " + val);
+                }
+            })
+            timeSelector({
+                ele: ".endTimeRange" + listsLength,
+                name: "LeaveTimeDO[" + listsLength + "]$endTimeRange",
+                callback: function (val) {
+                    let endDate = z.ui.laydate("[name='LeaveTimeDO[" + listsLength + "]$endTime']").getValue();
+                    if (!endDate) {
+                        $("[name='LeaveTimeDO[" + listsLength + "]$endTimeRange']").find("input").val("");
+                        z.ui.alertWarning("请先选择截止日期!")
+                        return;
+                    }
+                    let endTime = Date.parse(endDate + " " + val);
+                    if (endTime <= timeObj.startTime) {
+                        z.ui.alertWarning("截止时间必须大于起始时间!")
+                        $("[name='LeaveTimeDO[" + listsLength + "]$endTimeRange']").find("input").val("");
+                        z.ui.laydate("[name='LeaveTimeDO[" + listsLength + "]$endTime']").setValue('');
+                        return;
+                    }
+                    timeObj.endTime = endTime
+                    if (isTimes[listsLength]) {
+                        isTimes[listsLength].startTime = timeObj.startTime;
+                        isTimes[listsLength].endTime = timeObj.endTime;
+                    } else {
+                        isTimes.push(timeObj);
+                    }
+                    whereIsTimes()
+                }
+            })
+            $("#editBtn_" + listsLength).click(function () {
+                const span = $(this).find("span");
+                const html = span.html();
+                if (html === '编辑') {
+                    span.html('保存')
+                    detailWrite(listsLength);
+                    addDataThat.attr('disabled', "true");
+                    $("#qjsj_" + listsLength).removeClass("form-table-disable")
+                    return;
+                }
+                if (html === '保存') {
+                    span.html('编辑')
+                    detailReadonly(listsLength, false)
+                    addDataThat.removeAttr('disabled')
+                    $("#qjsj_" + listsLength).addClass("form-table-disable")
+                    return;
+                }
+            })
+            $("#delBtn_" + listsLength).click(function () {
+                var index = this.id.substring(this.id.indexOf("_") + 1)
+                z.ui.confirm("compid").init({
+                    content: "确定删除吗?",
+                    onConfirm: function () {
+                        var element = document.getElementById("qjsj_" + index);
+                        element.remove();
+                        buildQjsjSeq();
+                        addDataThat.removeAttr('disabled')
+                    },
+                    onCancel: function () {
+
+                    }
+                })
+
+            })
+            z.ui.date("[name='LeaveTimeDO[" + listsLength + "]$startTime']").init({
+                type: 'date',
+                format: 'yyyy-MM-dd',
+                done: function (value, date, endDate) {
+                    debugger
+                    //改变日期后触发
+                    z.ui.laydate("[name='LeaveTimeDO[" + listsLength + "]$startTime']").setValue('');
+                    $("[name='LeaveTimeDO[" + listsLength + "]$endTimeRange']").find("input").val("");
+                    z.ui.laydate("[name='LeaveTimeDO[" + listsLength + "]$endTime']").setValue('');
+                }
+            })
+            z.ui.date("[name='LeaveTimeDO[" + listsLength + "]$endTime']").init({
+                type: 'date',
+                format: 'yyyy-MM-dd',
+                done: function (value, date, endDate) {
+                    debugger
+                    //改变日期后触发
+                    z.ui.laydate("[name='LeaveTimeDO[" + listsLength + "]$endTime']").setValue('');
+                }
+            })
+            buildQjsjSeq();
+            lists.push(dataObj)
+            // qjsjChange()
+        })
+
+
+        bindEvents();
+        //根据返回的json对象渲染
+
+        let tbodyQjsq = document.querySelector('.tbodyQjsq')
+        let html = ""
+        if (arrays.length > 0) {
+            for (let i = 0; i < arrays.length; i++) {
+                let startDate = moment(arrays[i].startTime).format('YYYY-MM-DD')
+                let endDate = moment(arrays[i].endTime).format('YYYY-MM-DD')
+                html += '<tr class="qjsjClass" id="qjsj_' + i + '" style="background:#fff; height: 63px;"> <td name="qjsj_seq">' + (i + 1) + '</td>'
+                    + '<td>'
+                    + '<div class="form-flex">'
+                    + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
+                    + '<div class="z-comp-date" name="LeaveTimeDO[' + i + ']$startTime">'
+                    + '<input type="text" value="' + startDate + '">'
+                    + '</div>'
+                    + '</div>'
+                    + '<div style="width: 50%;margin-left: 5px;" class="dateTimeRange startTimeRange' + (i) + '">'
+                    + '</div>'
+                    + '<span class="nbsp"> - </span>'
+                    + '</div>'
+                    + '</td>'
+                    + '<td>'
+                    + '<div class="form-flex">'
+                    + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
+                    + '<div class="z-comp-date" name="LeaveTimeDO[' + i + ']$endTime">'
+                    + '<input type="text" value="' + endDate + '">'
+                    + '</div>'
+                    + '</div>'
+                    + '<div style="width: 50%;margin-left: 5px;" class="dateTimeRange endTimeRange' + (i) + '">'
+                    + '</div>'
+                    + '</div>'
+                    + '</td>'
+                    + '<td>'
+                    + '<div class="form-item">'
+                    + '<div class="z-comp-input" name="LeaveTimeDO[0]$bz1">'
+                    + '<input type="text" value="">'
+                    + '</div>'
+                    + '</div>'
+                    + '</td>'
+                    + '<td>'
+                    + '<div id="editBtn_' + (i) + '" class="table-btn editBtn_' + (i) + '" data-index="' + (i) + '">'
+                    + '<span>编辑</span>'
+                    + '</div>'
+                    + '<div id="delBtn_' + (i) + '" class="table-btn delBtn_' + (i) + '" data-index="' + (i) + '">'
+                    + '<span>删除</span>'
+                    + '</div>'
+                    + '</td></tr>';
+            }
+            tbodyQjsq.innerHTML = html
+            for (let i = 0; i < arrays.length; i++) {
+                timeSelector({
+                    ele: ".startTimeRange" + (i),
+                    name: "LeaveTimeDO[" + (i) + "]$startTimeRange",
+                    callback: function (val) {
+                    }
+                })
+
+                timeSelector({
+                    ele: ".endTimeRange" + (i),
+                    name: "LeaveTimeDO[" + (i) + "]$endTimeRange",
+                    callback: function (val) {
+                    }
+                })
+                z.ui.date("[name='LeaveTimeDO[" + i + "]$startTime']").init()
+                z.ui.date("[name='LeaveTimeDO[" + i + "]$endTime']").init()
+                $("#editBtn_" + i).click(function () {
+                    const span = $(this).find("span");
+                    const html = span.html();
+                    if (html === '编辑') {
+                        span.html('保存')
+                        detailWrite(i);
+                        addDataThat.attr('disabled', "true");
+                        $("#qjsj_" + i).removeClass("form-table-disable")
+                        return;
+                    }
+                    if (html === '保存') {
+                        span.html('编辑')
+                        detailReadonly(i, false)
+                        addDataThat.removeAttr('disabled')
+                        $("#qjsj_" + i).addClass("form-table-disable")
+                        return;
+                    }
+                })
+                $("#delBtn_" + i).click(function () {
+                    z.ui.confirm("compid").init({
+                        content: "确定删除吗?",
+                        onConfirm: function () {
+                            var element = document.getElementById("qjsj_" + i);
+                            element.remove();
+                            buildQjsjSeq();
+                            isTimes.splice(i, 1)
+                            whereIsTimes()
+                            addDataThat.removeAttr('disabled')
+                        },
+                        onCancel: function () {
+
+                        }
+                    })
+
+                })
+                let timeObj = {
+                    index: i + 1,
+                    startTime: Date.parse(arrays[i].startTime),
+                    endTime: Date.parse(arrays[i].endTime),
+                }
+                isTimes.push(timeObj)
+                $("#qjsj_" + i).addClass("form-table-disable")
+                if (viewState === 'v' || read === '1') {
+                    detailReadonly(i)
+                }else {
+                    detailReadonly(i,false)
+                }
+            }
+
+            let sTbody = document.querySelectorAll('.qjsjClass')
+            for (let i = 0; i < arrays.length; i++) {
+                let startHHmm = moment(arrays[i].startTime).format('HH:mm')
+                let endHHmm = moment(arrays[i].endTime).format('HH:mm')
+                sTbody[i].children[1].children[0].children[1].children[0].children[0].value = startHHmm
+                sTbody[i].children[2].children[0].children[1].children[0].children[0].value = endHHmm
+                sTbody[i].children[3].children[0].children[0].children[0].value = arrays[i].bz1 || ''
+            }
+
+
+        }
+
+    }
+
+    function updateView() {
+        let tbodyQjsq = document.querySelector('.tbodyQjsq')
+        let html = ''
+        for (let i = 0; i < isTimes.length; i++) {
+            let startDate = moment(isTimes[i].startTime).format('YYYY-MM-DD')
+            let endDate = moment(isTimes[i].endTime).format('YYYY-MM-DD')
+            html += '<tr class="qjsjClass" id="qjsj_' + i + '" style="background:#fff"> <td name="qjsj_seq">' + (i + 1) + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
+                + '<div class="z-comp-date" name="LeaveTimeDO[' + i + ']$startTime">'
+                + '<input type="text" value="' + startDate + '">'
+                + '</div>'
+                + '</div>'
+                + '<div style="width: 50%;margin-left: 5px;" class="dateTimeRange startTimeRange' + (i) + '">'
+                + '</div>'
+                + '<span class="nbsp"> - </span>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
+                + '<div class="z-comp-date" name="LeaveTimeDO[' + i + ']$endTime">'
+                + '<input type="text" value="' + endDate + '">'
+                + '</div>'
+                + '</div>'
+                + '<div style="width: 50%;margin-left: 5px;" class="dateTimeRange endTimeRange' + (i) + '">'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div class="form-item">'
+                + '<div class="z-comp-input" name="LeaveTimeDO[0]$bz1">'
+                + '<input type="text" value="">'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div id="delBtn_' + (i) + '" class="table-btn delBtn_' + (i) + '" data-index="' + (i) + '">'
+                + '<span>删除</span>'
+                + '</div>'
+                + '</td></tr>';
+        }
+        for (let i = 0; i < isTimes.length; i++) {
+            timeSelector({
+                ele: ".startTimeRange" + (i),
+                name: "LeaveTimeDO[" + (i) + "]$startTimeRange",
+                callback: function (val) {
+                }
+            })
+
+            timeSelector({
+                ele: ".endTimeRange" + (i),
+                name: "LeaveTimeDO[" + (i) + "]$endTimeRange",
+                callback: function (val) {
+                }
+            })
+            z.ui.date("[name='LeaveTimeDO[" + i + "]$startTime']").init()
+            z.ui.date("[name='LeaveTimeDO[" + i + "]$endTime']").init()
+            $("#delBtn_" + i).click(function () {
+                z.ui.confirm("compid").init({
+                    content: "确定删除吗?",
+                    onConfirm: function () {
+                        var element = document.getElementById("qjsj_" + i);
+                        element.remove();
+                        buildQjsjSeq();
+                        isTimes.splice(i, 1)
+                        whereIsTimes()
+                    },
+                    onCancel: function () {
+
+                    }
+                })
+
+            })
+            let startDate = moment(isTimes[i].startTime).format('YYYY-MM-DD')
+            let endDate = moment(isTimes[i].endTime).format('YYYY-MM-DD')
+            let obj = {
+                index: i + 1,
+                startTime: startDate,
+                endTime: endDate,
+                startHM: moment(isTimes[i].startTime).format('HH:mm'),
+                endHM: moment(isTimes[i].endTime).format('HH:mm'),
+            }
+            isTimes.push(obj)
+        }
+        tbodyQjsq.innerHTML = html
+    }
+
+    function lactationLeave(times) {
+        //哺乳假时选择起始时间自动赋值截止时间
+        let setEndTime = moment(times).add(1, 'years').format('YYYY-MM-DD');
+        z.ui.laydate("[name='LeaveTimeDO[0]$endTime']").setValue(setEndTime);
+    }
+
+    function qjsjChange(infoList, arraysList) {
+        let lengthNum = 0
+        if (arraysList.length > 0) {
+            lengthNum = infoList.length + arraysList.length
+        } else {
+            lengthNum = infoList.length
+        }
+        let timeObj = {
+            index: "",
+            startTime: "",
+            endTime: '',
+            startHM: "",
+            endHM: "",
+        }
+        timeSelector({
+            ele: ".startTimeRange" + (lengthNum - 1),
+            name: "LeaveTimeDO[" + (lengthNum - 1) + "]$startTimeRange",
+            callback: function (val) {
+                timeObj.startHM = val
+                whereIsTimes()
+            }
+        })
+        timeSelector({
+            ele: ".endTimeRange" + (lengthNum - 1),
+            name: "LeaveTimeDO[" + (lengthNum - 1) + "]$endTimeRange",
+            callback: function (val) {
+                timeObj.endHM = val
+                whereIsTimes()
+            }
+        })
+        for (let i = arraysList.length; i < lengthNum; i++) {
+            timeObj.index = i + 1
+            z.ui.laydate("[name='LeaveTimeDO[" + i + "]$startTime']").init({
+                type: 'date',
+                format: 'yyyy-MM-dd',
+                done: function (value, date, endDate) {
+                    //改变日期后触发
+                    if (attendanceIndex == '81') {
+                        lactationLeave(value)
+                    } else {
+                        timeObj.startTime = value
+                        whereIsTimes()
+                    }
+                }
+            });
+            z.ui.laydate("[name='LeaveTimeDO[" + i + "]$endTime']").init({
+                type: 'date',
+                done: function (value, date, endDate) {
+                    //改变日期后触发
+                    timeObj.endTime = value
+                    whereIsTimes()
+                }
+            });
+
+
+            isTimes.push(timeObj)
+        }
+    }
+
+    function whereIsTimes() {
+        let leaveTimeList = new Array()
+        let timesCopy = JSON.parse(JSON.stringify(isTimes))
+        timesCopy.forEach(timeObj => {
+            let mealName = new Object();
+            mealName.startTime = timeObj.startTime
+            mealName.endTime = timeObj.endTime
+            z.ui.form.childStringify(mealName)
+            leaveTimeList.push(mealName);
+        })
+        z.ui.ajax({
+            type: "post",
+            url: "/Leave/getLeaveDays",
+            data: JSON.stringify(leaveTimeList),
+            contentType: "application/json",
+            success: function (res) {
+                console.log(res)
+                let totalMin = res.data;
+                let totalHours = totalMin / 60;
+                let totalDays = Math.floor(totalHours/7.5);
+                let subHours = totalHours%7.5;
+                let leaveDaysText = '';
+                if(totalDays>0){
+                    leaveDaysText += totalDays + '天'
+                }
+                if(subHours>0){
+                    leaveDaysText += subHours + '小时'
+                }
+                $("[name='createReqVO$leaveHours']").val(totalHours);
+                z.ui.input("[name='createReqVO$leaveDays']").setValue(leaveDaysText);
+            },
+            error: function () {
+                z.ui.alertWarning("计算请假天数,请联系管理员!")
+            }
+        })
+    }
+
+    function buildQjsjSeq() {
+        let elementsByName = document.getElementsByName("qjsj_seq");
+        for (let i = 0; i < elementsByName.length; i++) {
+            const seqElement = elementsByName[i];
+            seqElement.innerHTML = i + 1;
+        }
+    }
+
+
+    //注册业务保存事件
+    function bindEvents() {
+        z.workflow.saveBtn.addListener("onSaveClick", saveForm);
+    }
+
+    /*
+  * all 工作流js传递到业务的参数 success执行的方法
+  * istransfer 工作流js传递到业务的参数 是否转件
+  * */
+    function saveForm(all, istransfer) {
+        var postData = z.ui.form.getFormFields($("[name=createReqVO]"));
+        if (postData === false) {
+            all({ success: false });
+            return;
+        }
+        var leaveTimeCreateList = new Array()
+        for (let key of Object.keys(postData)) {
+            let mealName = postData[key];
+            if (key.startsWith("LeaveTimeDO")) {
+                mealName.startTime = Date.parse(mealName.startTime + " " + mealName.startTimeRange);
+                mealName.endTime = Date.parse(mealName.endTime + " " + mealName.endTimeRange);
+                leaveTimeCreateList.push(z.ui.form.childStringify(mealName));
+            }
+        }
+        postData.createReqVO.leaveTimeCreateList = leaveTimeCreateList;
+        z.ui.ajax({
+            type: "post",
+            url: "/Leave/update",
+            data: JSON.stringify(postData.createReqVO),
+            contentType: "application/json",
+            success: function () {
+                all({success: true});
+            },
+            error: function () {
+                all({success: false});
+            }
+        })
+    }
+
+    function generateTableTrHtml(index) {
+        var trDom = document.createElement("tr");
+        trDom.style.backgroundColor = "#fff";
+        trDom.style.height = "63px";
+        trDom.id = "qjsj_" + index;
+        trDom.className = 'qjsjClass'
+        trDom.innerHTML = '<td name="qjsj_seq">' + (index + 1) + '</td>'
+            + '<td>'
+            + '<div class="form-flex">'
+            + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
+            + '<div class="z-comp-laydate" name="LeaveTimeDO[' + index + ']$startTime">'
+            + '<input type="text" value="">'
+            + '</div>'
+            + '</div>'
+            + '<div style="width: 50%;margin-left: 5px;" class="dateTimeRange startTimeRange' + (index) + '">'
+            + '</div>'
+            + '<span class="nbsp"> - </span>'
+            + '</div>'
+            + '</td>'
+            + '<td>'
+            + '<div class="form-flex">'
+            + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
+            + '<div class="z-comp-laydate" name="LeaveTimeDO[' + index + ']$endTime">'
+            + '<input type="text" value="">'
+            + '</div>'
+            + '</div>'
+            + '<div style="width: 50%;margin-left: 5px;" class="dateTimeRange endTimeRange' + (index) + '">'
+            + '</div>'
+            + '</div>'
+            + '</td>'
+            + '<td>'
+            + '<div class="form-item">'
+            + '<div class="z-comp-input" name="LeaveTimeDO[0]$bz1">'
+            + '<input type="text" value="">'
+            + '</div>'
+            + '</div>'
+            + '</td>'
+            + '<td>'
+            + '<div id="editBtn_' + (index) + '" class="table-btn editBtn_' + (index) + '" data-index="' + (index) + '">'
+            + '<span>保存</span>'
+            + '</div>'
+            + '<div id="delBtn_' + (index) + '" class="table-btn delBtn_' + (index) + '" data-index="' + (index) + '">'
+            + '<span>删除</span>'
+            + '</div>'
+            + '</td>';
+        return trDom;
+    }
+
+    function detailReadonly(i, isBool = true) {
+        if (isBool) {
+            $("#delBtn_" + i).css("display", "none");
+            $("#editBtn_" + i).css("display", "none");
+        }
+        let detailElement = document.getElementById("qjsj_" + i);
+        let detailInput = detailElement.getElementsByTagName("input");
+        for (let j = 0; j < detailInput.length; j++) {
+            detailInput[j].disabled = true;
+            detailInput[j].className += "z-readonly"
+        }
+    }
+
+
+    function detailWrite(i) {
+        let detailElement = document.getElementById("qjsj_" + i);
+        let detailInput = detailElement.getElementsByTagName("input");
+        for (let j = 0; j < detailInput.length; j++) {
+            detailInput[j].disabled = false;
+            $(detailInput[j]).removeClass("z-readonly")
+        }
+    }
+}());
+

+ 110 - 0
zjugis-business/src/main/resources/templates/Leave/mobileIndex.ftl

@@ -0,0 +1,110 @@
+<@wm.workFlowMobile javascripts=['/Leave/js/mobileIndex.js','/js/moment.js','/Leave/js/leaveTimeAuth.js']>
+    <style>
+        /**flowMobileCSS样式文件容器**/
+        .flowMobile {
+            overflow: hidden;
+            overflow-x: hidden;
+            overflow-y: auto;
+            height: 100%;
+        }
+    </style>
+    <div class="flowMobile">
+        <div class="z-comp-tab" name="tab">
+            <ul class="z-tab-bar">
+                <li z-tabindex="0" class="on"><a>基础信息</a></li>
+                <li z-tabindex="1" class=""><a>审批意见</a></li>
+            </ul>
+            <div class="z-tab-scroll">
+                <div class="z-tab-content on">
+                    <div class="z-form-wrap" name="mobileForm">
+                        <div class="z-form-row" style="display: none;">
+                            <input type="text" value="${formEntity.instanceId!}" name="createReqVO$instanceId">
+                            <input type="text" value="${formEntity.id!}" name="createReqVO$id">
+                            <input type="text" value="${formEntity.leaveHours!}" name="createReqVO$leaveHours">
+                            <input type="text" value='${timeObject!}' id="timeObject">
+                        </div>
+                        <div class="z-form-row">
+                            <div class="z-form-label z-col-30">请假人</div>
+                            <div class="z-form-control z-col-70">
+                                <div class="z-comp-input z-readonly" name="createReqVO$userNickname">
+                                    <input type="text" value="${formEntity.userNickname!}">
+                                </div>
+                            </div>
+                        </div>
+                        <div class="z-form-row">
+                            <div class="z-form-label z-col-30">所在部门</div>
+                            <div class="z-form-control z-col-70">
+                                <div class="z-comp-input z-readonly" name="createReqVO$deptName">
+                                    <input type="text" value="${formEntity.deptName!}">
+                                </div>
+                            </div>
+                        </div>
+                        <div class="z-form-row">
+                            <div class="z-form-label z-col-30">申请时间</div>
+                            <div class="z-form-control z-col-70 z-form-table">
+                                <div class="z-comp-date z-readonly" name="createReqVO$createTime">
+                                    <input type="text" value="${(formEntity.createTime?date)!}">
+                                </div>
+                            </div>
+                        </div>
+                        <div class="z-form-row">
+                            <div class="z-form-label z-col-30">请假单号</div>
+                            <div class="z-form-control z-col-70">
+                                <div class="z-comp-input" name="createReqVO$leaveNo">
+                                    <input type="text" value="${formEntity.leaveNo!}">
+                                </div>
+                            </div>
+                        </div>
+                        <div class="z-form-row">
+                            <div class="z-form-label z-col-30">休假类型</div>
+                            <div class="z-form-control z-col-70">
+                                <div class="z-comp-select" name="createReqVO$leaveType"
+                                     data='${leaveTypeJSON!}' value="${formEntity.leaveType!}">
+                                    <div class="z-inputselect-bar">
+                                        <span></span><i></i>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="z-form-row">
+                            <div class="z-form-label z-col-30">休假天数</div>
+                            <div class="z-form-control z-col-70">
+                                <div class="z-comp-input z-readonly" name="createReqVO$leaveDays">
+                                    <input type="text" value="${formEntity.leaveDays!}">
+                                </div>
+                            </div>
+                        </div>
+                        <div class="z-form-row attendance-type-show" style="display: none">
+                            <div class="z-form-label z-col-30">考勤类型</div>
+                            <div class="z-form-control z-col-70">
+                                <div class="z-comp-radio" name="demoForm2$field4">
+                                    <div class="z-radio-item checked" value="0"><i></i>上班晚一小时</div>
+                                    <div class="z-radio-item" value="1"><i></i>下班早一小时</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="z-form-row">
+                            <div class="z-form-label z-col-30">请假原因</div>
+                            <div class="z-form-control z-col-70">
+                                <div class="z-comp-textarea" name="createReqVO$leaveReason">
+                                    <textarea>${formEntity.leaveReason!}</textarea>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="z-tab-content">
+                    <!--审批意见模板-->
+                    <#if WORKFLOW.OPINION??>
+                        ${WORKFLOW.OPINION!}
+                    </#if>
+                </div>
+            </div>
+        </div>
+    </div>
+    <script>
+        window.userConfig = {
+            url: '${url!}'
+        }
+    </script>
+</@wm.workFlowMobile>

+ 1 - 0
zjugis-workflow/src/main/resources/static/all.mobile.css

@@ -2780,6 +2780,7 @@ line-height:71px
 .z-comp-laydate,
 .z-comp-time,
 .z-comp-timenosecond{
+width:100%;
 position:relative;
 border:solid 1px #cbd1d6;
 border-radius:4px;