Home.vue 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867
  1. <template>
  2. <div class="home">
  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 v-if="$hasPermissions('M_homePage_data')" size="small" :bordered="false" class="page-cont" :bodyStyle="{padding: '0px'}">
  15. <a-row>
  16. <a-col :span="6">
  17. <div class="page-data-module">
  18. <div class="page-data-con">
  19. <p class="page-data-tit">今日总单量(个)/总销售金额(元)</p>
  20. <h3 class="page-data-num main-color">
  21. <a-statistic :valueStyle="{fontSize:'30px',color:'#e70012'}" :value="bizData&&bizData.sales&&(bizData.sales.dayTotalQty || bizData.sales.dayTotalQty==0) ? bizData.sales.dayTotalQty : 0" />
  22. /
  23. <a-statistic :precision="2" :valueStyle="{fontSize:'30px',color:'#e70012'}" :value="bizData&&bizData.sales&&(bizData.sales.dayTotalAmount || bizData.sales.dayTotalAmount==0) ? bizData.sales.dayTotalAmount : 0" />
  24. </h3>
  25. <p class="page-data-item">
  26. <span class="page-data-itemText">本周</span>
  27. <span class="page-data-itemText">
  28. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.sales&&(bizData.sales.weekSalesQty || bizData.sales.weekSalesQty==0) ? bizData.sales.weekSalesQty : 0" />
  29. /
  30. <a-statistic :valueStyle="{fontSize:'14px'}" :precision="2" :value="bizData&&bizData.sales&&(bizData.sales.weekSalesAmount || bizData.sales.weekSalesAmount==0) ? bizData.sales.weekSalesAmount : 0" />
  31. </span>
  32. </p>
  33. <p class="page-data-item">
  34. <span class="page-data-itemText">本月</span>
  35. <span class="page-data-itemText">
  36. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.sales&&(bizData.sales.monthSalesQty || bizData.sales.monthSalesQty==0) ? bizData.sales.monthSalesQty : 0" />
  37. /
  38. <a-statistic :valueStyle="{fontSize:'14px'}" :precision="2" :value="bizData&&bizData.sales&&(bizData.sales.monthSalesAmount || bizData.sales.monthSalesAmount==0) ? bizData.sales.monthSalesAmount : 0" />
  39. </span>
  40. </p>
  41. </div>
  42. <span class="page-data-line"></span>
  43. </div>
  44. </a-col>
  45. <a-col :span="6">
  46. <div class="page-data-module">
  47. <div class="page-data-con">
  48. <p class="page-data-tit">今日总采购单量(个)/总采购金额(元)</p>
  49. <h3 class="page-data-num">
  50. <a-statistic :valueStyle="{fontSize:'30px'}" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.dayTotalQty || bizData.purchaseBill.dayTotalQty==0) ? bizData.purchaseBill.dayTotalQty : 0" />
  51. /
  52. <a-statistic :precision="2" :valueStyle="{fontSize:'30px'}" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.dayDiscountedAmount || bizData.purchaseBill.dayDiscountedAmount==0) ? bizData.purchaseBill.dayDiscountedAmount : 0" />
  53. </h3>
  54. <p class="page-data-item">
  55. <span class="page-data-itemText">本周</span>
  56. <span class="page-data-itemText">
  57. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.weekPurchaseQty || bizData.purchaseBill.weekPurchaseQty==0) ? bizData.purchaseBill.weekPurchaseQty : 0" />
  58. /
  59. <a-statistic :valueStyle="{fontSize:'14px'}" :precision="2" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.weekDiscountedAmount || bizData.purchaseBill.weekDiscountedAmount==0) ? bizData.purchaseBill.weekDiscountedAmount : 0" />
  60. </span>
  61. </p>
  62. <p class="page-data-item">
  63. <span class="page-data-itemText">本月</span>
  64. <span class="page-data-itemText">
  65. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.monthPurchaseQty || bizData.purchaseBill.monthPurchaseQty==0) ? bizData.purchaseBill.monthPurchaseQty : 0" />
  66. /
  67. <a-statistic :valueStyle="{fontSize:'14px'}" :precision="2" :value="bizData&&bizData.purchaseBill&&(bizData.purchaseBill.monthDiscountedAmount || bizData.purchaseBill.monthDiscountedAmount==0) ? bizData.purchaseBill.monthDiscountedAmount : 0" />
  68. </span>
  69. </p>
  70. </div>
  71. <span class="page-data-line"></span>
  72. </div>
  73. </a-col>
  74. <a-col :span="6">
  75. <div class="page-data-module">
  76. <div class="page-data-con">
  77. <p class="page-data-tit">客户总数(个)</p>
  78. <h3 class="page-data-num">
  79. <a-statistic :valueStyle="{fontSize:'30px'}" :value="bizData&&bizData.customer&&(bizData.customer.custCount || bizData.customer.custCount==0) ? bizData.customer.custCount : 0 " />
  80. </h3>
  81. <p class="page-data-item">
  82. <span class="page-data-itemText">本周新增</span>
  83. <span class="page-data-itemText">
  84. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.customer&&(bizData.customer.addCurrentWeekCustCount || bizData.customer.addCurrentWeekCustCount==0) ? bizData.customer.addCurrentWeekCustCount : 0" />
  85. </span>
  86. </p>
  87. <p class="page-data-item">
  88. <span class="page-data-itemText">30天内采购客户</span>
  89. <span class="page-data-itemText">
  90. <a-statistic :valueStyle="{fontSize:'14px'}" :value="bizData&&bizData.customer&&(bizData.customer.salesThirtyDayCustCount || bizData.customer.salesThirtyDayCustCount==0) ? bizData.customer.salesThirtyDayCustCount : 0" />
  91. </span>
  92. </p>
  93. </div>
  94. <span class="page-data-line"></span>
  95. </div>
  96. </a-col>
  97. <a-col :span="6">
  98. <div class="page-data-module">
  99. <div class="page-data-con">
  100. <p class="page-data-tit">总库存(个)</p>
  101. <h3 class="page-data-num" style="line-height: 36px;">
  102. <a-statistic :valueStyle="{fontSize:'30px'}" :value="bizData&&bizData.stock&&(bizData.stock.totalCurrentStockQty || bizData.stock.totalCurrentStockQty==0) ? bizData.stock.totalCurrentStockQty : 0" />
  103. </h3>
  104. <p class="page-data-tit">库存总金额(元)</p>
  105. <h3 class="page-data-num" style="line-height: 36px;margin: 0;">
  106. <a-statistic :precision="2" :valueStyle="{fontSize:'30px'}" :value="bizData&&bizData.stock&&(bizData.stock.totalCurrentStockCost || bizData.stock.totalCurrentStockCost==0) ? bizData.stock.totalCurrentStockCost : 0" />
  107. </h3>
  108. </div>
  109. </div>
  110. </a-col>
  111. </a-row>
  112. </a-card>
  113. <div>
  114. <a-row>
  115. <a-col :span="16">
  116. <a-card size="small" :bordered="false" class="page-cont" :bodyStyle="{padding: '17px 30px 20px'}">
  117. <h3 class="page-tit">销售/采购/调拨指引</h3>
  118. <div class="page-nav-main">
  119. <!-- 导航指引 start -->
  120. <div class="page-nav-con" v-for="(item, index) in navList" :key="index">
  121. <div class="page-nav-box" v-for="(subItem, subInd) in item" :key="subInd">
  122. <a-badge
  123. :count="countData&&unitItem.permission&&unitItem.orderNum&&$hasPermissions(unitItem.permission) ? countData[unitItem.orderNum] : 0"
  124. class="page-nav-badge"
  125. v-for="(unitItem, unitInd) in subItem"
  126. :key="unitInd"
  127. @click="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission) ? goPage(unitItem) : null"
  128. :style="{cursor: unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)?'pointer': 'initial'}">
  129. <div :class="['page-nav-item', unitItem.styleC]">
  130. <div class="page-nav-n">
  131. <img v-show="unitItem.icon" :src="unitItem.icon" width="16" height="16" />
  132. <span>{{ unitItem.name }}</span>
  133. </div>
  134. <a-icon type="caret-right" v-show="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)" style="color: #BBBBBB;" />
  135. </div>
  136. </a-badge>
  137. </div>
  138. </div>
  139. <!-- 导航指引 end -->
  140. </div>
  141. </a-card>
  142. </a-col>
  143. <a-col :span="8">
  144. <a-card size="small" :bordered="false" class="page-cont right-con" :bodyStyle="{padding: '17px 30px 20px'}">
  145. <h3 class="page-tit">财务指引</h3>
  146. <!-- 财务指引 start -->
  147. <div class="page-nav-con" v-for="(item, index) in navFinancialList" :key="index">
  148. <div class="page-nav-box" v-for="(subItem, subInd) in item" :key="subInd" style="width: 50%;">
  149. <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'}">
  150. <div :class="['page-nav-item', unitItem.styleC]">
  151. <div class="page-nav-n">
  152. <img v-show="unitItem.icon" :src="unitItem.icon" width="16" height="16" />
  153. <span>{{ unitItem.name }}</span>
  154. </div>
  155. <a-icon type="caret-right" v-show="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)" style="color: #BBBBBB;" />
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. <!-- 财务指引 end -->
  161. </a-card>
  162. <a-card size="small" :bordered="false" class="page-cont right-con" :bodyStyle="{padding: '17px 30px 20px'}">
  163. <h3 class="page-tit">其他指引</h3>
  164. <!-- 其他指引 start -->
  165. <div class="page-nav-con" v-for="(item, index) in navOtherList" :key="index">
  166. <div class="page-nav-box" v-for="(subItem, subInd) in item" :key="subInd" style="width: 50%;">
  167. <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'}">
  168. <div :class="['page-nav-item', unitItem.styleC]">
  169. <div class="page-nav-n">
  170. <img v-show="unitItem.icon" :src="unitItem.icon" width="16" height="16" />
  171. <span>{{ unitItem.name }}</span>
  172. </div>
  173. <a-icon type="caret-right" v-show="unitItem.permission&&unitItem.url&&$hasPermissions(unitItem.permission)" style="color: #BBBBBB;" />
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. <!-- 其他指引 end -->
  179. </a-card>
  180. </a-col>
  181. </a-row>
  182. </div>
  183. <!-- 重置密码 -->
  184. <a-modal
  185. class="resetPwdModal"
  186. title="重置密码"
  187. width="60%"
  188. centered
  189. :footer="null"
  190. :closable="false"
  191. :maskClosable="false"
  192. :destroyOnClose="true"
  193. @cancel="openResetPwd=false"
  194. v-model="openResetPwd">
  195. <ResetPwd />
  196. </a-modal>
  197. <!-- 新产品上线提醒 -->
  198. <a-modal
  199. class="newProductTips"
  200. :title="'新产品'+(onlineFalg=='1'?'上':'下')+'线提醒'"
  201. :width="800"
  202. centered
  203. :footer="null"
  204. :maskClosable="false"
  205. :destroyOnClose="true"
  206. @cancel="cancelProductTips"
  207. v-model="openNewProduct">
  208. <newProduct :onlineFalg="onlineFalg" @seeMore="seeMore"></newProduct>
  209. </a-modal>
  210. </div>
  211. </template>
  212. <script>
  213. import { commonMixin } from '@/utils/mixin'
  214. import { mapGetters } from 'vuex'
  215. import ResetPwd from '@/views/user/ResetPwd.vue'
  216. import newProduct from '@/views/productManagement/newProduct/modal.vue'
  217. import { queryNewProductPage } from '@/api/product'
  218. import { bizStateCount, bizData, dealerData } from '@/api/data'
  219. export default {
  220. name: 'Home',
  221. components: { ResetPwd, newProduct },
  222. mixins: [commonMixin],
  223. data () {
  224. return {
  225. message: '欢迎登录' + process.env.VUE_APP_PRO_NAME,
  226. openResetPwd: false, // 重置密码是否显示
  227. openNewProduct: false,
  228. onlineFalg: '1', // 上下线标识 1为上线,0为下线
  229. navList: [
  230. [ // 客户
  231. [
  232. {
  233. icon: require('@/assets/home-icon/home_icon_customer.png'),
  234. name: '客户',
  235. styleC: 'blue-color',
  236. url: '/customerManagement/customerInfo/list',
  237. permission: 'M_customerInfoList',
  238. orderNum: ''
  239. }
  240. ],
  241. [
  242. {
  243. icon: require('@/assets/home-icon/home_icon_billing.png'),
  244. name: '销售开单',
  245. styleC: 'red-color',
  246. url: '/salesManagement/salesQuery/list',
  247. permission: 'M_salesQueryList',
  248. orderNum: ''
  249. },
  250. {
  251. icon: require('@/assets/home-icon/home_icon_return.png'),
  252. name: '销售退货',
  253. styleC: 'red-color',
  254. url: '/salesManagement/salesReturn/list',
  255. permission: 'M_salesReturnList',
  256. orderNum: ''
  257. }
  258. ],
  259. [
  260. {
  261. icon: require('@/assets/home-icon/home_icon_verify.png'),
  262. name: '销售审核',
  263. styleC: 'blue-color',
  264. url: '/salesManagement/salesQuery/list',
  265. params: { billStatus: 'WAIT_AUDIT' },
  266. permission: 'M_salesQueryList',
  267. orderNum: 'salesWaitAuditCount'
  268. },
  269. {
  270. icon: require('@/assets/home-icon/home_icon_verify.png'),
  271. name: '退货审核',
  272. styleC: 'blue-color',
  273. url: '/salesManagement/salesReturn/list',
  274. params: { state: 'WAIT_AUDIT' },
  275. permission: 'M_salesReturnList',
  276. orderNum: 'salesReturnWaitAuditCount'
  277. }
  278. ],
  279. [
  280. {
  281. icon: require('@/assets/home-icon/home_icon_stock.png'),
  282. name: '销售出库',
  283. styleC: 'red-color',
  284. url: '/outboundOrderManagement/outboundOrder/list',
  285. params: JSON.stringify({ state: 'WAIT', outBizType: 'SALES' }),
  286. permission: 'M_outboundList',
  287. orderNum: 'salesWaitOutWarehouseCount'
  288. },
  289. {
  290. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  291. name: '财务付款',
  292. styleC: 'red-color',
  293. url: '/financialManagement/financialPayment/list',
  294. params: JSON.stringify({ bizType: 'SELL_REFUND', billState: 'UNSETTLE' }),
  295. permission: 'M_financialPaymentList',
  296. orderNum: 'salesReturnFinancialWaitCount'
  297. }
  298. ],
  299. [
  300. {
  301. icon: require('@/assets/home-icon/home_icon_finance_payment.png'),
  302. name: '财务收款',
  303. styleC: 'blue-color',
  304. url: '/financialManagement/financialCollection/list',
  305. params: JSON.stringify({ bizType: 'SELL', billState: 'UNSETTLE' }),
  306. permission: 'M_financialCollectionList',
  307. orderNum: 'salesFinancialWaitCount'
  308. },
  309. {}
  310. ]
  311. ],
  312. [ // 供应商(箭冠)
  313. [
  314. {
  315. icon: require('@/assets/home-icon/home_icon_supplier.png'),
  316. name: '供应商(箭冠)',
  317. styleC: 'blue-color',
  318. url: '',
  319. orderNum: ''
  320. }
  321. ],
  322. [
  323. {
  324. icon: require('@/assets/home-icon/home_icon_purchase_billing.png'),
  325. name: '采购开单',
  326. styleC: 'red-color',
  327. url: '/purchasingManagement/purchaseOrder/list',
  328. permission: 'M_purchasingList',
  329. orderNum: ''
  330. },
  331. {
  332. icon: require('@/assets/home-icon/home_icon_purchase_return.png'),
  333. name: '采购退货',
  334. styleC: 'red-color',
  335. url: '/purchasingManagement/purchaseReturn/list',
  336. permission: 'M_purchaseReturnList',
  337. orderNum: ''
  338. }
  339. ],
  340. [
  341. {
  342. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  343. name: '入库审核',
  344. styleC: 'blue-color',
  345. url: '/financialManagement/warehousingAudit/list',
  346. params: { auditState: 'WAIT_PUT_WAREHOUSE_AUDIT' },
  347. permission: 'M_warehousingAuditList',
  348. orderNum: 'purchaseWaitAuditCount'
  349. },
  350. {
  351. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  352. name: '退货审核',
  353. styleC: 'blue-color',
  354. url: '/purchasingManagement/purchaseReturn/list',
  355. params: { state: 'WAIT_AUDIT' },
  356. permission: 'M_purchaseReturnList',
  357. orderNum: 'purchaseReturnWaitAuditCount'
  358. }
  359. ],
  360. [
  361. {
  362. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  363. name: '财务付款',
  364. styleC: 'red-color',
  365. url: '/financialManagement/financialPayment/list',
  366. params: JSON.stringify({ bizType: 'PURCHASE', billState: 'UNSETTLE' }),
  367. permission: 'M_financialPaymentList',
  368. orderNum: 'purchaseFinancialWaitCount'
  369. },
  370. {
  371. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  372. name: '财务收款',
  373. styleC: 'red-color',
  374. url: '/financialManagement/financialCollection/list',
  375. params: JSON.stringify({ bizType: 'PURCHASE_RETURN', billState: 'UNSETTLE' }),
  376. permission: 'M_financialCollectionList',
  377. orderNum: 'purchaseReturnFinancialWaitCount'
  378. }
  379. ]
  380. ],
  381. [ // 供应商(其他)
  382. [
  383. {
  384. icon: require('@/assets/home-icon/home_icon_supplier.png'),
  385. name: '供应商(其他)',
  386. styleC: 'blue-color',
  387. url: '/supplierManagement/supplierInfo/list',
  388. permission: 'M_supplierInfoList',
  389. orderNum: ''
  390. }
  391. ],
  392. [
  393. {
  394. icon: require('@/assets/home-icon/home_icon_scatter_warehousing.png'),
  395. name: '散件入库',
  396. styleC: 'red-color',
  397. url: '/bulkManagement/bulkWarehousingOrder/list',
  398. permission: 'M_bulkWarehousingOrderList',
  399. orderNum: ''
  400. },
  401. {
  402. icon: require('@/assets/home-icon/home_icon_scatter_return.png'),
  403. name: '散件退货',
  404. styleC: 'red-color',
  405. url: '/bulkManagement/bulkReturnGoods/list',
  406. permission: 'M_bulkReturnGoodsList',
  407. orderNum: ''
  408. }
  409. ],
  410. [
  411. {
  412. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  413. name: '待入库',
  414. styleC: 'blue-color',
  415. url: '/bulkManagement/bulkWarehousingOrder/list',
  416. params: { state: 'WAIT_PUT_WAREHOUSE' },
  417. permission: 'M_bulkWarehousingOrderList',
  418. orderNum: 'sparePartsPurchaseWaitAuditCount'
  419. },
  420. {
  421. icon: require('@/assets/home-icon/home_icon_verify_return.png'),
  422. name: '退货审核',
  423. styleC: 'blue-color',
  424. url: '/bulkManagement/bulkReturnGoods/list',
  425. params: { state: 'WAIT_AUDIT' },
  426. permission: 'M_bulkReturnGoodsList',
  427. orderNum: 'sparePartsReturnWaitAuditCount'
  428. }
  429. ],
  430. [
  431. {
  432. icon: require('@/assets/home-icon/home_icon_finance_pay.png'),
  433. name: '财务付款',
  434. styleC: 'red-color',
  435. url: '/financialManagement/financialPayment/list',
  436. params: JSON.stringify({ bizType: 'PARTS_INPUT', billState: 'UNSETTLE' }),
  437. permission: 'M_financialPaymentList',
  438. orderNum: 'sparePartsPurchaseFinancialWaitCount'
  439. },
  440. {
  441. icon: require('@/assets/home-icon/home_icon_stock.png'),
  442. name: '待出库',
  443. styleC: 'red-color',
  444. url: '/bulkManagement/bulkReturnGoods/list',
  445. params: { state: 'WAIT_OUT_WAREHOUSE' },
  446. permission: 'M_bulkReturnGoodsList',
  447. orderNum: 'sparePartsReturnWaitOutWarehouseCount'
  448. }
  449. ],
  450. [
  451. {},
  452. {
  453. icon: require('@/assets/home-icon/home_icon_finance_payment.png'),
  454. name: '财务收款',
  455. styleC: 'blue-color',
  456. url: '/financialManagement/financialCollection/list',
  457. params: JSON.stringify({ bizType: 'SPARE_PARTS_RETURN', billState: 'UNSETTLE' }),
  458. permission: 'M_financialCollectionList',
  459. orderNum: 'sparePartsReturnFinancialWaitCount'
  460. }
  461. ]
  462. ],
  463. [ // 调拨
  464. [
  465. {
  466. icon: require('@/assets/home-icon/home_icon_transfer.png'),
  467. name: '调拨',
  468. styleC: 'blue-color',
  469. url: '',
  470. orderNum: ''
  471. }
  472. ],
  473. [
  474. {
  475. icon: require('@/assets/home-icon/home_icon_stor_out.png'),
  476. name: '店内调出',
  477. styleC: 'red-color',
  478. url: '/allocationManagement/storeTransferOut/list',
  479. permission: 'M_storeTransferOutList',
  480. orderNum: ''
  481. },
  482. {
  483. icon: require('@/assets/home-icon/home_icon_billing.png'),
  484. name: '仓库调拨',
  485. styleC: 'red-color',
  486. url: '/allocationManagement/warehouseAllocation/list',
  487. permission: 'M_warehouseAllocationList',
  488. orderNum: ''
  489. },
  490. {
  491. icon: require('@/assets/home-icon/home_icon_billing.png'),
  492. name: '连锁调出',
  493. styleC: 'red-color',
  494. url: '/allocationManagement/chainTransferOut/list',
  495. permission: 'M_chainTransferOutList',
  496. orderNum: ''
  497. }
  498. ],
  499. [
  500. {
  501. icon: require('@/assets/home-icon/home_icon_verify.png'),
  502. name: '调出审核',
  503. styleC: 'blue-color',
  504. url: '/allocationManagement/storeTransferOut/list',
  505. params: { state: 'WAIT_AUDIT' },
  506. permission: 'M_storeTransferOutList',
  507. orderNum: 'storeCallOutWaitAuditCount'
  508. },
  509. {
  510. icon: require('@/assets/home-icon/home_icon_verify.png'),
  511. name: '调拨审核',
  512. styleC: 'blue-color',
  513. url: '/allocationManagement/warehouseAllocation/list',
  514. params: { state: 'WAIT_AUDIT' },
  515. permission: 'M_warehouseAllocationList',
  516. orderNum: 'alloWarehouseWaitAuditCount'
  517. },
  518. {
  519. icon: require('@/assets/home-icon/home_icon_verify.png'),
  520. name: '调出审核',
  521. styleC: 'blue-color',
  522. url: '/allocationManagement/chainTransferOut/list',
  523. params: { state: 'WAIT_AUDIT' },
  524. permission: 'M_chainTransferOutList',
  525. orderNum: 'alloLinkageOutWaitAuditCount'
  526. }
  527. ],
  528. [
  529. {
  530. icon: require('@/assets/home-icon/home_icon_stock.png'),
  531. name: '出库审核',
  532. styleC: 'red-color',
  533. url: '/outboundOrderManagement/outboundOrder/list',
  534. params: JSON.stringify({ state: 'WAIT', outBizType: 'SHOP_CALL_OUT' }),
  535. permission: 'M_outboundList',
  536. orderNum: 'storeCallOutWaitOutWarehouseCount'
  537. },
  538. {},
  539. {
  540. icon: require('@/assets/home-icon/home_icon_stock.png'),
  541. name: '出库审核',
  542. styleC: 'red-color',
  543. url: '/outboundOrderManagement/outboundOrder/list',
  544. params: JSON.stringify({ state: 'WAIT', outBizType: 'LINKAGE_CALL_OUT' }),
  545. permission: 'M_outboundList',
  546. orderNum: 'alloLinkageOutWaitOutWarehouseCount'
  547. }
  548. ],
  549. [
  550. {
  551. icon: require('@/assets/home-icon/home_icon_finance_payment.png'),
  552. name: '财务收款',
  553. styleC: 'blue-color',
  554. url: '/financialManagement/financialCollection/list',
  555. params: JSON.stringify({ bizType: 'STORE_CALL_OUT', billState: 'UNSETTLE' }),
  556. permission: 'M_financialCollectionList',
  557. orderNum: 'storeCallOutFinancialWaitCount'
  558. },
  559. {},
  560. {}
  561. ]
  562. ]
  563. ],
  564. countData: null,
  565. bizData: null,
  566. dealerData: null,
  567. navFinancialList: [ // 财务指引
  568. [
  569. [
  570. {
  571. icon: require('@/assets/home-icon/home_icon_receivable.png'),
  572. name: '应收应付',
  573. styleC: 'blue-color',
  574. url: '/financialManagement/companyReceivablePayable/list',
  575. permission: 'M_companyReceivablePayableList',
  576. orderNum: ''
  577. },
  578. {
  579. icon: require('@/assets/home-icon/home_icon_finance.png'),
  580. name: '财务收款',
  581. styleC: 'blue-color',
  582. url: '/financialManagement/financialCollection/list',
  583. params: JSON.stringify({ bizType: 'ALL' }),
  584. permission: 'M_financialCollectionList',
  585. orderNum: ''
  586. }
  587. ],
  588. [
  589. {
  590. icon: require('@/assets/home-icon/home_icon_unit.png'),
  591. name: '收付款记录',
  592. styleC: 'blue-color',
  593. url: '/financialManagement/companyCollectionPayment/list',
  594. permission: 'M_companyCollectionPaymentList',
  595. orderNum: ''
  596. },
  597. {
  598. icon: require('@/assets/home-icon/home_icon_pay.png'),
  599. name: '财务付款',
  600. styleC: 'blue-color',
  601. url: '/financialManagement/financialPayment/list',
  602. params: JSON.stringify({ bizType: 'ALL' }),
  603. permission: 'M_financialPaymentList',
  604. orderNum: ''
  605. }
  606. ]
  607. ]
  608. ],
  609. navOtherList: [ // 其他指引
  610. [
  611. [
  612. {
  613. icon: require('@/assets/home-icon/home_icon_stock s.png'),
  614. name: '实时库存',
  615. styleC: 'blue-color',
  616. url: '/inventoryManagement/inventoryQuery/list',
  617. permission: 'M_inventoryInventoryQueryList',
  618. orderNum: ''
  619. }
  620. ],
  621. [
  622. {
  623. icon: require('@/assets/home-icon/home_icon_inventory.png'),
  624. name: '库存盘点',
  625. styleC: 'blue-color',
  626. url: '/inventoryManagement/inventoryChecking/list',
  627. permission: 'M_inventoryCheckingList',
  628. orderNum: ''
  629. }
  630. ]
  631. ]
  632. ]
  633. }
  634. },
  635. computed: {
  636. ...mapGetters(['mustChangePwd'])
  637. },
  638. methods: {
  639. hasNewProduct () {
  640. queryNewProductPage({ pageNo: 1, pageSize: 20, onlineFalg: this.onlineFalg }).then(res => {
  641. if (res.status == 200) {
  642. if (res.data.count > 0) {
  643. this.openNewProduct = true
  644. } else {
  645. if (this.onlineFalg == '1') {
  646. this.onlineFalg = '0'
  647. this.hasNewProduct()
  648. }
  649. }
  650. }
  651. })
  652. },
  653. // 查看更多产品
  654. seeMore () {
  655. this.openNewProduct = false
  656. if (this.onlineFalg == '1') { // 上线
  657. this.$router.push({ path: '/productManagement/productOnlineInfo/list' })
  658. } else { // 下线
  659. this.$router.push({ name: 'newProductList', params: { onlineFalg: this.onlineFalg } })
  660. }
  661. },
  662. // 关闭弹框
  663. cancelProductTips () {
  664. const _this = this
  665. this.openNewProduct = false
  666. if (this.onlineFalg == '1') {
  667. this.onlineFalg = '0'
  668. setTimeout(() => { _this.hasNewProduct() }, 100)
  669. }
  670. },
  671. // 导航指引合计
  672. getNavCount () {
  673. bizStateCount({}).then(res => {
  674. if (res.status == 200) {
  675. this.countData = res.data
  676. } else {
  677. this.countData = null
  678. }
  679. })
  680. },
  681. // 导航跳转
  682. goPage (data) {
  683. if (data) {
  684. // 有待办数据,则跳转带有条件的;若无待办数据,则跳转全部数据
  685. if (data.orderNum && this.countData[data.orderNum]) {
  686. this.$router.push({ path: data.url, query: { pageParams: data.params ? data.params : null } })
  687. } else {
  688. if (data.url == '/outboundOrderManagement/outboundOrder/list') { // 出库
  689. const params = data.params ? JSON.parse(data.params) : null
  690. this.$router.push({ path: data.url, query: { pageParams: JSON.stringify({ outBizType: params && params.outBizType ? params.outBizType : null }) } })
  691. } else if (data.url == '/financialManagement/financialPayment/list') { // 财务付款
  692. const params = data.params ? JSON.parse(data.params) : null
  693. this.$router.push({ path: data.url, query: { pageParams: JSON.stringify({ bizType: params && params.bizType ? params.bizType : null }) } })
  694. } else if (data.url == '/financialManagement/financialCollection/list') { // 财务收款
  695. const params = data.params ? JSON.parse(data.params) : null
  696. this.$router.push({ path: data.url, query: { pageParams: JSON.stringify({ bizType: params && params.bizType ? params.bizType : null }) } })
  697. } else {
  698. this.$router.push({ path: data.url, query: { pageParams: null } })
  699. }
  700. }
  701. }
  702. },
  703. // 数据看板信息
  704. getBizData () {
  705. bizData({}).then(res => {
  706. if (res.status == 200) {
  707. this.bizData = res.data
  708. } else {
  709. this.bizData = null
  710. }
  711. })
  712. },
  713. // 商户信息
  714. getMerchantData () {
  715. dealerData({}).then(res => {
  716. if (res.status == 200) {
  717. this.dealerData = res.data
  718. } else {
  719. this.dealerData = null
  720. }
  721. })
  722. }
  723. },
  724. activated () {
  725. // 请求导航指引合计
  726. this.getNavCount()
  727. this.getBizData()
  728. this.getMerchantData()
  729. },
  730. beforeRouteEnter (to, from, next) {
  731. next(vm => {
  732. // 判断登录用户是否重置过密码(首次登陆需强制重置密码)
  733. if (vm.mustChangePwd == 0) {
  734. vm.openResetPwd = false
  735. if (from.name == 'login') {
  736. // 判断是否有新产品上线
  737. vm.hasNewProduct()
  738. }
  739. } else {
  740. vm.openResetPwd = true
  741. }
  742. })
  743. }
  744. }
  745. </script>
  746. <style lang="less" scoped>
  747. .ant-card-body{
  748. padding: 17px 30px 20px;
  749. }
  750. .home {
  751. .page-cont{
  752. margin-bottom: 10px;
  753. // 客户信息
  754. .page-tit{
  755. color: #000000;
  756. font-size: 16px;
  757. font-weight: 500;
  758. margin-bottom: 18px;
  759. }
  760. .page-list{
  761. list-style: none;
  762. margin: 0;
  763. padding: 0;
  764. li{
  765. display: inline-block;
  766. width: 25%;
  767. font-size: 14px;
  768. color: rgba(0, 0, 0);
  769. vertical-align: top;
  770. }
  771. }
  772. // 数据看板
  773. .page-data-module{
  774. display: flex;
  775. justify-content: space-between;
  776. align-items: center;
  777. .page-data-con{
  778. padding: 20px 30px;
  779. flex-grow: 1;
  780. .page-data-tit{
  781. font-size: 14px;
  782. color: rgba(0, 0, 0);
  783. margin: 0;
  784. }
  785. .page-data-num{
  786. font-size: 28px;
  787. font-family: PingFang SC;
  788. color: #000000;
  789. margin-bottom: 5px;
  790. display: flex;
  791. align-items: center;
  792. }
  793. .main-color{
  794. color: rgba(231, 0, 18, 1);
  795. }
  796. .page-data-item{
  797. display: flex;
  798. justify-content: space-between;
  799. align-items: center;
  800. margin-bottom: 3px;
  801. .page-data-itemText{
  802. font-size: 14px;
  803. color: rgba(0, 0, 0);
  804. display: flex;
  805. align-items: center;
  806. }
  807. }
  808. }
  809. .page-data-line{
  810. display: block;
  811. width: 1px;
  812. height: 76px;
  813. background-color: rgba(232, 232, 232, 1);
  814. }
  815. }
  816. // 操作导航引导
  817. .page-nav-con{
  818. display: flex;
  819. align-items: center;
  820. margin-bottom: 20px;
  821. padding-bottom: 20px;
  822. border-bottom: 1px solid #e8e8e8;
  823. &:last-child{
  824. margin-bottom: 0px;
  825. padding-bottom: 0px;
  826. border-bottom: none;
  827. }
  828. .page-nav-box{
  829. display: inline-block;
  830. width: 20%;
  831. .page-nav-badge{
  832. width: 94%;
  833. margin: 5px 0;
  834. .page-nav-item{
  835. border-radius: 8px;
  836. display: flex;
  837. justify-content: space-between;
  838. align-items: center;
  839. padding: 13px 10px;
  840. .page-nav-n{
  841. img{
  842. vertical-align: sub;
  843. }
  844. span{
  845. color: rgba(0, 0, 0);
  846. font-size: 14px;
  847. padding-left: 5px;
  848. }
  849. }
  850. }
  851. .blue-color{
  852. background-color: #EDF0F9;
  853. }
  854. .red-color{
  855. background-color: #F8F1EF;
  856. }
  857. }
  858. }
  859. }
  860. }
  861. .right-con{
  862. margin-left: 10px;
  863. }
  864. }
  865. </style>