index.vue 12KB

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