出差变更单_备份.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. _this.pageinit = function () {
  2. var that = _this
  3. newPageInit(that)
  4. }
  5. // 在页面初始化加载之后
  6. mbos('page').bind('afterLoad', function () {
  7. _this.path = mbos.pageInfo.path// 轻应用的路径编码 例如 trip880
  8. _this.detailPageCode = mbos.pageInfo.name.replace('Add', 'View') // 详情页面的编码 (个别页面可特殊处理直接写入) 例如 tripView.editui
  9. _this.operateState = mbos.getRequestParams().operateState // 'ADDNEW' 'EDIT' 'VIEW'
  10. // 初始化审批流
  11. // mbos('nextperson1').checkParticipantPerson({
  12. // "callback": function () { }
  13. // });
  14. // 单据说明
  15. mbos('description').bind('click', function () {
  16. handleClickDesc()
  17. })
  18. })
  19. mbos('entries').bind('afterRendered', function (e) {
  20. // mbos('oldBill', e.index).value(localeResource.view) // 查看原单 点击查看按钮
  21. multiLangField(e.index)// 兼容多语言字段回显的问题
  22. viewOldBill(e.index) // 给查看添加点击事件
  23. // 初始化审批流
  24. _this.getNextPerson();
  25. getOldEntry(e)
  26. })
  27. // 初始化审批流
  28. _this.getNextPerson = function(){
  29. var entries = setModel('getNextPerson');
  30. var data = JSON.parse(JSON.stringify(mbos('entity').value()));
  31. data.entries = JSON.parse(JSON.stringify(entries));
  32. var date = mbos.getRequestParams().date || new Date()
  33. var today = moment(date).format('YYYY-MM-DD')
  34. var beginTime = today + ' 00:00';
  35. var endTime = today + ' 23:59';
  36. mbos.eas.invokeScript({
  37. name: "getHROrgUnit",
  38. param: [{'beginTime': beginTime, 'endTime':endTime}],
  39. success: function (res) {
  40. console.log(res)
  41. if(res.hrOrgUnitId){
  42. data.hrOrgUnit = res.hrOrgUnitId
  43. }
  44. mbos('nextperson1').checkParticipantPerson({
  45. 'editdata': data,
  46. "callback": function () { }
  47. });
  48. }
  49. })
  50. }
  51. function viewOldBill(index){
  52. $("#oldBill_" + index).bind('click', function () {
  53. if (mbos('entries.tripBill', index).value() && mbos('entries.tripBill', index).value().id) {
  54. openPage('trip880', 'tripView.editui', {
  55. billID: mbos('entries.tripBill', index).value().id, // 出差单id
  56. entryId: mbos('entries_tripEntryBill', index).value().id, // 聚焦在对应的分录明细上
  57. billType: 'tripBill' // 出差单的name,取自天天勤。作用是过滤分录,不显示非自己的单据明细
  58. })
  59. }
  60. })
  61. }
  62. function getOldEntry(e) {
  63. var index = e.index
  64. if (mbos.getRequestParams().oldEntry) {
  65. var oldEntry = JSON.parse(mbos.getRequestParams().oldEntry)
  66. if (oldEntry) {
  67. console.log('oldEntry', oldEntry)
  68. mbos('entries_tripEntryBill', index).value({id:oldEntry.id}) // 分录id
  69. mbos('entries_isAllDay', index).value(oldEntry.entries.isAllDay == '是' ? 'true':'false') // TODO 是中文值
  70. setTimeout(function(){
  71. mbos('entries_realTripDays', index).attr('accuracy', _this.decimal) // 设置小数点后位数
  72. mbos('entries_realTripDays', index).value(oldEntry.entries.tripDays)
  73. }, 500)
  74. mbos('entries_realStartTime', index).value(oldEntry.entries.tripStartTime)
  75. mbos('entries_realEndTime', index).value(oldEntry.entries.tripEndTime)
  76. // 回显弹性算时长
  77. mbos.http.ajax({ // 是否弹性算时长
  78. 'url': `/mbos/data/getObjectValue?id=${mbos('entries_tripEntryBill', index).value().id}&fields=isElasticCalLen`,
  79. success: function (data) {
  80. mbos('entries_isElasticCalLen', index).value(data.isElasticCalLen) // 原出差单单据id
  81. mbos('entries_isElasticCalLen', index).show() // 原出差单单据id
  82. }
  83. });
  84. }
  85. }
  86. if (oldEntry && oldEntry.bill) {
  87. mbos('entries.tripBill', index).value(oldEntry.bill) // 原出差单单据id
  88. } else { // 通过分录id获取原出差单据的id
  89. mbos.http.ajax({
  90. 'url': `/mbos/data/getObjectValue?id=${mbos('entries_tripEntryBill', index).value().id}&fields=bill.id`,
  91. success: function (data) {
  92. mbos('entries_tripBill', index).value(data.bill) // 原出差单单据id
  93. }
  94. });
  95. }
  96. }
  97. // 保存按钮
  98. _this.save = function (event) {
  99. setModel()
  100. baseInterface('save', toView) // 调用保存接口
  101. }
  102. // 提交按钮
  103. _this.submit = function (event) {
  104. // 确认提交 弹框
  105. mbos.ui.showConfirm({
  106. title: localeResource.confirmSubmit,
  107. iconclass: "kdfont kdfont-zhuangtai_jingshi the_info",
  108. callback: function (data) {
  109. if (data == 0) {
  110. setModel()
  111. baseInterface('submit', toView) // 调用提交接口
  112. }
  113. }
  114. });
  115. }
  116. // 点击“保存、提交” 跳转页面
  117. function toView(res) {
  118. // 提交接口 返回的res.data为数组,取第一条数据
  119. if (res.data.keyValue || (res.data.length > 0 && res.data[0].keyValue)) {
  120. // 操作成功 提示弹框
  121. mbos.ui.showInfo({
  122. title: localeResource.succeed,
  123. iconclass: "kdfont kdfont-zhuangtai_wancheng the_success",
  124. callback: function () {
  125. openPage(_this.path, _this.detailPageCode, { billID: res.data.keyValue || res.data[0].keyValue })
  126. }
  127. });
  128. } else {
  129. mbos.msgBox.showMessage('billID获取失败!');
  130. }
  131. }
  132. // 给隐藏的model赋值
  133. function setModel(method) {
  134. if (typeof _this.operateState != "undefined" && (_this.operateState === "ADDNEW" || _this.operateState === "EDIT")) {
  135. var entries = mbos('entity').data.entries
  136. entries.map(function (entry) {
  137. entry.person = easContext.person
  138. entry.position = easContext.position
  139. entry.adminOrgUnit = easContext.position.adminOrgUnit
  140. getEntries(entry,method) // 各单据处理分录数据
  141. })
  142. return entries;
  143. }
  144. }
  145. // 各单据处理分录数据的函数
  146. function getEntries(entry,method) {
  147. // entry.tripBill = _this.tripBillId // 原出差单id
  148. if(method == 'getNextPerson'){
  149. // entry.position = easContext.position.id;
  150. // entry.adminOrgUnit = easContext.position.adminOrgUnit.id;
  151. if(entry.realStartTime){
  152. entry.realStartTime = moment(entry.realStartTime).format('YYYY-MM-DD HH:mm:ss');
  153. }
  154. if(entry.realEndTime){
  155. entry.realEndTime = moment(entry.realEndTime).format('YYYY-MM-DD HH:mm:ss');
  156. }
  157. }else{
  158. // delete entry.position;
  159. // delete entry.adminOrgUnit;
  160. }
  161. }
  162. // 计算单据时长
  163. var getTimeLength = _.debounce(function (index) {
  164. var callback = function (res) {
  165. mbos('entries_realTripDays', index).attr('accuracy', _this.decimal) // 设置小数点后位数
  166. mbos('entries_realTripDays', index).value(Number(res.data))
  167. }
  168. setModel(index)
  169. var entry = mbos('entity').data.entries[index]
  170. if (entry.realEndTime && entry.realStartTime) {
  171. baseInterface('getBillLength', callback, index)
  172. }
  173. }, 200)
  174. // 根据时间判断 是否展示弹性算时长字段
  175. function isElastic(index) {
  176. var callback = function (res) {
  177. if (res.data) {
  178. mbos('entries_isElasticCalLen', index).show()
  179. } else {
  180. mbos('entries_isElasticCalLen', index).hide()
  181. }
  182. }
  183. setModel(index)
  184. if (mbos('entries_realStartTime',0).value() && mbos('entries_realEndTime',0).value()) {
  185. baseInterface('showIsElasticCalCtrl', callback, index)
  186. }
  187. }
  188. // 获取整天的开始、结束时间
  189. var getStartEndTime = _.debounce(function (event) {
  190. if (String(mbos('entries_isAllDay', event.index).value()) == 'true') { // 整天出差
  191. var callback = function (res) {
  192. mbos('entries_realStartTime', event.index).value(moment(res.data.beginTime).format('YYYY-MM-DD HH:mm'))
  193. mbos('entries_realEndTime', event.index).value(moment(res.data.endTime).format('YYYY-MM-DD HH:mm'))
  194. }
  195. baseInterface('getAllDayBeginAndEndTime', callback, event.index)
  196. }
  197. }, 0)
  198. // 如果是整天出差 则使用date;否则使用datetime,同时清空时长
  199. function recalcTime(event) {
  200. mbos('entries_realTripDays', event.index).value('')
  201. if (event.new_value) {
  202. var entry = mbos('entity').data.entries[event.index]
  203. if (entry.realStartTime || entry.realEndTime) {
  204. getStartEndTime(event)
  205. }
  206. }
  207. getTimeLength(event.index)
  208. }
  209. // 计算时长
  210. _this.calTime1 = function (event) {
  211. // getTimeLength(event.index)
  212. isElastic(event.index)
  213. recalcTime(event)
  214. }
  215. _this.calTime2 = function (event) {
  216. // getTimeLength(event.index)
  217. isElastic(event.index)
  218. recalcTime(event)
  219. }
  220. // 弹性时段算时长
  221. _this.calTime3 = function (event) {
  222. recalcTime(event)
  223. }
  224. // 切换是否整天
  225. _this.isAllDayChange = function (event) {
  226. recalcTime(event)
  227. }
  228. // 时长更改时 做校验
  229. _this.lengthChange = function(event){
  230. var value = event.new_value
  231. // 判断是否小于0
  232. if (!isNaN(parseFloat(value)) && value < 0) {
  233. mbos.msgBox.showError(localeResource.lengthValid);
  234. setTimeout(()=>{
  235. mbos('entries_realTripDays',event.index).value(0)
  236. })
  237. return
  238. }
  239. }