index.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. import {
  2. AES,
  3. mode,
  4. pad,
  5. enc
  6. } from "crypto-js";
  7. import moment from 'moment';
  8. import {
  9. WORKORDER_EVALUATION
  10. } from "./enum.workorderEvaluation.js";
  11. import {
  12. reqDelWorkOrder,
  13. reqUrge,
  14. reqEvaluate,
  15. reqDirectStartOrder,
  16. } from "../request/api.js";
  17. // 生成一个从 start 到 end 的连续数组
  18. export function generateArray(start, end) {
  19. return Array.from(new Array(end + 1).keys()).slice(start).map(v => v.toString().padStart(2, '0'));
  20. }
  21. //aes加密
  22. export function encryptByEnAES(data = '') {
  23. let Key = "dsadmin";
  24. let tmpAES = AES.encrypt(data, Key, {
  25. mode: mode.CBC,
  26. padding: pad.Pkcs7,
  27. });
  28. return tmpAES.toString();
  29. }
  30. //aes解密
  31. export function encryptByDeAES(data = '') {
  32. let Key = "dsadmin";
  33. let tmpDeAES = AES.decrypt(data, Key, {
  34. mode: mode.CBC,
  35. padding: pad.Pkcs7,
  36. });
  37. return tmpDeAES.toString(enc.Utf8);
  38. }
  39. // 简单的模拟枚举
  40. export function createEnum(arr = []) {
  41. let obj = {}
  42. arr.forEach(v => {
  43. obj[obj[v.name] = v.value] = v.name;
  44. })
  45. return Object.freeze(obj);
  46. };
  47. // 获取页面栈,默认0是当前页面栈
  48. export function getCurrentPagesSeimin(num = 0) {
  49. let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
  50. let curRoute = routes[routes.length - 1 - num].route // 获取当前页面路由,也就是最后一个打开的页面路由
  51. return curRoute;
  52. };
  53. //评价
  54. export function showAppraise(id, callBack) {
  55. this.$refs.seiminModel.show({
  56. skin: 'evaluate',
  57. content: "工单已完成,请对本次服务做出评价!",
  58. btns: [{
  59. click: () => {
  60. console.log('取消');
  61. this.$refs.seiminModel.close();
  62. }
  63. },
  64. {
  65. click: () => {
  66. console.log('确定');
  67. let serviceEvaluationId;
  68. this.$refs.seiminModel.close();
  69. uni.showLoading({
  70. title: '加载中',
  71. mask: true,
  72. })
  73. //算出评级
  74. switch (this.$refs.seiminModel.stars.indexOf('pda-haoping1')) {
  75. case -1:
  76. //五星
  77. serviceEvaluationId = WORKORDER_EVALUATION['非常好评'];
  78. break;
  79. case 1:
  80. //一星
  81. serviceEvaluationId = WORKORDER_EVALUATION['极差'];
  82. break;
  83. case 2:
  84. //二星
  85. serviceEvaluationId = WORKORDER_EVALUATION['差'];
  86. break;
  87. case 3:
  88. //三星
  89. serviceEvaluationId = WORKORDER_EVALUATION['一般'];
  90. break;
  91. case 4:
  92. //四星
  93. serviceEvaluationId = WORKORDER_EVALUATION['好评'];
  94. break;
  95. }
  96. let postData = {
  97. serviceEvaluation: {
  98. id: serviceEvaluationId
  99. },
  100. remark: this.$refs.seiminModel.evaluateTextArea,
  101. };
  102. reqEvaluate(id, postData).then(res => {
  103. uni.hideLoading();
  104. if (res.status == 200) {
  105. this.$refs.seiminModel.show({
  106. skin: 'toast',
  107. icon: 'success',
  108. content: '评价成功',
  109. btns: [{
  110. click: () => {
  111. callBack && callBack();
  112. }
  113. }]
  114. })
  115. } else {
  116. this.$refs.seiminModel.show({
  117. skin: 'toast',
  118. icon: 'error',
  119. content: '评价失败',
  120. })
  121. }
  122. })
  123. }
  124. }
  125. ]
  126. });
  127. };
  128. //撤销
  129. export function openRecallModal(id, callBack) {
  130. this.$refs.seiminModel.show({
  131. icon: "warn",
  132. content: "您确认要撤销工单吗?撤销工单我们会通知服务台、支助人员不再执行此工单,请谨慎操作,如确认撤销请点击确认。",
  133. btns: [{
  134. click: () => {
  135. console.log('取消');
  136. this.$refs.seiminModel.close();
  137. }
  138. },
  139. {
  140. click: () => {
  141. console.log('确定');
  142. this.$refs.seiminModel.close();
  143. uni.showLoading({
  144. title: '加载中',
  145. mask: true,
  146. })
  147. reqDelWorkOrder(id).then(res => {
  148. uni.hideLoading();
  149. if (res.status == 200) {
  150. this.$refs.seiminModel.show({
  151. skin: 'toast',
  152. icon: 'success',
  153. content: '撤销成功',
  154. btns: [{
  155. click: () => {
  156. callBack && callBack();
  157. }
  158. }]
  159. })
  160. } else {
  161. this.$refs.seiminModel.show({
  162. skin: 'toast',
  163. icon: 'error',
  164. content: '撤销失败',
  165. })
  166. }
  167. })
  168. }
  169. }
  170. ]
  171. });
  172. };
  173. //立即执行
  174. export function openExecModal(id, callBack) {
  175. this.$refs.seiminModel.show({
  176. icon: 'warn',
  177. content: '您确认要立即执行该工单吗?',
  178. btns: [{
  179. click: () => {
  180. console.log('取消');
  181. this.$refs.seiminModel.close();
  182. }
  183. }, {
  184. click: () => {
  185. console.log('确认');
  186. this.$refs.seiminModel.close();
  187. uni.showLoading({
  188. title: '加载中',
  189. mask: true,
  190. })
  191. reqDirectStartOrder(id).then(res => {
  192. uni.hideLoading();
  193. if (res.status == 200) {
  194. this.$refs.seiminModel.show({
  195. skin: 'toast',
  196. icon: 'success',
  197. content: '立即执行成功',
  198. btns: [{
  199. click: () => {
  200. callBack && callBack();
  201. }
  202. }]
  203. })
  204. } else {
  205. this.$refs.seiminModel.show({
  206. skin: 'toast',
  207. icon: 'error',
  208. content: '立即执行失败',
  209. })
  210. }
  211. })
  212. }
  213. }, ]
  214. })
  215. };
  216. //加急
  217. export function showJiaji(id, callBack) {
  218. this.$refs.seiminModel.urgentTextArea = '';
  219. this.$refs.seiminModel.show({
  220. title: '',
  221. skin: 'urgent',
  222. content: "请填写加急原因,填写后我们会根据您的诉求优先处理",
  223. btns: [{
  224. click: () => {
  225. console.log('取消');
  226. this.$refs.seiminModel.close();
  227. }
  228. },
  229. {
  230. click: () => {
  231. console.log('确定', this.$refs.seiminModel.urgentTextArea);
  232. const urgentTextArea = this.$refs.seiminModel.urgentTextArea;
  233. if (urgentTextArea.trim() === '') {
  234. uni.showToast({
  235. icon: 'none',
  236. title: '请填写加急原因',
  237. })
  238. return;
  239. }
  240. this.$refs.seiminModel.close();
  241. uni.showLoading({
  242. title: '加载中',
  243. mask: true,
  244. })
  245. let postData = {
  246. urgentDetails: {
  247. workerOrder: id,
  248. checkStatus: {
  249. id: 330
  250. },
  251. urgentReason: urgentTextArea,
  252. },
  253. };
  254. reqUrge(postData).then(res => {
  255. uni.hideLoading();
  256. if (res.status == 200) {
  257. this.$refs.seiminModel.show({
  258. skin: 'toast',
  259. icon: 'success',
  260. content: '您的加急申请已成功,调度人员会紧急处理!',
  261. btns: [{
  262. click: () => {
  263. callBack && callBack();
  264. }
  265. }]
  266. })
  267. } else {
  268. this.$refs.seiminModel.show({
  269. skin: 'toast',
  270. icon: 'error',
  271. content: '加急失败',
  272. })
  273. }
  274. })
  275. }
  276. }
  277. ]
  278. });
  279. };
  280. // 返回上一页
  281. export const backPress = function() {
  282. let pages = getCurrentPages() //页面栈
  283. let prePage = pages[pages.length - 2] //上一页
  284. prePage.$vm.reFresh = Math.random() //触发上一页监听器
  285. }
  286. // 获取页面栈,默认0是当前页面栈,包含参数
  287. export function getCurrentPagesSeiminAll(num = 0) {
  288. let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
  289. let curRoute = routes[routes.length - 1 - num].$page.fullPath // 获取当前页面路由,也就是最后一个打开的页面路由
  290. return curRoute;
  291. };