canteenDialog.vue 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265
  1. <template>
  2. <div class="main-data dialog-canteen-area" @click.stop="preventDefault" @mouseleave="leaveFun">
  3. <div class="dialog-title">
  4. <img
  5. src="@/assets/images/main/cont_title_bg.png"
  6. />
  7. <div class="title">绿智食堂</div>
  8. </div>
  9. <div class="dialog-cont">
  10. <div class="dialog-left">
  11. <div class="dialog-list">
  12. <div class="dialog-item wid100">
  13. <div class="content-title">
  14. <span class="title">食堂概览</span>
  15. </div>
  16. <!-- <div class="choose-area">
  17. <el-select v-model="canteen" @visible-change="selectOP" @change="getCanteenScoreData" placeholder="请选择">
  18. <el-option
  19. v-for="item in canteens"
  20. :key="item"
  21. :label="item"
  22. :value="item"
  23. >
  24. </el-option>
  25. </el-select>
  26. </div> -->
  27. <div class="data-list">
  28. <div v-for="(item, index) in dataList" :key="index" :class="'data-item ' + (index===0 || index===4 ? 'wid80' : 'wid130')">
  29. <div class="data-fir">
  30. <img src="@/assets/images/service_new/img_1.png" class="icon" />
  31. <div class="name">{{item.name}}</div>
  32. </div>
  33. <div class="data-snd">
  34. <div class="num">{{item.data}}</div>
  35. <div class="unit">{{item.unit}}</div>
  36. </div>
  37. </div>
  38. </div>
  39. <div class="data-chart">
  40. <bar-chart
  41. :chart-data="peopleBarData"
  42. :x-axis="peopleBarAxis"
  43. :yAxis="peopleBarYAxis"
  44. y-color="#FFF"
  45. l-color="#FFF"
  46. width="515px"
  47. height="180px"
  48. />
  49. </div>
  50. </div>
  51. </div>
  52. <div class="dialog-list">
  53. <div class="dialog-item wid100">
  54. <div class="content-title">
  55. <span class="title">食堂服务满意度
  56. </span>
  57. </div>
  58. <div class="content">
  59. <div class="choose-area">
  60. <el-select v-model="canteen" @visible-change="selectOP" @change="getCanteenScoreData" placeholder="请选择">
  61. <el-option
  62. v-for="item in canteens"
  63. :key="item"
  64. :label="item"
  65. :value="item"
  66. >
  67. </el-option>
  68. </el-select>
  69. </div>
  70. <div style="height:20px;"></div>
  71. <bar-chart
  72. :chart-data="canteenScoreBarData"
  73. :x-axis="canteenScoreBarAxis"
  74. :y-axis="canteenScoreBarYaxis"
  75. y-color="#FFF"
  76. l-color="#FFF"
  77. width="515px"
  78. height="180px"
  79. />
  80. </div>
  81. </div>
  82. </div>
  83. <div class="dialog-list">
  84. <div class="dialog-item">
  85. <div class="content-title">
  86. <span class="title">各食堂满意度排名
  87. <el-tooltip class="item" effect="dark" content="分数相同按照食堂名称首字母排序" placement="top-start">
  88. <img src="@/assets/images/main/tips.png" class="tips" />
  89. </el-tooltip>
  90. </span>
  91. </div>
  92. <div class="content">
  93. <bar-chart
  94. :chart-data="canteenDegreeBarData"
  95. :x-axis="canteenDegreeBarAxis"
  96. :y-axis="canteenDegreeBarYaxis"
  97. y-color="#FFF"
  98. l-color="#FFF"
  99. width="220px"
  100. height="240px"
  101. />
  102. </div>
  103. </div>
  104. <div class="dialog-item">
  105. <div class="content-title">
  106. <span class="title">食堂服务人员情况
  107. <el-tooltip class="item" effect="dark" content="人数相同按照食堂名称首字母排序" placement="top-start">
  108. <img src="@/assets/images/main/tips.png" class="tips" />
  109. </el-tooltip>
  110. </span>
  111. </div>
  112. <div class="content">
  113. <bar-chart
  114. :chart-data="canteenTotalRankBarData"
  115. :x-axis="canteenTotalRankBarAxis"
  116. :y-axis="canteenTotalRankBarYaxis"
  117. :grid="barGrid" :legend="barLegend"
  118. y-color="#FFF"
  119. l-color="#FFF"
  120. width="220px"
  121. height="240px"
  122. />
  123. </div>
  124. </div>
  125. </div>
  126. <div class="dialog-list">
  127. <div class="dialog-item wid100">
  128. <div class="content-title">
  129. <span class="title">资质证件</span>
  130. </div>
  131. <div class="content">
  132. <div class="choose-area">
  133. <el-select v-model="canteen" @visible-change="selectOP" @change="getQualificationData" placeholder="请选择">
  134. <el-option
  135. v-for="item in canteens"
  136. :key="item"
  137. :label="item"
  138. :value="item"
  139. >
  140. </el-option>
  141. </el-select>
  142. </div>
  143. <div class="card-cont">
  144. <div class="card-list">
  145. <img src="@/assets/images/service_new/img_7.png" />
  146. <div class="card-info">
  147. <div class="name">{{healthNum.name}}</div>
  148. <div class="value">
  149. <div>{{healthNum.value}}</div>
  150. <div class="unit">个</div>
  151. </div>
  152. </div>
  153. </div>
  154. <div class="card-list">
  155. <img src="@/assets/images/service_new/img_8.png" />
  156. <div class="card-info">
  157. <div class="name">{{licenceNum.name}}</div>
  158. <div class="value">
  159. <div>{{licenceNum.value}}</div>
  160. <div class="unit">个</div>
  161. </div>
  162. </div>
  163. </div>
  164. </div>
  165. </div>
  166. </div>
  167. </div>
  168. <div class="dialog-list">
  169. <div class="dialog-item">
  170. <div class="content-title">
  171. <span class="title">菜品信息</span>
  172. </div>
  173. <div class="content">
  174. <div class="food-cont">
  175. <!-- <div class="food-list" @click="foodsClick(1)">
  176. <div class="value">
  177. <div>{{dailyMenu.value}}</div>
  178. <div class="unit">道</div>
  179. </div>
  180. <div class="name">{{dailyMenu.name}}</div>
  181. </div> -->
  182. <div class="food-list" @click="foodsClick(0)">
  183. <div class="value">
  184. <div>{{weeklyCuisine.value}}</div>
  185. <div class="unit">道</div>
  186. </div>
  187. <div class="name">{{weeklyCuisine.name}}</div>
  188. </div>
  189. </div>
  190. </div>
  191. </div>
  192. <div class="dialog-item">
  193. <div class="content-title">
  194. <span class="title">其他数据信息</span>
  195. </div>
  196. <div class="content">
  197. <div class="other-cont">
  198. <div class="other-list">
  199. <div class="value">
  200. <div>{{foodVoting.value}}</div>
  201. <div class="unit">人</div>
  202. </div>
  203. <div class="name">{{foodVoting.name}}</div>
  204. </div>
  205. <div class="other-list">
  206. <div class="value">
  207. <div>{{clearPlate.value}}</div>
  208. <div class="unit">人</div>
  209. </div>
  210. <div class="name">{{clearPlate.name}}</div>
  211. </div>
  212. <div class="other-list">
  213. <div class="value">
  214. <div>{{culinaryExchange.value}}</div>
  215. <div class="unit">条</div>
  216. </div>
  217. <div class="name">{{culinaryExchange.name}}</div>
  218. </div>
  219. </div>
  220. </div>
  221. </div>
  222. </div>
  223. </div>
  224. <div class="dialog-right">
  225. <div class="dialog-list">
  226. <div class="dialog-item wid100">
  227. <div class="content-title">
  228. <span class="title">食堂安全管理</span>
  229. </div>
  230. <div class="data-list">
  231. <div class="data-item">
  232. <div class="data-fir">
  233. <img src="@/assets/images/service_new/img_1.png" class="icon" />
  234. <div class="name">{{sample.name}}</div>
  235. </div>
  236. <div class="data-snd">
  237. <div class="num">{{sample.value}}</div>
  238. <div class="unit">个</div>
  239. </div>
  240. </div>
  241. <div class="data-item">
  242. <div class="data-fir">
  243. <img src="@/assets/images/service_new/img_1.png" class="icon" />
  244. <div class="name">{{positive.name}}</div>
  245. </div>
  246. <div class="data-snd">
  247. <div class="num">{{positive.value}}</div>
  248. <div class="unit">个</div>
  249. </div>
  250. </div>
  251. <div class="data-item">
  252. <div class="data-fir">
  253. <img src="@/assets/images/service_new/img_1.png" class="icon" />
  254. <div class="name">{{negative.name}}</div>
  255. </div>
  256. <div class="data-snd">
  257. <div class="num">{{negative.value}}</div>
  258. <div class="unit">个</div>
  259. </div>
  260. </div>
  261. </div>
  262. <div class="rate-area">
  263. <div class="rate-item">
  264. <img
  265. src="@/assets/images/main/rate_bg.png"
  266. class="icon"
  267. alt=""
  268. />
  269. <div class="rate">
  270. <div class="rate-data">
  271. <div class="data" v-if="ingredients.value < 100">{{ingredients.value}}</div>
  272. <div class="data" v-else style="color:#00FFFF;">{{ingredients.value}}</div>
  273. <div class="unit">%</div>
  274. </div>
  275. <div class="desc">{{ingredients.name}}</div>
  276. </div>
  277. </div>
  278. <div class="rate-item">
  279. <img
  280. src="@/assets/images/main/rate_bg.png"
  281. class="icon"
  282. alt=""
  283. />
  284. <div class="rate">
  285. <div class="rate-data">
  286. <div class="data" v-if="leaveSample.value < 100">{{leaveSample.value}}</div>
  287. <div class="data" v-else style="color:#00FFFF;">{{leaveSample.value}}</div>
  288. <div class="unit">%</div>
  289. </div>
  290. <div class="desc">{{leaveSample.name}}</div>
  291. </div>
  292. </div>
  293. </div>
  294. </div>
  295. </div>
  296. <div class="dialog-list">
  297. <!-- <div class="dialog-item">
  298. <div class="content-title">
  299. <div class="title">能耗信息(本月)</div>
  300. </div>
  301. <div class="content">
  302. <div
  303. class="energy-list"
  304. v-for="(item, index) in energyData"
  305. :key="index"
  306. >
  307. <img src="@/assets/images/main/data_bg3.png" class="icon" />
  308. <div class="energy-info">
  309. <div class="desc">{{ item.name }}</div>
  310. <div class="num-info">
  311. <div class="num">{{ item.data }}</div>
  312. <div v-if="Number(index) === 1" class="unit">KJ</div>
  313. <div v-else class="unit">m³</div>
  314. </div>
  315. </div>
  316. </div>
  317. </div>
  318. </div> -->
  319. <div class="dialog-item wid100">
  320. <div class="content-title">
  321. <span class="title">热销菜品排行</span>
  322. </div>
  323. <div class="content">
  324. <bar-chart
  325. :chart-data="foodsRankBarData"
  326. :x-axis="foodsRankBarAxis"
  327. position="left"
  328. :yAxis="{
  329. name: '受欢迎度(百分制)',
  330. nameTextStyle: {
  331. color: '#fff',
  332. padding: [0,0,0,20]
  333. },
  334. axisLabel: {
  335. color: 'white',
  336. },
  337. splitLine: {
  338. show: false,
  339. },
  340. axisLine: {
  341. show: false,
  342. },
  343. axisTick: {
  344. show: false,
  345. },
  346. splitArea: false,
  347. }"
  348. :grid="foodsRankBarGrid"
  349. :legend="foodsRankBarLegend"
  350. y-color="#FFF"
  351. l-color="#FFF"
  352. width="515px"
  353. height="200px"
  354. />
  355. </div>
  356. </div>
  357. </div>
  358. <div class="dialog-list">
  359. <div class="dialog-item">
  360. <div class="content-title">
  361. <div class="title">绿智食堂参评情况</div>
  362. </div>
  363. <div class="content">
  364. <div class="data-content">
  365. <div class="data-left">
  366. <div class="data-item">
  367. <div class="data-fir">
  368. <img src="@/assets/images/service_new/img_1.png" class="icon" />
  369. <div class="name">参评绿智食堂</div>
  370. </div>
  371. <div class="data-snd">
  372. <div class="num">{{participate.value}}</div>
  373. <div class="unit">个</div>
  374. </div>
  375. </div>
  376. <div class="data-item">
  377. <div class="data-fir">
  378. <img src="@/assets/images/service_new/img_1.png" class="icon" />
  379. <div class="name">已完成单位</div>
  380. </div>
  381. <div class="data-snd">
  382. <div class="num">{{completed.value}}</div>
  383. <div class="unit">个</div>
  384. </div>
  385. </div>
  386. </div>
  387. <div class="data-right">
  388. <el-progress
  389. type="circle"
  390. :width="112"
  391. :stroke-width="8"
  392. :percentage="rate.value"
  393. color="#00FFFF"
  394. style="color:rgba(0, 247, 255, 0.18);"
  395. ></el-progress>
  396. <div class="name">{{ rate.name }}</div>
  397. </div>
  398. </div>
  399. </div>
  400. </div>
  401. <div class="dialog-item">
  402. <div class="content-title">
  403. <span class="title">就餐人数</span>
  404. </div>
  405. <div class="content">
  406. <pie-chart
  407. position="left"
  408. :chart-data="diningPieData"
  409. :legend="diningPieLegend"
  410. :center="['35%','40%']"
  411. width="220px"
  412. height="180px"
  413. />
  414. </div>
  415. </div>
  416. </div>
  417. <div class="dialog-list">
  418. <div class="dialog-item">
  419. <div class="content-title">
  420. <div class="title">智慧食堂订单数量</div>
  421. </div>
  422. <div class="content">
  423. <pie-chart
  424. :center="['35%','40%']"
  425. :chart-data="canteenPieData"
  426. :legend="canteenPieLegend"
  427. width="220px"
  428. height="180px"
  429. />
  430. </div>
  431. </div>
  432. <div class="dialog-item">
  433. <div class="content-title">
  434. <span class="title">员工服务订单数量</span>
  435. </div>
  436. <div class="content">
  437. <pie-chart
  438. position="left"
  439. :chart-data="employeePieData"
  440. :legend="employeePieLegend"
  441. :center="['35%','40%']"
  442. width="220px"
  443. height="180px"
  444. />
  445. </div>
  446. </div>
  447. </div>
  448. <div class="dialog-list">
  449. <div class="dialog-item wid100">
  450. <div class="content-title">
  451. <span class="title">电子餐券</span>
  452. </div>
  453. <!-- <div class="choose-area">
  454. <el-select v-model="canteen" @visible-change="selectOP" @change="getCanteenScoreData" placeholder="请选择">
  455. <el-option
  456. v-for="item in canteens"
  457. :key="item"
  458. :label="item"
  459. :value="item"
  460. >
  461. </el-option>
  462. </el-select>
  463. </div> -->
  464. <div class="content">
  465. <!-- <div class="choose-area">-->
  466. <!-- <el-select v-model="canteen" @visible-change="selectOP" placeholder="请选择">-->
  467. <!-- <el-option-->
  468. <!-- v-for="item in canteens"-->
  469. <!-- :key="item"-->
  470. <!-- :label="item"-->
  471. <!-- :value="item"-->
  472. <!-- >-->
  473. <!-- </el-option>-->
  474. <!-- </el-select>-->
  475. <!-- </div>-->
  476. <bar-chart
  477. :chart-data="electronicVouchersBarData"
  478. :x-axis="electronicVouchersBarAxis"
  479. :yAxis="{
  480. name: '',
  481. nameTextStyle: {
  482. color: '#fff',
  483. padding: [0,20,0,0],
  484. fontSize:14
  485. },
  486. axisLabel: {
  487. color: 'white',
  488. },
  489. splitLine: {
  490. show: false,
  491. },
  492. axisLine: {
  493. show: false,
  494. },
  495. axisTick: {
  496. show: false,
  497. },
  498. splitArea: false,
  499. }"
  500. y-color="#FFF"
  501. l-color="#FFF"
  502. width="515px"
  503. height="180px"
  504. />
  505. </div>
  506. </div>
  507. </div>
  508. </div>
  509. </div>
  510. </div>
  511. </template>
  512. <script>
  513. import LineChart from "@/components/Echarts/LineChart";
  514. import PieChart from "@/components/Echarts/PieChart";
  515. import BarChart from "@/components/Echarts/BarChart.vue";
  516. import echarts from "echarts";
  517. import {
  518. getCanteenData,
  519. getCanteenScoreData,
  520. getCanteenStaff,
  521. getCanteenDegreeData,
  522. getQualificationData,
  523. getFoodData,
  524. getOtherData,
  525. getSafetyData,
  526. getFoodRankData,
  527. geParticipateData,
  528. getDiningPieData,
  529. getSmartCanteenPieData,
  530. getSmartEmployeePieData,
  531. getElectronicVouchersData,
  532. getCanteenNameList
  533. } from "@/api/screen/service";
  534. export default {
  535. name: "CanteenDialog",
  536. components: {
  537. BarChart,
  538. PieChart,
  539. LineChart,
  540. },
  541. props: {
  542. appOrg: {
  543. type: String,
  544. default: "0000",
  545. },
  546. },
  547. data() {
  548. return {
  549. select: 0,
  550. barYaxis: {
  551. type: "value",
  552. boundaryGap: [0, 0.01],
  553. name: '',
  554. nameTextStyle: {
  555. color: '#fff',
  556. },
  557. axisLine:{
  558. show:false
  559. },
  560. axisLabel: {
  561. color: "white", // 设置横坐标轴字体颜色为红色
  562. },
  563. splitLine: {
  564. show: false,
  565. },
  566. axisTick: {
  567. show: false,
  568. },
  569. splitArea:false
  570. },
  571. //食堂概况
  572. dataList: [],
  573. peopleBarData: [],
  574. peopleBarAxis: {},
  575. peopleBarYAxis: {},
  576. //食堂满意服务
  577. canteen: "",
  578. canteens: [],
  579. canteenScoreBarData: [],
  580. canteenScoreBarAxis: {},
  581. canteenScoreBarYaxis: {
  582. type: "value",
  583. boundaryGap: [0, 0.01],
  584. name:"",
  585. nameTextStyle: {
  586. color: "#fff",
  587. fontSize: 14,
  588. },
  589. axisLabel: {
  590. color: "white", // 设置纵坐标轴字体颜色为红色
  591. },
  592. splitLine: {
  593. show: false,
  594. },
  595. axisLine: {
  596. lineStyle: {
  597. color: "#0A7C80",
  598. },
  599. },
  600. splitArea: false,
  601. },
  602. //各食堂满意度排名
  603. canteenDegreeBarData: [],
  604. canteenDegreeBarAxis: {},
  605. canteenDegreeBarGrid: {
  606. top: 30,
  607. bottom: 0,
  608. left: "8%",
  609. right: "0%",
  610. containLabel: true,
  611. },
  612. canteenDegreeBarYaxis: {
  613. type: "value",
  614. boundaryGap: [0, 0.01],
  615. name:"",
  616. nameTextStyle: {
  617. color: "#fff",
  618. fontSize: 14,
  619. },
  620. axisLabel: {
  621. color: "white", // 设置横坐标轴字体颜色为红色
  622. },
  623. splitLine: {
  624. show: false,
  625. },
  626. axisLine: {
  627. lineStyle: {
  628. color: "#0A7C80",
  629. },
  630. },
  631. splitArea: false,
  632. },
  633. //各单位统计排行
  634. canteenTotalRankBarData: [],
  635. canteenTotalRankBarAxis: {},
  636. barGrid: {},
  637. barLegend: {},
  638. canteenTotalRankBarYaxis: {
  639. type: "value",
  640. boundaryGap: [0, 0.01],
  641. name:"",
  642. nameTextStyle: {
  643. color: "#fff",
  644. fontSize: 14,
  645. },
  646. axisLabel: {
  647. color: "white", // 设置横坐标轴字体颜色为红色
  648. },
  649. splitLine: {
  650. show: false,
  651. },
  652. axisLine: {
  653. lineStyle: {
  654. color: "#0A7C80",
  655. },
  656. },
  657. splitArea: false,
  658. },
  659. //资质证件
  660. healthNum: {},
  661. licenceNum: {},
  662. //菜品信息
  663. dailyMenu: {},
  664. weeklyCuisine: {},
  665. //其他数据信息
  666. clearPlate: {},
  667. culinaryExchange: {},
  668. foodVoting: {},
  669. //食堂安全管理
  670. negative: {},
  671. positive: {},
  672. sample: {},
  673. ingredients: {},
  674. leaveSample: {},
  675. //能耗信息
  676. energyData: [],
  677. //热销菜品
  678. foodsRankBarData: [],
  679. foodsRankBarAxis: {},
  680. foodsRankBarGrid: {},
  681. foodsRankBarLegend: {},
  682. //绿智食堂参评情况
  683. participate: {},
  684. completed: {},
  685. rate: {},
  686. //就餐情况
  687. diningPieData: [],
  688. diningPieLegend: {
  689. bottom: 70,
  690. orient: "vertical",
  691. right: 0,
  692. itemWidth: 8, // 设置图例标记的宽度
  693. itemHeight: 8, // 设置图例标记的高度
  694. textStyle: {
  695. color: "#FFF",
  696. },
  697. },
  698. //智慧食堂
  699. canteenPieData: [],
  700. canteenPieLegend: {
  701. top: 40,
  702. orient: "vertical",
  703. right: 0,
  704. itemWidth: 8, // 设置图例标记的宽度
  705. itemHeight: 8, // 设置图例标记的高度
  706. textStyle: {
  707. color: "#FFF",
  708. },
  709. },
  710. canteenPieCenter: ["50%", "50%"],
  711. //员工服务
  712. employeePieData: [],
  713. employeePieLegend: {
  714. top: 40,
  715. orient: "vertical",
  716. right: 0,
  717. itemWidth: 8, // 设置图例标记的宽度
  718. itemHeight: 8, // 设置图例标记的高度
  719. textStyle: {
  720. color: "#FFF",
  721. },
  722. },
  723. //电子餐券
  724. electronicVouchersBarData: [],
  725. electronicVouchersBarAxis: {},
  726. };
  727. },
  728. created() {
  729. //食堂列表
  730. this.getCanteenNameList();
  731. //食堂概况
  732. this.getCanteenData();
  733. //各食堂满意度排名
  734. this.getCanteenDegreeData();
  735. //食堂服务人员情况
  736. this.getCanteenStaff();
  737. //菜品信息
  738. this.getFoodData();
  739. //其他数据信息
  740. this.getOtherData();
  741. //食堂安全管理
  742. this.getSafetyData();
  743. //热销菜品排行
  744. this.getFoodRankData();
  745. //绿智食堂参评情况
  746. this.geParticipateData();
  747. //就餐情况
  748. this.getDiningPieData();
  749. //智慧食堂
  750. this.getSmartCanteenPieData();
  751. //员工服务
  752. this.getEmployeePieData();
  753. //电子餐券
  754. this.getElectronicVouchersData();
  755. },
  756. destroyed() {},
  757. beforeDestroy() {},
  758. mounted() {
  759. },
  760. methods: {
  761. // 下拉触发时间
  762. selectOP(value){
  763. if(value){
  764. this.select = 1;
  765. }else{
  766. this.select = 0;
  767. }
  768. console.log(value,"==================")
  769. },
  770. //获取食堂列表
  771. getCanteenNameList() {
  772. getCanteenNameList(this.$props.appOrg).then((res) => {
  773. if (Number(res.code) === 200) {
  774. let canteens = [];
  775. res.data.forEach((item)=>{
  776. canteens.push(item.canteenNum)
  777. })
  778. this.canteens = canteens;
  779. this.canteen = canteens[0];
  780. //食堂服务满意度
  781. this.getCanteenScoreData();
  782. //资质证件
  783. this.getQualificationData();
  784. }
  785. });
  786. },
  787. //获取数据概况
  788. getCanteenData() {
  789. getCanteenData(this.$props.appOrg).then((res) => {
  790. if (Number(res.code) === 200) {
  791. this.dataList = [{
  792. name: "食堂数量",
  793. data: res.data.canteenTotalNumber.value > 10000 ? parseFloat(res.data.canteenTotalNumber.value/10000).toFixed(2) : res.data.canteenTotalNumber.value,
  794. unit: res.data.canteenTotalNumber.value > 10000 ? "万个":'个'
  795. },{
  796. name:"自建食堂数量",
  797. data: res.data.selfCanteenNumber.value > 10000 ? parseFloat(res.data.selfCanteenNumber.value/10000).toFixed(2) : res.data.selfCanteenNumber.value,
  798. unit: res.data.selfCanteenNumber.value > 10000 ? "万个":'个'
  799. },{
  800. name:"外包食堂数量",
  801. data: res.data.outsourceCanteenNumber.value > 10000 ? parseFloat(res.data.outsourceCanteenNumber.value/10000).toFixed(2) : res.data.outsourceCanteenNumber.value,
  802. unit: res.data.outsourceCanteenNumber.value > 10000 ? "万个":'个'
  803. },{
  804. name:"座位数量",
  805. data: res.data.seatsNum.value > 10000 ? parseFloat(res.data.seatsNum.value/10000).toFixed(2) : res.data.seatsNum.value,
  806. unit: res.data.seatsNum.value > 10000 ? "万个":'个'
  807. },{
  808. name:"食堂面积",
  809. data: res.data.areaNum.value > 10000 ? parseFloat(res.data.areaNum.value/10000).toFixed(2) : res.data.areaNum.value,
  810. unit: res.data.areaNum.value > 10000 ? "万㎡":'㎡'
  811. },{
  812. name:"食堂证件上传数",
  813. data: res.data.licenceNum.value > 10000 ? parseFloat(res.data.licenceNum.value/10000).toFixed(2) : res.data.licenceNum.value,
  814. unit: res.data.licenceNum.value > 10000 ? "万个":'个'
  815. },
  816. {
  817. name:"健康证上传数",
  818. data: res.data.healthNum.value > 10000 ? parseFloat(res.data.healthNum.value/10000).toFixed(2) : res.data.healthNum.value,
  819. unit: res.data.healthNum.value > 10000 ? "万个":'个'
  820. },
  821. {
  822. name:"服务就餐人数",
  823. data: res.data.serviceDinersNum.value > 10000 ? parseFloat(res.data.serviceDinersNum.value/10000).toFixed(2) : res.data.serviceDinersNum.value,
  824. unit: res.data.serviceDinersNum.value > 10000 ? "万人":'人'
  825. }]
  826. this.peopleBarData = [
  827. {
  828. name: "",
  829. type: "bar",
  830. stack: "a",
  831. itemStyle: {
  832. color: "#1890FF",
  833. //barBorderRadius: [10, 10, 0, 0], // 统一设置四个角的圆角大小
  834. },
  835. barWidth: 10,
  836. data: [res.data.personnelNum.value, 0, 0 ,0],
  837. },
  838. {
  839. name: "",
  840. type: "bar",
  841. stack: "a",
  842. itemStyle: {
  843. color: "#00FF9D",
  844. //barBorderRadius: [10, 10, 0, 0], // 统一设置四个角的圆角大小
  845. },
  846. barWidth: 10,
  847. data: [0, res.data.serviceNum.value, 0, 0],
  848. },
  849. {
  850. name: "",
  851. type: "bar",
  852. stack: "a",
  853. itemStyle: {
  854. color: "#7565EF",
  855. //barBorderRadius: [10, 10, 0, 0], // 统一设置四个角的圆角大小
  856. },
  857. barWidth: 10,
  858. data: [0, 0, res.data.chefsNum.value, 0],
  859. },
  860. {
  861. name: "",
  862. type: "bar",
  863. stack: "a",
  864. itemStyle: {
  865. color: "#43DCDB",
  866. //barBorderRadius: [10, 10, 0, 0], // 统一设置四个角的圆角大小
  867. },
  868. barWidth: 10,
  869. data: [0, 0, 0, res.data.managementNum.value],
  870. },
  871. ];
  872. this.peopleBarAxis = {
  873. type: "value",
  874. boundaryGap: [0, 0.01],
  875. nameTextStyle: {
  876. color: "#fff",
  877. },
  878. axisLabel: {
  879. color: "white", // 设置横坐标轴字体颜色为红色
  880. },
  881. splitLine: {
  882. show: false,
  883. },
  884. axisTick: {
  885. show: false,
  886. },
  887. axisLine: {
  888. lineStyle: {
  889. color: "#0A7C80",
  890. },
  891. },
  892. splitArea: false,
  893. };
  894. this.peopleBarYAxis = {
  895. type: "category",
  896. data: ["其他人员", "服务人员", "厨师人数", "管理人员"],
  897. axisLabel: {
  898. color: "white", // 设置纵坐标轴字体颜色为红色
  899. },
  900. axisTick: {
  901. show: false,
  902. },
  903. splitArea: false,
  904. axisLine: {
  905. show: false,
  906. },
  907. };
  908. }
  909. });
  910. },
  911. //获取食堂服务满意度
  912. getCanteenScoreData() {
  913. getCanteenScoreData(this.$props.appOrg, this.canteen).then((res) => {
  914. if (Number(res.code) === 200) {
  915. let firData = [];
  916. let sndData = [];
  917. let thdData = [];
  918. let fouData = [];
  919. //菜品卫生
  920. if(res.data.dishScore.value >= 90){
  921. firData.push(res.data.dishScore.value);
  922. sndData.push(0);
  923. thdData.push(0);
  924. fouData.push(0);
  925. }
  926. else if(res.data.dishScore.value >= 70){
  927. sndData.push(res.data.dishScore.value);
  928. firData.push(0);
  929. thdData.push(0);
  930. fouData.push(0);
  931. }
  932. else if (res.data.dishScore.value >= 50){
  933. thdData.push(res.data.dishScore.value);
  934. firData.push(0);
  935. sndData.push(0);
  936. fouData.push(0);
  937. }
  938. else{
  939. fouData.push(res.data.dishScore.value);
  940. firData.push(0);
  941. sndData.push(0);
  942. thdData.push(0);
  943. }
  944. //菜品口味
  945. if(res.data.tasteScore.value >= 90){
  946. firData.push(res.data.tasteScore.value);
  947. sndData.push(0);
  948. thdData.push(0);
  949. fouData.push(0);
  950. }
  951. else if(res.data.tasteScore.value >= 70){
  952. sndData.push(res.data.tasteScore.value);
  953. firData.push(0);
  954. thdData.push(0);
  955. fouData.push(0);
  956. }
  957. else if (res.data.tasteScore.value >= 50){
  958. thdData.push(res.data.tasteScore.value);
  959. firData.push(0);
  960. sndData.push(0);
  961. fouData.push(0);
  962. }
  963. else{
  964. fouData.push(res.data.tasteScore.value);
  965. firData.push(0);
  966. sndData.push(0);
  967. thdData.push(0);
  968. }
  969. //服务态度
  970. if(res.data.attitudeScore.value >= 90){
  971. firData.push(res.data.attitudeScore.value);
  972. sndData.push(0);
  973. thdData.push(0);
  974. fouData.push(0);
  975. }
  976. else if(res.data.attitudeScore.value >= 70){
  977. sndData.push(res.data.attitudeScore.value);
  978. firData.push(0);
  979. thdData.push(0);
  980. fouData.push(0);
  981. }
  982. else if (res.data.attitudeScore.value >= 50){
  983. thdData.push(res.data.attitudeScore.value);
  984. firData.push(0);
  985. sndData.push(0);
  986. fouData.push(0);
  987. }
  988. else{
  989. fouData.push(res.data.attitudeScore.value);
  990. firData.push(0);
  991. sndData.push(0);
  992. thdData.push(0);
  993. }
  994. //餐具卫生
  995. if(res.data.tablewareScore.value >= 90){
  996. firData.push(res.data.tablewareScore.value);
  997. sndData.push(0);
  998. thdData.push(0);
  999. fouData.push(0);
  1000. }
  1001. else if(res.data.tablewareScore.value >= 70){
  1002. sndData.push(res.data.tablewareScore.value);
  1003. firData.push(0);
  1004. thdData.push(0);
  1005. fouData.push(0);
  1006. }
  1007. else if (res.data.tablewareScore.value >= 50){
  1008. thdData.push(res.data.tablewareScore.value);
  1009. firData.push(0);
  1010. sndData.push(0);
  1011. fouData.push(0);
  1012. }
  1013. else{
  1014. fouData.push(res.data.tablewareScore.value);
  1015. firData.push(0);
  1016. sndData.push(0);
  1017. thdData.push(0);
  1018. }
  1019. //菜品种类
  1020. if(res.data.typesScore.value >= 90){
  1021. firData.push(res.data.typesScore.value);
  1022. sndData.push(0);
  1023. thdData.push(0);
  1024. fouData.push(0);
  1025. }
  1026. else if(res.data.typesScore.value >= 70){
  1027. sndData.push(res.data.typesScore.value);
  1028. firData.push(0);
  1029. thdData.push(0);
  1030. fouData.push(0);
  1031. }
  1032. else if (res.data.typesScore.value >= 50){
  1033. thdData.push(res.data.typesScore.value);
  1034. firData.push(0);
  1035. sndData.push(0);
  1036. fouData.push(0);
  1037. }
  1038. else{
  1039. fouData.push(res.data.typesScore.value);
  1040. firData.push(0);
  1041. sndData.push(0);
  1042. thdData.push(0);
  1043. }
  1044. //就餐体验
  1045. if(res.data.diningScore.value >= 90){
  1046. firData.push(res.data.diningScore.value);
  1047. sndData.push(0);
  1048. thdData.push(0);
  1049. fouData.push(0);
  1050. }
  1051. else if(res.data.diningScore.value >= 70){
  1052. sndData.push(res.data.diningScore.value);
  1053. firData.push(0);
  1054. thdData.push(0);
  1055. fouData.push(0);
  1056. }
  1057. else if (res.data.diningScore.value >= 50){
  1058. thdData.push(res.data.diningScore.value);
  1059. firData.push(0);
  1060. sndData.push(0);
  1061. fouData.push(0);
  1062. }
  1063. else{
  1064. fouData.push(res.data.diningScore.value);
  1065. firData.push(0);
  1066. sndData.push(0);
  1067. thdData.push(0);
  1068. }
  1069. this.canteenScoreBarData = [
  1070. {
  1071. name: "非常满意",
  1072. type: "bar",
  1073. stack: "a",
  1074. itemStyle: {
  1075. color: "#00FF9D",
  1076. //barBorderRadius: [5, 5, 0, 0], // 统一设置四个角的圆角大小
  1077. },
  1078. barWidth: 30,
  1079. data: firData,
  1080. },
  1081. {
  1082. name: "满意",
  1083. type: "bar",
  1084. stack: "a",
  1085. itemStyle: {
  1086. color: "#43DCDB",
  1087. //barBorderRadius: [5, 5, 0, 0], // 统一设置四个角的圆角大小
  1088. },
  1089. barWidth: 30,
  1090. data: sndData,
  1091. },
  1092. {
  1093. name: "一般",
  1094. type: "bar",
  1095. stack: "a",
  1096. itemStyle: {
  1097. color: "#2F82FE",
  1098. //barBorderRadius: [5, 5, 0, 0], // 统一设置四个角的圆角大小
  1099. },
  1100. barWidth: 30,
  1101. data: thdData,
  1102. },
  1103. {
  1104. name: "不满意",
  1105. type: "bar",
  1106. stack: "a",
  1107. itemStyle: {
  1108. color: "#7565EF",
  1109. //barBorderRadius: [5, 5, 0, 0], // 统一设置四个角的圆角大小
  1110. },
  1111. barWidth: 30,
  1112. data: fouData,
  1113. },
  1114. ];
  1115. this.canteenScoreBarAxis = {
  1116. type: "category",
  1117. data: [res.data.dishScore.name, res.data.tasteScore.name, res.data.attitudeScore.name, res.data.tablewareScore.name, res.data.typesScore.name, res.data.diningScore.name],
  1118. axisLabel: {
  1119. color: "white", // 设置横坐标轴字体颜色为红色
  1120. rotate: 0,
  1121. },
  1122. axisTick: {
  1123. show: false,
  1124. },
  1125. axisLine: {
  1126. lineStyle: {
  1127. color: "#465A64",
  1128. },
  1129. },
  1130. };
  1131. }
  1132. });
  1133. },
  1134. //各食堂满意度排名
  1135. getCanteenDegreeData() {
  1136. getCanteenDegreeData(this.$props.appOrg).then((res) => {
  1137. if (Number(res.code) === 200) {
  1138. this.canteenDegreeBarData = [
  1139. {
  1140. name: "",
  1141. type: "bar",
  1142. stack: "a",
  1143. itemStyle: {
  1144. color: res.data.yData.color,
  1145. //barBorderRadius: [5, 5, 0, 0], // 统一设置四个角的圆角大小
  1146. },
  1147. barWidth: 20,
  1148. data: res.data.yData.yList,
  1149. },
  1150. ];
  1151. this.canteenDegreeBarAxis = {
  1152. type: "category",
  1153. data: res.data.xList,
  1154. axisLabel: {
  1155. interval: 0,
  1156. color: "white", // 设置横坐标轴字体颜色为红色
  1157. rotate: -20,
  1158. },
  1159. axisTick: {
  1160. show: false,
  1161. },
  1162. axisLine: {
  1163. lineStyle: {
  1164. color: "#465A64",
  1165. },
  1166. },
  1167. };
  1168. }
  1169. });
  1170. },
  1171. //食堂服务人员情况
  1172. getCanteenStaff() {
  1173. getCanteenStaff(this.$props.appOrg).then((res) => {
  1174. if (Number(res.code) === 200) {
  1175. this.canteenTotalRankBarData = [
  1176. {
  1177. name: "厨师",
  1178. type: "bar",
  1179. itemStyle: {
  1180. color: "#43DCDB",
  1181. //barBorderRadius: [10, 10, 0, 0], // 统一设置四个角的圆角大小
  1182. },
  1183. barWidth: 20,
  1184. data: [res.data[0].chefs],
  1185. },
  1186. {
  1187. name: "服务员",
  1188. type: "bar",
  1189. itemStyle: {
  1190. color: "#efb164",
  1191. //barBorderRadius: [10, 10, 0, 0], // 统一设置四个角的圆角大小
  1192. },
  1193. barWidth: 20,
  1194. data: [res.data[0].service],
  1195. },
  1196. ];
  1197. this.barGrid = {
  1198. top: 30,
  1199. bottom: 0,
  1200. left: "2%",
  1201. right: "2%",
  1202. containLabel: true,
  1203. };
  1204. this.barLegend = {
  1205. right: 0,
  1206. top: 0,
  1207. itemWidth: 17, // 设置图例标记的宽度
  1208. itemHeight: 10, // 设置图例标记的高度
  1209. textStyle: {
  1210. color: "#FFF",
  1211. },
  1212. };
  1213. this.canteenTotalRankBarAxis = {
  1214. type: "category",
  1215. data: [res.data[0].canteenName,],
  1216. axisLabel: {
  1217. color: "white", // 设置横坐标轴字体颜色为红色
  1218. rotate: -20,
  1219. },
  1220. axisTick: {
  1221. show: false,
  1222. },
  1223. axisLine: {
  1224. lineStyle: {
  1225. color: "#465A64",
  1226. },
  1227. },
  1228. };
  1229. }
  1230. });
  1231. },
  1232. //获取资质证件
  1233. getQualificationData() {
  1234. getQualificationData(this.$props.appOrg, this.canteen).then((res) => {
  1235. if (Number(res.code) === 200) {
  1236. this.healthNum = res.data.healthNum;
  1237. this.licenceNum = res.data.licenceNum;
  1238. }
  1239. });
  1240. },
  1241. //获取菜品信息
  1242. getFoodData() {
  1243. getFoodData(this.$props.appOrg).then((res) => {
  1244. if (Number(res.code) === 200) {
  1245. this.dailyMenu = res.data.dailyMenu;
  1246. this.weeklyCuisine = res.data.weeklyCuisine;
  1247. }
  1248. });
  1249. },
  1250. //其他数据信息
  1251. getOtherData() {
  1252. getOtherData(this.$props.appOrg).then((res) => {
  1253. if (Number(res.code) === 200) {
  1254. this.clearPlate = res.data.clearPlate;
  1255. this.culinaryExchange = res.data.culinaryExchange;
  1256. this.foodVoting = res.data.foodVoting;
  1257. }
  1258. });
  1259. },
  1260. //食堂安全管理
  1261. getSafetyData() {
  1262. getSafetyData(this.$props.appOrg).then((res) => {
  1263. if (Number(res.code) === 200) {
  1264. this.negative = res.data.negative;
  1265. this.positive = res.data.positive;
  1266. this.sample = res.data.sample;
  1267. this.ingredients = res.data.ingredients;
  1268. this.leaveSample = res.data.leaveSample;
  1269. }
  1270. });
  1271. },
  1272. //热销菜品排行
  1273. getFoodRankData() {
  1274. getFoodRankData(this.$props.appOrg).then((res) => {
  1275. if (Number(res.code) === 200) {
  1276. this.foodsRankBarData = [
  1277. {
  1278. name: "",
  1279. type: "bar",
  1280. stack: "a",
  1281. itemStyle: {
  1282. color: res.data.yData.color,
  1283. //barBorderRadius: [5, 5, 0, 0], // 统一设置四个角的圆角大小
  1284. },
  1285. barWidth: 20,
  1286. data: res.data.yData.yList,
  1287. },
  1288. ];
  1289. this.foodsRankBarAxis = {
  1290. type: "category",
  1291. data: res.data.xList,
  1292. axisLabel: {
  1293. interval: 0,
  1294. color: "white", // 设置横坐标轴字体颜色为红色
  1295. rotate: -20,
  1296. },
  1297. axisTick: {
  1298. show: false,
  1299. },
  1300. axisLine: {
  1301. lineStyle: {
  1302. color: "#465A64",
  1303. },
  1304. },
  1305. };
  1306. }
  1307. });
  1308. },
  1309. //绿智食堂参评情况
  1310. geParticipateData() {
  1311. geParticipateData(this.$props.appOrg).then((res) => {
  1312. if (Number(res.code) === 200) {
  1313. this.participate = res.data.participate;
  1314. this.completed = res.data.completed;
  1315. this.rate = res.data.rate;
  1316. }
  1317. });
  1318. },
  1319. //就餐情况
  1320. getDiningPieData() {
  1321. getDiningPieData(this.$props.appOrg).then((res) => {
  1322. if (Number(res.code) === 200) {
  1323. this.diningPieData = res.data;
  1324. }
  1325. });
  1326. },
  1327. //智慧食堂
  1328. getSmartCanteenPieData() {
  1329. getSmartCanteenPieData(this.$props.appOrg).then((res) => {
  1330. if (Number(res.code) === 200) {
  1331. this.canteenPieData = res.data;
  1332. }
  1333. });
  1334. },
  1335. //员工服务
  1336. getEmployeePieData() {
  1337. getSmartEmployeePieData(this.$props.appOrg).then((res) => {
  1338. if (Number(res.code) === 200) {
  1339. this.employeePieData = res.data;
  1340. }
  1341. });
  1342. },
  1343. //电子餐券
  1344. getElectronicVouchersData() {
  1345. getElectronicVouchersData(this.$props.appOrg).then((res) => {
  1346. if (Number(res.code) === 200) {
  1347. this.electronicVouchersBarData = [
  1348. {
  1349. name: "",
  1350. type: "bar",
  1351. stack: "a",
  1352. itemStyle: {
  1353. color: res.data.yData.color,
  1354. //barBorderRadius: [5, 5, 0, 0], // 统一设置四个角的圆角大小
  1355. },
  1356. barWidth: 30,
  1357. data: res.data.yData.yList,
  1358. },
  1359. ];
  1360. this.electronicVouchersBarAxis = {
  1361. type: "category",
  1362. data: res.data.xList,
  1363. axisLabel: {
  1364. color: "white", // 设置横坐标轴字体颜色为红色
  1365. rotate:0,
  1366. },
  1367. axisTick: {
  1368. show: false,
  1369. },
  1370. axisLine: {
  1371. lineStyle: {
  1372. color: "#465A64",
  1373. },
  1374. },
  1375. };
  1376. }
  1377. });
  1378. },
  1379. //点击菜谱
  1380. foodsClick(e){
  1381. this.$emit("foodsClick",e);
  1382. },
  1383. //鼠标移出
  1384. leaveFun(){
  1385. if(this.select === 1){
  1386. return
  1387. }
  1388. setTimeout(()=>{
  1389. this.$emit("closeDialog")
  1390. },200)
  1391. },
  1392. preventDefault() {
  1393. },
  1394. showContent(percent){
  1395. return percent;
  1396. }
  1397. },
  1398. };
  1399. </script>
  1400. <style lang="scss">
  1401. .dialog-canteen-area {
  1402. overflow: hidden;
  1403. width: 1125px;
  1404. height:1000px;
  1405. background: url("../../../assets/images/main/components_max_bg.png") no-repeat;
  1406. background-size: cover;
  1407. padding: 19px 15px 11px 15px;
  1408. .dialog-title {
  1409. display: flex;
  1410. flex-direction: row;
  1411. align-items: center;
  1412. justify-content: center;
  1413. position: relative;
  1414. margin-bottom: 10px;
  1415. img {
  1416. width: 284px;
  1417. height: 32px;
  1418. }
  1419. .title {
  1420. font-size: 20px;
  1421. font-weight: 900;
  1422. font-family: "PingFangSC";
  1423. width: 100%;
  1424. position: absolute;
  1425. display: flex;
  1426. align-items: center;
  1427. justify-content: center;
  1428. top: -5px;
  1429. color: #fff;
  1430. }
  1431. }
  1432. .dialog-cont {
  1433. width:100%;
  1434. height: 920px;
  1435. padding: 15px;
  1436. overflow-y: scroll;
  1437. background: url("../../../assets/images/main/components_max_cont.png") no-repeat;
  1438. background-size: 100% 100%;
  1439. .dialog-left{
  1440. width: 520px;
  1441. float: left;
  1442. }
  1443. .dialog-right{
  1444. width: 520px;
  1445. float: right;
  1446. }
  1447. }
  1448. .dialog-list {
  1449. width: 100%;
  1450. display: flex;
  1451. justify-content: space-between;
  1452. margin-bottom: 20px;
  1453. .dialog-item{
  1454. width: calc(50% - 20px);
  1455. }
  1456. .dialog-item-cont{
  1457. display: flex;
  1458. justify-content: center;
  1459. align-items: center;
  1460. margin-top:40px;
  1461. }
  1462. .wid100 {
  1463. width: 100%;
  1464. .content-title {
  1465. width: 100%;
  1466. background: url("../../../assets/images/main/title_pro_long.png") no-repeat;
  1467. }
  1468. }
  1469. }
  1470. .content-title {
  1471. width: 100%;
  1472. height: 26px;
  1473. background: url("../../../assets/images/main/title_pro.png") no-repeat;
  1474. background-size: 100% 100%;
  1475. font-family: "PingFangSC";
  1476. font-size: 16px;
  1477. font-weight: bold;
  1478. color: #00ffff;
  1479. padding-left: 25px;
  1480. .title {
  1481. display: block;
  1482. position: relative;
  1483. top:-5px;
  1484. }
  1485. }
  1486. .data-chart {
  1487. margin-top: 15px !important;
  1488. margin-bottom: 5px !important;
  1489. }
  1490. .data-list {
  1491. display: flex;
  1492. justify-content: space-between;
  1493. align-items: flex-start !important;
  1494. flex-wrap: wrap;
  1495. width: 100%;
  1496. .data-item.wid80 {
  1497. width:90px;
  1498. }
  1499. .data-item.wid130 {
  1500. width:130px;
  1501. }
  1502. .data-item{
  1503. width:150px;
  1504. border-right: 0 !important;
  1505. margin-top:25px;
  1506. .data-fir{
  1507. width:100%;
  1508. display: flex;
  1509. align-items: center;
  1510. .icon{
  1511. width: 15px;
  1512. height: 15px;
  1513. margin-right: 6px;
  1514. }
  1515. .name{
  1516. font-size: 14px;
  1517. color:#FFFFFF;
  1518. }
  1519. }
  1520. .data-snd{
  1521. width:100%;
  1522. display: flex;
  1523. align-items: baseline;
  1524. .num{
  1525. font-size: 36px;
  1526. color:#00FFFF;
  1527. font-family: 'electronicFont';
  1528. }
  1529. .unit{
  1530. font-size:12px;
  1531. color:#00FFFF;
  1532. font-weight: 500;
  1533. }
  1534. }
  1535. }
  1536. }
  1537. .choose-area {
  1538. width: 148px;
  1539. height: 30px;
  1540. line-height: 30px;
  1541. padding-left: 15px;
  1542. font-size: 14px;
  1543. color: #00ffff;
  1544. background: url("../../../assets/images/main/choose_bg4.png") no-repeat;
  1545. cursor: pointer;
  1546. .el-input {
  1547. input {
  1548. background: rgba(255, 255, 255, 0);
  1549. color: #00ffff;
  1550. border: none;
  1551. padding: 0;
  1552. }
  1553. }
  1554. }
  1555. .card-cont{
  1556. width:100%;
  1557. display: flex;
  1558. align-items: center;
  1559. padding-top: 20px;
  1560. padding-bottom: 10px;
  1561. .card-list{
  1562. width:50%;
  1563. display: flex;
  1564. align-items: center;
  1565. img{
  1566. width:70px;
  1567. height:70px;
  1568. }
  1569. .card-info{
  1570. padding-left:20px;
  1571. .name{
  1572. font-size:22px;
  1573. color:#FFFFFF;
  1574. font-weight: 500;
  1575. }
  1576. .value{
  1577. display: flex;
  1578. align-items: center;
  1579. color:#00FFFF;
  1580. font-size: 32px;
  1581. // font-weight: bold;
  1582. padding-top:5px;
  1583. // font-family: 'electronicFont';
  1584. .unit{
  1585. font-size:22px;
  1586. color:#FFFFFF;
  1587. font-weight: 500;
  1588. position: relative;
  1589. top:3px;
  1590. left:2px;
  1591. }
  1592. }
  1593. }
  1594. }
  1595. }
  1596. .food-cont{
  1597. width:100%;
  1598. padding:0 15px;
  1599. display: flex;
  1600. justify-content: center;
  1601. align-items: center;
  1602. .food-list{
  1603. display: flex;
  1604. flex-direction: column;
  1605. justify-content: center;
  1606. align-items: center;
  1607. cursor: pointer;
  1608. .value{
  1609. width:88.8px;
  1610. height:81.6px;
  1611. background: url("../../../assets/images/service_new/img_9.png") no-repeat;
  1612. background-size: cover;
  1613. display: flex;
  1614. justify-content: center;
  1615. align-items: center;
  1616. font-size:25px;
  1617. color:#00FFFF;
  1618. font-family: 'electronicFont';
  1619. padding-bottom: 18px;
  1620. .unit{
  1621. font-size:10px;
  1622. font-weight: 500;
  1623. position: relative;
  1624. top:3px;
  1625. left:2px;
  1626. }
  1627. }
  1628. .name{
  1629. width: 100%;
  1630. text-align: center;
  1631. font-size: 14px;
  1632. color: #FFFFFF;
  1633. font-weight: 500;
  1634. padding-top:4px;
  1635. }
  1636. }
  1637. }
  1638. .other-cont{
  1639. width:100%;
  1640. display: flex;
  1641. justify-content: space-between;
  1642. align-items: center;
  1643. .other-list{
  1644. display: flex;
  1645. flex-direction: column;
  1646. justify-content: center;
  1647. align-items: center;
  1648. .value{
  1649. width:68px;
  1650. height:68px;
  1651. background: url("../../../assets/images/service_new/img_10.png") no-repeat;
  1652. background-size: 100% 100%;
  1653. display: flex;
  1654. justify-content: center;
  1655. align-items: center;
  1656. font-size:25px;
  1657. color:#ffffff;
  1658. font-family: 'electronicFont';
  1659. .unit{
  1660. font-size:10px;
  1661. font-weight: 500;
  1662. position: relative;
  1663. top:3px;
  1664. left:2px;
  1665. }
  1666. }
  1667. .name{
  1668. width: 60px;
  1669. text-align: center;
  1670. font-size: 14px;
  1671. color: #FFFFFF;
  1672. font-weight: 500;
  1673. padding-top:4px;
  1674. }
  1675. }
  1676. }
  1677. .rate-area {
  1678. display: flex;
  1679. flex-direction: row;
  1680. justify-content: space-between;
  1681. margin-top: 20px;
  1682. .rate-item {
  1683. flex: 1;
  1684. position: relative;
  1685. }
  1686. img {
  1687. width: 237px;
  1688. height: 137px;
  1689. }
  1690. .rate {
  1691. display: flex;
  1692. flex-direction: column;
  1693. align-items: center;
  1694. justify-content: center;
  1695. width: 100%;
  1696. position: absolute;
  1697. top: 5px;
  1698. left: -5px;
  1699. color: #fff;
  1700. .rate-data {
  1701. display: flex;
  1702. flex-direction: row;
  1703. align-items: baseline;
  1704. color: #ffba44;
  1705. .data {
  1706. font-family: "electronicFont";
  1707. font-size: 30px;
  1708. }
  1709. .unit {
  1710. font-size: 12px;
  1711. }
  1712. }
  1713. .desc {
  1714. font-size: 12px;
  1715. width: 58px;
  1716. text-align: center;
  1717. }
  1718. }
  1719. }
  1720. .energy-list {
  1721. display: flex;
  1722. .icon {
  1723. display: block;
  1724. width: 70px;
  1725. height: auto;
  1726. }
  1727. .energy-info {
  1728. padding-left: 2px;
  1729. .desc {
  1730. font-size: 12px;
  1731. color: #ffffff;
  1732. font-weight: bold;
  1733. }
  1734. .num-info {
  1735. width: 100%;
  1736. padding-top: 2px;
  1737. display: flex;
  1738. align-items: center;
  1739. .num {
  1740. font-size: 30px;
  1741. color: #00FFFF;
  1742. font-weight: bold;
  1743. font-family: "electronicFont";
  1744. }
  1745. .unit {
  1746. font-size: 12px;
  1747. color: #00ffff;
  1748. font-weight: 500;
  1749. position: relative;
  1750. top: 4px;
  1751. }
  1752. .mar {
  1753. margin-left: 20px;
  1754. }
  1755. }
  1756. }
  1757. }
  1758. .data-content{
  1759. display: flex;
  1760. justify-content: space-between;
  1761. padding-top:10px;
  1762. .mar{
  1763. margin-bottom: 15px;
  1764. }
  1765. .data-left{
  1766. width: auto;
  1767. .data-item{
  1768. width:auto;
  1769. margin-bottom: 23px;
  1770. .data-fir{
  1771. display: flex;
  1772. align-items: center;
  1773. .icon{
  1774. width: 15px;
  1775. height: 15px;
  1776. margin-right: 6px;
  1777. }
  1778. .name{
  1779. font-size: 14px;
  1780. color:#FFFFFF;
  1781. }
  1782. }
  1783. .data-snd{
  1784. display: flex;
  1785. align-items: center;
  1786. padding-top:2px;
  1787. .num{
  1788. font-size: 32px;
  1789. color:#00FFFF;
  1790. font-family: 'electronicFont';
  1791. }
  1792. .unit{
  1793. font-size:12px;
  1794. color:#00FFFF;
  1795. font-weight: 500;
  1796. position: relative;
  1797. top:5px;
  1798. left:2px;
  1799. }
  1800. }
  1801. }
  1802. }
  1803. .data-right{
  1804. display: flex;
  1805. flex-direction: column;
  1806. justify-content: flex-start;
  1807. padding-top: 2px;
  1808. align-items: center;
  1809. .name{
  1810. width:75px;
  1811. font-size: 18px;
  1812. color:#FFFFFF;
  1813. font-family: 'fashionZh';
  1814. padding-top:10px;
  1815. text-align: center;
  1816. }
  1817. }
  1818. }
  1819. .content {
  1820. margin-top: 20px;
  1821. }
  1822. .camera-cont {
  1823. width: 100%;
  1824. display: flex;
  1825. justify-content: space-between;
  1826. align-items: center;
  1827. .camera-item {
  1828. display: flex;
  1829. flex-direction: column;
  1830. justify-content: center;
  1831. align-items: center;
  1832. position: relative;
  1833. cursor: pointer;
  1834. .num-info {
  1835. display: flex;
  1836. justify-content: center;
  1837. align-items: center;
  1838. .num {
  1839. font-size: 30px;
  1840. color: #00FFFF;
  1841. font-weight: bold;
  1842. font-family: "electronicFont";
  1843. padding-left: 4px;
  1844. }
  1845. .num2 {
  1846. font-size: 30px;
  1847. color: #00FFFF;
  1848. font-weight: bold;
  1849. font-family: "electronicFont";
  1850. padding-left: 4px;
  1851. }
  1852. .unit {
  1853. font-size: 12px;
  1854. color: #00ffff;
  1855. font-weight: 500;
  1856. position: relative;
  1857. top: 3px;
  1858. }
  1859. }
  1860. .num-info2{
  1861. position: absolute;
  1862. top: 15px;
  1863. .unit2{
  1864. color: #00ffff;
  1865. font-size: 12px;
  1866. }
  1867. }
  1868. .icon {
  1869. display: block;
  1870. width: 46px;
  1871. height: auto;
  1872. }
  1873. .icon2 {
  1874. display: block;
  1875. width: 101px;
  1876. height: auto;
  1877. }
  1878. .title {
  1879. font-size: 12px;
  1880. color: #ffffff;
  1881. margin-top: 6px;
  1882. font-weight: normal;
  1883. }
  1884. }
  1885. }
  1886. .camera-other {
  1887. position: relative;
  1888. .num-info {
  1889. position: absolute;
  1890. top: 0;
  1891. left: 0;
  1892. width: 67px;
  1893. height: 67px;
  1894. display: flex;
  1895. align-items: baseline;
  1896. justify-content: center;
  1897. color: #fff;
  1898. .num3 {
  1899. font-size: 30px;
  1900. color: #fff;
  1901. font-weight: bold;
  1902. font-family: "electronicFont";
  1903. }
  1904. .unit {
  1905. font-size: 12px;
  1906. color: #ffffff !important;
  1907. }
  1908. }
  1909. .icon2 {
  1910. width: 67px !important;
  1911. height: 67px !important;
  1912. }
  1913. .title {
  1914. width: 67px;
  1915. font-size: 12px;
  1916. color: #ffffff;
  1917. text-align: center;
  1918. }
  1919. }
  1920. .foods-item {
  1921. .icon2 {
  1922. display: block;
  1923. width: 74px !important;
  1924. height: auto;
  1925. }
  1926. }
  1927. .other-item {
  1928. .icon2 {
  1929. display: block;
  1930. width: 67px !important;
  1931. height: auto;
  1932. }
  1933. }
  1934. .order-type {
  1935. .camera-item {
  1936. position: relative;
  1937. .icon2 {
  1938. width: 112px !important;
  1939. }
  1940. .num-info {
  1941. position: absolute;
  1942. left: 0;
  1943. top: 0;
  1944. color: #00ffff;
  1945. .name {
  1946. font-size: 12px;
  1947. }
  1948. }
  1949. }
  1950. }
  1951. .use-energy {
  1952. width: 100%;
  1953. padding: 0 15px;
  1954. .use-energy-fir {
  1955. width: 100%;
  1956. display: flex;
  1957. align-items: center;
  1958. font-size: 14px;
  1959. color: #ffffff;
  1960. font-weight: 500;
  1961. .num {
  1962. font-weight: 900;
  1963. color: #00ffff;
  1964. padding: 0 8px;
  1965. }
  1966. }
  1967. .use-energy-snd {
  1968. width: 100%;
  1969. margin-top: 15px;
  1970. display: flex;
  1971. align-items: center;
  1972. .use-energy-snd-list {
  1973. display: flex;
  1974. align-items: center;
  1975. .icon {
  1976. display: block;
  1977. width: 34px;
  1978. height: 34px;
  1979. }
  1980. .use-energy-snd-info {
  1981. padding-left: 4px;
  1982. .desc {
  1983. font-size: 12px;
  1984. color: #ffffff;
  1985. }
  1986. .num-info {
  1987. display: flex;
  1988. align-items: center;
  1989. .num {
  1990. font-size: 24px;
  1991. color: #00FFFF;
  1992. font-weight: bold;
  1993. font-family: "electronicFont";
  1994. }
  1995. .unit {
  1996. font-size: 12px;
  1997. color: #00ffff;
  1998. font-weight: 500;
  1999. position: relative;
  2000. top: 4px;
  2001. left: 2px;
  2002. }
  2003. }
  2004. }
  2005. }
  2006. .use-energy-snd-list:last-child {
  2007. margin-left: 36px;
  2008. }
  2009. }
  2010. }
  2011. .list-area {
  2012. display: flex;
  2013. width: 90%;
  2014. flex-direction: column;
  2015. .list-item {
  2016. display: flex;
  2017. flex-direction: row;
  2018. align-items: center;
  2019. font-size: 12px;
  2020. color: #ffffff;
  2021. margin-bottom: 10px;
  2022. .item-1 {
  2023. width: 35%;
  2024. }
  2025. .item-2 {
  2026. flex: 1;
  2027. }
  2028. .item-3 {
  2029. width: 25%;
  2030. }
  2031. .cur {
  2032. color: #ff8c00;
  2033. }
  2034. }
  2035. .list-title {
  2036. color: #00ffff !important;
  2037. padding: 4px 0;
  2038. background: url("../../../assets/images/main/title_line.png") no-repeat;
  2039. background-size: 100% 100%;
  2040. margin-bottom: 10px !important;
  2041. }
  2042. }
  2043. .canteen-data {
  2044. .data-item {
  2045. margin-bottom: 20px;
  2046. border: none !important;
  2047. }
  2048. }
  2049. .tips{
  2050. width: 12px;
  2051. height: 12px;
  2052. /* margin: 0 0 -4px 10px; */
  2053. position: relative;
  2054. top: -7px;
  2055. left: 1px;
  2056. }
  2057. .case-area {
  2058. background: url("../../../assets/images/main/data_bg6.png") no-repeat;
  2059. background-size: 100% 100%;
  2060. padding: 16px 38px 20px;
  2061. .img-area {
  2062. position: relative;
  2063. img {
  2064. width: 151px;
  2065. }
  2066. span {
  2067. position: absolute;
  2068. left: 0;
  2069. bottom: 0;
  2070. width: 100;
  2071. padding: 4px 8px;
  2072. background: rgba(0, 0, 0, 0.3);
  2073. font-size: 12px;
  2074. color: #fff;
  2075. }
  2076. }
  2077. .data-item {
  2078. border: none !important;
  2079. img {
  2080. width: 50px;
  2081. margin-top: -10px;
  2082. }
  2083. .desc {
  2084. font-size: 12px;
  2085. color: #ffffff;
  2086. }
  2087. }
  2088. }
  2089. .el-progress--circle .el-progress__text, .el-progress--dashboard .el-progress__text{
  2090. color: #FFFFFF !important;
  2091. font-family: "fashionZh" !important;
  2092. font-size: 20px !important;
  2093. }
  2094. ::-webkit-scrollbar {
  2095. display: none;
  2096. width: 3px;
  2097. height: 3px;
  2098. }
  2099. ::-webkit-scrollbar-thumb {
  2100. //滑块部分
  2101. // border-radius: 5px;
  2102. background-color: #58cbbb;
  2103. }
  2104. ::-webkit-scrollbar-track {
  2105. //轨道部分
  2106. // box-shadow: inset 0 0 5px #ddd;
  2107. background: #ddd;
  2108. // border-radius: 5px;
  2109. }
  2110. }
  2111. </style>