index.vue 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  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. this.$router.push("/configurecenter");
  169. } else {
  170. this.$toast({
  171. message: "你尚未创建机构,请先创建机构"
  172. });
  173. }
  174. },
  175. toOrgSetting() {
  176. if (this.isCreateOrg) {
  177. this.$router.push("/editorg?id=" + this.value1);
  178. } else {
  179. this.$toast({
  180. message: "你尚未创建机构,请先创建机构"
  181. });
  182. }
  183. },
  184. changeOrg(value) {
  185. Toast.loading({ forbidClick: true, duration: 0 });
  186. let params = {
  187. org_id: value
  188. };
  189. ChangeOrg(params).then(response => {
  190. if (response.data.state === 1) {
  191. // 清除之前的数据
  192. var user = response.data.data.user;
  193. var admin = response.data.data.admin;
  194. var org = response.data.data.org;
  195. var subscibe = response.data.data.subscibe;
  196. var config_list = response.data.data.config_list;
  197. var template_info = response.data.data.template_info;
  198. var filed_list = response.data.data.filed_list;
  199. this.$store.dispatch("InitUserInfo", {
  200. admin: admin,
  201. user: user,
  202. org: org,
  203. subscibe: subscibe,
  204. template_info: template_info,
  205. filed_list: filed_list
  206. });
  207. this.$store.dispatch("SetConfigList", config_list);
  208. this.GetHomeData();
  209. Toast.success("切换机构成功");
  210. } else {
  211. Toast.fail(response.data.msg);
  212. }
  213. });
  214. },
  215. jump(url) {
  216. window.location.href = url;
  217. },
  218. jumpApp(app) {
  219. if (!this.isCreateOrg) {
  220. Toast.fail("你尚未创建机构,无法使用该功能");
  221. return;
  222. }
  223. if (app.open_status == 0) {
  224. Toast.success("敬请期待");
  225. return;
  226. }
  227. switch (app.app_type) {
  228. case 6:
  229. this.toPatients();
  230. break;
  231. case 7:
  232. this.$router.push({ path: "/main" });
  233. break;
  234. case 8:
  235. this.$router.push({ path: "/shop" });
  236. break;
  237. case 9:
  238. break;
  239. case 10:
  240. break;
  241. case 11:
  242. break;
  243. case 12:
  244. break;
  245. case 13:
  246. break;
  247. case 14:
  248. break;
  249. }
  250. },
  251. toCreateOrg() {
  252. this.$router.push({ path: "/perfectOrg" });
  253. },
  254. toPatients() {
  255. this.$router.push({ path: "/patients" });
  256. },
  257. toSearch() {
  258. this.$router.push({ path: "/search" });
  259. },
  260. GetHomeData() {
  261. GetHomeData().then(response => {
  262. if (response.data.state === 1) {
  263. this.isCreateOrg = response.data.data.isCreateOrg;
  264. if (this.isCreateOrg) {
  265. this.orgs = response.data.data.orgs;
  266. this.apps = response.data.data.apps;
  267. this.banners = response.data.data.banners;
  268. this.org_arr = [];
  269. for (let i = 0; i < this.orgs.length; i++) {
  270. let obj = {
  271. text: this.orgs[i].org_name,
  272. value: this.orgs[i].id
  273. };
  274. this.org_arr.push(obj);
  275. }
  276. this.value1 = this.$store.getters.user.org.id;
  277. } else {
  278. this.apps = response.data.data.apps;
  279. this.banners = response.data.data.banners;
  280. }
  281. } else {
  282. this.$toast({
  283. message: response.data.msg
  284. });
  285. }
  286. });
  287. },
  288. toConsole() {
  289. this.$router.push({ path: "/manageconsole" });
  290. }
  291. },
  292. created() {
  293. this.GetHomeData();
  294. setRem();
  295. }
  296. };
  297. </script>
  298. <style lang="scss" scoped>
  299. .page_homeIndex {
  300. .homeTitle {
  301. height: 3.125rem;
  302. padding: 0 1.125rem;
  303. display: flex;
  304. justify-content: space-between;
  305. background: #fff;
  306. }
  307. .homeTitleLeft {
  308. width: 60%;
  309. }
  310. .homeTitleRight {
  311. width: 16%;
  312. display: flex;
  313. justify-content: space-between;
  314. align-items: center;
  315. color: #232323;
  316. }
  317. /deep/ .van-dropdown-menu__item {
  318. justify-content: left;
  319. }
  320. .van-hairline--top-bottom {
  321. position: static;
  322. }
  323. .iconOne {
  324. font-size: 1.5rem;
  325. }
  326. .iconfont {
  327. clear: both;
  328. }
  329. .search1 {
  330. font-size: 1.5rem;
  331. color: #232323;
  332. }
  333. .banner {
  334. padding: 1px 1.125rem 0;
  335. img {
  336. height: 6.75rem;
  337. width: 100%;
  338. }
  339. }
  340. .noticeBox {
  341. padding: 0 1.125rem;
  342. height: 2.5rem;
  343. display: flex;
  344. align-items: center;
  345. color: #cccccc;
  346. .notice {
  347. font-size: 1.25rem;
  348. margin-right: 0.375rem;
  349. }
  350. .noticeNews {
  351. width: 90%;
  352. display: flex;
  353. justify-content: space-between;
  354. color: #666666;
  355. font-size: 0.8125rem;
  356. }
  357. }
  358. .background1 {
  359. background: #f6f6f6;
  360. width: 100%;
  361. height: 0.8125rem;
  362. }
  363. .management {
  364. padding: 1.25rem 1.125rem 0;
  365. }
  366. .managementTitle {
  367. display: flex;
  368. justify-content: space-between;
  369. align-items: center;
  370. }
  371. .managementName {
  372. font-weight: bold;
  373. font-size: 1rem;
  374. color: #000;
  375. span {
  376. font-size: 0.8125rem;
  377. color: #989898;
  378. font-weight: 400;
  379. }
  380. }
  381. .setting {
  382. display: flex;
  383. align-items: center;
  384. color: #989898;
  385. font-size: 0.8125rem;
  386. .van-icon-setting-o {
  387. margin-right: 0.25rem;
  388. }
  389. }
  390. .managementBox {
  391. display: flex;
  392. justify-content: space-between;
  393. .managementOne {
  394. display: flex;
  395. align-items: center;
  396. flex-direction: column;
  397. font-size: 0.8125rem;
  398. color: #666666;
  399. img {
  400. width: 1.375rem;
  401. height: 1.375rem;
  402. margin: 1rem 0 0.2rem;
  403. }
  404. }
  405. }
  406. .application {
  407. .applicationTitle {
  408. display: flex;
  409. justify-content: space-between;
  410. align-items: center;
  411. padding: 1.25rem 1.125rem 0.625rem;
  412. }
  413. .applicationName {
  414. font-weight: bold;
  415. font-size: 1rem;
  416. color: #000;
  417. }
  418. .applicationService {
  419. font-size: 0.8125rem;
  420. color: #666666;
  421. }
  422. }
  423. .applicationBox {
  424. display: flex;
  425. flex-wrap: wrap;
  426. .applicationOne {
  427. width: 25%;
  428. display: flex;
  429. align-items: center;
  430. flex-direction: column;
  431. padding: 0.625rem 0;
  432. font-size: 0.8125rem;
  433. color: #666666;
  434. img {
  435. width: 3.25rem;
  436. height: 3.25rem;
  437. margin-bottom: 0.375rem;
  438. }
  439. }
  440. }
  441. .van-popup {
  442. border-radius: 0 !important;
  443. top: 0 !important;
  444. transform: translate3d(0, 0, 0) !important;
  445. }
  446. .opacity {
  447. opacity: 0.5;
  448. filter: alpha(opacity=40);
  449. }
  450. .van-overlay {
  451. top: 3.125rem;
  452. z-index: 9;
  453. }
  454. }
  455. </style>
  456. <style lang="scss">
  457. </style>