|
@@ -1,22 +1,22 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <header class="mui-bar mui-bar-nav">
|
|
|
- <h1 class="mui-title">请假</h1>
|
|
|
- <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
|
|
|
- </header>
|
|
|
- <div class="mui-content vongi-wordcard">
|
|
|
+
|
|
|
+ <common @asynCallBack="asynCallBack"></common>
|
|
|
+ <top-header :pageTitle="pageTitle" ></top-header>
|
|
|
+
|
|
|
+ <div class="mui-content vongi-wordcard">
|
|
|
<div class="mui-content-padded">
|
|
|
<form class="mui-input-group">
|
|
|
<div class="mui-input-row">
|
|
|
<label><span class="colorfe616c">*</span>请假类型</label>
|
|
|
- <div class="mui-navigate-right">
|
|
|
- <button id='showUserPicker' class="mui-btn mui-btn-block" type='button'>请选择</button>
|
|
|
+ <div class="mui-navigate-right" @click="selectType">
|
|
|
+ <button class="mui-btn mui-btn-block" type='button' v-text="typeName">请选择</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="mui-input-row">
|
|
|
<label><span class="colorfe616c">*</span>审批人</label>
|
|
|
- <div class="mui-navigate-right">
|
|
|
- <button id='showUserPicker' class="mui-btn mui-btn-block" type='button'>请选择</button>
|
|
|
+ <div class="mui-navigate-right" @click="selectPerson">
|
|
|
+ <button id='' class="mui-btn mui-btn-block" type='button' v-text="approvalPersonName">请选择</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</form>
|
|
@@ -25,14 +25,14 @@
|
|
|
<form class="mui-input-group">
|
|
|
<div class="mui-input-row">
|
|
|
<label><span class="colorfe616c">*</span>开始日期</label>
|
|
|
- <div class="mui-navigate-right">
|
|
|
- <button class="mui-btn mui-btn-block" type='button'>2020-04-28 08:00</button>
|
|
|
+ <div class="mui-navigate-right" @click="selectStartTime()">
|
|
|
+ <button class="mui-btn mui-btn-block" type='button' v-text="tjForm.startTime">请选择</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="mui-input-row">
|
|
|
<label><span class="colorfe616c">*</span>结束日期</label>
|
|
|
- <div class="mui-navigate-right">
|
|
|
- <button class="mui-btn mui-btn-block" type='button'>请选择</button>
|
|
|
+ <div class="mui-navigate-right" @click="selectEndTime()">
|
|
|
+ <button class="mui-btn mui-btn-block" type='button' v-text="tjForm.endTime">请选择</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</form>
|
|
@@ -40,24 +40,25 @@
|
|
|
<div class="mui-content-padded">
|
|
|
<h5><span class="colorfe616c">*</span>请假事由</h5>
|
|
|
<div class="mui-input-row">
|
|
|
- <textarea id="textarea" rows="5" placeholder="请输入"></textarea>
|
|
|
+ <textarea id="textarea" rows="5" v-model="tjForm.reason" placeholder="请输入"></textarea>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
<div class="mui-content-padded">
|
|
|
<h5>上传照片</h5>
|
|
|
<div class="fyy-upphoto">
|
|
|
- <div class="mui-col-xs-3 fyy-upphoto-close">
|
|
|
- <img src="~$project/assets/img/zhaop.jpg" />
|
|
|
- <a class="mui-icon mui-icon-closeempty"></a>
|
|
|
+ <div class="mui-col-xs-3" v-for="(item,index) in picList">
|
|
|
+ <img :src="item" />
|
|
|
</div>
|
|
|
- <div class="mui-col-xs-3">
|
|
|
+ <div class="mui-col-xs-3" @click="chooseImage">
|
|
|
<a><span class="mui-icon mui-icon-plusempty"></span></a>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
<div class="mui-content-padded mui-h6">注:1、病假须上传医院证明。2、请假事由中须写明请假去向。</div>
|
|
|
<div class="vongi-btn">
|
|
|
- <button class="mui-btn mui-btn-primary " type="submit">
|
|
|
+ <button class="mui-btn mui-btn-primary " type="submit" @click="submit()">
|
|
|
提交
|
|
|
</button>
|
|
|
</div>
|
|
@@ -65,9 +66,233 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
+
|
|
|
<script>
|
|
|
+ require('$project/assets/js/mui.picker.min.js');
|
|
|
+ import * as API_Leave from '@/apis/Master/leave'
|
|
|
+ import Common from '$project/components/Common.vue'
|
|
|
+ import Loading from '$project/components/Loading.vue'
|
|
|
+ import TopHeader from '$project/components/TopHeader.vue'
|
|
|
+ import {
|
|
|
+ mapGetters,
|
|
|
+ mapMutations
|
|
|
+ } from 'vuex'
|
|
|
+ import * as WxJsApi from '$project/utils/wxJsApi'
|
|
|
+ export default {
|
|
|
+ name: 'MasterAttendanceLeaveForm',
|
|
|
+ components: {
|
|
|
+ Common,
|
|
|
+ Loading,
|
|
|
+ TopHeader
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ pageTitle: '请假',
|
|
|
+
|
|
|
+ isLoading: false,
|
|
|
+ leaveTypeList:[],
|
|
|
+ approvedList:[],
|
|
|
+ typeName: '请选择',
|
|
|
+ approvalPersonName: '请选择',
|
|
|
+ tjForm: {
|
|
|
+ startTime: '请选择',
|
|
|
+ endTime: '请选择',
|
|
|
+ leaveType: '',
|
|
|
+
|
|
|
+ imageUrl: '',
|
|
|
+ reason: '',
|
|
|
+ personId: '',
|
|
|
+
|
|
|
+ approvedId: '',
|
|
|
+ remark: '',
|
|
|
+
|
|
|
+ },
|
|
|
+ picList: [],
|
|
|
+
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ //审批类型
|
|
|
+ getLeaveTypeList() {
|
|
|
+ API_Leave.leaveTypeList().then(response => {
|
|
|
+
|
|
|
+ for(var i in response){
|
|
|
+ var mod=response[i]
|
|
|
+ mod.text=mod.name
|
|
|
+ this.leaveTypeList.push(mod)
|
|
|
+ }
|
|
|
+ }).catch(error => {
|
|
|
+ mui.toast(error);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //获取审核人列表
|
|
|
+ getPsersonList() {
|
|
|
+ this.isLoading = true;
|
|
|
+ API_Leave.approvedList().then(response => {
|
|
|
+
|
|
|
+ for(var i in response){
|
|
|
+ var mod=response[i]
|
|
|
+ mod.text=mod.name
|
|
|
+ mod.value=mod.id;
|
|
|
+
|
|
|
+ this.approvedList.push(mod)
|
|
|
+ }
|
|
|
+
|
|
|
+ this.isLoading = false;
|
|
|
+ }).catch(error => {
|
|
|
+ this.isLoading = false;
|
|
|
+ mui.toast(error);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //微信选择图片
|
|
|
+ chooseImage() {
|
|
|
+ WxJsApi.chooseImage().then(res => {
|
|
|
+ var localData = res.localData;
|
|
|
+
|
|
|
+ if (localData.indexOf('data:image') != 0) {
|
|
|
+ //判断是否有这样的头部
|
|
|
+ localData = 'data:image/jpeg;base64,' + localData
|
|
|
+ }
|
|
|
+ localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')
|
|
|
+ this.imgBase64 = localData;
|
|
|
+ //显示裁剪图片
|
|
|
+ //_this.showCropper(field);
|
|
|
+ this.uploadpic();
|
|
|
+ }).catch(error => {
|
|
|
+ mui.toast(error);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //上传图片
|
|
|
+ uploadpic() {
|
|
|
+ this.isLoading = true;
|
|
|
+ WxJsApi.uploadPic(this.imgBase64).then(response => {
|
|
|
+ this.isLoading = false;
|
|
|
+
|
|
|
+ this.picList.push(response);
|
|
|
+ }).catch(error => {
|
|
|
+ this.isLoading = false;
|
|
|
+ mui.toast(error);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //选择审核人
|
|
|
+ selectPerson() {
|
|
|
+ var _this = this;
|
|
|
+ var picker = new mui.PopPicker();
|
|
|
+
|
|
|
+ picker.setData(_this.approvedList);
|
|
|
+ picker.show(function(selectItems) {
|
|
|
+ _this.tjForm.approvedId = selectItems[0].value;
|
|
|
+ _this.approvalPersonName = selectItems[0].text;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //选择时间
|
|
|
+ selectStartTime() {
|
|
|
+ var _this = this;
|
|
|
+ var startTime= _this.tjForm.startTime=='请选择'? new Date():_this.tjForm.startTime;
|
|
|
+
|
|
|
+ var picker = new mui.DtPicker({
|
|
|
+ "type": "date",
|
|
|
+ "beginYear": 2020,
|
|
|
+ "endYear": 2040,
|
|
|
+ });
|
|
|
+ picker.show(function(rs) {
|
|
|
+ _this.tjForm.startTime = rs.text;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //选择时间
|
|
|
+ selectEndTime() {
|
|
|
+ var _this = this;
|
|
|
+ var picker = new mui.DtPicker({
|
|
|
+ "type": "date",
|
|
|
+ "beginYear": 2020,
|
|
|
+ "endYear": 2040,
|
|
|
+ "beginDate": _this.tjForm.startTime,
|
|
|
+ });
|
|
|
+ picker.show(function(rs) {
|
|
|
+ _this.tjForm.endTime = rs.text;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //类型选择
|
|
|
+ selectType() {
|
|
|
+ var picker = new mui.PopPicker();
|
|
|
+
|
|
|
+ picker.setData(this.leaveTypeList);
|
|
|
+ var _this = this;
|
|
|
+ picker.show(function(selectItems) {
|
|
|
+ _this.tjForm.leaveType = selectItems[0].value;
|
|
|
+ _this.typeName = selectItems[0].text;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //表单检测
|
|
|
+ checkFrom() {
|
|
|
+ if (!this.tjForm.leaveType) {
|
|
|
+ mui.toast('请选择请假类型');
|
|
|
+ return false;
|
|
|
+ } else if (!this.tjForm.approvedId) {
|
|
|
+ mui.toast('请选择审批人');
|
|
|
+ return false;
|
|
|
+ } else if (!this.tjForm.startTime) {
|
|
|
+ mui.toast('请选择开始日期');
|
|
|
+ return false;
|
|
|
+ }else if (!this.tjForm.endTime) {
|
|
|
+ mui.toast('请选择结束日期');
|
|
|
+ return false;
|
|
|
+ }else if (!this.tjForm.reason) {
|
|
|
+ mui.toast('请输入请假理由');
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ },
|
|
|
+ //提交
|
|
|
+ submit() {
|
|
|
+ if (this.checkFrom()) {
|
|
|
+ this.tjForm.imageUrl = this.picList.join(',');
|
|
|
+ this.isLoading = true;
|
|
|
+ API_Leave.save(this.tjForm).then(response => {
|
|
|
+ this.isLoading = false;
|
|
|
+ mui.toast("提交成功!");
|
|
|
+ this.$router.push({
|
|
|
+ name: 'MasterAttendanceLeaveList',
|
|
|
+ query: {}
|
|
|
+ })
|
|
|
+ }).catch(error => {
|
|
|
+ this.isLoading = false;
|
|
|
+ mui.toast(error);
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ asynCallBack() {
|
|
|
+
|
|
|
+ },
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ //获取微信配置
|
|
|
+ WxJsApi.getWxConfig();
|
|
|
+
|
|
|
+ this.getLeaveTypeList();
|
|
|
+
|
|
|
+ this.getPsersonList();
|
|
|
+ },
|
|
|
+ destroyed() {},
|
|
|
+ computed: {
|
|
|
+
|
|
|
+ ...mapGetters({
|
|
|
+ openId: 'wx_openid',
|
|
|
+ token: 'token',
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
</script>
|
|
|
|
|
|
<style scoped src="$project/assets/css/xpwyfyy.css"></style>
|
|
|
+<style src="$project/assets/css/iconfont.css"></style>
|
|
|
+<style src="$project/assets/css/mui.picker.min.css"></style>
|
|
|
+
|
|
|
<style>
|
|
|
</style>
|