Home.vue 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093
  1. <template>
  2. <div class="home" :class="[fontSize]">
  3. <!-- <a-alert :message="message" type="info" /> -->
  4. <a-card size="small" :bordered="false" class="page-cont" :bodyStyle="{padding: '17px 30px 20px'}">
  5. <h3 class="page-tit"><span>客户信息</span></h3>
  6. <ul class="page-list">
  7. <li>商户名称:{{ $store.getters.userInfo.orgName || '--' }}</li>
  8. <li>商户别名:{{ dealerData&&dealerData.dealerAlias || '--' }}</li>
  9. <li>登录账号:{{ $store.getters.userInfo.username || '--' }}</li>
  10. <li>所属角色:{{ dealerData&&dealerData.dealerLevelDictValue || '--' }}</li>
  11. </ul>
  12. </a-card>
  13. <!-- 数据看板 -->
  14. <a-card
  15. v-if="$hasPermissions('M_homePage_data')"
  16. size="small"
  17. :bordered="false"
  18. class="page-cont"
  19. :bodyStyle="{padding: '17px 30px 0'}">
  20. <div style="font-size:16px;font-weight: 500;">
  21. <span>数据概览</span>
  22. <span
  23. :title="!hiddenBizData?'隐藏':'显示'"
  24. @click="hiddenBizData=!hiddenBizData"
  25. style="margin-left: 10px;cursor: pointer;"
  26. >
  27. <svg
  28. v-if="hiddenBizData"
  29. t="1650362667217"
  30. class="icon"
  31. viewBox="0 0 1024 1024"
  32. version="1.1"
  33. xmlns="http://www.w3.org/2000/svg"
  34. p-id="18432"
  35. width="16"
  36. height="16"><path d="M469.333333 681.386667c-36.053333-2.432-71.253333-8.533333-104.96-17.92l-69.802666 149.674666a42.368 42.368 0 0 1-56.533334 20.266667 42.666667 42.666667 0 0 1-20.821333-56.32l66.986667-143.658667a451.712 451.712 0 0 1-148.906667-112.682666 388.693333 388.693333 0 0 1-70.570667-119.338667 42.666667 42.666667 0 1 1 80.128-29.354667 303.445333 303.445333 0 0 0 55.210667 93.098667C270.634667 547.413333 383.018667 597.333333 505.728 597.333333c122.752 0 235.136-49.962667 305.706667-132.181333a303.445333 303.445333 0 0 0 55.210666-93.098667 42.666667 42.666667 0 0 1 80.128 29.354667 388.693333 388.693333 0 0 1-70.570666 119.338667 423.68 423.68 0 0 1-18.773334 20.48l104.362667 104.362666a42.666667 42.666667 0 0 1-0.298667 60.032 42.368 42.368 0 0 1-60.032 0.298667l-109.653333-109.653333c-20.48 14.08-42.24 26.581333-65.024 37.418666l66.901333 143.36a42.666667 42.666667 0 0 1-20.821333 56.362667 42.368 42.368 0 0 1-56.533333-20.266667l-69.717334-149.546666a520.533333 520.533333 0 0 1-91.946666 16.810666v130.645334A42.666667 42.666667 0 0 1 512 853.333333c-23.722667 0-42.666667-18.944-42.666667-42.24v-129.706666z" fill="#8a8a8a" p-id="18433"></path><path d="M176.128 524.373333a42.368 42.368 0 0 1 60.032 0.256 42.666667 42.666667 0 0 1 0.298667 60.074667l-121.216 121.216a42.368 42.368 0 0 1-60.074667-0.298667 42.666667 42.666667 0 0 1-0.298667-60.032l121.258667-121.258666z" fill="#8a8a8a" p-id="18434"></path></svg>
  37. <svg
  38. v-else
  39. t="1650362825006"
  40. class="icon"
  41. viewBox="0 0 1024 1024"
  42. version="1.1"
  43. xmlns="http://www.w3.org/2000/svg"
  44. p-id="21815"
  45. width="16"
  46. height="16"><path d="M512 209.403241c-201.731514 0-374.009206 125.476783-443.808922 302.596759 69.798692 177.119977 242.077408 302.596759 443.808922 302.596759 201.933105 0 374.010229-125.476783 443.808922-302.596759C886.009206 334.880023 713.933105 209.403241 512 209.403241zM512 713.731514c-111.355157 0-201.731514-90.375334-201.731514-201.731514s90.375334-201.731514 201.731514-201.731514 201.731514 90.375334 201.731514 201.731514S623.355157 713.731514 512 713.731514zM512 390.961296c-66.772776 0-121.038704 54.265928-121.038704 121.038704s54.265928 121.038704 121.038704 121.038704 121.038704-54.265928 121.038704-121.038704S578.772776 390.961296 512 390.961296z" p-id="21816" fill="#8a8a8a"></path></svg>
  47. </span>
  48. </div>
  49. <a-row v-if="!hiddenBizData">
  50. <a-col :span="6">
  51. <div class="page-data-module">
  52. <div class="page-data-con">
  53. <p class="page-data-tit">今日总单量(个)/总销售金额(元)</p>
  54. <h3 class="page-data-num main-color">
  55. <a-statistic :valueStyle="{fontSize:'30px',color:'#e70012'}" :value="bizData&&bizData.sales&&(bizData.sales.dayTotalQty || bizData.sales.dayTotalQty==0) ? bizData.sales.dayTotalQty : 0" />
  56. /
  57. <a-statistic :precision="2" :valueStyle="{fontSize:'30px',color:'#e70012'}" :value="bizData&&bizData.sales&&(bizData.sales.dayTotalAmount || bizData.sales.dayTotalAmount==0) ? bizData.sales.dayTotalAmount : 0" />
  58. </h3>
  59. <p class="page-data-item">
  60. <span class="page-data-itemText">本周</span>
  61. <span class="page-data-itemText">
  62. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.sales&&(bizData.sales.weekSalesQty || bizData.sales.weekSalesQty==0) ? bizData.sales.weekSalesQty : 0" />
  63. /
  64. <a-statistic :valueStyle="{fontSize:'14px'}" :precision="2" :value="bizData&&bizData.sales&&(bizData.sales.weekSalesAmount || bizData.sales.weekSalesAmount==0) ? bizData.sales.weekSalesAmount : 0" />
  65. </span>
  66. </p>
  67. <p class="page-data-item">
  68. <span class="page-data-itemText">本月</span>
  69. <span class="page-data-itemText">
  70. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.sales&&(bizData.sales.monthSalesQty || bizData.sales.monthSalesQty==0) ? bizData.sales.monthSalesQty : 0" />
  71. /
  72. <a-statistic :valueStyle="{fontSize:'14px'}" :precision="2" :value="bizData&&bizData.sales&&(bizData.sales.monthSalesAmount || bizData.sales.monthSalesAmount==0) ? bizData.sales.monthSalesAmount : 0" />
  73. </span>
  74. </p>
  75. </div>
  76. <span class="page-data-line"></span>
  77. </div>
  78. </a-col>
  79. <a-col :span="6">
  80. <div class="page-data-module">
  81. <div class="page-data-con">
  82. <p class="page-data-tit">今日总采购单量(个)/总采购金额(元)</p>
  83. <h3 class="page-data-num">
  84. <a-statistic :valueStyle="{fontSize:'30px'}" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.dayTotalQty || bizData.purchaseBill.dayTotalQty==0) ? bizData.purchaseBill.dayTotalQty : 0" />
  85. /
  86. <a-statistic :precision="2" :valueStyle="{fontSize:'30px'}" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.dayDiscountedAmount || bizData.purchaseBill.dayDiscountedAmount==0) ? bizData.purchaseBill.dayDiscountedAmount : 0" />
  87. </h3>
  88. <p class="page-data-item">
  89. <span class="page-data-itemText">本周</span>
  90. <span class="page-data-itemText">
  91. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.weekPurchaseQty || bizData.purchaseBill.weekPurchaseQty==0) ? bizData.purchaseBill.weekPurchaseQty : 0" />
  92. /
  93. <a-statistic :valueStyle="{fontSize:'14px'}" :precision="2" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.weekDiscountedAmount || bizData.purchaseBill.weekDiscountedAmount==0) ? bizData.purchaseBill.weekDiscountedAmount : 0" />
  94. </span>
  95. </p>
  96. <p class="page-data-item">
  97. <span class="page-data-itemText">本月</span>
  98. <span class="page-data-itemText">
  99. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.monthPurchaseQty || bizData.purchaseBill.monthPurchaseQty==0) ? bizData.purchaseBill.monthPurchaseQty : 0" />
  100. /
  101. <a-statistic :valueStyle="{fontSize:'14px'}" :precision="2" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.monthDiscountedAmount || bizData.purchaseBill.monthDiscountedAmount==0) ? bizData.purchaseBill.monthDiscountedAmount : 0" />
  102. </span>
  103. </p>
  104. </div>
  105. <span class="page-data-line"></span>
  106. </div>
  107. </a-col>
  108. <a-col :span="6">
  109. <div class="page-data-module">
  110. <div class="page-data-con">
  111. <p class="page-data-tit">客户总数(个)</p>
  112. <h3 class="page-data-num">
  113. <a-statistic :valueStyle="{fontSize:'30px'}" :value="bizData&&bizData.customer&&(bizData.customer.custCount || bizData.customer.custCount==0) ? bizData.customer.custCount : 0 " />
  114. </h3>
  115. <p class="page-data-item">
  116. <span class="page-data-itemText">本周新增</span>
  117. <span class="page-data-itemText">
  118. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.customer&&(bizData.customer.addCurrentWeekCustCount || bizData.customer.addCurrentWeekCustCount==0) ? bizData.customer.addCurrentWeekCustCount : 0" />
  119. </span>
  120. </p>
  121. <p class="page-data-item">
  122. <span class="page-data-itemText">30天内采购客户</span>
  123. <span class="page-data-itemText">
  124. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.customer&&(bizData.customer.salesThirtyDayCustCount || bizData.customer.salesThirtyDayCustCount==0) ? bizData.customer.salesThirtyDayCustCount : 0" />
  125. </span>
  126. </p>
  127. </div>
  128. <span class="page-data-line"></span>
  129. </div>
  130. </a-col>
  131. <a-col :span="6">
  132. <div class="page-data-module">
  133. <div class="page-data-con">
  134. <p class="page-data-tit">总库存(个)</p>
  135. <h3 class="page-data-num" style="line-height: 36px;">
  136. <a-statistic :valueStyle="{fontSize:'30px'}" :value="bizData&&bizData.stock&&(bizData.stock.totalCurrentStockQty || bizData.stock.totalCurrentStockQty==0) ? bizData.stock.totalCurrentStockQty : 0" />
  137. </h3>
  138. <p class="page-data-tit">库存总金额(元)</p>
  139. <h3 class="page-data-num" style="line-height: 36px;margin: 0;">
  140. <a-statistic :precision="2" :valueStyle="{fontSize:'30px'}" :value="bizData&&bizData.stock&&(bizData.stock.totalCurrentStockCost || bizData.stock.totalCurrentStockCost==0) ? bizData.stock.totalCurrentStockCost : 0" />
  141. </h3>
  142. </div>
  143. </div>
  144. </a-col>
  145. </a-row>
  146. <a-row v-else>
  147. <a-col :span="6">
  148. <div class="page-data-module">
  149. <div class="page-data-con">
  150. <p class="page-data-tit">今日总单量(个)/总销售金额(元)</p>
  151. <h3 class="page-data-num main-color">
  152. ****
  153. </h3>
  154. <p class="page-data-item">
  155. <span class="page-data-itemText">本周</span>
  156. <span class="page-data-itemText">
  157. ****
  158. </span>
  159. </p>
  160. <p class="page-data-item">
  161. <span class="page-data-itemText">本月</span>
  162. <span class="page-data-itemText">
  163. ****
  164. </span>
  165. </p>
  166. </div>
  167. <span class="page-data-line"></span>
  168. </div>
  169. </a-col>
  170. <a-col :span="6">
  171. <div class="page-data-module">
  172. <div class="page-data-con">
  173. <p class="page-data-tit">今日总采购单量(个)/总采购金额(元)</p>
  174. <h3 class="page-data-num">
  175. ****
  176. </h3>
  177. <p class="page-data-item">
  178. <span class="page-data-itemText">本周</span>
  179. <span class="page-data-itemText">
  180. ****
  181. </span>
  182. </p>
  183. <p class="page-data-item">
  184. <span class="page-data-itemText">本月</span>
  185. <span class="page-data-itemText">
  186. ****
  187. </span>
  188. </p>
  189. </div>
  190. <span class="page-data-line"></span>
  191. </div>
  192. </a-col>
  193. <a-col :span="6">
  194. <div class="page-data-module">
  195. <div class="page-data-con">
  196. <p class="page-data-tit">客户总数(个)</p>
  197. <h3 class="page-data-num">
  198. ****
  199. </h3>
  200. <p class="page-data-item">
  201. <span class="page-data-itemText">本周新增</span>
  202. <span class="page-data-itemText">
  203. ****
  204. </span>
  205. </p>
  206. <p class="page-data-item">
  207. <span class="page-data-itemText">30天内采购客户</span>
  208. <span class="page-data-itemText">
  209. ****
  210. </span>
  211. </p>
  212. </div>
  213. <span class="page-data-line"></span>
  214. </div>
  215. </a-col>
  216. <a-col :span="6">
  217. <div class="page-data-module">
  218. <div class="page-data-con">
  219. <p class="page-data-tit">总库存(个)</p>
  220. <h3 class="page-data-num" style="line-height: 36px;">
  221. ****
  222. </h3>
  223. <p class="page-data-tit">库存总金额(元)</p>
  224. <h3 class="page-data-num" style="line-height: 36px;margin: 0;">
  225. ****
  226. </h3>
  227. </div>
  228. </div>
  229. </a-col>
  230. </a-row>
  231. </a-card>
  232. <div>
  233. <a-row>
  234. <a-col :span="16">
  235. <a-spin :spinning="spinning" tip="Loading...">
  236. <a-card size="small" :bordered="false" class="page-cont" :bodyStyle="{padding: '17px 30px 20px'}">
  237. <h3 class="page-tit">
  238. <span>销售/采购/调拨指引</span>
  239. <a-radio-group v-model="curDate" @change="onDateChange">
  240. <!-- <a-radio-button value="6">
  241. 最近半年
  242. </a-radio-button> -->
  243. <a-radio-button value="3">
  244. 最近3个月
  245. </a-radio-button>
  246. <a-radio-button value="0">
  247. 全部
  248. </a-radio-button>
  249. </a-radio-group>
  250. </h3>
  251. <div class="page-nav-main">
  252. <!-- 导航指引 start -->
  253. <div class="page-nav-con" v-for="(item, index) in navList" :key="index">
  254. <div class="page-nav-box" v-for="(subItem, subInd) in item" :key="subInd">
  255. <a-badge
  256. :count="countData&&unitItem.permission&&unitItem.orderNum&&$hasPermissions(unitItem.permission) ? countData[unitItem.orderNum] : 0"
  257. class="page-nav-badge"
  258. v-for="(unitItem, unitInd) in subItem"
  259. :key="unitInd"
  260. @click="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission) ? goPage(unitItem,subInd) : null"
  261. :style="{cursor: unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)?'pointer': 'initial'}">
  262. <div :class="['page-nav-item', unitItem.styleC]">
  263. <div class="page-nav-n">
  264. <img v-show="unitItem.icon" :src="unitItem.icon" width="16" height="16" />
  265. <span>{{ unitItem.name }}</span>
  266. </div>
  267. <a-icon type="caret-right" v-show="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)" style="color: #BBBBBB;" />
  268. </div>
  269. </a-badge>
  270. </div>
  271. </div>
  272. <!-- 导航指引 end -->
  273. </div>
  274. </a-card>
  275. </a-spin>
  276. </a-col>
  277. <a-col :span="8">
  278. <a-card size="small" :bordered="false" class="page-cont right-con" :bodyStyle="{padding: '17px 30px 20px'}">
  279. <h3 class="page-tit"><span>财务指引</span></h3>
  280. <!-- 财务指引 start -->
  281. <div class="page-nav-con" v-for="(item, index) in navFinancialList" :key="index">
  282. <div class="page-nav-box" v-for="(subItem, subInd) in item" :key="subInd" style="width: 50%;">
  283. <div class="page-nav-badge" v-for="(unitItem, unitInd) in subItem" :key="unitInd" @click="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission) ? goPage(unitItem) : null" :style="{cursor: unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)?'pointer': 'initial'}">
  284. <div :class="['page-nav-item', unitItem.styleC]">
  285. <div class="page-nav-n">
  286. <img v-show="unitItem.icon" :src="unitItem.icon" width="16" height="16" />
  287. <span>{{ unitItem.name }}</span>
  288. </div>
  289. <a-icon type="caret-right" v-show="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)" style="color: #BBBBBB;" />
  290. </div>
  291. </div>
  292. </div>
  293. </div>
  294. <!-- 财务指引 end -->
  295. </a-card>
  296. <a-card size="small" :bordered="false" class="page-cont right-con" :bodyStyle="{padding: '17px 30px 20px'}">
  297. <h3 class="page-tit"><span>其他指引</span></h3>
  298. <!-- 其他指引 start -->
  299. <div class="page-nav-con" v-for="(item, index) in navOtherList" :key="index">
  300. <div class="page-nav-box" v-for="(subItem, subInd) in item" :key="subInd" style="width: 50%;">
  301. <div class="page-nav-badge" v-for="(unitItem, unitInd) in subItem" :key="unitInd" @click="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission) ? goPage(unitItem):null" :style="{cursor: unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)?'pointer': 'initial'}">
  302. <div :class="['page-nav-item', unitItem.styleC]">
  303. <div class="page-nav-n">
  304. <img v-show="unitItem.icon" :src="unitItem.icon" width="16" height="16" />
  305. <span>{{ unitItem.name }}</span>
  306. </div>
  307. <a-icon type="caret-right" v-show="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)" style="color: #BBBBBB;" />
  308. </div>
  309. </div>
  310. </div>
  311. </div>
  312. <!-- 其他指引 end -->
  313. </a-card>
  314. </a-col>
  315. </a-row>
  316. </div>
  317. <!-- 重置密码 -->
  318. <a-modal
  319. class="resetPwdModal"
  320. title="重置密码"
  321. width="60%"
  322. centered
  323. :footer="null"
  324. :closable="false"
  325. :maskClosable="false"
  326. :destroyOnClose="true"
  327. @cancel="openResetPwd=false"
  328. v-model="openResetPwd">
  329. <ResetPwd />
  330. </a-modal>
  331. <!-- 产品上线提醒 -->
  332. <a-modal
  333. class="newProductTips"
  334. :title="'产品'+(onlineFalg=='1'?'上':'下')+'线提醒'"
  335. :width="800"
  336. centered
  337. :footer="null"
  338. :maskClosable="false"
  339. :destroyOnClose="true"
  340. @cancel="cancelProductTips"
  341. v-model="openNewProduct">
  342. <newProduct :onlineFalg="onlineFalg" @seeMore="seeMore"></newProduct>
  343. </a-modal>
  344. </div>
  345. </template>
  346. <script>
  347. import { mixin, commonMixin } from '@/utils/mixin'
  348. import getDate from '@/libs/getDate.js'
  349. import { mapGetters, mapActions } from 'vuex'
  350. import ResetPwd from '@/views/user/ResetPwd.vue'
  351. import newProduct from '@/views/productManagement/newProduct/modal.vue'
  352. import { queryNewProductPage } from '@/api/product'
  353. import { bizStateCount, bizData, dealerData } from '@/api/data'
  354. export default {
  355. name: 'Home',
  356. components: { ResetPwd, newProduct },
  357. mixins: [mixin, commonMixin],
  358. data () {
  359. return {
  360. spinning: false,
  361. message: '欢迎登录' + process.env.VUE_APP_PRO_NAME,
  362. hiddenBizData: true, // 隐藏数据概览
  363. openResetPwd: false, // 重置密码是否显示
  364. openNewProduct: false,
  365. onlineFalg: '1', // 上下线标识 1为上线,0为下线
  366. queryParams: {
  367. beginDate: getDate.getMonthDays(3).starttime,
  368. endDate: getDate.getMonthDays(3).endtime
  369. },
  370. curDate: '3',
  371. navList: [
  372. [ // 客户
  373. [
  374. {
  375. icon: require('@/assets/home-icon/home_icon_customer.png'),
  376. name: '客户',
  377. styleC: 'blue-color',
  378. url: 'customerInfoList',
  379. permission: 'M_customerInfoList',
  380. orderNum: ''
  381. }
  382. ],
  383. [
  384. {
  385. icon: require('@/assets/home-icon/home_icon_billing.png'),
  386. name: '销售开单',
  387. styleC: 'red-color',
  388. url: 'salesQueryList',
  389. permission: 'M_salesQueryList',
  390. orderNum: ''
  391. },
  392. {
  393. icon: require('@/assets/home-icon/home_icon_return.png'),
  394. name: '销售退货',
  395. styleC: 'red-color',
  396. url: 'salesReturnList',
  397. permission: 'M_salesReturnList',
  398. orderNum: ''
  399. }
  400. ],
  401. [
  402. {
  403. icon: require('@/assets/home-icon/home_icon_verify.png'),
  404. name: '销售审核',
  405. styleC: 'blue-color',
  406. url: 'salesQueryList',
  407. params: { billStatus: 'WAIT_AUDIT' },
  408. permission: 'M_salesQueryList',
  409. orderNum: 'salesWaitAuditCount'
  410. },
  411. {
  412. icon: require('@/assets/home-icon/home_icon_verify.png'),
  413. name: '退货审核',
  414. styleC: 'blue-color',
  415. url: 'salesReturnList',
  416. params: { state: 'WAIT_AUDIT' },
  417. permission: 'M_salesReturnList',
  418. orderNum: 'salesReturnWaitAuditCount'
  419. }
  420. ],
  421. [
  422. {
  423. icon: require('@/assets/home-icon/home_icon_stock.png'),
  424. name: '销售出库',
  425. styleC: 'red-color',
  426. url: 'outboundOrderList',
  427. params: { state: 'WAIT', outBizType: 'SALES' },
  428. permission: 'M_outboundList',
  429. orderNum: 'salesWaitOutWarehouseCount'
  430. },
  431. {
  432. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  433. name: '财务付款',
  434. styleC: 'red-color',
  435. url: 'financialPaymentList',
  436. params: { bizType: 'SELL_REFUND', billState: 'UNSETTLE' },
  437. permission: 'M_financialPaymentList',
  438. orderNum: 'salesReturnFinancialWaitCount'
  439. }
  440. ],
  441. [
  442. {
  443. icon: require('@/assets/home-icon/home_icon_finance_payment.png'),
  444. name: '财务收款',
  445. styleC: 'blue-color',
  446. url: 'financialCollectionList',
  447. params: { bizType: 'SELL', billState: 'UNSETTLE' },
  448. permission: 'M_financialCollectionList',
  449. orderNum: 'salesFinancialWaitCount'
  450. },
  451. {}
  452. ]
  453. ],
  454. [ // 供应商(箭冠)
  455. [
  456. {
  457. icon: require('@/assets/home-icon/home_icon_supplier.png'),
  458. name: '供应商(箭冠)',
  459. styleC: 'blue-color',
  460. url: '',
  461. orderNum: ''
  462. }
  463. ],
  464. [
  465. {
  466. icon: require('@/assets/home-icon/home_icon_purchase_billing.png'),
  467. name: '采购开单',
  468. styleC: 'red-color',
  469. url: 'purchaseOrderList',
  470. permission: 'M_purchasingList',
  471. orderNum: ''
  472. },
  473. {
  474. icon: require('@/assets/home-icon/home_icon_purchase_return.png'),
  475. name: '采购退货',
  476. styleC: 'red-color',
  477. url: this.$hasPermissions('M_purchaseReturn_outSnycList') ? 'purchaseReturnOutSyncList' : 'purchaseReturnList',
  478. permission: this.$hasPermissions('M_purchaseReturn_outSnycList') ? 'M_purchaseReturn_outSnycList' : 'M_purchaseReturnList',
  479. orderNum: ''
  480. }
  481. ],
  482. [
  483. {
  484. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  485. name: '入库审核',
  486. styleC: 'blue-color',
  487. url: 'warehousingAuditList',
  488. params: { auditState: 'WAIT_PUT_WAREHOUSE_AUDIT' },
  489. permission: 'M_warehousingAuditList',
  490. orderNum: 'purchaseWaitAuditCount'
  491. },
  492. {
  493. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  494. name: '退货审核',
  495. styleC: 'blue-color',
  496. url: this.$hasPermissions('M_purchaseReturn_outSnycList') ? 'purchaseReturnOutSyncList' : 'purchaseReturnList',
  497. params: { state: 'WAIT_AUDIT' },
  498. permission: this.$hasPermissions('M_purchaseReturn_outSnycList') ? 'M_purchaseReturn_outSnycList' : 'M_purchaseReturnList',
  499. orderNum: this.$hasPermissions('M_purchaseReturn_outSnycList') ? 'purchaseReturnOutSyncWaitAuditCount' : 'purchaseReturnWaitAuditCount'
  500. }
  501. ],
  502. [
  503. {
  504. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  505. name: '财务付款',
  506. styleC: 'red-color',
  507. url: 'financialPaymentList',
  508. params: { bizType: 'PURCHASE', billState: 'UNSETTLE' },
  509. permission: 'M_financialPaymentList',
  510. orderNum: 'purchaseFinancialWaitCount'
  511. },
  512. {
  513. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  514. name: '财务收款',
  515. styleC: 'red-color',
  516. url: 'financialCollectionList',
  517. params: { bizType: 'PURCHASE_RETURN', billState: 'UNSETTLE' },
  518. permission: 'M_financialCollectionList',
  519. orderNum: this.$hasPermissions('M_purchaseReturn_outSnycList') ? 'purchaseReturnOutSyncFinancialWaitCount' : 'purchaseReturnFinancialWaitCount'
  520. }
  521. ]
  522. ],
  523. [ // 供应商(其他)
  524. [
  525. {
  526. icon: require('@/assets/home-icon/home_icon_supplier.png'),
  527. name: '供应商(其他)',
  528. styleC: 'blue-color',
  529. url: 'supplierInfoList',
  530. permission: 'M_supplierInfoList',
  531. orderNum: ''
  532. }
  533. ],
  534. [
  535. {
  536. icon: require('@/assets/home-icon/home_icon_scatter_warehousing.png'),
  537. name: '散件入库',
  538. styleC: 'red-color',
  539. url: 'bulkWarehousingOrderList',
  540. permission: 'M_bulkWarehousingOrderList',
  541. orderNum: ''
  542. },
  543. {
  544. icon: require('@/assets/home-icon/home_icon_scatter_return.png'),
  545. name: '散件退货',
  546. styleC: 'red-color',
  547. url: 'bulkReturnGoodsList',
  548. permission: 'M_bulkReturnGoodsList',
  549. orderNum: ''
  550. }
  551. ],
  552. [
  553. {
  554. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  555. name: '待入库',
  556. styleC: 'blue-color',
  557. url: 'bulkWarehousingOrderList',
  558. params: { state: 'WAIT_PUT_WAREHOUSE' },
  559. permission: 'M_bulkWarehousingOrderList',
  560. orderNum: 'sparePartsPurchaseWaitAuditCount'
  561. },
  562. {
  563. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  564. name: '退货审核',
  565. styleC: 'blue-color',
  566. url: 'bulkReturnGoodsList',
  567. params: { state: 'WAIT_AUDIT' },
  568. permission: 'M_bulkReturnGoodsList',
  569. orderNum: 'sparePartsReturnWaitAuditCount'
  570. }
  571. ],
  572. [
  573. {
  574. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  575. name: '财务付款',
  576. styleC: 'red-color',
  577. url: 'financialPaymentList',
  578. params: { bizType: 'PARTS_INPUT', billState: 'UNSETTLE' },
  579. permission: 'M_financialPaymentList',
  580. orderNum: 'sparePartsPurchaseFinancialWaitCount'
  581. },
  582. {
  583. icon: require('@/assets/home-icon/home_icon_stock.png'),
  584. name: '待出库',
  585. styleC: 'red-color',
  586. url: 'bulkReturnGoodsList',
  587. params: { state: 'WAIT_OUT_WAREHOUSE' },
  588. permission: 'M_bulkReturnGoodsList',
  589. orderNum: 'sparePartsReturnWaitOutWarehouseCount'
  590. }
  591. ],
  592. [
  593. {},
  594. {
  595. icon: require('@/assets/home-icon/home_icon_finance_payment.png'),
  596. name: '财务收款',
  597. styleC: 'blue-color',
  598. url: 'financialCollectionList',
  599. params: { bizType: 'SPARE_PARTS_RETURN', billState: 'UNSETTLE' },
  600. permission: 'M_financialCollectionList',
  601. orderNum: 'sparePartsReturnFinancialWaitCount'
  602. }
  603. ]
  604. ],
  605. [ // 调拨
  606. [
  607. {
  608. icon: require('@/assets/home-icon/home_icon_transfer.png'),
  609. name: '调拨',
  610. styleC: 'blue-color',
  611. url: '',
  612. orderNum: ''
  613. }
  614. ],
  615. [
  616. {
  617. icon: require('@/assets/home-icon/home_icon_stor_out.png'),
  618. name: '店内调出',
  619. styleC: 'red-color',
  620. url: 'storeTransferOutList',
  621. permission: 'M_storeTransferOutList',
  622. orderNum: ''
  623. },
  624. {
  625. icon: require('@/assets/home-icon/home_icon_billing.png'),
  626. name: '仓库调拨',
  627. styleC: 'red-color',
  628. url: 'warehouseAllocationList',
  629. permission: 'M_warehouseAllocationList',
  630. orderNum: ''
  631. },
  632. {
  633. icon: require('@/assets/home-icon/home_icon_billing.png'),
  634. name: '连锁调出',
  635. styleC: 'red-color',
  636. url: 'chainTransferOutList',
  637. permission: 'M_chainTransferOutList',
  638. orderNum: ''
  639. }
  640. ],
  641. [
  642. {
  643. icon: require('@/assets/home-icon/home_icon_verify.png'),
  644. name: '调出审核',
  645. styleC: 'blue-color',
  646. url: 'storeTransferOutList',
  647. params: { state: 'WAIT_AUDIT' },
  648. permission: 'M_storeTransferOutList',
  649. orderNum: 'storeCallOutWaitAuditCount'
  650. },
  651. {
  652. icon: require('@/assets/home-icon/home_icon_verify.png'),
  653. name: '调拨审核',
  654. styleC: 'blue-color',
  655. url: 'warehouseAllocationList',
  656. params: { state: 'WAIT_AUDIT' },
  657. permission: 'M_warehouseAllocationList',
  658. orderNum: 'alloWarehouseWaitAuditCount'
  659. },
  660. {
  661. icon: require('@/assets/home-icon/home_icon_verify.png'),
  662. name: '调出审核',
  663. styleC: 'blue-color',
  664. url: 'chainTransferOutList',
  665. params: { state: 'WAIT_AUDIT' },
  666. permission: 'M_chainTransferOutList',
  667. orderNum: 'alloLinkageOutWaitAuditCount'
  668. }
  669. ],
  670. [
  671. {
  672. icon: require('@/assets/home-icon/home_icon_stock.png'),
  673. name: '调出出库',
  674. styleC: 'red-color',
  675. url: 'outboundOrderList',
  676. params: { state: 'WAIT', outBizType: 'SHOP_CALL_OUT' },
  677. permission: 'M_outboundList',
  678. orderNum: 'storeCallOutWaitOutWarehouseCount'
  679. },
  680. {},
  681. {
  682. icon: require('@/assets/home-icon/home_icon_stock.png'),
  683. name: '调出出库',
  684. styleC: 'red-color',
  685. url: 'outboundOrderList',
  686. params: { state: 'WAIT', outBizType: 'LINKAGE_CALL_OUT' },
  687. permission: 'M_outboundList',
  688. orderNum: 'alloLinkageOutWaitOutWarehouseCount'
  689. }
  690. ],
  691. [
  692. {
  693. icon: require('@/assets/home-icon/home_icon_finance_payment.png'),
  694. name: '财务收款',
  695. styleC: 'blue-color',
  696. url: 'financialCollectionList',
  697. params: { bizType: 'STORE_CALL_OUT', billState: 'UNSETTLE' },
  698. permission: 'M_financialCollectionList',
  699. orderNum: 'storeCallOutFinancialWaitCount'
  700. },
  701. {},
  702. {}
  703. ]
  704. ]
  705. ],
  706. countData: null,
  707. bizData: null,
  708. dealerData: null,
  709. navFinancialList: [ // 财务指引
  710. [
  711. [
  712. {
  713. icon: require('@/assets/home-icon/home_icon_receivable.png'),
  714. name: '应收应付',
  715. styleC: 'blue-color',
  716. url: 'companyReceivablePayableList',
  717. permission: 'M_companyReceivablePayableList',
  718. orderNum: ''
  719. },
  720. {
  721. icon: require('@/assets/home-icon/home_icon_finance.png'),
  722. name: '财务收款',
  723. styleC: 'blue-color',
  724. url: 'financialCollectionList',
  725. params: { bizType: 'ALL' },
  726. permission: 'M_financialCollectionList',
  727. orderNum: ''
  728. }
  729. ],
  730. [
  731. {
  732. icon: require('@/assets/home-icon/home_icon_unit.png'),
  733. name: '收付款记录',
  734. styleC: 'blue-color',
  735. url: 'companyCollectionPaymentList',
  736. permission: 'M_companyCollectionPaymentList',
  737. orderNum: ''
  738. },
  739. {
  740. icon: require('@/assets/home-icon/home_icon_pay.png'),
  741. name: '财务付款',
  742. styleC: 'blue-color',
  743. url: 'financialPaymentList',
  744. params: { bizType: 'ALL' },
  745. permission: 'M_financialPaymentList',
  746. orderNum: ''
  747. }
  748. ]
  749. ]
  750. ],
  751. navOtherList: [ // 其他指引
  752. [
  753. [
  754. {
  755. icon: require('@/assets/home-icon/home_icon_stock s.png'),
  756. name: '实时库存',
  757. styleC: 'blue-color',
  758. url: 'inventoryQueryList',
  759. permission: 'M_inventoryInventoryQueryList',
  760. orderNum: ''
  761. }
  762. ],
  763. [
  764. {
  765. icon: require('@/assets/home-icon/home_icon_inventory.png'),
  766. name: '库存盘点',
  767. styleC: 'blue-color',
  768. url: 'inventoryCheckingList',
  769. permission: 'M_inventoryCheckingList',
  770. orderNum: ''
  771. }
  772. ]
  773. ]
  774. ]
  775. }
  776. },
  777. computed: {
  778. ...mapGetters(['mustChangePwd'])
  779. },
  780. watch: {
  781. hiddenBizData (newValue, oldValue) {
  782. if (!newValue) {
  783. this.getBizData()
  784. }
  785. }
  786. },
  787. methods: {
  788. ...mapActions(['getLookUpDataByCode']),
  789. hasNewProduct () {
  790. queryNewProductPage({ pageNo: 1, pageSize: 20, onlineFalg: this.onlineFalg }).then(res => {
  791. if (res.status == 200) {
  792. if (res.data.count > 0) {
  793. this.openNewProduct = true
  794. } else {
  795. if (this.onlineFalg == '1') {
  796. this.onlineFalg = '0'
  797. this.hasNewProduct()
  798. }
  799. }
  800. }
  801. })
  802. },
  803. // 查看更多产品
  804. seeMore () {
  805. this.openNewProduct = false
  806. if (this.onlineFalg == '1') { // 上线
  807. this.$router.push({ name: 'productOnlineInfo' })
  808. } else { // 下线
  809. this.$router.push({ name: 'newProductList', params: { onlineFalg: this.onlineFalg } })
  810. }
  811. },
  812. // 关闭弹框
  813. cancelProductTips () {
  814. const _this = this
  815. this.openNewProduct = false
  816. if (this.onlineFalg == '1') {
  817. this.onlineFalg = '0'
  818. setTimeout(() => { _this.hasNewProduct() }, 100)
  819. }
  820. },
  821. // 导航指引合计
  822. getNavCount () {
  823. this.spinning = true
  824. bizStateCount(this.queryParams).then(res => {
  825. if (res.status == 200) {
  826. this.countData = res.data
  827. } else {
  828. this.countData = null
  829. }
  830. this.spinning = false
  831. })
  832. },
  833. onDateChange (e) {
  834. console.log(e.target.value)
  835. const v = e.target.value
  836. if (v != 0) {
  837. this.queryParams.beginDate = getDate.getMonthDays(v).starttime
  838. this.queryParams.endDate = getDate.getMonthDays(v).endtime
  839. } else {
  840. this.queryParams.beginDate = undefined
  841. this.queryParams.endDate = undefined
  842. }
  843. this.getNavCount()
  844. },
  845. // 导航跳转
  846. goPage (data, subInd) {
  847. if (data) {
  848. let params = null
  849. // 有待办数据,则跳转带有条件的;若无待办数据,则跳转全部数据
  850. if (data.orderNum && this.countData[data.orderNum] || data.params) {
  851. data.params.beginDate = this.queryParams.beginDate
  852. data.params.endDate = this.queryParams.endDate
  853. params = { pageParams: data.params, type: 'todo' }
  854. } else {
  855. params = { pageParams: null, type: subInd == 1 ? 'new' : 'todo' }
  856. }
  857. this.setIsHomeNav(data.url, params)
  858. setTimeout(() => {
  859. this.$router.push({ name: data.url })
  860. }, 100)
  861. }
  862. },
  863. // 数据看板信息
  864. getBizData () {
  865. bizData({}).then(res => {
  866. if (res.status == 200) {
  867. this.bizData = res.data
  868. } else {
  869. this.bizData = null
  870. }
  871. })
  872. },
  873. // 商户信息
  874. getMerchantData () {
  875. dealerData({}).then(res => {
  876. if (res.status == 200) {
  877. this.dealerData = res.data
  878. } else {
  879. this.dealerData = null
  880. }
  881. })
  882. }
  883. },
  884. activated () {
  885. // 请求导航指引合计
  886. this.getNavCount()
  887. this.getMerchantData()
  888. },
  889. beforeRouteEnter (to, from, next) {
  890. next(vm => {
  891. // 判断登录用户是否重置过密码(首次登陆需强制重置密码)
  892. if (vm.mustChangePwd == 0) {
  893. vm.openResetPwd = false
  894. if (from.name == 'login') {
  895. // 判断是否有新产品上线
  896. vm.hasNewProduct()
  897. }
  898. } else {
  899. vm.openResetPwd = true
  900. }
  901. // 退货原因列表
  902. vm.getLookUpDataByCode({
  903. code: 'GOOD_PRODUCT_RETURN',
  904. key: 'goodReturnReason',
  905. isEnable: 1
  906. })
  907. vm.getLookUpDataByCode({
  908. code: 'DEFECTIVE_PRODUCT_RETURN',
  909. key: 'defectiveReturnReason',
  910. isEnable: 1
  911. })
  912. })
  913. }
  914. }
  915. </script>
  916. <style lang="less" scoped>
  917. .ant-card-body{
  918. padding: 17px 30px 20px;
  919. }
  920. .home {
  921. .page-cont{
  922. margin-bottom: 10px;
  923. // 客户信息
  924. .page-tit{
  925. color: #000000;
  926. font-size: 16px;
  927. font-weight: 500;
  928. margin-bottom: 18px;
  929. display: flex;
  930. justify-content: space-between;
  931. align-items: center;
  932. span{
  933. font-weight: bold;
  934. }
  935. }
  936. .page-list{
  937. list-style: none;
  938. margin: 0;
  939. padding: 0;
  940. li{
  941. display: inline-block;
  942. width: 25%;
  943. font-size: 14px;
  944. color: rgba(0, 0, 0);
  945. vertical-align: top;
  946. }
  947. }
  948. // 数据看板
  949. .page-data-module{
  950. display: flex;
  951. justify-content: space-between;
  952. align-items: center;
  953. .page-data-con{
  954. padding: 20px 30px;
  955. flex-grow: 1;
  956. .page-data-tit{
  957. font-size: 14px;
  958. color: rgba(0, 0, 0);
  959. margin: 0;
  960. }
  961. .page-data-num{
  962. font-size: 28px;
  963. font-family: PingFang SC;
  964. color: #000000;
  965. margin-bottom: 5px;
  966. display: flex;
  967. align-items: center;
  968. }
  969. .main-color{
  970. color: rgba(231, 0, 18, 1);
  971. }
  972. .page-data-item{
  973. display: flex;
  974. justify-content: space-between;
  975. align-items: center;
  976. margin-bottom: 3px;
  977. .page-data-itemText{
  978. font-size: 14px;
  979. color: rgba(0, 0, 0);
  980. display: flex;
  981. align-items: center;
  982. }
  983. }
  984. }
  985. .page-data-line{
  986. display: block;
  987. width: 1px;
  988. height: 76px;
  989. background-color: rgba(232, 232, 232, 1);
  990. }
  991. }
  992. // 操作导航引导
  993. .page-nav-con{
  994. display: flex;
  995. align-items: center;
  996. margin-bottom: 20px;
  997. padding-bottom: 20px;
  998. border-bottom: 1px solid #e8e8e8;
  999. &:last-child{
  1000. margin-bottom: 0px;
  1001. padding-bottom: 0px;
  1002. border-bottom: none;
  1003. }
  1004. .page-nav-box{
  1005. display: inline-block;
  1006. width: 20%;
  1007. .page-nav-badge{
  1008. width: 94%;
  1009. margin: 5px 0;
  1010. .page-nav-item{
  1011. border-radius: 8px;
  1012. display: flex;
  1013. justify-content: space-between;
  1014. align-items: center;
  1015. padding: 13px 10px;
  1016. &:hover{
  1017. opacity: 0.8;
  1018. transform:scale(0.98)
  1019. }
  1020. .page-nav-n{
  1021. img{
  1022. vertical-align: sub;
  1023. }
  1024. span{
  1025. color: rgba(0, 0, 0);
  1026. font-size: 14px;
  1027. padding-left: 5px;
  1028. }
  1029. }
  1030. }
  1031. .blue-color{
  1032. background-color: #EDF0F9;
  1033. }
  1034. .red-color{
  1035. background-color: #F8F1EF;
  1036. }
  1037. }
  1038. }
  1039. }
  1040. }
  1041. .right-con{
  1042. margin-left: 10px;
  1043. }
  1044. &.small{
  1045. .page-cont{
  1046. .page-tit,
  1047. .page-list li,
  1048. .page-nav-badge .page-nav-n span{
  1049. font-size: 14px!important;
  1050. }
  1051. }
  1052. .page-data-module{
  1053. .page-data-tit,
  1054. .page-data-itemText{
  1055. font-size: 14px!important;
  1056. }
  1057. }
  1058. }
  1059. &.middle{
  1060. .page-cont{
  1061. .page-tit,
  1062. .page-list li,
  1063. .page-nav-badge .page-nav-n span{
  1064. font-size: 14px!important;
  1065. }
  1066. }
  1067. .page-data-module{
  1068. .page-data-tit,
  1069. .page-data-itemText{
  1070. font-size: 14px!important;
  1071. }
  1072. }
  1073. }
  1074. &.large{
  1075. .page-cont{
  1076. .page-tit,
  1077. .page-list li,
  1078. .page-nav-badge .page-nav-n span{
  1079. font-size: 16px!important;
  1080. }
  1081. }
  1082. .page-data-module{
  1083. .page-data-tit,
  1084. .page-data-itemText{
  1085. font-size: 16px!important;
  1086. }
  1087. }
  1088. }
  1089. }
  1090. </style>