VerifyLeaveInfo.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <template>
  2. <div>
  3. <common @asynCallBack="asynCallBack"></common>
  4. <top-header :pageTitle="pageTitle"></top-header>
  5. <div class="mui-content vongi-qingjiadt">
  6. <div v-if="detail.picUrl" class="vongi-qingjiadt-head flew-sp">
  7. <div class="flew-items">
  8. <div class="flew"><img :src="detail.picUrl" width="50" /></div>
  9. <h4 v-text="detail.name+' 申请请假 '+detail.leaveTypeN"></h4>
  10. </div>
  11. <button class="mui-btn mui-btn-outlined" :class="statusColor[detail.status]" v-text="status[detail.status]">已批准</button>
  12. <!-- <div class="examine-refuse">已拒绝</div> -->
  13. </div>
  14. <form class="mui-input-group">
  15. <!--<div class="mui-input-row">-->
  16. <!--<label>身份证号</label>-->
  17. <!--<span v-text="detail.idCard">420400200002020101</span>-->
  18. <!--</div>-->
  19. <div class="mui-input-row" v-if="detail.jobNumber">
  20. <label>工号</label>
  21. <span v-text="detail.jobNumber">0201022121001</span>
  22. </div>
  23. <div class="mui-input-row" v-if="detail.department">
  24. <label>部门</label>
  25. <span v-text="detail.department">信息工程中心</span>
  26. </div>
  27. <div class="mui-input-row">
  28. <label>请假时间</label>
  29. <span v-if="detail.startTime==detail.endTime&&detail.startTimeQuantum=='0'&&detail.endTimeQuantum=='1'">自{{detail.startTime}}</span>
  30. <span v-else-if="detail.startTime==detail.endTime">自{{detail.startTime}}{{(detail.startTimeQuantum!=''?(detail.startTimeQuantum=='1'?'下午':'上午'):'')}}</span>
  31. <span v-else >自{{detail.startTime}}{{(detail.startTimeQuantum!=''?(detail.startTimeQuantum=='1'?'下午':'上午'):'')}}
  32. <br />至{{detail.endTime}}{{(detail.endTimeQuantum!=''?(detail.endTimeQuantum=='1'?'下午':'上午'):'')}}</span>
  33. </div>
  34. <div class="mui-input-row">
  35. <label>请假时长</label>
  36. <span v-text="daytime"></span>
  37. </div>
  38. <div class="mui-input-row">
  39. <label>请假事由</label>
  40. <span v-text="detail.reason">家中有事,需要会老家一趟家中有事,需要会老家一趟家中有事,需要会老家一趟家中有事,需要会老家一趟。</span>
  41. </div>
  42. <div class="mui-input-row">
  43. <label>上传图片</label>
  44. <span class="vongi-qingjiadt-photo">
  45. <template v-for="(item,index) in picList">
  46. <img :src="item" v-viewer />
  47. </template>
  48. </span>
  49. </div>
  50. <div class="mui-input-row">
  51. <label>申请时间</label>
  52. <span v-text="detail.createTime">2020-04-27 12:00:00</span>
  53. </div>
  54. </form>
  55. <div v-if="detail.status==0" class="fyy-scon-botton">
  56. <div class="examine-btn examine-btn1" @click="openFrom('2','拒绝')">拒绝</div>
  57. <div class="examine-btn examine-btn2" @click="openFrom('1','同意')">通过</div>
  58. </div>
  59. <div v-if="detail.status>0">
  60. <div class="mui-content-padded">
  61. <h5>审核记录</h5>
  62. </div>
  63. <form class="mui-input-group">
  64. <div class="mui-input-row">
  65. <label>审批人</label>
  66. <span>{{detail.approvedName}}</span>
  67. </div>
  68. <div class="mui-input-row">
  69. <label>审核意见</label>
  70. <span>{{detail.approvalExplain}}</span>
  71. </div>
  72. <div class="mui-input-row">
  73. <label>审核时间</label>
  74. <span>{{detail.approvedTime}}</span>
  75. </div>
  76. </form>
  77. </div>
  78. </div>
  79. <!-- 审批弹窗 -->
  80. <div v-show="openFromVisible" @click="openFromVisible=false" class="mui-backdrop mui-active"></div>
  81. <div v-show="openFromVisible" class="mui-card fyy-popup">
  82. <div class="mui-card-header mui-h3">审批意见</div>
  83. <div class="mui-card-content">
  84. <div class="mui-input-row">
  85. <textarea v-model="subForm.approvalExplain" rows="5" placeholder="请输入"></textarea>
  86. </div>
  87. </div>
  88. <div class="vongi-btn">
  89. <button class="mui-btn mui-btn-primary" @click="doAction">提交</button>
  90. </div>
  91. </div>
  92. <loading :visible="isLoading"></loading>
  93. </div>
  94. </template>
  95. <script>
  96. import * as API_Leave from '@/apis/Master/leave'
  97. import Common from '$project/components/Common.vue'
  98. import Loading from '$project/components/Loading.vue'
  99. import TopHeader from '$project/components/TopHeader.vue'
  100. import isReachBottom from '$project/utils/isReachBottom'
  101. import {
  102. daysDistance
  103. } from '$project/utils'
  104. import {
  105. mapGetters,
  106. mapMutations
  107. } from 'vuex'
  108. export default {
  109. name: 'MasterAttendanceLeaveInfo',
  110. components: {
  111. Common,
  112. Loading,
  113. TopHeader
  114. },
  115. data() {
  116. return {
  117. pageTitle: '请假详情',
  118. daytime:'',
  119. isLoading: false,
  120. id: this.$route.query.id,
  121. detail: {},
  122. status: ['待审核', '已批准', '已拒绝'],
  123. statusColor: ['', 'mui-btn-success', 'mui-btn-danger'],
  124. selectIndex: [],
  125. //审批内容弹窗显示
  126. openFromVisible: false,
  127. subForm: {
  128. id: 0,
  129. status: 0,
  130. approvalExplain: '', //说明
  131. },
  132. }
  133. },
  134. created() {
  135. },
  136. methods: {
  137. //info
  138. getDetail() {
  139. this.isLoading = true;
  140. API_Leave.detail({
  141. id: this.id
  142. }).then(response => {
  143. this.detail = response;
  144. var startTime=this.detail.startTime.replace('年','-').replace('月','-').replace('日','');
  145. var endTime=this.detail.endTime.replace('年','-').replace('月','-').replace('日','');
  146. var i= daysDistance(startTime,endTime);
  147. var day=i+(this.detail.endTimeQuantum-this.detail.startTimeQuantum)*0.5+0.5
  148. this.daytime=day+'天';
  149. this.isLoading = false;
  150. }).catch(error => {
  151. this.isLoading = false;
  152. mui.toast(error);
  153. })
  154. },
  155. //显示内容表单
  156. openFrom(status, val) {
  157. this.selectIndex = [this.id];
  158. if (!this.selectIndex.length) {
  159. mui.toast('请选择要处理的信息');
  160. } else {
  161. this.subForm.status = status;
  162. this.subForm.approvalExplain = val;
  163. //this.openFromVisible = true;
  164. //直接点击处理,不需要弹窗理由框
  165. this.doAction();
  166. }
  167. },
  168. //同意拒绝
  169. doAction() {
  170. console.log(this.selectIndex)
  171. if (this.checkForm()) {
  172. this.isLoading = true;
  173. this.subForm.id = this.selectIndex.toString();
  174. API_Leave.approved(this.subForm).then(response => {
  175. this.isLoading = false;
  176. this.openFromVisible = false;
  177. this.getDetail();
  178. }).catch(error => {
  179. this.isLoading = false;
  180. mui.toast(error);
  181. })
  182. }
  183. },
  184. //检测表单
  185. checkForm() {
  186. if (!this.subForm.approvalExplain) {
  187. mui.toast('请填写审核意见');
  188. return false;
  189. } else {
  190. return true;
  191. }
  192. },
  193. asynCallBack() {
  194. },
  195. },
  196. mounted() {
  197. this.getDetail();
  198. },
  199. destroyed() {},
  200. computed: {
  201. picList: {
  202. // getter
  203. get: function() {
  204. if (this.detail && this.detail.imageUrl) {
  205. return this.detail.imageUrl.split(',');
  206. } else {
  207. return [];
  208. }
  209. },
  210. // setter
  211. set: function(newValue) {
  212. console.log(newValue)
  213. }
  214. },
  215. ...mapGetters({
  216. openId: 'wx_openid',
  217. token: 'token',
  218. })
  219. },
  220. }
  221. </script>
  222. <style scoped src="$project/assets/css/xpwyfyy.css"></style>
  223. <style>
  224. </style>