index.vue 13KB

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