Home.vue 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031
  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">客户信息</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-card size="small" :bordered="false" class="page-cont" :bodyStyle="{padding: '17px 30px 20px'}">
  236. <h3 class="page-tit">销售/采购/调拨指引</h3>
  237. <div class="page-nav-main">
  238. <!-- 导航指引 start -->
  239. <div class="page-nav-con" v-for="(item, index) in navList" :key="index">
  240. <div class="page-nav-box" v-for="(subItem, subInd) in item" :key="subInd">
  241. <a-badge
  242. :count="countData&&unitItem.permission&&unitItem.orderNum&&$hasPermissions(unitItem.permission) ? countData[unitItem.orderNum] : 0"
  243. class="page-nav-badge"
  244. v-for="(unitItem, unitInd) in subItem"
  245. :key="unitInd"
  246. @click="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission) ? goPage(unitItem,subInd) : null"
  247. :style="{cursor: unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)?'pointer': 'initial'}">
  248. <div :class="['page-nav-item', unitItem.styleC]">
  249. <div class="page-nav-n">
  250. <img v-show="unitItem.icon" :src="unitItem.icon" width="16" height="16" />
  251. <span>{{ unitItem.name }}</span>
  252. </div>
  253. <a-icon type="caret-right" v-show="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)" style="color: #BBBBBB;" />
  254. </div>
  255. </a-badge>
  256. </div>
  257. </div>
  258. <!-- 导航指引 end -->
  259. </div>
  260. </a-card>
  261. </a-col>
  262. <a-col :span="8">
  263. <a-card size="small" :bordered="false" class="page-cont right-con" :bodyStyle="{padding: '17px 30px 20px'}">
  264. <h3 class="page-tit">财务指引</h3>
  265. <!-- 财务指引 start -->
  266. <div class="page-nav-con" v-for="(item, index) in navFinancialList" :key="index">
  267. <div class="page-nav-box" v-for="(subItem, subInd) in item" :key="subInd" style="width: 50%;">
  268. <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'}">
  269. <div :class="['page-nav-item', unitItem.styleC]">
  270. <div class="page-nav-n">
  271. <img v-show="unitItem.icon" :src="unitItem.icon" width="16" height="16" />
  272. <span>{{ unitItem.name }}</span>
  273. </div>
  274. <a-icon type="caret-right" v-show="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)" style="color: #BBBBBB;" />
  275. </div>
  276. </div>
  277. </div>
  278. </div>
  279. <!-- 财务指引 end -->
  280. </a-card>
  281. <a-card size="small" :bordered="false" class="page-cont right-con" :bodyStyle="{padding: '17px 30px 20px'}">
  282. <h3 class="page-tit">其他指引</h3>
  283. <!-- 其他指引 start -->
  284. <div class="page-nav-con" v-for="(item, index) in navOtherList" :key="index">
  285. <div class="page-nav-box" v-for="(subItem, subInd) in item" :key="subInd" style="width: 50%;">
  286. <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'}">
  287. <div :class="['page-nav-item', unitItem.styleC]">
  288. <div class="page-nav-n">
  289. <img v-show="unitItem.icon" :src="unitItem.icon" width="16" height="16" />
  290. <span>{{ unitItem.name }}</span>
  291. </div>
  292. <a-icon type="caret-right" v-show="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)" style="color: #BBBBBB;" />
  293. </div>
  294. </div>
  295. </div>
  296. </div>
  297. <!-- 其他指引 end -->
  298. </a-card>
  299. </a-col>
  300. </a-row>
  301. </div>
  302. <!-- 重置密码 -->
  303. <a-modal
  304. class="resetPwdModal"
  305. title="重置密码"
  306. width="60%"
  307. centered
  308. :footer="null"
  309. :closable="false"
  310. :maskClosable="false"
  311. :destroyOnClose="true"
  312. @cancel="openResetPwd=false"
  313. v-model="openResetPwd">
  314. <ResetPwd />
  315. </a-modal>
  316. <!-- 新产品上线提醒 -->
  317. <a-modal
  318. class="newProductTips"
  319. :title="'新产品'+(onlineFalg=='1'?'上':'下')+'线提醒'"
  320. :width="800"
  321. centered
  322. :footer="null"
  323. :maskClosable="false"
  324. :destroyOnClose="true"
  325. @cancel="cancelProductTips"
  326. v-model="openNewProduct">
  327. <newProduct :onlineFalg="onlineFalg" @seeMore="seeMore"></newProduct>
  328. </a-modal>
  329. </div>
  330. </template>
  331. <script>
  332. import { mixin, commonMixin } from '@/utils/mixin'
  333. import { mapGetters } from 'vuex'
  334. import ResetPwd from '@/views/user/ResetPwd.vue'
  335. import newProduct from '@/views/productManagement/newProduct/modal.vue'
  336. import { queryNewProductPage } from '@/api/product'
  337. import { bizStateCount, bizData, dealerData } from '@/api/data'
  338. export default {
  339. name: 'Home',
  340. components: { ResetPwd, newProduct },
  341. mixins: [mixin, commonMixin],
  342. data () {
  343. return {
  344. message: '欢迎登录' + process.env.VUE_APP_PRO_NAME,
  345. hiddenBizData: true, // 隐藏数据概览
  346. openResetPwd: false, // 重置密码是否显示
  347. openNewProduct: false,
  348. onlineFalg: '1', // 上下线标识 1为上线,0为下线
  349. navList: [
  350. [ // 客户
  351. [
  352. {
  353. icon: require('@/assets/home-icon/home_icon_customer.png'),
  354. name: '客户',
  355. styleC: 'blue-color',
  356. url: 'customerInfoList',
  357. permission: 'M_customerInfoList',
  358. orderNum: ''
  359. }
  360. ],
  361. [
  362. {
  363. icon: require('@/assets/home-icon/home_icon_billing.png'),
  364. name: '销售开单',
  365. styleC: 'red-color',
  366. url: 'salesQueryList',
  367. permission: 'M_salesQueryList',
  368. orderNum: ''
  369. },
  370. {
  371. icon: require('@/assets/home-icon/home_icon_return.png'),
  372. name: '销售退货',
  373. styleC: 'red-color',
  374. url: 'salesReturnList',
  375. permission: 'M_salesReturnList',
  376. orderNum: ''
  377. }
  378. ],
  379. [
  380. {
  381. icon: require('@/assets/home-icon/home_icon_verify.png'),
  382. name: '销售审核',
  383. styleC: 'blue-color',
  384. url: 'salesQueryList',
  385. params: { billStatus: 'WAIT_AUDIT' },
  386. permission: 'M_salesQueryList',
  387. orderNum: 'salesWaitAuditCount'
  388. },
  389. {
  390. icon: require('@/assets/home-icon/home_icon_verify.png'),
  391. name: '退货审核',
  392. styleC: 'blue-color',
  393. url: 'salesReturnList',
  394. params: { state: 'WAIT_AUDIT' },
  395. permission: 'M_salesReturnList',
  396. orderNum: 'salesReturnWaitAuditCount'
  397. }
  398. ],
  399. [
  400. {
  401. icon: require('@/assets/home-icon/home_icon_stock.png'),
  402. name: '销售出库',
  403. styleC: 'red-color',
  404. url: 'outboundOrderList',
  405. params: { state: 'WAIT', outBizType: 'SALES' },
  406. permission: 'M_outboundList',
  407. orderNum: 'salesWaitOutWarehouseCount'
  408. },
  409. {
  410. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  411. name: '财务付款',
  412. styleC: 'red-color',
  413. url: 'financialPaymentList',
  414. params: { bizType: 'SELL_REFUND', billState: 'UNSETTLE' },
  415. permission: 'M_financialPaymentList',
  416. orderNum: 'salesReturnFinancialWaitCount'
  417. }
  418. ],
  419. [
  420. {
  421. icon: require('@/assets/home-icon/home_icon_finance_payment.png'),
  422. name: '财务收款',
  423. styleC: 'blue-color',
  424. url: 'financialCollectionList',
  425. params: { bizType: 'SELL', billState: 'UNSETTLE' },
  426. permission: 'M_financialCollectionList',
  427. orderNum: 'salesFinancialWaitCount'
  428. },
  429. {}
  430. ]
  431. ],
  432. [ // 供应商(箭冠)
  433. [
  434. {
  435. icon: require('@/assets/home-icon/home_icon_supplier.png'),
  436. name: '供应商(箭冠)',
  437. styleC: 'blue-color',
  438. url: '',
  439. orderNum: ''
  440. }
  441. ],
  442. [
  443. {
  444. icon: require('@/assets/home-icon/home_icon_purchase_billing.png'),
  445. name: '采购开单',
  446. styleC: 'red-color',
  447. url: 'purchaseOrderList',
  448. permission: 'M_purchasingList',
  449. orderNum: ''
  450. },
  451. {
  452. icon: require('@/assets/home-icon/home_icon_purchase_return.png'),
  453. name: '采购退货',
  454. styleC: 'red-color',
  455. url: this.$hasPermissions('M_purchaseReturn_outSnycList') ? 'purchaseReturnOutSyncList' : 'purchaseReturnList',
  456. permission: this.$hasPermissions('M_purchaseReturn_outSnycList') ? 'M_purchaseReturn_outSnycList' : 'M_purchaseReturnList',
  457. orderNum: ''
  458. }
  459. ],
  460. [
  461. {
  462. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  463. name: '入库审核',
  464. styleC: 'blue-color',
  465. url: 'warehousingAuditList',
  466. params: { auditState: 'WAIT_PUT_WAREHOUSE_AUDIT' },
  467. permission: 'M_warehousingAuditList',
  468. orderNum: 'purchaseWaitAuditCount'
  469. },
  470. {
  471. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  472. name: '退货审核',
  473. styleC: 'blue-color',
  474. url: this.$hasPermissions('M_purchaseReturn_outSnycList') ? 'purchaseReturnOutSyncList' : 'purchaseReturnList',
  475. params: { state: 'WAIT_AUDIT' },
  476. permission: this.$hasPermissions('M_purchaseReturn_outSnycList') ? 'M_purchaseReturn_outSnycList' : 'M_purchaseReturnList',
  477. orderNum: 'purchaseReturnWaitAuditCount'
  478. }
  479. ],
  480. [
  481. {
  482. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  483. name: '财务付款',
  484. styleC: 'red-color',
  485. url: 'financialPaymentList',
  486. params: { bizType: 'PURCHASE', billState: 'UNSETTLE' },
  487. permission: 'M_financialPaymentList',
  488. orderNum: 'purchaseFinancialWaitCount'
  489. },
  490. {
  491. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  492. name: '财务收款',
  493. styleC: 'red-color',
  494. url: 'financialCollectionList',
  495. params: { bizType: 'PURCHASE_RETURN', billState: 'UNSETTLE' },
  496. permission: 'M_financialCollectionList',
  497. orderNum: 'purchaseReturnFinancialWaitCount'
  498. }
  499. ]
  500. ],
  501. [ // 供应商(其他)
  502. [
  503. {
  504. icon: require('@/assets/home-icon/home_icon_supplier.png'),
  505. name: '供应商(其他)',
  506. styleC: 'blue-color',
  507. url: 'supplierInfoList',
  508. permission: 'M_supplierInfoList',
  509. orderNum: ''
  510. }
  511. ],
  512. [
  513. {
  514. icon: require('@/assets/home-icon/home_icon_scatter_warehousing.png'),
  515. name: '散件入库',
  516. styleC: 'red-color',
  517. url: 'bulkWarehousingOrderList',
  518. permission: 'M_bulkWarehousingOrderList',
  519. orderNum: ''
  520. },
  521. {
  522. icon: require('@/assets/home-icon/home_icon_scatter_return.png'),
  523. name: '散件退货',
  524. styleC: 'red-color',
  525. url: 'bulkReturnGoodsList',
  526. permission: 'M_bulkReturnGoodsList',
  527. orderNum: ''
  528. }
  529. ],
  530. [
  531. {
  532. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  533. name: '待入库',
  534. styleC: 'blue-color',
  535. url: 'bulkWarehousingOrderList',
  536. params: { state: 'WAIT_PUT_WAREHOUSE' },
  537. permission: 'M_bulkWarehousingOrderList',
  538. orderNum: 'sparePartsPurchaseWaitAuditCount'
  539. },
  540. {
  541. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  542. name: '退货审核',
  543. styleC: 'blue-color',
  544. url: 'bulkReturnGoodsList',
  545. params: { state: 'WAIT_AUDIT' },
  546. permission: 'M_bulkReturnGoodsList',
  547. orderNum: 'sparePartsReturnWaitAuditCount'
  548. }
  549. ],
  550. [
  551. {
  552. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  553. name: '财务付款',
  554. styleC: 'red-color',
  555. url: 'financialPaymentList',
  556. params: { bizType: 'PARTS_INPUT', billState: 'UNSETTLE' },
  557. permission: 'M_financialPaymentList',
  558. orderNum: 'sparePartsPurchaseFinancialWaitCount'
  559. },
  560. {
  561. icon: require('@/assets/home-icon/home_icon_stock.png'),
  562. name: '待出库',
  563. styleC: 'red-color',
  564. url: 'bulkReturnGoodsList',
  565. params: { state: 'WAIT_OUT_WAREHOUSE' },
  566. permission: 'M_bulkReturnGoodsList',
  567. orderNum: 'sparePartsReturnWaitOutWarehouseCount'
  568. }
  569. ],
  570. [
  571. {},
  572. {
  573. icon: require('@/assets/home-icon/home_icon_finance_payment.png'),
  574. name: '财务收款',
  575. styleC: 'blue-color',
  576. url: 'financialCollectionList',
  577. params: { bizType: 'SPARE_PARTS_RETURN', billState: 'UNSETTLE' },
  578. permission: 'M_financialCollectionList',
  579. orderNum: 'sparePartsReturnFinancialWaitCount'
  580. }
  581. ]
  582. ],
  583. [ // 调拨
  584. [
  585. {
  586. icon: require('@/assets/home-icon/home_icon_transfer.png'),
  587. name: '调拨',
  588. styleC: 'blue-color',
  589. url: '',
  590. orderNum: ''
  591. }
  592. ],
  593. [
  594. {
  595. icon: require('@/assets/home-icon/home_icon_stor_out.png'),
  596. name: '店内调出',
  597. styleC: 'red-color',
  598. url: 'storeTransferOutList',
  599. permission: 'M_storeTransferOutList',
  600. orderNum: ''
  601. },
  602. {
  603. icon: require('@/assets/home-icon/home_icon_billing.png'),
  604. name: '仓库调拨',
  605. styleC: 'red-color',
  606. url: 'warehouseAllocationList',
  607. permission: 'M_warehouseAllocationList',
  608. orderNum: ''
  609. },
  610. {
  611. icon: require('@/assets/home-icon/home_icon_billing.png'),
  612. name: '连锁调出',
  613. styleC: 'red-color',
  614. url: 'chainTransferOutList',
  615. permission: 'M_chainTransferOutList',
  616. orderNum: ''
  617. }
  618. ],
  619. [
  620. {
  621. icon: require('@/assets/home-icon/home_icon_verify.png'),
  622. name: '调出审核',
  623. styleC: 'blue-color',
  624. url: 'storeTransferOutList',
  625. params: { state: 'WAIT_AUDIT' },
  626. permission: 'M_storeTransferOutList',
  627. orderNum: 'storeCallOutWaitAuditCount'
  628. },
  629. {
  630. icon: require('@/assets/home-icon/home_icon_verify.png'),
  631. name: '调拨审核',
  632. styleC: 'blue-color',
  633. url: 'warehouseAllocationList',
  634. params: { state: 'WAIT_AUDIT' },
  635. permission: 'M_warehouseAllocationList',
  636. orderNum: 'alloWarehouseWaitAuditCount'
  637. },
  638. {
  639. icon: require('@/assets/home-icon/home_icon_verify.png'),
  640. name: '调出审核',
  641. styleC: 'blue-color',
  642. url: 'chainTransferOutList',
  643. params: { state: 'WAIT_AUDIT' },
  644. permission: 'M_chainTransferOutList',
  645. orderNum: 'alloLinkageOutWaitAuditCount'
  646. }
  647. ],
  648. [
  649. {
  650. icon: require('@/assets/home-icon/home_icon_stock.png'),
  651. name: '调出出库',
  652. styleC: 'red-color',
  653. url: 'outboundOrderList',
  654. params: { state: 'WAIT', outBizType: 'SHOP_CALL_OUT' },
  655. permission: 'M_outboundList',
  656. orderNum: 'storeCallOutWaitOutWarehouseCount'
  657. },
  658. {},
  659. {
  660. icon: require('@/assets/home-icon/home_icon_stock.png'),
  661. name: '调出出库',
  662. styleC: 'red-color',
  663. url: 'outboundOrderList',
  664. params: { state: 'WAIT', outBizType: 'LINKAGE_CALL_OUT' },
  665. permission: 'M_outboundList',
  666. orderNum: 'alloLinkageOutWaitOutWarehouseCount'
  667. }
  668. ],
  669. [
  670. {
  671. icon: require('@/assets/home-icon/home_icon_finance_payment.png'),
  672. name: '财务收款',
  673. styleC: 'blue-color',
  674. url: 'financialCollectionList',
  675. params: { bizType: 'STORE_CALL_OUT', billState: 'UNSETTLE' },
  676. permission: 'M_financialCollectionList',
  677. orderNum: 'storeCallOutFinancialWaitCount'
  678. },
  679. {},
  680. {}
  681. ]
  682. ]
  683. ],
  684. countData: null,
  685. bizData: null,
  686. dealerData: null,
  687. navFinancialList: [ // 财务指引
  688. [
  689. [
  690. {
  691. icon: require('@/assets/home-icon/home_icon_receivable.png'),
  692. name: '应收应付',
  693. styleC: 'blue-color',
  694. url: 'companyReceivablePayableList',
  695. permission: 'M_companyReceivablePayableList',
  696. orderNum: ''
  697. },
  698. {
  699. icon: require('@/assets/home-icon/home_icon_finance.png'),
  700. name: '财务收款',
  701. styleC: 'blue-color',
  702. url: 'financialCollectionList',
  703. params: { bizType: 'ALL' },
  704. permission: 'M_financialCollectionList',
  705. orderNum: ''
  706. }
  707. ],
  708. [
  709. {
  710. icon: require('@/assets/home-icon/home_icon_unit.png'),
  711. name: '收付款记录',
  712. styleC: 'blue-color',
  713. url: 'companyCollectionPaymentList',
  714. permission: 'M_companyCollectionPaymentList',
  715. orderNum: ''
  716. },
  717. {
  718. icon: require('@/assets/home-icon/home_icon_pay.png'),
  719. name: '财务付款',
  720. styleC: 'blue-color',
  721. url: 'financialPaymentList',
  722. params: { bizType: 'ALL' },
  723. permission: 'M_financialPaymentList',
  724. orderNum: ''
  725. }
  726. ]
  727. ]
  728. ],
  729. navOtherList: [ // 其他指引
  730. [
  731. [
  732. {
  733. icon: require('@/assets/home-icon/home_icon_stock s.png'),
  734. name: '实时库存',
  735. styleC: 'blue-color',
  736. url: 'inventoryQueryList',
  737. permission: 'M_inventoryInventoryQueryList',
  738. orderNum: ''
  739. }
  740. ],
  741. [
  742. {
  743. icon: require('@/assets/home-icon/home_icon_inventory.png'),
  744. name: '库存盘点',
  745. styleC: 'blue-color',
  746. url: 'inventoryCheckingList',
  747. permission: 'M_inventoryCheckingList',
  748. orderNum: ''
  749. }
  750. ]
  751. ]
  752. ]
  753. }
  754. },
  755. computed: {
  756. ...mapGetters(['mustChangePwd'])
  757. },
  758. methods: {
  759. hasNewProduct () {
  760. queryNewProductPage({ pageNo: 1, pageSize: 20, onlineFalg: this.onlineFalg }).then(res => {
  761. if (res.status == 200) {
  762. if (res.data.count > 0) {
  763. this.openNewProduct = true
  764. } else {
  765. if (this.onlineFalg == '1') {
  766. this.onlineFalg = '0'
  767. this.hasNewProduct()
  768. }
  769. }
  770. }
  771. })
  772. },
  773. // 查看更多产品
  774. seeMore () {
  775. this.openNewProduct = false
  776. if (this.onlineFalg == '1') { // 上线
  777. this.$router.push({ name: 'productOnlineInfo' })
  778. } else { // 下线
  779. this.$router.push({ name: 'newProductList', params: { onlineFalg: this.onlineFalg } })
  780. }
  781. },
  782. // 关闭弹框
  783. cancelProductTips () {
  784. const _this = this
  785. this.openNewProduct = false
  786. if (this.onlineFalg == '1') {
  787. this.onlineFalg = '0'
  788. setTimeout(() => { _this.hasNewProduct() }, 100)
  789. }
  790. },
  791. // 导航指引合计
  792. getNavCount () {
  793. bizStateCount({}).then(res => {
  794. if (res.status == 200) {
  795. this.countData = res.data
  796. } else {
  797. this.countData = null
  798. }
  799. })
  800. },
  801. // 导航跳转
  802. goPage (data, subInd) {
  803. if (data) {
  804. let params = null
  805. // 有待办数据,则跳转带有条件的;若无待办数据,则跳转全部数据
  806. if (data.orderNum && this.countData[data.orderNum] || data.params) {
  807. params = { pageParams: data.params, type: 'todo' }
  808. } else {
  809. params = { pageParams: null, type: subInd == 1 ? 'new' : 'todo' }
  810. }
  811. this.setIsHomeNav(data.url, params)
  812. setTimeout(() => {
  813. this.$router.push({ name: data.url })
  814. }, 100)
  815. }
  816. },
  817. // 数据看板信息
  818. getBizData () {
  819. bizData({}).then(res => {
  820. if (res.status == 200) {
  821. this.bizData = res.data
  822. } else {
  823. this.bizData = null
  824. }
  825. })
  826. },
  827. // 商户信息
  828. getMerchantData () {
  829. dealerData({}).then(res => {
  830. if (res.status == 200) {
  831. this.dealerData = res.data
  832. } else {
  833. this.dealerData = null
  834. }
  835. })
  836. }
  837. },
  838. activated () {
  839. // 请求导航指引合计
  840. this.getNavCount()
  841. this.getBizData()
  842. this.getMerchantData()
  843. },
  844. beforeRouteEnter (to, from, next) {
  845. next(vm => {
  846. // 判断登录用户是否重置过密码(首次登陆需强制重置密码)
  847. if (vm.mustChangePwd == 0) {
  848. vm.openResetPwd = false
  849. if (from.name == 'login') {
  850. // 判断是否有新产品上线
  851. vm.hasNewProduct()
  852. }
  853. } else {
  854. vm.openResetPwd = true
  855. }
  856. })
  857. }
  858. }
  859. </script>
  860. <style lang="less" scoped>
  861. .ant-card-body{
  862. padding: 17px 30px 20px;
  863. }
  864. .home {
  865. .page-cont{
  866. margin-bottom: 10px;
  867. // 客户信息
  868. .page-tit{
  869. color: #000000;
  870. font-size: 16px;
  871. font-weight: 500;
  872. margin-bottom: 18px;
  873. }
  874. .page-list{
  875. list-style: none;
  876. margin: 0;
  877. padding: 0;
  878. li{
  879. display: inline-block;
  880. width: 25%;
  881. font-size: 14px;
  882. color: rgba(0, 0, 0);
  883. vertical-align: top;
  884. }
  885. }
  886. // 数据看板
  887. .page-data-module{
  888. display: flex;
  889. justify-content: space-between;
  890. align-items: center;
  891. .page-data-con{
  892. padding: 20px 30px;
  893. flex-grow: 1;
  894. .page-data-tit{
  895. font-size: 14px;
  896. color: rgba(0, 0, 0);
  897. margin: 0;
  898. }
  899. .page-data-num{
  900. font-size: 28px;
  901. font-family: PingFang SC;
  902. color: #000000;
  903. margin-bottom: 5px;
  904. display: flex;
  905. align-items: center;
  906. }
  907. .main-color{
  908. color: rgba(231, 0, 18, 1);
  909. }
  910. .page-data-item{
  911. display: flex;
  912. justify-content: space-between;
  913. align-items: center;
  914. margin-bottom: 3px;
  915. .page-data-itemText{
  916. font-size: 14px;
  917. color: rgba(0, 0, 0);
  918. display: flex;
  919. align-items: center;
  920. }
  921. }
  922. }
  923. .page-data-line{
  924. display: block;
  925. width: 1px;
  926. height: 76px;
  927. background-color: rgba(232, 232, 232, 1);
  928. }
  929. }
  930. // 操作导航引导
  931. .page-nav-con{
  932. display: flex;
  933. align-items: center;
  934. margin-bottom: 20px;
  935. padding-bottom: 20px;
  936. border-bottom: 1px solid #e8e8e8;
  937. &:last-child{
  938. margin-bottom: 0px;
  939. padding-bottom: 0px;
  940. border-bottom: none;
  941. }
  942. .page-nav-box{
  943. display: inline-block;
  944. width: 20%;
  945. .page-nav-badge{
  946. width: 94%;
  947. margin: 5px 0;
  948. .page-nav-item{
  949. border-radius: 8px;
  950. display: flex;
  951. justify-content: space-between;
  952. align-items: center;
  953. padding: 13px 10px;
  954. &:hover{
  955. opacity: 0.8;
  956. transform:scale(0.98)
  957. }
  958. .page-nav-n{
  959. img{
  960. vertical-align: sub;
  961. }
  962. span{
  963. color: rgba(0, 0, 0);
  964. font-size: 14px;
  965. padding-left: 5px;
  966. }
  967. }
  968. }
  969. .blue-color{
  970. background-color: #EDF0F9;
  971. }
  972. .red-color{
  973. background-color: #F8F1EF;
  974. }
  975. }
  976. }
  977. }
  978. }
  979. .right-con{
  980. margin-left: 10px;
  981. }
  982. &.small{
  983. .page-cont{
  984. .page-tit,
  985. .page-list li,
  986. .page-nav-badge .page-nav-n span{
  987. font-size: 14px!important;
  988. }
  989. }
  990. .page-data-module{
  991. .page-data-tit,
  992. .page-data-itemText{
  993. font-size: 14px!important;
  994. }
  995. }
  996. }
  997. &.middle{
  998. .page-cont{
  999. .page-tit,
  1000. .page-list li,
  1001. .page-nav-badge .page-nav-n span{
  1002. font-size: 14px!important;
  1003. }
  1004. }
  1005. .page-data-module{
  1006. .page-data-tit,
  1007. .page-data-itemText{
  1008. font-size: 14px!important;
  1009. }
  1010. }
  1011. }
  1012. &.large{
  1013. .page-cont{
  1014. .page-tit,
  1015. .page-list li,
  1016. .page-nav-badge .page-nav-n span{
  1017. font-size: 16px!important;
  1018. }
  1019. }
  1020. .page-data-module{
  1021. .page-data-tit,
  1022. .page-data-itemText{
  1023. font-size: 16px!important;
  1024. }
  1025. }
  1026. }
  1027. }
  1028. </style>