index.vue 11KB

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