index.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977
  1. <template>
  2. <div class="main1">
  3. <!--图片新闻-->
  4. <div class="main1_left">
  5. <div class="left_box">
  6. <div class="title_box">
  7. <div class="layer13">
  8. <div class="group15 flex-col"></div>
  9. <div class="group16 flex-col"></div>
  10. </div>
  11. <span class="title"> 图片新闻 </span>
  12. </div>
  13. <div class="carousel">
  14. <el-carousel height="395px" ref="carousel">
  15. <el-carousel-item v-for="(item, index) in srcData" :key="index" @click="router.push({ name: 'tpxwDetails', params: { id: item.id } })">
  16. <!-- <img :src="item.url" class="topImg" /> -->
  17. <el-image class="topImg" :src="item.url" fit="scale-down">
  18. <template #error>
  19. <div class="image-slot">
  20. <el-icon><icon-picture /></el-icon>
  21. </div>
  22. </template>
  23. </el-image>
  24. <div class="carousel_footer" :title="item.bt">
  25. <div class="carousel_title title_overflow">{{ item.bt }}</div>
  26. </div>
  27. </el-carousel-item>
  28. </el-carousel>
  29. </div>
  30. </div>
  31. </div>
  32. <!--头条发布-->
  33. <div class="main1_right">
  34. <div class="right_box">
  35. <div class="title_box">
  36. <div class="layer13">
  37. <div class="group15 flex-col"></div>
  38. <div class="group16 flex-col"></div>
  39. </div>
  40. <span class="title">头条发布</span>
  41. <span class="title_position red" @click="router.push('/ttfb')">更多>></span>
  42. </div>
  43. <div class="carousel flex_column" style="height: 395px" v-if="xwData.length > 0">
  44. <div class="flex xw_box" v-for="(item, index) in xwData" :key="index" @click="router.push({ name: 'ttfbDetails', params: { id: item.id } })">
  45. <div class="xw_title title_overflow margin_left10 fs16" :title="item.bt">
  46. {{ item.bt }}
  47. </div>
  48. <div class="xw_date" :title="changDate(item.issSj, 'two')">
  49. {{ changDate(item.issSj, 'one') }}
  50. </div>
  51. </div>
  52. </div>
  53. <div style="height: 395px" class="empty" v-else>
  54. <el-empty :image-size="80" />
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. <!--热点专题--><!--养老政策-->
  60. <div class="main2">
  61. <div class="flex rd_box">
  62. <div class="center_box flex_column mg_right24">
  63. <div class="rd_top">
  64. <div class="rd_title">热点专题</div>
  65. <div class="ckgd" @click="router.push('/rdzt')">【查看更多】</div>
  66. </div>
  67. <div class="rd_center">
  68. <div class="flex_column" style="height: 100%" v-if="rdData.length > 0">
  69. <div class="flex" v-for="(item, index) in rdData" :key="index" @click="router.push({ name: 'rdztDetails', params: { id: item.id } })">
  70. <div class="dian"></div>
  71. <div class="xw_title title_overflow fs14" :title="item.bt">
  72. {{ item.bt }}
  73. </div>
  74. <div class="xw_date" :title="changDate(item.issSj, 'two')">
  75. {{ changDate(item.issSj, 'one') }}
  76. </div>
  77. </div>
  78. </div>
  79. <div class="empty" v-else>
  80. <el-empty :image-size="80" />
  81. </div>
  82. </div>
  83. </div>
  84. <div class="center_box flex_column">
  85. <div class="rd_top">
  86. <div class="rd_title">养老政策</div>
  87. <div class="ckgd" @click="goGd('/ylzc')">【查看更多】</div>
  88. </div>
  89. <div class="rd_center">
  90. <el-tabs v-model="activeName">
  91. <el-tab-pane label="全部" name="first">
  92. <div class="flex_column" style="height: 100%">
  93. <div class="flex" v-for="(item, index) in zcData.slice(0, 5)" :key="index">
  94. <div class="dian"></div>
  95. <div class="xw_title title_overflow fs14" @click="goYlzc(item.id)" :title="item.bt">
  96. {{ item.bt }}
  97. </div>
  98. <div class="xw_date" :title="changDate(item.issSj, 'two')">
  99. {{ changDate(item.issSj, 'one') }}
  100. </div>
  101. </div>
  102. </div>
  103. </el-tab-pane>
  104. <el-tab-pane v-for="item in XZ086" :label="item.label" :name="item.value">
  105. <div class="flex_column" style="height: 100%" v-if="changZcData(zcData, activeName).length > 0">
  106. <div class="flex" v-for="(item, index) in changZcData(zcData, activeName).slice(0, 5)" :key="index">
  107. <div class="dian"></div>
  108. <div class="xw_title title_overflow fs14" @click="goYlzc(item.id)" :title="item.bt">
  109. {{ item.bt }}
  110. </div>
  111. <div class="xw_date" :title="changDate(item.issSj, 'two')">
  112. {{ changDate(item.issSj, 'one') }}
  113. </div>
  114. </div>
  115. </div>
  116. <div v-else>
  117. <el-empty :image-size="60" />
  118. </div>
  119. </el-tab-pane>
  120. </el-tabs>
  121. </div>
  122. </div>
  123. </div>
  124. </div>
  125. <!--机构查询--><!--办事指南-->
  126. <div class="main2">
  127. <div class="flex rd_box">
  128. <div class="center_box flex_column mg_right24">
  129. <div class="rd_top">
  130. <div class="rd_title">机构查询</div>
  131. <div class="ckgd" @click="goGd('/jgcx')">【查看更多】</div>
  132. </div>
  133. <div class="rd_center" style="display: flex; flex-wrap: wrap">
  134. <div class="jg_box" v-for="(item, index) in XZ093.slice(0, 8)" @click="goJg(item.value)" :key="item.label">
  135. <img :src="jgData[index].src" style="width: 33px; height: 31px" />
  136. <span> {{ item.label }}</span>
  137. </div>
  138. </div>
  139. </div>
  140. <div class="center_box flex_column">
  141. <div class="rd_top">
  142. <div class="rd_title">办事指南</div>
  143. <div class="ckgd" @click="router.push('/bszn')">【查看更多】</div>
  144. </div>
  145. <div class="rd_center">
  146. <el-tabs v-model="activeName2">
  147. <el-tab-pane v-for="(item, indexd) in XZ094" :label="item.label" :name="item.value">
  148. <div class="flex_column" style="height: 100%" v-if="changZcData(bsData, activeName2).length > 0">
  149. <div @click="router.push({ name: 'bsznDetails', params: { id: item.id } })" class="flex bor_bt" v-for="(item, index) in changZcData(bsData, activeName2).slice(0, 5)" :key="index">
  150. <div class="flex" style="width: 100%" v-if="indexd === 0">
  151. <div class="title_type gr" v-if="item.sfl === '1'">个人</div>
  152. <div class="title_type jg" v-else-if="item.sfl === '2'">机构</div>
  153. <div class="bs_box title_overflow fs14" :title="item.bt">
  154. {{ item.bt }}
  155. </div>
  156. <div class="bs_title">详情</div>
  157. </div>
  158. <div class="bs_box1 title_overflow fs14" :title="item.bt" v-else>
  159. {{ item.bt }}
  160. </div>
  161. </div>
  162. </div>
  163. <div class="empty" v-else>
  164. <el-empty :image-size="80" />
  165. </div>
  166. </el-tab-pane>
  167. </el-tabs>
  168. </div>
  169. </div>
  170. </div>
  171. </div>
  172. <div class="nav">
  173. <img src="../../assets/images/logoN.png" style="width: 403px; height: 88px" />
  174. </div>
  175. <!--资料查询--><!--养老地图--><!--资料查询-->
  176. <div class="main2">
  177. <div class="flex rd_box">
  178. <div class="zl_box flex_column mg_right24">
  179. <div class="rd_top">
  180. <div class="rd_title">资料查询</div>
  181. <div class="ckgd" @click="goGd('/ylzc')">【查看更多】</div>
  182. </div>
  183. <div class="rd_center">
  184. <div class="flex_column" style="height: 100%">
  185. <div class="flex bor_bt" v-for="(item, index) in changeDict(XZ085)" :key="index">
  186. <div class="flex" style="width: 50%">
  187. <div class="dian"></div>
  188. <div class="zl_lh title_overflow fs14" @click="goZlcx(item[0].value)">
  189. {{ item[0].label }}
  190. </div>
  191. </div>
  192. <div class="flex" style="width: 50%" v-if="item[1]">
  193. <div class="dian"></div>
  194. <div class="zl_lh title_overflow fs14" @click="goZlcx(item[1].value)">
  195. {{ item[1].label }}
  196. </div>
  197. </div>
  198. </div>
  199. </div>
  200. </div>
  201. </div>
  202. <div class="zl_box flex_column mg_right24">
  203. <div class="rd_top">
  204. <div class="rd_title">养老地图</div>
  205. <div class="ckgd" @click="goGd('/yldt')">【查看更多】</div>
  206. </div>
  207. <div class="rd_center dt_bg"></div>
  208. </div>
  209. <div class="zl_box flex_column">
  210. <div class="rd_top">
  211. <div class="rd_title">用户中心</div>
  212. </div>
  213. <div class="rd_center flex_row">
  214. <!-- <div class="user_big">
  215. <img src="../../assets/images/addUser.png" style="width: 31px; height: 29px" />
  216. <el-link :href="hrefLogin" :underline="false" class="zl_title" target="_blank">新用户注册</el-link>
  217. </div>
  218. <div class="user_login">
  219. <img src="../../assets/images/userLogin.png" style="width: 29px; height: 29px" />
  220. <el-link :href="hrefLogin" :underline="false" class="zl_title" target="_blank">普通用户登录</el-link>
  221. </div>
  222. <div class="user_login">
  223. <img src="../../assets/images/adminLogin.png" style="width: 31px; height: 31px" />
  224. <el-link :href="hrefLogin" :underline="false" class="zl_title" target="_blank">管理员登录</el-link>
  225. </div> -->
  226. <el-form ref="loginFormRef" :model="loginForm" :rules="loginRules" label-width="120px" class="demo-ruleForm" :size="formSize" status-icon>
  227. <el-form-item prop="username">
  228. <el-input v-model="loginForm.username" placeholder="账号" type="text">
  229. <template v-slot:prefix>
  230. <div style="font-size: 20px">
  231. <!-- 由于SVG图标默认不携带任何属性 -->
  232. <!-- 你需要直接提供它们 -->
  233. <User style="width: 0.8em; height: 0.8em; margin-right: 5px" />
  234. </div>
  235. </template>
  236. </el-input>
  237. </el-form-item>
  238. <el-form-item prop="password">
  239. <el-input v-model="loginForm.password" placeholder="密码" type="password">
  240. <template v-slot:prefix>
  241. <div style="font-size: 20px">
  242. <!-- 由于SVG图标默认不携带任何属性 -->
  243. <!-- 你需要直接提供它们 -->
  244. <Lock style="width: 0.8em; height: 0.8em; margin-right: 5px" />
  245. </div>
  246. </template>
  247. </el-input>
  248. </el-form-item>
  249. <el-form-item prop="code">
  250. <el-input v-model="loginForm.code" placeholder="验证码" style="width: 50%">
  251. <template v-slot:prefix>
  252. <div style="font-size: 20px">
  253. <Setting style="width: 0.8em; height: 0.8em; margin-right: 5px" />
  254. </div>
  255. </template>
  256. </el-input>
  257. <div class="login-code">
  258. <img :src="codeUrl" @click="getCode" class="login-code-img" />
  259. </div>
  260. </el-form-item>
  261. <el-form-item>
  262. <el-button type="danger" @click.prevent="handleLogin(loginFormRef)">登录</el-button>
  263. <!-- <el-link :href="hrefLogin" :underline="false" class="zl_title" target="_blank" @click.prevent="handleLogin(loginFormRef)">普通用户登录</el-link> -->
  264. <el-link :href="hrefLogin" :underline="false" class="zl_title" target="_blank">管理员登录</el-link>
  265. </el-form-item>
  266. </el-form>
  267. </div>
  268. </div>
  269. </div>
  270. </div>
  271. </template>
  272. <script setup >
  273. import { ref, onMounted, reactive, getCurrentInstance, watch } from 'vue'
  274. import { useRouter,useRoute } from 'vue-router'
  275. import { Picture as IconPicture } from '@element-plus/icons-vue'
  276. import { encrypt, decrypt } from '@/utils/jsencrypt'
  277. import { useStore } from "vuex"
  278. import Cookies from 'js-cookie'
  279. let router = useRouter()
  280. let route = useRoute()
  281. let store = useStore()
  282. import { lbList, rdList, ttList, zcList, wlList, bsList, getCodeImg } from '@/api/home'
  283. const { proxy } = getCurrentInstance()
  284. const { XZ085, XZ086, XZ093, XZ094 } = proxy.useDict('XZ085', 'XZ086', 'XZ093', 'XZ094')
  285. const hrefLogin = ref('http://mz.tshe.cn:801/login')
  286. const activeName = ref('first')
  287. const activeName2 = ref('0')
  288. const xgData = ref([])
  289. const jgData = ref([
  290. { src: new URL('../../assets/images/jg1.png', import.meta.url).href, label: '养老机构' },
  291. { src: new URL('../../assets/images/jg7.png', import.meta.url).href, label: '社区养老机构' },
  292. { src: new URL('../../assets/images/jg2.png', import.meta.url).href, label: '长者照护之家' },
  293. { src: new URL('../../assets/images/jg3.png', import.meta.url).href, label: '日间服务中心' },
  294. { src: new URL('../../assets/images/jg4.png', import.meta.url).href, label: '社区养老组织' },
  295. { src: new URL('../../assets/images/jg5.png', import.meta.url).href, label: '助餐服务点' },
  296. { src: new URL('../../assets/images/jg6.png', import.meta.url).href, label: '护理院/站' }
  297. ])
  298. let loading = ref(false)
  299. const xwData = ref([])
  300. const bsData = ref([])
  301. const srcData = ref([])
  302. const zcData = ref([])
  303. const rdData = ref([])
  304. const carousel = ref(null)
  305. let redirect = ref(undefined)
  306. let loginForm = reactive({
  307. username: '',
  308. password: '',
  309. code: '',
  310. uuid: '',
  311. rememberMe: false,
  312. href:''
  313. })
  314. const formSize = ref('default')
  315. const loginFormRef = ref(null)
  316. const loginRules = reactive({
  317. username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
  318. password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
  319. code: [{ required: true, message: '请输入验证码', trigger: 'blur' }]
  320. })
  321. let codeUrl = ref('')
  322. let captchaOnOff = ref(true)
  323. function getCookie() {
  324. const username = Cookies.get('username')
  325. const password = Cookies.get('password')
  326. const rememberMe = Cookies.get('rememberMe')
  327. loginForm = {
  328. username: username === undefined ? loginForm.username : username,
  329. password: password === undefined ? loginForm.password : decrypt(password),
  330. rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
  331. }
  332. }
  333. watch( route, (newVal) => {
  334. redirect.value = route.query && route.query.redirect;
  335. },{ immediate: true, deep: true } )
  336. const handleLogin = async () => {
  337. if (!loginFormRef) return
  338. await loginFormRef.value.validate( (valid) => {
  339. if (valid) {
  340. loading.value = true
  341. if (loginForm.rememberMe) {
  342. Cookies.set('username', loginForm.username, { expires: 30 })
  343. Cookies.set('password', encrypt(loginForm.password), { expires: 30 })
  344. Cookies.set('rememberMe', loginForm.rememberMe, { expires: 30 })
  345. } else {
  346. Cookies.remove('username')
  347. Cookies.remove('password')
  348. Cookies.remove('rememberMe')
  349. }
  350. let href = import.meta.env.VITE_APP_HREF
  351. loginForm.href = href
  352. store
  353. .dispatch('Login', loginForm)
  354. .then((res) => {
  355. // window.sessionStorage.setItem('username',loginForm.username)
  356. // sessionStorage.setItem('password',loginForm.password)
  357. // let token = res.data.access_token
  358. // console.log(token);
  359. // console.log(res,'res');
  360. // let str = Cookies.get('Admin-Token');
  361. // console.log(str,'str');
  362. // location.href = `http://localhost:81?${str}`
  363. })
  364. .catch(() => {
  365. loading.value = false
  366. if (captchaOnOff.value) {
  367. getCode()
  368. }
  369. })
  370. }
  371. })
  372. }
  373. function getCode() {
  374. getCodeImg().then((res) => {
  375. captchaOnOff.value = res.captchaOnOff === undefined ? true : res.captchaOnOff
  376. if (captchaOnOff.value) {
  377. codeUrl.value = 'data:image/gif;base64,' + res.img
  378. loginForm.uuid = res.uuid
  379. }
  380. })
  381. }
  382. // 图片新闻
  383. function getLbList() {
  384. lbList().then((res) => {
  385. srcData.value = res.rows
  386. //处理刚开始显示空白页
  387. setTimeout(() => {
  388. carousel.value.setActiveItem(0)
  389. }, 500)
  390. })
  391. }
  392. // 头条发布
  393. function getTtList() {
  394. ttList().then((res) => {
  395. xwData.value = res.rows.splice(0, 10)
  396. })
  397. }
  398. // 热点专题
  399. function getRdList() {
  400. rdList().then((res) => {
  401. rdData.value = res.rows.splice(0, 6)
  402. })
  403. }
  404. //政策查询
  405. function getZcList() {
  406. zcList().then((res) => {
  407. zcData.value = res.rows
  408. })
  409. }
  410. //办事指南
  411. function getBsList() {
  412. bsList().then((res) => {
  413. bsData.value = res.rows
  414. })
  415. }
  416. //修改日期格式
  417. function changDate(data, type) {
  418. let time = ''
  419. switch (type) {
  420. case 'one':
  421. time = data.slice(-4, -2) + '-' + data.slice(-2)
  422. break
  423. case 'two':
  424. time = data.slice(0, data.length - 4) + '-' + data.slice(-4, -2) + '-' + data.slice(-2)
  425. break
  426. }
  427. return time
  428. }
  429. //过滤
  430. function changZcData(data, value) {
  431. return data.filter((item) => item.ffl === value)
  432. }
  433. //一维数组变成二维数组
  434. function changeDict(data) {
  435. let list = data.slice(0, 8)
  436. let result = []
  437. for (let i = 0; i < list.length; i += 2) {
  438. result.push(list.slice(i, i + 2))
  439. }
  440. return result
  441. }
  442. //相关链接
  443. function getWlList() {
  444. wlList().then((res) => {
  445. xgData.value = res.rows.slice(0, 8)
  446. })
  447. }
  448. function goJg(value) {
  449. router.push({
  450. path: '/jgcx',
  451. query: {
  452. state: value
  453. }
  454. })
  455. }
  456. function goZlcx(value) {
  457. router.push({
  458. path: '/ylzc',
  459. query: {
  460. ffl: value
  461. }
  462. })
  463. }
  464. function goYlzc(id) {
  465. router.push({
  466. path: '/ylzc/' + id
  467. })
  468. }
  469. function goGd(path) {
  470. router.push({ path: path })
  471. }
  472. onMounted(() => {
  473. getLbList()
  474. getTtList()
  475. getRdList()
  476. getZcList()
  477. getWlList()
  478. getBsList()
  479. getCode()
  480. })
  481. </script>
  482. <style></style>
  483. <style scoped>
  484. .main1 {
  485. display: flex;
  486. background: #ffffff;
  487. border: 1px solid #dedede;
  488. border-radius: 5px;
  489. width: 100%;
  490. height: 480px;
  491. /*margin-top: 21px;*/
  492. }
  493. .main2 {
  494. width: 100%;
  495. height: 304px;
  496. margin-top: 21px;
  497. }
  498. .main1_left {
  499. width: 65%;
  500. display: flex;
  501. justify-items: center;
  502. border-right: 1px solid #dedede;
  503. }
  504. .main1_right {
  505. width: 35%;
  506. display: flex;
  507. justify-items: center;
  508. }
  509. .left_box {
  510. margin: auto;
  511. width: 94%;
  512. height: 96%;
  513. display: flex;
  514. flex-direction: column;
  515. }
  516. .right_box {
  517. margin: auto;
  518. width: 92%;
  519. height: 96%;
  520. display: flex;
  521. flex-direction: column;
  522. }
  523. .title_box {
  524. height: 10%;
  525. display: flex;
  526. align-items: center;
  527. position: relative;
  528. }
  529. .carousel {
  530. height: 90%;
  531. cursor: pointer;
  532. }
  533. .flex_column {
  534. display: flex;
  535. flex-direction: column;
  536. }
  537. .flex {
  538. display: flex;
  539. }
  540. .layer13 {
  541. display: flex;
  542. flex-direction: column;
  543. width: 8px;
  544. height: 20px;
  545. margin-right: 9px;
  546. }
  547. .group15 {
  548. background-color: rgba(217, 213, 214, 1);
  549. width: 8px;
  550. height: 10px;
  551. }
  552. .group16 {
  553. background-color: rgba(216, 1, 0, 1);
  554. width: 8px;
  555. height: 10px;
  556. }
  557. .title {
  558. font-size: 18px;
  559. font-weight: bold;
  560. color: #444b55;
  561. }
  562. .carousel_footer {
  563. width: 100%;
  564. height: 40px;
  565. background: #000000;
  566. opacity: 0.5;
  567. position: absolute;
  568. bottom: 0;
  569. line-height: 40px;
  570. }
  571. .carousel_title {
  572. color: #ffffff;
  573. font-size: 16px;
  574. font-weight: bold;
  575. width: 600px;
  576. margin-left: 18px;
  577. }
  578. .fs16 {
  579. font-size: 16px;
  580. }
  581. .fs14 {
  582. font-size: 14px;
  583. }
  584. .xw_title {
  585. width: 85%;
  586. line-height: 38px;
  587. font-weight: 800;
  588. color: #444b55;
  589. cursor: pointer;
  590. }
  591. .zl_lh {
  592. line-height: 60px;
  593. cursor: pointer;
  594. }
  595. .bs_box {
  596. width: 83%;
  597. line-height: 38px;
  598. font-weight: 800;
  599. color: #444b55;
  600. }
  601. .bs_box1 {
  602. width: 100%;
  603. line-height: 38px;
  604. font-weight: 800;
  605. color: #444b55;
  606. }
  607. .margin_left10 {
  608. margin-left: 10px;
  609. }
  610. .xw_date {
  611. width: 15%;
  612. font-size: 14px;
  613. font-weight: bold;
  614. display: flex;
  615. align-items: center;
  616. justify-content: flex-end;
  617. color: #444b55;
  618. opacity: 0.5;
  619. margin-right: 10px;
  620. }
  621. .xw_box {
  622. height: 10%;
  623. border-bottom: 1px dashed #dfe6ec;
  624. }
  625. .title_overflow {
  626. overflow: hidden;
  627. text-overflow: ellipsis;
  628. white-space: nowrap;
  629. }
  630. /* 指示器*/
  631. :deep(.el-carousel__indicators) {
  632. left: unset;
  633. transform: unset;
  634. right: 2%;
  635. }
  636. /*指示器按钮*/
  637. :deep(.el-carousel__button) {
  638. width: 16px;
  639. height: 16px;
  640. border: none;
  641. border-radius: 50%;
  642. background-color: #ffffff;
  643. }
  644. /*指示器激活按钮*/
  645. :deep(.is-active .el-carousel__button) {
  646. background: #d80100;
  647. border: 1px solid #ffffff;
  648. }
  649. .topImg {
  650. width: 100%;
  651. height: 100%;
  652. }
  653. .title_position {
  654. position: absolute;
  655. right: 0;
  656. cursor: pointer;
  657. }
  658. .red {
  659. font-size: 14px;
  660. font-weight: bold;
  661. color: #d80100;
  662. line-height: 50px;
  663. }
  664. .rd_box {
  665. height: 100%;
  666. }
  667. .center_box {
  668. width: 49%;
  669. /*height: 100%;*/
  670. background: #ffffff;
  671. box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
  672. /*border: red solid 1px;*/
  673. }
  674. .zl_box {
  675. width: 33%;
  676. /*height: 100%;*/
  677. background: #ffffff;
  678. box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
  679. }
  680. .footer_conter {
  681. width: 100%;
  682. /*height: 100%;*/
  683. background: #ffffff;
  684. margin-top: 25px;
  685. /*margin-bottom: 25px;*/
  686. box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
  687. }
  688. .rd_top {
  689. height: 40px;
  690. display: flex;
  691. justify-content: space-between;
  692. border-top: #bf242a solid 2px;
  693. }
  694. .rd_title {
  695. width: 120px;
  696. height: 100%;
  697. background: #bf242a;
  698. border-radius: 0 0 10px 0;
  699. text-align: center;
  700. display: flex;
  701. align-items: center;
  702. justify-content: center;
  703. font-size: 16px;
  704. font-weight: bold;
  705. color: #ffffff;
  706. }
  707. .ckgd {
  708. font-size: 14px;
  709. font-weight: bold;
  710. color: #666666;
  711. line-height: 40px;
  712. margin-right: 20px;
  713. cursor: pointer;
  714. }
  715. .rd_center {
  716. width: 96%;
  717. height: 250px;
  718. margin: auto;
  719. }
  720. .flex_row {
  721. display: flex;
  722. flex-wrap: wrap;
  723. justify-content: space-around;
  724. }
  725. .dt_bg {
  726. background: url('../../assets/images/dt.png') no-repeat;
  727. background-size: 100% 100%;
  728. }
  729. .dian {
  730. width: 3px;
  731. height: 3px;
  732. background: #fd8e1c;
  733. margin: auto 8px;
  734. }
  735. /*background: #D80100;*/
  736. :deep(.el-tabs__item.is-active) {
  737. font-size: 16px;
  738. font-weight: bold;
  739. color: #444b55;
  740. }
  741. :deep(.el-tabs__item) {
  742. font-size: 16px;
  743. font-weight: bold;
  744. color: #444b55;
  745. }
  746. :deep(.el-tabs__item:hover) {
  747. font-size: 16px;
  748. font-weight: bold;
  749. color: #444b55;
  750. cursor: pointer;
  751. }
  752. :deep(.el-tabs__active-bar) {
  753. background: #d80100;
  754. }
  755. .mg_right24 {
  756. margin-right: 2%;
  757. }
  758. .nav {
  759. width: 100%;
  760. height: 160px;
  761. background: url('../../assets/images/nav.png') no-repeat;
  762. background-size: 100% 100%;
  763. margin-top: 22px;
  764. display: flex;
  765. justify-content: center;
  766. align-items: center;
  767. }
  768. .jg_box {
  769. width: 125px;
  770. height: 110px;
  771. border: 1px solid #dadada;
  772. border-radius: 5px;
  773. margin: 5px 5px;
  774. display: flex;
  775. flex-direction: column;
  776. align-items: center;
  777. justify-content: space-evenly;
  778. cursor: pointer;
  779. }
  780. .bs_title {
  781. font-size: 14px;
  782. font-weight: bold;
  783. color: #d80100;
  784. display: flex;
  785. align-items: center;
  786. justify-content: flex-end;
  787. margin-right: 10px;
  788. }
  789. .bor_bt {
  790. border-bottom: 1px dashed rgb(223, 230, 236);
  791. cursor: pointer;
  792. }
  793. .title_type {
  794. width: 42px;
  795. height: 21px;
  796. background: #ffffff;
  797. border-radius: 10px 10px 10px 0px;
  798. font-size: 14px;
  799. font-weight: bold;
  800. line-height: 21px;
  801. text-align: center;
  802. margin: auto 5px;
  803. }
  804. .gr {
  805. border: 1px solid #1aa645;
  806. color: #1aa645;
  807. }
  808. .jg {
  809. border: 1px solid #d80100;
  810. color: #d80100;
  811. }
  812. .footer_title {
  813. font-size: 14px;
  814. font-weight: bold;
  815. color: #323131;
  816. line-height: 50px;
  817. margin-right: 23px;
  818. }
  819. .footer {
  820. height: 70px;
  821. display: flex;
  822. flex-direction: column;
  823. justify-content: center;
  824. align-items: center;
  825. }
  826. .user_big {
  827. width: 352px;
  828. height: 111px;
  829. background: #fff9f9;
  830. /*opacity: 0.3;*/
  831. border-radius: 5px;
  832. display: flex;
  833. flex-direction: column;
  834. align-items: center;
  835. justify-content: space-evenly;
  836. }
  837. .user_login {
  838. width: 167px;
  839. height: 111px;
  840. background: #fff9f9;
  841. /*opacity: 0.3;*/
  842. border-radius: 5px;
  843. display: flex;
  844. flex-direction: column;
  845. align-items: center;
  846. justify-content: space-evenly;
  847. }
  848. .zl_title {
  849. font-size: 14px;
  850. font-weight: bold;
  851. color: #d80100;
  852. cursor: pointer;
  853. }
  854. .empty {
  855. display: flex;
  856. justify-content: center;
  857. align-items: center;
  858. }
  859. .image-slot {
  860. display: flex;
  861. justify-content: center;
  862. align-items: center;
  863. width: 100%;
  864. height: 100%;
  865. background: var(--el-fill-color-light);
  866. color: var(--el-text-color-secondary);
  867. font-size: 50px;
  868. }
  869. .image-slot .el-icon {
  870. font-size: 50px;
  871. }
  872. :deep(.el-form) {
  873. width: 80%;
  874. }
  875. :deep(.el-form-item) {
  876. margin-bottom: 16px;
  877. }
  878. :deep(.el-form-item__content) {
  879. margin-left: 0px !important;
  880. }
  881. .login-code {
  882. width: 33%;
  883. height: 38px;
  884. float: right;
  885. margin-left: 15px;
  886. }
  887. .login-code img {
  888. cursor: pointer;
  889. vertical-align: middle;
  890. }
  891. .login-code-img {
  892. height: 38px;
  893. }
  894. :deep(.el-form-item__content){
  895. justify-content: space-between;
  896. }
  897. </style>