accountCenter.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. const { createApp, ref ,onMounted,createVNode, render,computed,watch,nextTick} = Vue
  2. createApp({
  3. setup() {
  4. onMounted(()=>{
  5. getLoginAccountData()
  6. getAccountBalance()
  7. getSaleAndTarget()
  8. quickApp()
  9. getMessage()
  10. getAccountsReceivable()
  11. getWorkeBoard()
  12. getOrderMsg()
  13. pageData.value.viewportWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
  14. })
  15. const pageData = ref({
  16. viewportWidth:0,
  17. accountBalance:{},
  18. saleAndTarget:{},
  19. datatype:{
  20. 1:'订单',
  21. 2:'出货',
  22. 3:'开票',
  23. 4:'回款',
  24. },
  25. tab1:'xs',
  26. tab2:'msg',
  27. apps:[],
  28. message:[],
  29. accountsReceivable:{},
  30. kbtype:'by',
  31. kbOptions:{
  32. by:'本月',
  33. bz:'本周',
  34. bn:'本年',
  35. },
  36. workeBoard:{}
  37. })
  38. watch(() => pageData.value.tab1,(to, from) => {
  39. nextTick(()=>{
  40. if (to == 'xs') {
  41. const circle = document.querySelector('#circle')
  42. circle.style.strokeDashoffset = `calc((440 - (440*(${pageData.value.saleAndTarget.wcamount}/100)))px)`
  43. }
  44. })
  45. })
  46. const getLoginAccountData = ()=>{
  47. pageData.value.name = JSON.parse(sessionStorage.getItem('loginInfo')).resultobject.account_list[0].name
  48. pageData.value.date = `今天是${new Date().getFullYear()}年${new Date().getMonth() + 1}月${new Date().getDate()}日,欢迎您的使用`
  49. }
  50. const getAccountBalance = async ()=>{
  51. const res = await instance.post('',{
  52. "id":20240111085504,
  53. "content": {
  54. hrid:JSON.parse(sessionStorage.getItem('loginInfo')).resultobject.account_list[0].hrid,
  55. pageNumber:1,
  56. pageSize:99
  57. }
  58. })
  59. pageData.value.accountBalance = {
  60. // tool.formatCurrency(pageData.accountBalance.expectedReward)
  61. hraccountname:res.data.data[0].hraccountname,
  62. balance:tool.formatCurrency(res.data.data[0].balance),
  63. expectedReward:tool.formatCurrency(res.data.data[0].expectedReward)
  64. }
  65. }
  66. const param = ref({
  67. id:20231009125304,
  68. content:{
  69. datatype:1,
  70. dateType:'本年',
  71. type:0,
  72. dataid:JSON.parse(sessionStorage.getItem('loginInfo')).resultobject.account_list[0].userid
  73. }
  74. })
  75. // 业绩与目标
  76. const getSaleAndTarget = async ()=>{
  77. const res = await instance.post('',param.value)
  78. pageData.value.saleAndTarget = {
  79. amount:tool.formatCurrency(res.data.data.amount / 10000),
  80. tbxsje:res.data.data.tbxsje,
  81. hbxsje:res.data.data.hbxsje,
  82. target_l:tool.formatCurrency(res.data.data.target_l / 10000),
  83. wcamount:(res.data.data.wcamount * 100).toFixed(2),
  84. unamount:tool.formatCurrency(res.data.data.unamount / 10000)
  85. }
  86. const circle = document.querySelector('#circle')
  87. circle.style['stroke-dashoffset'] = 440 - 440*(pageData.value.saleAndTarget.wcamount) / 100
  88. }
  89. // 应收账款
  90. const getAccountsReceivable = async ()=>{
  91. const res = await instance.post('',{
  92. id:20240320111604,
  93. content:{
  94. dataid:JSON.parse(sessionStorage.getItem('loginInfo')).resultobject.account_list[0].userid,
  95. type:0,
  96. point:'全部',
  97. querytype:0,
  98. pageSize:100,
  99. where:{}
  100. }
  101. })
  102. pageData.value.accountsReceivable = {
  103. sumallaoverduemount:tool.formatCurrency(res.data.data[0].sumallaoverduemount),
  104. sumonemonthamount:tool.formatCurrency(res.data.data[0].sumonemonthamount),
  105. sumthreemonthamount:tool.formatCurrency(res.data.data[0].sumthreemonthamount),
  106. upthreemonthamount:tool.formatCurrency(res.data.data[0].upthreemonthamount)
  107. }
  108. }
  109. // 作业看板
  110. const getWorkeBoard = async ()=>{
  111. const res = await instance.post('',{
  112. id:20230616131404,
  113. content:{
  114. dataType:1,
  115. dataid:'',
  116. type:''
  117. }
  118. })
  119. pageData.value.workeBoard = res.data.data
  120. }
  121. // 快捷应用
  122. const quickApp = async ()=>{
  123. const res = await instance.post('',{
  124. "classname":'sysmanage.develop.userauthforweb.userauth',
  125. "method":'query_userauth',
  126. "content": {
  127. 'place':3
  128. }
  129. })
  130. // pageData.value.apps = res.data.data.flatMap(f => f.modules.flatMap(s => s.apps));
  131. pageData.value.apps = res.data.data.flatMap(f =>
  132. f.modules.flatMap(s =>
  133. s.apps.map(a => {
  134. a.system = f.system; // 直接在映射过程中修改 a.system
  135. return a; // 返回修改后的 a 对象
  136. })
  137. )
  138. );
  139. }
  140. // 消息
  141. const getMessage = async ()=>{
  142. const res = await instance.post('',{
  143. "classname":'system.message.Message',
  144. "method":'queryMessage',
  145. "content": {
  146. "pageNumber":1,
  147. "pageSize":15,
  148. "nocache":true,
  149. "type":'应用'
  150. }
  151. })
  152. pageData.value.message = res.data.data;
  153. }
  154. // 单据动态
  155. const getOrderMsg = async ()=>{
  156. const res = await instance.post('',{
  157. id:20240920135203,
  158. "content": {
  159. }
  160. })
  161. pageData.value.orderMsg = res.data.data
  162. }
  163. const linkOfIframe = (app)=>{
  164. let lg = localStorage.getItem('lang')
  165. let token = sessionStorage.getItem('token')
  166. if (tool.isMobile()) {
  167. switch (app.name) {
  168. case 'myaccountclass':
  169. app.name = 'waccount'
  170. break;
  171. case 'smPersonalTarget':
  172. app.name = 'wtarget'
  173. break;
  174. case 'accountsReceivable':
  175. app.name = 'receivables'
  176. break;
  177. case 'dataanalysis':
  178. app.name = 'wdataanalysis'
  179. break;
  180. case 'ordersaler':
  181. app.name = 'worderform'
  182. break;
  183. default:
  184. break;
  185. }
  186. let appid = ''
  187. if (app.system == 'sale' || app.system == 'service') {
  188. appid = 'wxc1b6ae925ac1d06a'
  189. } else {
  190. appid = 'wx197f219a82a89d7b'
  191. }
  192. window.location.href = `weixin://dl/business/?appid=${appid}&path=pages/login/selectSite&query=${token}_${app.name}_${lg}&env_version=develop`
  193. // 正式版为"release",体验版为"trial",开发版为"develop"
  194. } else {
  195. window.open(`./iframe.html?path=${app.name}`, '_blank');
  196. }
  197. }
  198. const translate = (val)=>{
  199. return tool.translate(val)
  200. }
  201. return {
  202. pageData,
  203. param,
  204. getSaleAndTarget,
  205. linkOfIframe,
  206. translate
  207. }
  208. }
  209. }).mount('#app')