index.vue 8.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. <template>
  2. <div class="page_homeIndex">
  3. <van-sticky>
  4. <div class="homeTitle">
  5. <div class="homeTitleLeft">
  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="homeTitleRight">
  11. <i class="iconfont icon-sousuo search1" @click="toSearch"></i>
  12. <van-icon class="iconOne" name="comment-o"/>
  13. <van-icon class="iconOne" name="add-o"/>
  14. </div>
  15. </div>
  16. </van-sticky>
  17. <div class="banner">
  18. <van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
  19. <van-swipe-item v-for="(banner, index) in this.banners" @click="jump(banner.url)" :key="index">
  20. <img :src="banner.thumb" alt />
  21. </van-swipe-item>
  22. </van-swipe>
  23. </div>
  24. <!--<div class="noticeBox">-->
  25. <!--<i class="iconfont icon-public-notice notice"></i>-->
  26. <!--<div class="noticeNews">-->
  27. <!--<div>-->
  28. <!--今日上机:-->
  29. <!--<span>6&ensp;人</span>-->
  30. <!--</div>-->
  31. <!--<div>-->
  32. <!--今日透析:-->
  33. <!--<span>6&ensp;人</span>-->
  34. <!--</div>-->
  35. <!--<div>-->
  36. <!--今日生日:-->
  37. <!--<span>6&ensp;人</span>-->
  38. <!--</div>-->
  39. <!--</div>-->
  40. <!--</div>-->
  41. <div class="background1"></div>
  42. <div class="management" v-if="this.$store.getters.user.admin.id == this.$store.getters.user.org.creator">
  43. <div class="managementTitle">
  44. <div class="managementName">
  45. 管理控制台
  46. <span>(仅管理员可见)</span>
  47. </div>
  48. <div class="setting">
  49. <van-icon name="setting-o"/>
  50. 管理
  51. </div>
  52. </div>
  53. <div class="managementBox">
  54. <div class="managementOne">
  55. <img src="../../assets/images/M1.png" alt/>员工管理
  56. </div>
  57. <div class="managementOne">
  58. <img src="../../assets/images/M2.png" alt/>权限管理
  59. </div>
  60. <!--<div class="managementOne">-->
  61. <!--<img src="../../assets/images/M3.png" alt/>应用管理-->
  62. <!--</div>-->
  63. <div class="managementOne">
  64. <img src="../../assets/images/M4.png" alt/>机构管理
  65. </div>
  66. </div>
  67. </div>
  68. <div class="application">
  69. <div class="applicationTitle">
  70. <div class="applicationName">应用工作台</div>
  71. <!--<div class="applicationService">+ 更多应用</div>-->
  72. </div>
  73. <div class="applicationBox">
  74. <div v-for="(item, index) in this.apps" :key="index" class="applicationOne" @click="toPatients">
  75. <img :src="item.url" alt/>{{item.name}}
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. </template>
  81. <script>
  82. // import "../libs/rem.js";
  83. import { Toast } from "vant";
  84. import {GetHomeData,ChangeOrg} from "@/api/home";
  85. import "../../libs/rem.js";
  86. import "../../styles/newStyle.scss";
  87. import {setRem} from "@/libs/functionRem";
  88. export default {
  89. data() {
  90. return {
  91. value1: 0,
  92. isCreateOrg: false,
  93. org_arr: [],
  94. banners: [],
  95. apps: [],
  96. option1: [
  97. {text: "新款商品", value: 0},
  98. {text: "全部商品全部商品全部商品全部商品全部商品全部商品", value: 1},
  99. {text: "活动商品", value: 2}
  100. ]
  101. };
  102. },
  103. methods: {
  104. changeOrg(value){
  105. Toast.loading({forbidClick: true, duration: 0})
  106. let params={
  107. org_id : value
  108. }
  109. ChangeOrg(params).then(response => {
  110. if (response.data.state === 1) {
  111. var user = response.data.data.user;
  112. var admin = response.data.data.admin;
  113. var org = response.data.data.org;
  114. var subscibe = response.data.data.subscibe;
  115. var config_list = response.data.data.config_list;
  116. var template_info = response.data.data.template_info;
  117. var filed_list = response.data.data.filed_list;
  118. this.$store.dispatch("InitUserInfo", {
  119. admin: admin,
  120. user: user,
  121. org: org,
  122. subscibe: subscibe,
  123. template_info: template_info,
  124. filed_list: filed_list
  125. });
  126. this.$store.dispatch("SetConfigList", config_list);
  127. this.GetHomeData()
  128. Toast.success('切换机构成功')
  129. } else {
  130. Toast.fail(response.data.msg)
  131. }
  132. });
  133. },
  134. jump(url){
  135. window.location.href = url
  136. },
  137. toPatients() {
  138. this.$router.push({path: "/patients"});
  139. },
  140. toSearch() {
  141. this.$router.push({path: "/search"});
  142. }, GetHomeData() {
  143. GetHomeData().then(response => {
  144. if (response.data.state === 1) {
  145. this.isCreateOrg = response.data.data.isCreateOrg
  146. if(this.isCreateOrg){
  147. this.orgs = response.data.data.orgs
  148. this.apps = response.data.data.apps
  149. this.banners = response.data.data.banners
  150. this.org_arr = []
  151. for (let i = 0; i < this.orgs.length; i++){
  152. let obj= {
  153. text: this.orgs[i].org_name,
  154. value: this.orgs[i].id
  155. }
  156. this.org_arr.push(obj)
  157. }
  158. this.value1 = this.$store.getters.user.org.id
  159. }
  160. } else {
  161. this.$toast({
  162. message: response.data.msg
  163. });
  164. }
  165. });
  166. },
  167. },
  168. created() {
  169. this.GetHomeData()
  170. setRem();
  171. }
  172. };
  173. </script>
  174. <style lang="scss" scoped>
  175. .page_homeIndex {
  176. .homeTitle {
  177. height: 3.125rem;
  178. padding: 0 1.125rem;
  179. display: flex;
  180. justify-content: space-between;
  181. background: #fff;
  182. }
  183. .homeTitleLeft {
  184. width: 60%;
  185. }
  186. .homeTitleRight {
  187. width: 30%;
  188. display: flex;
  189. justify-content: space-between;
  190. align-items: center;
  191. color: #232323;
  192. }
  193. /deep/ .van-dropdown-menu__item {
  194. justify-content: left;
  195. }
  196. .van-hairline--top-bottom {
  197. position: static;
  198. }
  199. .iconOne {
  200. font-size: 1.5rem;
  201. }
  202. .iconfont {
  203. clear: both;
  204. }
  205. .search1 {
  206. font-size: 1.5rem;
  207. color: #232323;
  208. }
  209. .banner {
  210. padding: 1px 1.125rem 0;
  211. img {
  212. height: 6.75rem;
  213. width: 100%;
  214. }
  215. }
  216. .noticeBox {
  217. padding: 0 1.125rem;
  218. height: 2.5rem;
  219. display: flex;
  220. align-items: center;
  221. color: #cccccc;
  222. .notice {
  223. font-size: 1.25rem;
  224. margin-right: 0.375rem;
  225. }
  226. .noticeNews {
  227. width: 90%;
  228. display: flex;
  229. justify-content: space-between;
  230. color: #666666;
  231. font-size: 0.8125rem;
  232. }
  233. }
  234. .background1 {
  235. background: #f6f6f6;
  236. width: 100%;
  237. height: 0.8125rem;
  238. }
  239. .management {
  240. padding: 1.25rem 1.125rem 0;
  241. }
  242. .managementTitle {
  243. display: flex;
  244. justify-content: space-between;
  245. align-items: center;
  246. }
  247. .managementName {
  248. font-weight: bold;
  249. font-size: 1rem;
  250. color: #000;
  251. span {
  252. font-size: 0.8125rem;
  253. color: #989898;
  254. font-weight: 400;
  255. }
  256. }
  257. .setting {
  258. display: flex;
  259. align-items: center;
  260. color: #989898;
  261. font-size: 0.8125rem;
  262. .van-icon-setting-o {
  263. margin-right: 0.25rem;
  264. }
  265. }
  266. .managementBox {
  267. display: flex;
  268. justify-content: space-between;
  269. .managementOne {
  270. display: flex;
  271. align-items: center;
  272. flex-direction: column;
  273. font-size: 0.8125rem;
  274. color: #666666;
  275. img {
  276. width: 1.375rem;
  277. height: 1.375rem;
  278. margin: 1rem 0 0.2rem;
  279. }
  280. }
  281. }
  282. .application {
  283. .applicationTitle {
  284. display: flex;
  285. justify-content: space-between;
  286. align-items: center;
  287. padding: 1.25rem 1.125rem 0.625rem;
  288. }
  289. .applicationName {
  290. font-weight: bold;
  291. font-size: 1rem;
  292. color: #000;
  293. }
  294. .applicationService {
  295. font-size: 0.8125rem;
  296. color: #666666;
  297. }
  298. }
  299. .applicationBox {
  300. display: flex;
  301. flex-wrap: wrap;
  302. .applicationOne {
  303. width: 25%;
  304. display: flex;
  305. align-items: center;
  306. flex-direction: column;
  307. padding: 0.625rem 0;
  308. font-size: 0.8125rem;
  309. color: #666666;
  310. img {
  311. width: 3.25rem;
  312. height: 3.25rem;
  313. margin-bottom: 0.375rem;
  314. }
  315. }
  316. }
  317. .van-popup {
  318. border-radius: 0 !important;
  319. top: 0 !important;
  320. transform: translate3d(0, 0, 0) !important;
  321. }
  322. }
  323. </style>
  324. <style lang="scss"></style>