index.vue 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. <template>
  2. <div class="page_homeIndex">
  3. <van-sticky>
  4. <div class="homeTitle">
  5. <div
  6. class="homeTitleLeft"
  7. style="visibility: hidden"
  8. v-if="isCreateOrg == false"
  9. >
  10. <van-dropdown-menu>
  11. <van-dropdown-item
  12. @change="changeOrg"
  13. v-model="value1"
  14. :options="org_arr"
  15. />
  16. </van-dropdown-menu>
  17. </div>
  18. <div class="homeTitleLeft" v-if="isCreateOrg == true">
  19. <van-dropdown-menu>
  20. <van-dropdown-item
  21. @change="changeOrg"
  22. v-model="value1"
  23. :options="org_arr"
  24. />
  25. </van-dropdown-menu>
  26. </div>
  27. <div class="homeTitleRight">
  28. <i class="iconfont icon-sousuo search1" @click="toSearch"></i>
  29. <!--<van-icon class="iconOne" name="comment-o"/>-->
  30. <van-icon name="plus" class="iconOne" @click="toCreateOrg" />
  31. </div>
  32. </div>
  33. </van-sticky>
  34. <div class="banner">
  35. <van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
  36. <van-swipe-item
  37. v-for="(banner, index) in this.banners"
  38. @click="jump(banner.url)"
  39. :key="index"
  40. >
  41. <img :src="banner.thumb" alt />
  42. </van-swipe-item>
  43. </van-swipe>
  44. </div>
  45. <van-overlay :show="show" @click="show = false">
  46. <div class="arrowBox">
  47. <img src="../../assets/images/toparrow.png" alt />
  48. </div>
  49. <div class="signBox">
  50. <p>请点击右上角“+”图标</p>
  51. <p style="color:#1989fa">创建自己的医院/组织/团队</p>
  52. </div>
  53. </van-overlay>
  54. <!--<div class="noticeBox">-->
  55. <!--<i class="iconfont icon-public-notice notice"></i>-->
  56. <!--<div class="noticeNews">-->
  57. <!--<div>-->
  58. <!--今日上机:-->
  59. <!--<span>6&ensp;人</span>-->
  60. <!--</div>-->
  61. <!--<div>-->
  62. <!--今日透析:-->
  63. <!--<span>6&ensp;人</span>-->
  64. <!--</div>-->
  65. <!--<div>-->
  66. <!--今日生日:-->
  67. <!--<span>6&ensp;人</span>-->
  68. <!--</div>-->
  69. <!--</div>-->
  70. <!--</div>-->
  71. <div class="background1"></div>
  72. <div
  73. class="management"
  74. v-if="
  75. this.$store.getters.user.admin.id ==
  76. this.$store.getters.user.org.creator && this.isCreateOrg
  77. "
  78. >
  79. <div class="managementTitle">
  80. <div class="managementName">
  81. 管理控制台
  82. <span>(仅管理员可见)</span>
  83. </div>
  84. <div class="setting" @click="toConsole()">
  85. <van-icon name="setting-o" />管理
  86. </div>
  87. </div>
  88. <div class="managementBox">
  89. <div class="managementOne" @click="toStaffManage()">
  90. <img src="../../assets/images/M1.png" alt />员工管理
  91. </div>
  92. <div class="managementOne" @click="toRoleManage()">
  93. <img src="../../assets/images/M2.png" alt />权限管理
  94. </div>
  95. <div class="managementOne" @click="toConfigCenter()">
  96. <img src="../../assets/images/M3.png" alt />配置中心
  97. </div>
  98. <div class="managementOne" @click="toOrgSetting()">
  99. <img src="../../assets/images/M4.png" alt />机构设置
  100. </div>
  101. </div>
  102. </div>
  103. <div class="management" v-if="!this.isCreateOrg">
  104. <div class="managementTitle">
  105. <div class="managementName">
  106. 管理控制台
  107. <span>(仅管理员可见)</span>
  108. </div>
  109. <div class="setting"><van-icon name="setting-o" />管理</div>
  110. </div>
  111. <div class="managementBox">
  112. <div class="managementOne" @click="toStaffManage()">
  113. <img src="../../assets/images/M1.png" alt />员工管理
  114. </div>
  115. <div class="managementOne" @click="toRoleManage()">
  116. <img src="../../assets/images/M2.png" alt />权限管理
  117. </div>
  118. <div class="managementOne" @click="toConfigCenter()">
  119. <img src="../../assets/images/M3.png" alt />配置中心
  120. </div>
  121. <div class="managementOne" @click="toOrgSetting()">
  122. <img src="../../assets/images/M4.png" alt />机构设置
  123. </div>
  124. </div>
  125. </div>
  126. <div class="application">
  127. <div class="applicationTitle">
  128. <div class="applicationName">应用工作台</div>
  129. <!--<div class="applicationService">+ 更多应用</div>-->
  130. </div>
  131. <div class="applicationBox">
  132. <div
  133. v-for="(item, index) in this.apps"
  134. :key="index"
  135. :class="
  136. item.open_status == 1 ? 'applicationOne' : 'applicationOne opacity'
  137. "
  138. @click="jumpApp(item)"
  139. >
  140. <img :src="item.url" alt />
  141. {{ item.name }}
  142. </div>
  143. </div>
  144. </div>
  145. </div>
  146. </template>
  147. <script>
  148. // import "../libs/rem.js";
  149. import { Toast } from "vant";
  150. import { GetHomeData, ChangeOrg } from "@/api/home";
  151. import "../../libs/rem.js";
  152. import "../../styles/newStyle.scss";
  153. import { setRem } from "@/libs/functionRem";
  154. export default {
  155. data() {
  156. return {
  157. show: false,
  158. value1: 0,
  159. isCreateOrg: false,
  160. org_arr: [],
  161. banners: [],
  162. apps: [],
  163. option1: [
  164. { text: "新款商品", value: 0 },
  165. { text: "全部商品全部商品全部商品全部商品全部商品全部商品", value: 1 },
  166. { text: "活动商品", value: 2 }
  167. ]
  168. };
  169. },
  170. methods: {
  171. toStaffManage() {
  172. if (this.isCreateOrg) {
  173. this.$router.push({ path: "/manageconsole/staff" });
  174. } else {
  175. this.$toast({
  176. message: "你尚未创建机构,请先创建机构"
  177. });
  178. }
  179. },
  180. toRoleManage() {
  181. if (this.isCreateOrg) {
  182. this.$router.push({ path: "/manageconsole/role" });
  183. } else {
  184. this.$toast({
  185. message: "你尚未创建机构,请先创建机构"
  186. });
  187. }
  188. },
  189. toConfigCenter() {
  190. if (this.isCreateOrg) {
  191. this.$router.push("/configurecenter");
  192. } else {
  193. this.$toast({
  194. message: "你尚未创建机构,请先创建机构"
  195. });
  196. }
  197. },
  198. toOrgSetting() {
  199. if (this.isCreateOrg) {
  200. this.$router.push("/editorg");
  201. } else {
  202. this.$toast({
  203. message: "你尚未创建机构,请先创建机构"
  204. });
  205. }
  206. },
  207. changeOrg(value) {
  208. Toast.loading({ forbidClick: true, duration: 0 });
  209. let params = {
  210. org_id: value
  211. };
  212. ChangeOrg(params).then(response => {
  213. if (response.data.state === 1) {
  214. // 清除之前的数据
  215. var user = response.data.data.user;
  216. var admin = response.data.data.admin;
  217. var org = response.data.data.org;
  218. var subscibe = response.data.data.subscibe;
  219. var config_list = response.data.data.config_list;
  220. var template_info = response.data.data.template_info;
  221. var filed_list = response.data.data.filed_list;
  222. this.$store.dispatch("InitUserInfo", {
  223. admin: admin,
  224. user: user,
  225. org: org,
  226. subscibe: subscibe,
  227. template_info: template_info,
  228. filed_list: filed_list
  229. });
  230. this.$store.dispatch("SetConfigList", config_list);
  231. this.GetHomeData();
  232. Toast.success("切换机构成功");
  233. } else {
  234. Toast.fail(response.data.msg);
  235. }
  236. });
  237. },
  238. jump(url) {
  239. window.location.href = url;
  240. },
  241. jumpApp(app) {
  242. if (!this.isCreateOrg) {
  243. Toast.fail("你尚未创建机构,无法使用该功能");
  244. return;
  245. }
  246. if (app.open_status == 0) {
  247. Toast.success("敬请期待");
  248. return;
  249. }
  250. switch (app.app_type) {
  251. case 6:
  252. this.toPatients();
  253. break;
  254. case 7:
  255. this.$router.push({ path: "/main" });
  256. break;
  257. case 8:
  258. this.$router.push({ path: "/shop" });
  259. break;
  260. case 9:
  261. break;
  262. case 10:
  263. break;
  264. case 11:
  265. break;
  266. case 12:
  267. break;
  268. case 13:
  269. break;
  270. case 14:
  271. break;
  272. }
  273. },
  274. toCreateOrg() {
  275. this.$router.push({ path: "/perfectOrg" });
  276. },
  277. toPatients() {
  278. this.$router.push({ path: "/patients" });
  279. },
  280. toSearch() {
  281. this.$router.push({ path: "/search" });
  282. },
  283. GetHomeData() {
  284. GetHomeData().then(response => {
  285. if (response.data.state === 1) {
  286. this.isCreateOrg = response.data.data.isCreateOrg;
  287. if (this.isCreateOrg) {
  288. this.orgs = response.data.data.orgs;
  289. this.apps = response.data.data.apps;
  290. this.banners = response.data.data.banners;
  291. this.org_arr = [];
  292. for (let i = 0; i < this.orgs.length; i++) {
  293. let obj = {
  294. text: this.orgs[i].org_name,
  295. value: this.orgs[i].id
  296. };
  297. this.org_arr.push(obj);
  298. }
  299. this.value1 = this.$store.getters.user.org.id;
  300. } else {
  301. this.apps = response.data.data.apps;
  302. this.banners = response.data.data.banners;
  303. }
  304. } else {
  305. this.$toast({
  306. message: response.data.msg
  307. });
  308. }
  309. });
  310. },
  311. toConsole() {
  312. this.$router.push({ path: "/manageconsole" });
  313. }
  314. },
  315. created() {
  316. this.GetHomeData();
  317. setRem();
  318. }
  319. };
  320. </script>
  321. <style lang="scss" scoped>
  322. .page_homeIndex {
  323. .homeTitle {
  324. height: 3.125rem;
  325. padding: 0 1.125rem;
  326. display: flex;
  327. justify-content: space-between;
  328. background: #fff;
  329. }
  330. .homeTitleLeft {
  331. width: 60%;
  332. }
  333. .homeTitleRight {
  334. width: 16%;
  335. display: flex;
  336. justify-content: space-between;
  337. align-items: center;
  338. color: #232323;
  339. }
  340. /deep/ .van-dropdown-menu__item {
  341. justify-content: left;
  342. }
  343. .van-hairline--top-bottom {
  344. position: static;
  345. }
  346. .iconOne {
  347. font-size: 1.5rem;
  348. }
  349. .iconfont {
  350. clear: both;
  351. }
  352. .search1 {
  353. font-size: 1.5rem;
  354. color: #232323;
  355. }
  356. .banner {
  357. padding: 1px 1.125rem 0;
  358. img {
  359. height: 6.75rem;
  360. width: 100%;
  361. }
  362. }
  363. .noticeBox {
  364. padding: 0 1.125rem;
  365. height: 2.5rem;
  366. display: flex;
  367. align-items: center;
  368. color: #cccccc;
  369. .notice {
  370. font-size: 1.25rem;
  371. margin-right: 0.375rem;
  372. }
  373. .noticeNews {
  374. width: 90%;
  375. display: flex;
  376. justify-content: space-between;
  377. color: #666666;
  378. font-size: 0.8125rem;
  379. }
  380. }
  381. .background1 {
  382. background: #f6f6f6;
  383. width: 100%;
  384. height: 0.8125rem;
  385. }
  386. .management {
  387. padding: 1.25rem 1.125rem 0;
  388. }
  389. .managementTitle {
  390. display: flex;
  391. justify-content: space-between;
  392. align-items: center;
  393. }
  394. .managementName {
  395. font-weight: bold;
  396. font-size: 1rem;
  397. color: #000;
  398. span {
  399. font-size: 0.8125rem;
  400. color: #989898;
  401. font-weight: 400;
  402. }
  403. }
  404. .setting {
  405. display: flex;
  406. align-items: center;
  407. color: #989898;
  408. font-size: 0.8125rem;
  409. .van-icon-setting-o {
  410. margin-right: 0.25rem;
  411. }
  412. }
  413. .managementBox {
  414. display: flex;
  415. justify-content: space-between;
  416. .managementOne {
  417. display: flex;
  418. align-items: center;
  419. flex-direction: column;
  420. font-size: 0.8125rem;
  421. color: #666666;
  422. img {
  423. width: 1.375rem;
  424. height: 1.375rem;
  425. margin: 1rem 0 0.2rem;
  426. }
  427. }
  428. }
  429. .application {
  430. .applicationTitle {
  431. display: flex;
  432. justify-content: space-between;
  433. align-items: center;
  434. padding: 1.25rem 1.125rem 0.625rem;
  435. }
  436. .applicationName {
  437. font-weight: bold;
  438. font-size: 1rem;
  439. color: #000;
  440. }
  441. .applicationService {
  442. font-size: 0.8125rem;
  443. color: #666666;
  444. }
  445. }
  446. .applicationBox {
  447. display: flex;
  448. flex-wrap: wrap;
  449. .applicationOne {
  450. width: 25%;
  451. display: flex;
  452. align-items: center;
  453. flex-direction: column;
  454. padding: 0.625rem 0;
  455. font-size: 0.8125rem;
  456. color: #666666;
  457. img {
  458. width: 3.25rem;
  459. height: 3.25rem;
  460. margin-bottom: 0.375rem;
  461. }
  462. }
  463. }
  464. .van-popup {
  465. border-radius: 0 !important;
  466. top: 0 !important;
  467. transform: translate3d(0, 0, 0) !important;
  468. }
  469. .opacity {
  470. opacity: 0.5;
  471. filter: alpha(opacity=40);
  472. }
  473. .van-overlay {
  474. top: 3.125rem;
  475. z-index: 9;
  476. }
  477. .arrowBox {
  478. text-align: right;
  479. img {
  480. width: 2.5rem;
  481. margin-right: 1.625rem;
  482. }
  483. }
  484. .signBox {
  485. width: 18.75rem;
  486. height: 5.625rem;
  487. margin: 0 auto;
  488. background: #fff;
  489. border-radius: 0.25rem;
  490. text-align: center;
  491. padding-top: 1.25rem;
  492. p {
  493. line-height: 1.5rem;
  494. }
  495. }
  496. }
  497. </style>
  498. <style lang="scss"></style>