|
@@ -0,0 +1,677 @@
|
|
|
+<template>
|
|
|
+ <div class="header">
|
|
|
+ <div class="left">
|
|
|
+ <i class="logo" />
|
|
|
+ <span class="title">四川省公示地价查询平台</span>
|
|
|
+ </div>
|
|
|
+ <div class="center">
|
|
|
+ <div>
|
|
|
+ <ul class="menus" v-if="header.showHeader">
|
|
|
+ <li @click="home">首页</li>
|
|
|
+ <li @click="goBack">{{ areaName }}</li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <div>
|
|
|
+ <ul class="buttons" v-if="header.showHeader">
|
|
|
+ <li @click="">
|
|
|
+ <span>
|
|
|
+ <el-icon :size="14">
|
|
|
+ <StarFilled />
|
|
|
+ </el-icon>
|
|
|
+ 欢迎您:{{ username }}
|
|
|
+ </span>
|
|
|
+ </li>
|
|
|
+ <li>|</li>
|
|
|
+ <li @click="">
|
|
|
+ <span>
|
|
|
+ <el-icon :size="14">
|
|
|
+ <Histogram />
|
|
|
+ </el-icon>
|
|
|
+ 访问量:{{ count }}
|
|
|
+ </span>
|
|
|
+ </li>
|
|
|
+ <li>|</li>
|
|
|
+ <li class="item" @click="dialogVisible = true">
|
|
|
+ <span>
|
|
|
+ <el-icon :size="14">
|
|
|
+ <Avatar />
|
|
|
+ </el-icon>
|
|
|
+ 用户中心
|
|
|
+ </span>
|
|
|
+ </li>
|
|
|
+ <li>|</li>
|
|
|
+ <li class="item" @click="logout">
|
|
|
+ <span>
|
|
|
+ <el-icon :size="14">
|
|
|
+ <Expand />
|
|
|
+ </el-icon>
|
|
|
+ 安全退出
|
|
|
+ </span>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="sys-content">
|
|
|
+ <router-view @getAreaName="getAreaName" :serverType="form.type"></router-view>
|
|
|
+ <el-card id="formDiv" v-if="check.ifCheckForm">
|
|
|
+ <template #header>
|
|
|
+ <div class="card-header">
|
|
|
+ <span>公示地价查询</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-form id="form" :model="form" label-width="120px">
|
|
|
+ <el-form-item label="公示地价:">
|
|
|
+ <el-select v-model="form.type" placeholder="请选择">
|
|
|
+ <el-option v-for="(item, index) in types" :label="item" :value="item" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="州 市:">
|
|
|
+ <el-select v-model="form.city" placeholder="请选择" @change="gotoCity">
|
|
|
+ <el-option v-for="(item, index) in citys" :label="item.cityName" :value="JSON.stringify(item)" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="县 市 区:">
|
|
|
+ <el-select v-model="form.country" placeholder="请选择" @change="getXY">
|
|
|
+ <el-option v-for="(item, index) in subCitys" :label="item.cityName" :value="JSON.stringify(item)" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-input v-show=false :model=form.x></el-input>
|
|
|
+ <el-input v-show=false :model=form.y></el-input>
|
|
|
+ <el-input v-show=false :model=form.serverURI></el-input>
|
|
|
+ <el-button type="success" :disabled="unClickAble"
|
|
|
+ style="width: 290px; margin-top: 30px; margin-left: 45px;" @click="gotoData">查 询</el-button>
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="footer">
|
|
|
+ 技术支持:四川大友房地产土地资产评估有限公司
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-dialog v-model="dialogVisible" width="40%" style="border-radius: 10px;">
|
|
|
+ <el-descriptions title="我的信息" direction="vertical" column="4" border>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>
|
|
|
+ <div class="cell-item">
|
|
|
+ <el-icon :style="iconStyle">
|
|
|
+ <star />
|
|
|
+ </el-icon>
|
|
|
+ 名称
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-tag>{{ userInfo.name }}</el-tag>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>
|
|
|
+ <div class="cell-item">
|
|
|
+ <el-icon :style="iconStyle">
|
|
|
+ <user />
|
|
|
+ </el-icon>
|
|
|
+ 账号
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-tag>{{ userInfo.account }}</el-tag>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>
|
|
|
+ <div class="cell-item">
|
|
|
+ <el-icon :style="iconStyle">
|
|
|
+ <key />
|
|
|
+ </el-icon>
|
|
|
+ 密码
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-button type="danger" round size="small" @click="dialogVisiblex = true">修改密码</el-button>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>
|
|
|
+ <div class="cell-item">
|
|
|
+ <el-icon :style="iconStyle">
|
|
|
+ <location />
|
|
|
+ </el-icon>
|
|
|
+ 地区
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-tag>{{ userInfo.cityName }}-{{ userInfo.countryName }}</el-tag>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>
|
|
|
+ <div class="cell-item">
|
|
|
+ <el-icon :style="iconStyle">
|
|
|
+ <user />
|
|
|
+ </el-icon>
|
|
|
+ 联系人
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-tag>{{ userInfo.linkman }}</el-tag>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>
|
|
|
+ <div class="cell-item">
|
|
|
+ <el-icon :style="iconStyle">
|
|
|
+ <iphone />
|
|
|
+ </el-icon>
|
|
|
+ 电话
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-tag>{{ userInfo.mobile }}</el-tag>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>
|
|
|
+ <div class="cell-item">
|
|
|
+ <el-icon :style="iconStyle">
|
|
|
+ <message />
|
|
|
+ </el-icon>
|
|
|
+ 邮箱
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-tag>{{ userInfo.email }}</el-tag>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>
|
|
|
+ <div class="cell-item">
|
|
|
+ <el-icon :style="iconStyle">
|
|
|
+ <open />
|
|
|
+ </el-icon>
|
|
|
+ 状态
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-tag>{{ userInfo.enable ? '已激活' : '禁用' }}</el-tag>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>
|
|
|
+ <div class="cell-item">
|
|
|
+ <el-icon :style="iconStyle">
|
|
|
+ <clock />
|
|
|
+ </el-icon>
|
|
|
+ 账号有效期
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-tag type="error">{{ userInfo.expiryDate }}</el-tag>
|
|
|
+ </el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <el-dialog title="修改密码" v-model="dialogVisiblex" width="30%" style="border-radius: 10px;">
|
|
|
+ <div style="margin: 20px" />
|
|
|
+ <el-form ref="ruleForm" :label-position="labelPosition" label-width="100px" :model="updatePswForm"
|
|
|
+ style="max-width: 460px" :rules="rules">
|
|
|
+ <el-form-item label="原密码:" prop="oldPsw">
|
|
|
+ <el-input v-model.trim="updatePswForm.oldPsw" type="password" autocomplete="off" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="新密码:" prop="newPsw">
|
|
|
+ <el-input v-model.trim="updatePswForm.newPsw" type="password" autocomplete="off" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="确认密码:" prop="repeatPsw">
|
|
|
+ <el-input v-model.trim="updatePswForm.repeatPsw" type="password" autocomplete="off" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="submit">确认</el-button>
|
|
|
+ <el-button @click="resetForm">重置</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { ElButton, ElNotification } from 'element-plus';
|
|
|
+import citysJson from './assets/data/citys.json';
|
|
|
+import router from './router';
|
|
|
+import { watch, reactive, computed, ref, unref } from "vue";
|
|
|
+import { enableCity, enableCountry } from './enableCity';
|
|
|
+import { useStore } from 'vuex';
|
|
|
+import API from '@/api';
|
|
|
+
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: "App",
|
|
|
+ setup() {
|
|
|
+ let check = reactive({ ifCheckForm: false });
|
|
|
+ let header = reactive({ showHeader: false });
|
|
|
+ watch(() => router.currentRoute.value.name, (newName, oldName) => {
|
|
|
+ if (newName === "Login") {
|
|
|
+ header.showHeader = false;
|
|
|
+ }
|
|
|
+ if (newName === "AreaData" || newName === "Login") {
|
|
|
+ check.ifCheckForm = false;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ header.showHeader = true;
|
|
|
+ check.ifCheckForm = true;
|
|
|
+ }
|
|
|
+ }, { immediate: true });
|
|
|
+ const store = useStore();
|
|
|
+ const username = computed(() => {
|
|
|
+ return store.getters.name;
|
|
|
+ });
|
|
|
+ const userInfo = computed(() => {
|
|
|
+ return store.getters.userInfo;
|
|
|
+ });
|
|
|
+ const count = computed(() => {
|
|
|
+ return store.getters.count;
|
|
|
+ });
|
|
|
+ const logout = () => {
|
|
|
+ store.dispatch("logout")
|
|
|
+ .then(() => {
|
|
|
+ sessionStorage.removeItem("store");
|
|
|
+ router.push({
|
|
|
+ name: "Login",
|
|
|
+ });
|
|
|
+ });
|
|
|
+ };
|
|
|
+ let dialogVisible = ref(false);
|
|
|
+ let dialogVisiblex = ref(false);
|
|
|
+ const ruleForm = ref(null)
|
|
|
+ const updatePswForm = reactive({
|
|
|
+ oldPsw: '',
|
|
|
+ newPsw: '',
|
|
|
+ repeatPsw: '',
|
|
|
+ });
|
|
|
+ var checkRepeat = (rule, value, callback) => {
|
|
|
+ if (value === '') {
|
|
|
+ callback(new Error('请再次输入新密码'));
|
|
|
+ } else {
|
|
|
+ if (!/^\w{6,24}$/.test(value)) {
|
|
|
+ callback(new Error('密码是6-24个字符'));
|
|
|
+ }
|
|
|
+ if (value !== updatePswForm.newPsw) {
|
|
|
+ callback(new Error('两次输入的新密码不一致'));
|
|
|
+ }
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ var oldPsw = (rule, value, callback) => {
|
|
|
+ if (value === '') {
|
|
|
+ callback(new Error('请输入原密码'));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ var newPsw = (rule, value, callback) => {
|
|
|
+ if (value === '') {
|
|
|
+ callback(new Error('请输入新密码'));
|
|
|
+ } else {
|
|
|
+ if (!/^\w{6,24}$/.test(value)) {
|
|
|
+ callback(new Error('密码是6-24个字符'));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ const rules = {
|
|
|
+ repeatPsw: [{ validator: checkRepeat, trigger: 'blur' }],
|
|
|
+ oldPsw: [{ validator: oldPsw, trigger: 'blur' }],
|
|
|
+ newPsw: [{ validator: newPsw, trigger: 'blur' }],
|
|
|
+ }
|
|
|
+ const blockMargin = computed(() => {
|
|
|
+ const marginMap = {
|
|
|
+ large: "32px",
|
|
|
+ default: "28px",
|
|
|
+ small: "24px",
|
|
|
+ };
|
|
|
+ });
|
|
|
+
|
|
|
+ const submitForm = () => {
|
|
|
+ const form = unref(ruleForm)
|
|
|
+ try {
|
|
|
+ let res = form.validate()
|
|
|
+ if (res) {
|
|
|
+ API.account.modifyPass({
|
|
|
+ "newPsw": updatePswForm.newPsw,
|
|
|
+ "oldPsw": updatePswForm.oldPsw,
|
|
|
+ "repeatPsw": updatePswForm.repeatPsw
|
|
|
+ })
|
|
|
+ .then(response => {
|
|
|
+ const { code } = response;
|
|
|
+ const { msg } = response;
|
|
|
+ if (code === 200) {
|
|
|
+ ElNotification({
|
|
|
+ title: "成功",
|
|
|
+ message: "密码修改成功,请重新登录",
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+ setTimeout(() => {
|
|
|
+ store.dispatch("logout")
|
|
|
+ .then(() => {
|
|
|
+ sessionStorage.removeItem("store");
|
|
|
+ router.push({
|
|
|
+ name: "Login",
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }, 3000)
|
|
|
+ } else {
|
|
|
+ ElNotification({
|
|
|
+ title: "失败",
|
|
|
+ message: msg,
|
|
|
+ type: "info",
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const resetForm = () => {
|
|
|
+ const form = unref(ruleForm)
|
|
|
+ form.resetFields();
|
|
|
+ }
|
|
|
+
|
|
|
+ return { check, header, logout, dialogVisible, dialogVisiblex, username, userInfo, updatePswForm, blockMargin, rules, submitForm, ruleForm, resetForm,count };
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ areaName: null,
|
|
|
+ types: ["城镇基准地价"],
|
|
|
+ citys: citysJson,
|
|
|
+ subCitys: null,
|
|
|
+ unClickAble: true,
|
|
|
+ form: {
|
|
|
+ type: "城镇基准地价",
|
|
|
+ city: {},
|
|
|
+ country: {},
|
|
|
+ x: null,
|
|
|
+ y: null,
|
|
|
+ serverURI: null
|
|
|
+ },
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ //在页面加载时读取sessionStorage里的状态信息
|
|
|
+ if (sessionStorage.getItem("store")) {
|
|
|
+ this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem("store"))));
|
|
|
+ }
|
|
|
+ //在页面刷新时将vuex里的信息保存到sessionStorage里
|
|
|
+ window.addEventListener("beforeunload", () => {
|
|
|
+ sessionStorage.setItem("store", JSON.stringify(this.$store.state));
|
|
|
+ });
|
|
|
+ this.form.city = null;
|
|
|
+ this.form.country = null;
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ home() {
|
|
|
+ this.areaName = null;
|
|
|
+ this.form.city = null;
|
|
|
+ this.form.country = null;
|
|
|
+ router.push({
|
|
|
+ name: "home"
|
|
|
+ });
|
|
|
+ },
|
|
|
+ goBack() {
|
|
|
+ if (this.$route.name === "AreaData") {
|
|
|
+ router.back();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getAreaName(val) {
|
|
|
+ this.areaName = val;
|
|
|
+ let selectedCity = this.getCityByCityName(val);
|
|
|
+ if (selectedCity != null) {
|
|
|
+ this.form.city = JSON.stringify(selectedCity);
|
|
|
+ this.subCitys = selectedCity.subCitys;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ gotoCity() {
|
|
|
+ if (this.form.country != null) {
|
|
|
+ this.form.country = null;
|
|
|
+ }
|
|
|
+ const city = JSON.parse(this.form.city);
|
|
|
+ this.subCitys = city.subCitys;
|
|
|
+ const areaName = city.cityName;
|
|
|
+ const serverURI = city.uri;
|
|
|
+ const serverType = this.form.type === null ? "null" : this.form.type;
|
|
|
+ if (enableCity.indexOf(areaName) == -1) {
|
|
|
+ ElNotification({
|
|
|
+ title: "抱歉",
|
|
|
+ message: "平台暂未开放此区域,敬请期待!",
|
|
|
+ type: "error",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const adCode = city.adCode;
|
|
|
+ const x = city.x;
|
|
|
+ const y = city.y;
|
|
|
+ router.push({
|
|
|
+ name: "ChildAreaMap",
|
|
|
+ query: {
|
|
|
+ adCode: adCode,
|
|
|
+ areaName: areaName,
|
|
|
+ serverURI: serverURI,
|
|
|
+ serverType: serverType,
|
|
|
+ x: x + 1,
|
|
|
+ y: y + 0.4
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getCityByCityName(cityName) {
|
|
|
+ let value;
|
|
|
+ for (var index in citysJson) {
|
|
|
+ value = citysJson[index];
|
|
|
+ if (cityName === value.cityName) {
|
|
|
+ return value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ },
|
|
|
+ getXY() {
|
|
|
+ const country = JSON.parse(this.form.country);
|
|
|
+ const city = JSON.parse(this.form.city);
|
|
|
+ this.form.x = country.x;
|
|
|
+ this.form.y = country.y;
|
|
|
+ this.form.serverURI = city.uri;
|
|
|
+ },
|
|
|
+ gotoData() {
|
|
|
+ const countryName = JSON.parse(this.form.country).cityName;
|
|
|
+ if (enableCountry.indexOf(countryName) == -1) {
|
|
|
+ ElNotification({
|
|
|
+ title: "抱歉",
|
|
|
+ message: "平台暂未开放此区域,敬请期待!",
|
|
|
+ type: "error",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (this.form.type != null && this.form.serverURI != null && this.form.x != null && this.form.y != null) {
|
|
|
+ router.push({
|
|
|
+ name: "AreaData",
|
|
|
+ query: {
|
|
|
+ serverType: this.form.type,
|
|
|
+ serverURI: this.form.serverURI,
|
|
|
+ x: this.form.x,
|
|
|
+ y: this.form.y
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ submit(){
|
|
|
+ setTimeout(()=>{
|
|
|
+ this.dialogVisible = false;
|
|
|
+ this.dialogVisiblex = false;
|
|
|
+ },2000)
|
|
|
+
|
|
|
+ this.submitForm();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ form: {
|
|
|
+ handler(newForm, oldForm) {
|
|
|
+ if (newForm.type != null && newForm.city != null && newForm.country != null) {
|
|
|
+ this.unClickAble = false;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this.unClickAble = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ deep: true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: { ElButton }
|
|
|
+};
|
|
|
+
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+html,
|
|
|
+body {
|
|
|
+ height: 100%;
|
|
|
+ margin: 0;
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.header {
|
|
|
+ height: 60px;
|
|
|
+ padding: 0;
|
|
|
+ background-color: rgb(10, 75, 135);
|
|
|
+ vertical-align: middle;
|
|
|
+ display: flex;
|
|
|
+ position: relative;
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+.left {
|
|
|
+ margin: 0;
|
|
|
+ padding-left: 10px;
|
|
|
+ position: relative;
|
|
|
+ display: flex;
|
|
|
+ width: 18%;
|
|
|
+}
|
|
|
+
|
|
|
+.logo {
|
|
|
+ background: url("assets/images/logo.png") no-repeat 50%;
|
|
|
+ display: flex;
|
|
|
+ width: 40px;
|
|
|
+ height: 40px;
|
|
|
+ margin-top: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.title {
|
|
|
+ color: #fff;
|
|
|
+ font-size: 24px;
|
|
|
+ font-weight: bold;
|
|
|
+ letter-spacing: 3px;
|
|
|
+ margin-left: 5px;
|
|
|
+ vertical-align: middle;
|
|
|
+ width: 300px;
|
|
|
+ display: flex;
|
|
|
+ line-height: 60px;
|
|
|
+}
|
|
|
+
|
|
|
+.center {
|
|
|
+ align-items: center;
|
|
|
+ display: flex;
|
|
|
+ height: 100%;
|
|
|
+ width: 40%;
|
|
|
+}
|
|
|
+
|
|
|
+.menus {
|
|
|
+ margin: 0;
|
|
|
+ padding-left: 10px;
|
|
|
+ position: relative;
|
|
|
+ display: flex;
|
|
|
+}
|
|
|
+
|
|
|
+.menus li {
|
|
|
+ align-items: center;
|
|
|
+ cursor: pointer;
|
|
|
+ padding: 0 20px;
|
|
|
+ position: relative;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 18px;
|
|
|
+ letter-spacing: 1px;
|
|
|
+ display: inline-block;
|
|
|
+ height: 60px;
|
|
|
+ line-height: 60px;
|
|
|
+}
|
|
|
+
|
|
|
+.menus :hover {
|
|
|
+ color: #CD2626;
|
|
|
+}
|
|
|
+
|
|
|
+.sys-content {
|
|
|
+ width: 100%;
|
|
|
+ position: absolute;
|
|
|
+ top: 60px;
|
|
|
+ bottom: 0px;
|
|
|
+ left: 0px;
|
|
|
+ /*background-image: url("assets/images/bj.jpg");*/
|
|
|
+}
|
|
|
+
|
|
|
+.footer {
|
|
|
+ width: 100%;
|
|
|
+ background-color: rgb(10, 75, 135);
|
|
|
+ position: fixed;
|
|
|
+ bottom: 0;
|
|
|
+ height: 20px;
|
|
|
+ font-size: 10px;
|
|
|
+ vertical-align: middle;
|
|
|
+ padding-left: 10px;
|
|
|
+ color: #fff;
|
|
|
+}
|
|
|
+
|
|
|
+.card-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ font-size: 20px;
|
|
|
+ letter-spacing: 3px;
|
|
|
+ font-weight: bolder
|
|
|
+}
|
|
|
+
|
|
|
+#formDiv {
|
|
|
+ width: 500px;
|
|
|
+ height: 400px;
|
|
|
+ position: absolute;
|
|
|
+ top: 200px;
|
|
|
+ right: 200px;
|
|
|
+ background-color: rgba(255, 255, 255, 0.9);
|
|
|
+ border-radius: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+#form {
|
|
|
+ margin-left: 40px;
|
|
|
+}
|
|
|
+
|
|
|
+.right {
|
|
|
+ align-items: center;
|
|
|
+ display: flex;
|
|
|
+ padding-right: 10px;
|
|
|
+ width: auto;
|
|
|
+ justify-content: flex-end;
|
|
|
+ flex: 1;
|
|
|
+}
|
|
|
+
|
|
|
+.buttons {
|
|
|
+ margin: 0;
|
|
|
+ position: relative;
|
|
|
+ display: flex;
|
|
|
+}
|
|
|
+
|
|
|
+.buttons li {
|
|
|
+ align-items: center;
|
|
|
+ padding: 0 5px;
|
|
|
+ position: relative;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 13px;
|
|
|
+ display: inline-block;
|
|
|
+ height: 60px;
|
|
|
+ line-height: 60px;
|
|
|
+}
|
|
|
+
|
|
|
+.buttons>.item :hover {
|
|
|
+ color: #CD2626;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.el-descriptions {
|
|
|
+ margin-top: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.cell-item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+</style>
|