Compare commits
No commits in common. 'master' and 'feature/预约看房' have entirely different histories.
master
...
feature/预约
@ -1,200 +0,0 @@
|
|||||||
package com.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
|
||||||
import com.baomidou.mybatisplus.mapper.Wrapper;
|
|
||||||
import com.entity.HetongxinxiEntity;
|
|
||||||
import com.entity.view.HetongxinxiView;
|
|
||||||
import com.service.HetongxinxiService;
|
|
||||||
import com.utils.MPUtil;
|
|
||||||
import com.utils.PageUtils;
|
|
||||||
import com.utils.R;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 合同信息
|
|
||||||
* 后端接口
|
|
||||||
* @author
|
|
||||||
* @email
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/hetongxinxi")
|
|
||||||
public class HetongxinxiController {
|
|
||||||
@Autowired
|
|
||||||
private HetongxinxiService hetongxinxiService;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 后端列表
|
|
||||||
*/
|
|
||||||
@RequestMapping("/page")
|
|
||||||
public R page(@RequestParam Map<String, Object> params,HetongxinxiEntity hetongxinxi, HttpServletRequest request){
|
|
||||||
String tableName = request.getSession().getAttribute("tableName").toString();
|
|
||||||
if(tableName.equals("yonghu")) {
|
|
||||||
hetongxinxi.setYonghuming((String)request.getSession().getAttribute("username"));
|
|
||||||
}
|
|
||||||
if(tableName.equals("fangzhu")) {
|
|
||||||
hetongxinxi.setFangzhuzhanghao((String)request.getSession().getAttribute("username"));
|
|
||||||
}
|
|
||||||
EntityWrapper<HetongxinxiEntity> ew = new EntityWrapper<HetongxinxiEntity>();
|
|
||||||
PageUtils page = hetongxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, hetongxinxi), params), params));
|
|
||||||
|
|
||||||
return R.ok().put("data", page);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 前端列表
|
|
||||||
*/
|
|
||||||
@RequestMapping("/list")
|
|
||||||
public R list(@RequestParam Map<String, Object> params,HetongxinxiEntity hetongxinxi, HttpServletRequest request){
|
|
||||||
EntityWrapper<HetongxinxiEntity> ew = new EntityWrapper<HetongxinxiEntity>();
|
|
||||||
PageUtils page = hetongxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, hetongxinxi), params), params));
|
|
||||||
return R.ok().put("data", page);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 列表
|
|
||||||
*/
|
|
||||||
@RequestMapping("/lists")
|
|
||||||
public R list( HetongxinxiEntity hetongxinxi){
|
|
||||||
EntityWrapper<HetongxinxiEntity> ew = new EntityWrapper<HetongxinxiEntity>();
|
|
||||||
ew.allEq(MPUtil.allEQMapPre( hetongxinxi, "hetongxinxi"));
|
|
||||||
return R.ok().put("data", hetongxinxiService.selectListView(ew));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询
|
|
||||||
*/
|
|
||||||
@RequestMapping("/query")
|
|
||||||
public R query(HetongxinxiEntity hetongxinxi){
|
|
||||||
EntityWrapper< HetongxinxiEntity> ew = new EntityWrapper< HetongxinxiEntity>();
|
|
||||||
ew.allEq(MPUtil.allEQMapPre( hetongxinxi, "hetongxinxi"));
|
|
||||||
HetongxinxiView hetongxinxiView = hetongxinxiService.selectView(ew);
|
|
||||||
return R.ok("查询合同信息成功").put("data", hetongxinxiView);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 后端详情
|
|
||||||
*/
|
|
||||||
@RequestMapping("/info/{id}")
|
|
||||||
public R info(@PathVariable("id") Long id){
|
|
||||||
HetongxinxiEntity hetongxinxi = hetongxinxiService.selectById(id);
|
|
||||||
return R.ok().put("data", hetongxinxi);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 前端详情
|
|
||||||
*/
|
|
||||||
@RequestMapping("/detail/{id}")
|
|
||||||
public R detail(@PathVariable("id") Long id){
|
|
||||||
HetongxinxiEntity hetongxinxi = hetongxinxiService.selectById(id);
|
|
||||||
return R.ok().put("data", hetongxinxi);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 后端保存
|
|
||||||
*/
|
|
||||||
@RequestMapping("/save")
|
|
||||||
public R save(@RequestBody HetongxinxiEntity hetongxinxi, HttpServletRequest request){
|
|
||||||
hetongxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
|
|
||||||
//ValidatorUtils.validateEntity(hetongxinxi);
|
|
||||||
hetongxinxiService.insert(hetongxinxi);
|
|
||||||
return R.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 前端保存
|
|
||||||
*/
|
|
||||||
@RequestMapping("/add")
|
|
||||||
public R add(@RequestBody HetongxinxiEntity hetongxinxi, HttpServletRequest request){
|
|
||||||
hetongxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
|
|
||||||
//ValidatorUtils.validateEntity(hetongxinxi);
|
|
||||||
hetongxinxiService.insert(hetongxinxi);
|
|
||||||
return R.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改
|
|
||||||
*/
|
|
||||||
@RequestMapping("/update")
|
|
||||||
public R update(@RequestBody HetongxinxiEntity hetongxinxi, HttpServletRequest request){
|
|
||||||
//ValidatorUtils.validateEntity(hetongxinxi);
|
|
||||||
hetongxinxiService.updateById(hetongxinxi);//全部更新
|
|
||||||
return R.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除
|
|
||||||
*/
|
|
||||||
@RequestMapping("/delete")
|
|
||||||
public R delete(@RequestBody Long[] ids){
|
|
||||||
hetongxinxiService.deleteBatchIds(Arrays.asList(ids));
|
|
||||||
return R.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 提醒接口
|
|
||||||
*/
|
|
||||||
@RequestMapping("/remind/{columnName}/{type}")
|
|
||||||
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
|
|
||||||
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
|
|
||||||
map.put("column", columnName);
|
|
||||||
map.put("type", type);
|
|
||||||
|
|
||||||
if(type.equals("2")) {
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
Calendar c = Calendar.getInstance();
|
|
||||||
Date remindStartDate = null;
|
|
||||||
Date remindEndDate = null;
|
|
||||||
if(map.get("remindstart")!=null) {
|
|
||||||
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
|
|
||||||
c.setTime(new Date());
|
|
||||||
c.add(Calendar.DAY_OF_MONTH,remindStart);
|
|
||||||
remindStartDate = c.getTime();
|
|
||||||
map.put("remindstart", sdf.format(remindStartDate));
|
|
||||||
}
|
|
||||||
if(map.get("remindend")!=null) {
|
|
||||||
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
|
|
||||||
c.setTime(new Date());
|
|
||||||
c.add(Calendar.DAY_OF_MONTH,remindEnd);
|
|
||||||
remindEndDate = c.getTime();
|
|
||||||
map.put("remindend", sdf.format(remindEndDate));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Wrapper<HetongxinxiEntity> wrapper = new EntityWrapper<HetongxinxiEntity>();
|
|
||||||
if(map.get("remindstart")!=null) {
|
|
||||||
wrapper.ge(columnName, map.get("remindstart"));
|
|
||||||
}
|
|
||||||
if(map.get("remindend")!=null) {
|
|
||||||
wrapper.le(columnName, map.get("remindend"));
|
|
||||||
}
|
|
||||||
|
|
||||||
String tableName = request.getSession().getAttribute("tableName").toString();
|
|
||||||
if(tableName.equals("yonghu")) {
|
|
||||||
wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
|
|
||||||
}
|
|
||||||
if(tableName.equals("fangzhu")) {
|
|
||||||
wrapper.eq("fangzhuzhanghao", (String)request.getSession().getAttribute("username"));
|
|
||||||
}
|
|
||||||
|
|
||||||
int count = hetongxinxiService.selectCount(wrapper);
|
|
||||||
return R.ok().put("count", count);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
package com.dao;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.mapper.Wrapper;
|
|
||||||
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
|
|
||||||
import com.entity.HetongxinxiEntity;
|
|
||||||
import com.entity.view.HetongxinxiView;
|
|
||||||
import com.entity.vo.HetongxinxiVO;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 合同信息
|
|
||||||
*
|
|
||||||
* @author
|
|
||||||
* @email
|
|
||||||
*/
|
|
||||||
public interface HetongxinxiDao extends BaseMapper<HetongxinxiEntity> {
|
|
||||||
|
|
||||||
List<HetongxinxiVO> selectListVO(@Param("ew") Wrapper<HetongxinxiEntity> wrapper);
|
|
||||||
|
|
||||||
HetongxinxiVO selectVO(@Param("ew") Wrapper<HetongxinxiEntity> wrapper);
|
|
||||||
|
|
||||||
List<HetongxinxiView> selectListView(@Param("ew") Wrapper<HetongxinxiEntity> wrapper);
|
|
||||||
|
|
||||||
List<HetongxinxiView> selectListView(Pagination page,@Param("ew") Wrapper<HetongxinxiEntity> wrapper);
|
|
||||||
|
|
||||||
HetongxinxiView selectView(@Param("ew") Wrapper<HetongxinxiEntity> wrapper);
|
|
||||||
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
package com.service;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.mapper.Wrapper;
|
|
||||||
import com.baomidou.mybatisplus.service.IService;
|
|
||||||
import com.entity.HetongxinxiEntity;
|
|
||||||
import com.entity.view.HetongxinxiView;
|
|
||||||
import com.entity.vo.HetongxinxiVO;
|
|
||||||
import com.utils.PageUtils;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 合同信息
|
|
||||||
*
|
|
||||||
* @author
|
|
||||||
* @email
|
|
||||||
*/
|
|
||||||
public interface HetongxinxiService extends IService<HetongxinxiEntity> {
|
|
||||||
|
|
||||||
PageUtils queryPage(Map<String, Object> params);
|
|
||||||
|
|
||||||
List<HetongxinxiVO> selectListVO(Wrapper<HetongxinxiEntity> wrapper);
|
|
||||||
|
|
||||||
HetongxinxiVO selectVO(@Param("ew") Wrapper<HetongxinxiEntity> wrapper);
|
|
||||||
|
|
||||||
List<HetongxinxiView> selectListView(Wrapper<HetongxinxiEntity> wrapper);
|
|
||||||
|
|
||||||
HetongxinxiView selectView(@Param("ew") Wrapper<HetongxinxiEntity> wrapper);
|
|
||||||
|
|
||||||
PageUtils queryPage(Map<String, Object> params,Wrapper<HetongxinxiEntity> wrapper);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
|||||||
package com.service.impl;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
|
||||||
import com.baomidou.mybatisplus.mapper.Wrapper;
|
|
||||||
import com.baomidou.mybatisplus.plugins.Page;
|
|
||||||
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
|
||||||
import com.dao.HetongxinxiDao;
|
|
||||||
import com.entity.HetongxinxiEntity;
|
|
||||||
import com.entity.view.HetongxinxiView;
|
|
||||||
import com.entity.vo.HetongxinxiVO;
|
|
||||||
import com.service.HetongxinxiService;
|
|
||||||
import com.utils.PageUtils;
|
|
||||||
import com.utils.Query;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Service("hetongxinxiService")
|
|
||||||
public class HetongxinxiServiceImpl extends ServiceImpl<HetongxinxiDao, HetongxinxiEntity> implements HetongxinxiService {
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PageUtils queryPage(Map<String, Object> params) {
|
|
||||||
Page<HetongxinxiEntity> page = this.selectPage(
|
|
||||||
new Query<HetongxinxiEntity>(params).getPage(),
|
|
||||||
new EntityWrapper<HetongxinxiEntity>()
|
|
||||||
);
|
|
||||||
return new PageUtils(page);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PageUtils queryPage(Map<String, Object> params, Wrapper<HetongxinxiEntity> wrapper) {
|
|
||||||
Page<HetongxinxiView> page =new Query<HetongxinxiView>(params).getPage();
|
|
||||||
page.setRecords(baseMapper.selectListView(page,wrapper));
|
|
||||||
PageUtils pageUtil = new PageUtils(page);
|
|
||||||
return pageUtil;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<HetongxinxiVO> selectListVO(Wrapper<HetongxinxiEntity> wrapper) {
|
|
||||||
return baseMapper.selectListVO(wrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public HetongxinxiVO selectVO(Wrapper<HetongxinxiEntity> wrapper) {
|
|
||||||
return baseMapper.selectVO(wrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<HetongxinxiView> selectListView(Wrapper<HetongxinxiEntity> wrapper) {
|
|
||||||
return baseMapper.selectListView(wrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public HetongxinxiView selectView(Wrapper<HetongxinxiEntity> wrapper) {
|
|
||||||
return baseMapper.selectView(wrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
<template>
|
|
||||||
<svg :class="svgClass" aria-hidden="true" v-on="$listeners">
|
|
||||||
<use :xlink:href="iconName" />
|
|
||||||
</svg>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'SvgIcon',
|
|
||||||
props: {
|
|
||||||
iconClass: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
className: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
iconName() {
|
|
||||||
return `#icon-${this.iconClass}`
|
|
||||||
},
|
|
||||||
svgClass() {
|
|
||||||
if (this.className) {
|
|
||||||
return 'svg-icon ' + this.className
|
|
||||||
} else {
|
|
||||||
return 'svg-icon'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.svg-icon {
|
|
||||||
width: 1em;
|
|
||||||
height: 1em;
|
|
||||||
vertical-align: -0.15em;
|
|
||||||
fill: currentColor;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,109 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-breadcrumb class="app-breadcrumb" separator="(●'◡'●)" style="height:50px;backgroundColor:rgba(79, 73, 73, 1);borderRadius:0px;padding:0px 20px 0px 20px;boxShadow:;borderWidth:2px;borderStyle:;borderColor:rgba(193, 180, 180, 0.5);">
|
|
||||||
<transition-group name="breadcrumb" class="box" :style="1==1?'justifyContent:flex-start;':1==2?'justifyContent:center;':'justifyContent:flex-end;'">
|
|
||||||
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
|
|
||||||
<span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect">{{ item.name }}</span>
|
|
||||||
<a v-else @click.prevent="handleLink(item)">{{ item.name }}</a>
|
|
||||||
</el-breadcrumb-item>
|
|
||||||
</transition-group>
|
|
||||||
</el-breadcrumb>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import pathToRegexp from 'path-to-regexp'
|
|
||||||
import { generateTitle } from '@/utils/i18n'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
levelList: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
$route() {
|
|
||||||
this.getBreadcrumb()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.getBreadcrumb()
|
|
||||||
this.breadcrumbStyleChange()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
generateTitle,
|
|
||||||
getBreadcrumb() {
|
|
||||||
// only show routes with meta.title
|
|
||||||
let route = this.$route
|
|
||||||
let matched = route.matched.filter(item => item.meta)
|
|
||||||
const first = matched[0]
|
|
||||||
matched = [{ path: '/index' }].concat(matched)
|
|
||||||
|
|
||||||
this.levelList = matched.filter(item => item.meta)
|
|
||||||
},
|
|
||||||
isDashboard(route) {
|
|
||||||
const name = route && route.name
|
|
||||||
if (!name) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return name.trim().toLocaleLowerCase() === 'Index'.toLocaleLowerCase()
|
|
||||||
},
|
|
||||||
pathCompile(path) {
|
|
||||||
// To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561
|
|
||||||
const { params } = this.$route
|
|
||||||
var toPath = pathToRegexp.compile(path)
|
|
||||||
return toPath(params)
|
|
||||||
},
|
|
||||||
handleLink(item) {
|
|
||||||
const { redirect, path } = item
|
|
||||||
if (redirect) {
|
|
||||||
this.$router.push(redirect)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.$router.push(path)
|
|
||||||
},
|
|
||||||
breadcrumbStyleChange(val) {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.app-breadcrumb .el-breadcrumb__separator').forEach(el=>{
|
|
||||||
el.innerText = "(●'◡'●)"
|
|
||||||
el.style.color = "rgba(235, 90, 170, 1)"
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.app-breadcrumb .el-breadcrumb__inner a').forEach(el=>{
|
|
||||||
el.style.color = "rgba(196, 212, 244, 1)"
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.app-breadcrumb .el-breadcrumb__inner .no-redirect').forEach(el=>{
|
|
||||||
el.style.color = "rgba(244, 149, 32, 1)"
|
|
||||||
})
|
|
||||||
|
|
||||||
let str = "vertical"
|
|
||||||
if("vertical" === str) {
|
|
||||||
let headHeight = "60px"
|
|
||||||
headHeight = parseInt(headHeight) + 10 + 'px'
|
|
||||||
document.querySelectorAll('.app-breadcrumb').forEach(el=>{
|
|
||||||
el.style.marginTop = headHeight
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.app-breadcrumb {
|
|
||||||
display: block;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 50px;
|
|
||||||
|
|
||||||
.box {
|
|
||||||
display: flex;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-redirect {
|
|
||||||
color: #97a8be;
|
|
||||||
cursor: text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,77 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-breadcrumb class="app-breadcrumb" separator="/">
|
|
||||||
<transition-group name="breadcrumb">
|
|
||||||
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
|
|
||||||
<span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect">{{ item.name }}</span>
|
|
||||||
<a v-else @click.prevent="handleLink(item)">{{ item.name }}</a>
|
|
||||||
</el-breadcrumb-item>
|
|
||||||
</transition-group>
|
|
||||||
</el-breadcrumb>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import pathToRegexp from 'path-to-regexp'
|
|
||||||
import { generateTitle } from '@/utils/i18n'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
levelList: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
$route() {
|
|
||||||
this.getBreadcrumb()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.getBreadcrumb()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
generateTitle,
|
|
||||||
getBreadcrumb() {
|
|
||||||
// only show routes with meta.title
|
|
||||||
console.log(this.$route)
|
|
||||||
let matched = this.$route.matched.filter(item => item.meta)
|
|
||||||
const first = matched[0]
|
|
||||||
matched = [{ path: '/index' }].concat(matched)
|
|
||||||
|
|
||||||
this.levelList = matched.filter(item => item.meta)
|
|
||||||
},
|
|
||||||
isDashboard(route) {
|
|
||||||
const name = route && route.name
|
|
||||||
if (!name) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return name.trim().toLocaleLowerCase() === 'Index'.toLocaleLowerCase()
|
|
||||||
},
|
|
||||||
pathCompile(path) {
|
|
||||||
// To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561
|
|
||||||
const { params } = this.$route
|
|
||||||
var toPath = pathToRegexp.compile(path)
|
|
||||||
return toPath(params)
|
|
||||||
},
|
|
||||||
handleLink(item) {
|
|
||||||
const { redirect, path } = item
|
|
||||||
if (redirect) {
|
|
||||||
this.$router.push(redirect)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.$router.push(path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.app-breadcrumb.el-breadcrumb {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 50px;
|
|
||||||
margin-left: 8px;
|
|
||||||
|
|
||||||
.no-redirect {
|
|
||||||
color: #97a8be;
|
|
||||||
cursor: text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,60 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-card class="box-card">
|
|
||||||
<div slot="header" class="header">
|
|
||||||
<span>{{title}}</span>
|
|
||||||
<span>
|
|
||||||
<el-tag size="small" :type="titleTag">{{titleUnit}}</el-tag>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
{{content}}
|
|
||||||
<span class="unit">{{contentUnit}}</span>
|
|
||||||
</div>
|
|
||||||
<div class="bottom">
|
|
||||||
<span>{{bottomTitle}}</span>
|
|
||||||
<span>
|
|
||||||
{{bottomContent}}
|
|
||||||
<i :class="bottomIcon"></i>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</el-card>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: [
|
|
||||||
"title",
|
|
||||||
"titleTag",
|
|
||||||
"titleUnit",
|
|
||||||
"content",
|
|
||||||
"contentUnit",
|
|
||||||
"bottomTitle",
|
|
||||||
"bottomContent",
|
|
||||||
"bottomIcon"
|
|
||||||
]
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.box-card {
|
|
||||||
margin-right: 10px;
|
|
||||||
.header {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
font-size: 30px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #666;
|
|
||||||
text-align: center;
|
|
||||||
.unit {
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.bottom {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,101 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="home-comment">
|
|
||||||
<div class="title">用户留言</div>
|
|
||||||
<div class="comment-list">
|
|
||||||
<div v-for="(item,index) in list" v-bind:key="index" class="comment-item">
|
|
||||||
<div class="user-content">
|
|
||||||
<el-image
|
|
||||||
class="avator"
|
|
||||||
:src="item.avator"
|
|
||||||
></el-image>
|
|
||||||
<span class="user">{{item.name}}</span>
|
|
||||||
</div>
|
|
||||||
<div class="comment">{{item.content}}</div>
|
|
||||||
<div class="create-time">{{item.createTime}}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
list: [
|
|
||||||
{
|
|
||||||
name: "MaskLin",
|
|
||||||
avator:
|
|
||||||
"https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
|
||||||
content:
|
|
||||||
"你以为只要长得漂亮就有男生喜欢?你以为只要有了钱漂亮妹子就自己贴上来了?你以为学霸就能找到好工作?我告诉你吧,这些都是真的!",
|
|
||||||
createTime: "5月02日 00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "MaskLin",
|
|
||||||
avator:
|
|
||||||
"https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
|
||||||
content: "作者太帅了",
|
|
||||||
createTime: "5月04日 00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "MaskLin",
|
|
||||||
avator:
|
|
||||||
"https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
|
||||||
content: "作者太帅了",
|
|
||||||
createTime: "5月04日 00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "MaskLin",
|
|
||||||
avator: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
|
||||||
content: "作者太帅了",
|
|
||||||
createTime: "5月04日 00:00"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.home-comment {
|
|
||||||
background: #ffffff;
|
|
||||||
.title {
|
|
||||||
font-size: 18px;
|
|
||||||
color: #666;
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 10px;
|
|
||||||
border-bottom: 1px solid #eeeeee;
|
|
||||||
}
|
|
||||||
.comment-list {
|
|
||||||
padding: 10px;
|
|
||||||
.comment-item {
|
|
||||||
padding: 10px;
|
|
||||||
border-bottom: 1px solid #eeeeee;
|
|
||||||
.user-content {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
.user {
|
|
||||||
font-size: 18px;
|
|
||||||
color: #666;
|
|
||||||
font-weight: bold;
|
|
||||||
line-height: 50px;
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
.avator {
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.comment {
|
|
||||||
margin-top: 10px;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #888888;
|
|
||||||
}
|
|
||||||
.create-time {
|
|
||||||
margin-top: 15px;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #888888;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,55 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="home-progress">
|
|
||||||
<div class="title">月访问量</div>
|
|
||||||
<div class="tip">同上期增长</div>
|
|
||||||
<el-progress
|
|
||||||
class="progress"
|
|
||||||
:text-inside="true"
|
|
||||||
:stroke-width="24"
|
|
||||||
:percentage="20"
|
|
||||||
status="success"
|
|
||||||
></el-progress>
|
|
||||||
<div class="title">月用户量</div>
|
|
||||||
<div class="tip">同上期增长</div>
|
|
||||||
<el-progress
|
|
||||||
class="progress"
|
|
||||||
:text-inside="true"
|
|
||||||
:stroke-width="24"
|
|
||||||
:percentage="50"
|
|
||||||
status="success"
|
|
||||||
></el-progress>
|
|
||||||
<div class="title">月收入</div>
|
|
||||||
<div class="tip">同上期减少</div>
|
|
||||||
<el-progress
|
|
||||||
class="progress"
|
|
||||||
:text-inside="true"
|
|
||||||
:stroke-width="24"
|
|
||||||
:percentage="28"
|
|
||||||
status="exception"
|
|
||||||
></el-progress>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
export default {};
|
|
||||||
</script>
|
|
||||||
<style lang="scss">
|
|
||||||
.home-progress {
|
|
||||||
background: #ffffff;
|
|
||||||
height: 400px;
|
|
||||||
padding: 20px;
|
|
||||||
.title {
|
|
||||||
color: #666666;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 20px;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
.tip {
|
|
||||||
color: #888888;
|
|
||||||
font-size: 16px;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
.progress {
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,56 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-aside class="index-aside" width="200px">
|
|
||||||
<div class="index-aside-inner">
|
|
||||||
<el-menu default-active="1">
|
|
||||||
<el-menu-item @click="menuHandler('/')" index="1">
|
|
||||||
<!-- <i class="el-icon-s-home"></i> -->
|
|
||||||
首页
|
|
||||||
</el-menu-item>
|
|
||||||
<sub-menu
|
|
||||||
v-for="menu in menuList"
|
|
||||||
:key="menu.menuId"
|
|
||||||
:menu="menu"
|
|
||||||
:dynamicMenuRoutes="dynamicMenuRoutes"
|
|
||||||
></sub-menu>
|
|
||||||
</el-menu>
|
|
||||||
</div>
|
|
||||||
</el-aside>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import SubMenu from "@/components/index/IndexAsideSub";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
menuList: [],
|
|
||||||
dynamicMenuRoutes: []
|
|
||||||
};
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
SubMenu
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
// 获取动态菜单数据并且渲染
|
|
||||||
this.menuList = JSON.parse(sessionStorage.getItem("menuList") || "[]");
|
|
||||||
this.dynamicMenuRoutes = JSON.parse(
|
|
||||||
sessionStorage.getItem("dynamicMenuRoutes") || "[]"
|
|
||||||
);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
menuHandler(path) {
|
|
||||||
this.$router.push({ path: path });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.index-aside {
|
|
||||||
margin-top: 80px;
|
|
||||||
overflow: hidden;
|
|
||||||
.index-aside-inner {
|
|
||||||
width: 217px;
|
|
||||||
height: 100%;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,240 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-aside class="index-aside" height="100vh" width="210px">
|
|
||||||
<div class="index-aside-inner menulist" style="height:100%">
|
|
||||||
<div v-for="item in menuList" :key="item.roleName" v-if="role==item.roleName" class="menulist-item" style="height:100%;broder:0;background-color:#988181">
|
|
||||||
<div class="menulistImg" style="backgroundColor:#ff0000;padding:25px 0" v-if="false && menulistStyle == 'vertical'">
|
|
||||||
<el-image v-if="'http://codegen.caihongy.cn/20201021/cc7d45d9c8164b58b18351764eba9be1.jpg'" src="http://codegen.caihongy.cn/20201021/cc7d45d9c8164b58b18351764eba9be1.jpg" fit="cover" />
|
|
||||||
</div>
|
|
||||||
<el-menu mode="vertical" :unique-opened="true" class="el-menu-demo" style="height:100%;" background-color="#988181" text-color="#111010" active-text-color="#99EFED" default-active="0">
|
|
||||||
<el-menu-item index="0" :style="menulistBorderBottom" @click="menuHandler('')"><i v-if="true" class="el-icon-s-home" />首页</el-menu-item>
|
|
||||||
<el-submenu :index="1+''" :style="menulistBorderBottom">
|
|
||||||
<template slot="title">
|
|
||||||
<i v-if="true" class="el-icon-user-solid" />
|
|
||||||
<span>个人中心</span>
|
|
||||||
</template>
|
|
||||||
<el-menu-item :index="1-1" @click="menuHandler('updatePassword')">修改密码</el-menu-item>
|
|
||||||
<el-menu-item :index="1-2" @click="menuHandler('center')">个人信息</el-menu-item>
|
|
||||||
</el-submenu>
|
|
||||||
<el-submenu :style="menulistBorderBottom" v-for=" (menu,index) in item.backMenu" :key="menu.menu" :index="index+2+''">
|
|
||||||
<template slot="title">
|
|
||||||
<i v-if="true" :class="icons[index]" />
|
|
||||||
<span>{{ menu.menu }}</span>
|
|
||||||
</template>
|
|
||||||
<el-menu-item v-for=" (child,sort) in menu.child" :key="sort" :index="(index+2)+'-'+sort" @click="menuHandler(child.tableName)">{{ child.menu }}</el-menu-item>
|
|
||||||
</el-submenu>
|
|
||||||
</el-menu>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-aside>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import menu from '@/utils/menu'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
menuList: [],
|
|
||||||
dynamicMenuRoutes: [],
|
|
||||||
role: '',
|
|
||||||
icons: [
|
|
||||||
'el-icon-s-cooperation',
|
|
||||||
'el-icon-s-order',
|
|
||||||
'el-icon-s-platform',
|
|
||||||
'el-icon-s-fold',
|
|
||||||
'el-icon-s-unfold',
|
|
||||||
'el-icon-s-operation',
|
|
||||||
'el-icon-s-promotion',
|
|
||||||
'el-icon-s-release',
|
|
||||||
'el-icon-s-ticket',
|
|
||||||
'el-icon-s-management',
|
|
||||||
'el-icon-s-open',
|
|
||||||
'el-icon-s-shop',
|
|
||||||
'el-icon-s-marketing',
|
|
||||||
'el-icon-s-flag',
|
|
||||||
'el-icon-s-comment',
|
|
||||||
'el-icon-s-finance',
|
|
||||||
'el-icon-s-claim',
|
|
||||||
'el-icon-s-custom',
|
|
||||||
'el-icon-s-opportunity',
|
|
||||||
'el-icon-s-data',
|
|
||||||
'el-icon-s-check',
|
|
||||||
'el-icon-s-grid',
|
|
||||||
'el-icon-menu',
|
|
||||||
'el-icon-chat-dot-square',
|
|
||||||
'el-icon-message',
|
|
||||||
'el-icon-postcard',
|
|
||||||
'el-icon-position',
|
|
||||||
'el-icon-microphone',
|
|
||||||
'el-icon-close-notification',
|
|
||||||
'el-icon-bangzhu',
|
|
||||||
'el-icon-time',
|
|
||||||
'el-icon-odometer',
|
|
||||||
'el-icon-crop',
|
|
||||||
'el-icon-aim',
|
|
||||||
'el-icon-switch-button',
|
|
||||||
'el-icon-full-screen',
|
|
||||||
'el-icon-copy-document',
|
|
||||||
'el-icon-mic',
|
|
||||||
'el-icon-stopwatch',
|
|
||||||
],
|
|
||||||
menulistStyle: 'vertical',
|
|
||||||
menulistBorderBottom: {},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
const menus = menu.list()
|
|
||||||
this.menuList = menus
|
|
||||||
this.role = this.$storage.get('role')
|
|
||||||
},
|
|
||||||
created(){
|
|
||||||
setTimeout(()=>{
|
|
||||||
this.menulistStyleChange()
|
|
||||||
},10)
|
|
||||||
this.icons.sort(()=>{
|
|
||||||
return (0.5-Math.random())
|
|
||||||
})
|
|
||||||
this.lineBorder()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
lineBorder() {
|
|
||||||
let style = 'vertical'
|
|
||||||
let w = '1px'
|
|
||||||
let s = 'solid'
|
|
||||||
let c = '#ccc'
|
|
||||||
if(style == 'vertical') {
|
|
||||||
this.menulistBorderBottom = {
|
|
||||||
borderBottomWidth: w,
|
|
||||||
borderBottomStyle: s,
|
|
||||||
borderBottomColor: c
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.menulistBorderBottom = {
|
|
||||||
borderRightWidth: w,
|
|
||||||
borderRightStyle: s,
|
|
||||||
borderRightColor: c
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
menuHandler(name) {
|
|
||||||
let router = this.$router
|
|
||||||
name = '/'+name
|
|
||||||
router.push(name)
|
|
||||||
},
|
|
||||||
// 菜单
|
|
||||||
setMenulistHoverColor(){
|
|
||||||
let that = this
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.menulist .el-menu-item').forEach(el=>{
|
|
||||||
el.addEventListener("mouseenter", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = "rgba(238, 221, 129, 1)"
|
|
||||||
})
|
|
||||||
el.addEventListener("mouseleave", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = "#988181"
|
|
||||||
})
|
|
||||||
el.addEventListener("focus", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = "rgba(238, 221, 129, 1)"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.menulist .el-submenu__title').forEach(el=>{
|
|
||||||
el.addEventListener("mouseenter", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = "rgba(238, 221, 129, 1)"
|
|
||||||
})
|
|
||||||
el.addEventListener("mouseleave", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = "#988181"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
setMenulistIconColor() {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.menulist .el-submenu__title .el-submenu__icon-arrow').forEach(el=>{
|
|
||||||
el.style.color = "rgba(153, 153, 153, 1)"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
menulistStyleChange() {
|
|
||||||
this.setMenulistIconColor()
|
|
||||||
this.setMenulistHoverColor()
|
|
||||||
this.setMenulistStyleHeightChange()
|
|
||||||
let str = "vertical"
|
|
||||||
if("horizontal" === str) {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.el-container .el-container').forEach(el=>{
|
|
||||||
el.style.display = "block"
|
|
||||||
el.style.paddingTop = "60px" // header 高度
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.el-aside').forEach(el=>{
|
|
||||||
el.style.width = "100%"
|
|
||||||
el.style.height = "62px"
|
|
||||||
el.style.paddingTop = '0'
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.index-aside .index-aside-inner').forEach(el=>{
|
|
||||||
el.style.paddingTop = '0'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if("vertical" === str) {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.index-aside .index-aside-inner').forEach(el=>{
|
|
||||||
el.style.paddingTop = "60px"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setMenulistStyleHeightChange() {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.menulist-item>.el-menu--horizontal>.el-menu-item').forEach(el=>{
|
|
||||||
el.style.height = "62px"
|
|
||||||
el.style.lineHeight = "62px"
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.menulist-item>.el-menu--horizontal>.el-submenu>.el-submenu__title').forEach(el=>{
|
|
||||||
el.style.height = "62px"
|
|
||||||
el.style.lineHeight = "62px"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.index-aside {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
.menulistImg {
|
|
||||||
padding: 24px 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
|
|
||||||
.el-image {
|
|
||||||
margin: 0 auto;
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
border-radius: 100%;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.index-aside-inner {
|
|
||||||
height: 100%;
|
|
||||||
margin-right: -17px;
|
|
||||||
margin-bottom: -17px;
|
|
||||||
overflow: scroll;
|
|
||||||
overflow-x: hidden !important;
|
|
||||||
padding-top: 60px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-menu {
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,76 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-aside class="index-aside" width="200px">
|
|
||||||
<div class="index-aside-inner">
|
|
||||||
<div v-for="item in menuList" v-bind:key="item.roleName">
|
|
||||||
<el-menu
|
|
||||||
background-color="#263238"
|
|
||||||
text-color="#fff"
|
|
||||||
active-text-color="#ffd04b"
|
|
||||||
default-active="0"
|
|
||||||
v-if="role==item.roleName"
|
|
||||||
>
|
|
||||||
<el-menu-item @click="menuHandler('home')" index="0">首页</el-menu-item>
|
|
||||||
<el-submenu
|
|
||||||
:index="1+''"
|
|
||||||
>
|
|
||||||
<template slot="title">
|
|
||||||
<span>个人中心</span>
|
|
||||||
</template>
|
|
||||||
<el-menu-item
|
|
||||||
@click="menuHandler('updatePassword')"
|
|
||||||
:index="1-1"
|
|
||||||
>修改密码</el-menu-item>
|
|
||||||
<el-menu-item
|
|
||||||
@click="menuHandler('center')"
|
|
||||||
:index="1-2"
|
|
||||||
>个人信息</el-menu-item>
|
|
||||||
</el-submenu>
|
|
||||||
<el-submenu
|
|
||||||
v-for=" (menu,index) in item.backMenu"
|
|
||||||
v-bind:key="menu.menu"
|
|
||||||
:index="index+2+''"
|
|
||||||
>
|
|
||||||
<template slot="title">
|
|
||||||
<span>{{menu.menu}}</span>
|
|
||||||
</template>
|
|
||||||
<el-menu-item
|
|
||||||
v-for=" (child,sort) in menu.child"
|
|
||||||
v-bind:key="sort"
|
|
||||||
@click="menuHandler(child.tableName)"
|
|
||||||
:index="(index+2)+'-'+sort"
|
|
||||||
>{{child.menu}}</el-menu-item>
|
|
||||||
</el-submenu>
|
|
||||||
</el-menu>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-aside>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import menu from "@/utils/menu";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
menuList: [],
|
|
||||||
dynamicMenuRoutes: [],
|
|
||||||
role: ""
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
let menus = menu.list();
|
|
||||||
this.menuList = menus;
|
|
||||||
this.role = this.$storage.get("role");
|
|
||||||
console.log(this.menuList)
|
|
||||||
console.log(this.role)
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
menuHandler(name) {
|
|
||||||
this.$router.push({
|
|
||||||
name: name
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
|
|
||||||
</style>
|
|
@ -1,51 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-submenu v-if="menu.list && menu.list.length >= 1" :index="menu.menuId + ''">
|
|
||||||
<template slot="title">
|
|
||||||
<span>{{ menu.name }}</span>
|
|
||||||
</template>
|
|
||||||
<sub-menu
|
|
||||||
v-for="item in menu.list"
|
|
||||||
:key="item.menuId"
|
|
||||||
:menu="item"
|
|
||||||
:dynamicMenuRoutes="dynamicMenuRoutes"
|
|
||||||
></sub-menu>
|
|
||||||
</el-submenu>
|
|
||||||
<el-menu-item v-else :index="menu.menuId + ''" @click="gotoRouteHandle(menu)">
|
|
||||||
<span>{{ menu.name }}</span>
|
|
||||||
</el-menu-item>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import SubMenu from "./IndexAsideSub";
|
|
||||||
export default {
|
|
||||||
name: "sub-menu",
|
|
||||||
props: {
|
|
||||||
menu: {
|
|
||||||
type: Object,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
dynamicMenuRoutes: {
|
|
||||||
type: Array,
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
SubMenu
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 通过menuId与动态(菜单)路由进行匹配跳转至指定路由
|
|
||||||
gotoRouteHandle(menu) {
|
|
||||||
var route = this.dynamicMenuRoutes.filter(
|
|
||||||
item => item.meta.menuId === menu.menuId
|
|
||||||
);
|
|
||||||
if (route.length >= 1) {
|
|
||||||
if (route[0].component != null) {
|
|
||||||
this.$router.replace({ name: route[0].name });
|
|
||||||
} else {
|
|
||||||
this.$router.push({ name: "404" });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
@ -1,183 +0,0 @@
|
|||||||
<template>
|
|
||||||
<!-- <el-header>
|
|
||||||
<el-menu background-color="#00c292" text-color="#FFFFFF" active-text-color="#FFFFFF" mode="horizontal">
|
|
||||||
<div class="fl title">{{this.$project.projectName}}</div>
|
|
||||||
<div class="fr logout" style="display:flex;">
|
|
||||||
<el-menu-item index="3">
|
|
||||||
<div>{{this.$storage.get('role')}} {{this.$storage.get('adminName')}}</div>
|
|
||||||
</el-menu-item>
|
|
||||||
<el-menu-item @click="onLogout" index="2">
|
|
||||||
<div>退出登录</div>
|
|
||||||
</el-menu-item>
|
|
||||||
</div>
|
|
||||||
</el-menu>
|
|
||||||
</el-header> -->
|
|
||||||
<div class="navbar" :style="{backgroundColor:heads.headBgColor,height:heads.headHeight,boxShadow:heads.headBoxShadow,lineHeight:heads.headHeight}">
|
|
||||||
<div class="title-menu" :style="{justifyContent:heads.headTitleStyle=='1'?'flex-start':'center'}">
|
|
||||||
<el-image v-if="heads.headTitleImg" class="title-img" :style="{width:heads.headTitleImgWidth,height:heads.headTitleImgHeight,boxShadow:heads.headTitleImgBoxShadow,borderRadius:heads.headTitleImgBorderRadius}" :src="heads.headTitleImgUrl" fit="cover"></el-image>
|
|
||||||
<div class="title-name" :style="{color:heads.headFontColor,fontSize:heads.headFontSize}">{{this.$project.projectName}}</div>
|
|
||||||
</div>
|
|
||||||
<div class="right-menu">
|
|
||||||
<div class="user-info" :style="{color:heads.headUserInfoFontColor,fontSize:heads.headUserInfoFontSize}">{{this.$storage.get('role')}} {{this.$storage.get('adminName')}}</div>
|
|
||||||
<div class="logout" :style="{color:heads.headLogoutFontColor,fontSize:heads.headLogoutFontSize}" @click="onLogout">退出登录</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
ruleForm: {},
|
|
||||||
user: {},
|
|
||||||
heads: {"headLogoutFontHoverColor":"rgba(41, 42, 42, 1)","headFontSize":"20px","headUserInfoFontColor":"rgba(238, 221, 129, 1)","headBoxShadow":"0 1px 6px #444","headTitleImgHeight":"44px","headLogoutFontHoverBgColor":"rgba(247, 142, 142, 1)","headFontColor":"rgba(153, 239, 237, 1)","headTitleImg":false,"headHeight":"60px","headTitleImgBorderRadius":"22px","headTitleImgUrl":"http://codegen.caihongy.cn/20201021/cc7d45d9c8164b58b18351764eba9be1.jpg","headBgColor":"#4F4949","headTitleImgBoxShadow":"0 1px 6px #444","headLogoutFontColor":"rgba(153, 239, 237, 1)","headUserInfoFontSize":"16px","headTitleImgWidth":"44px","headTitleStyle":"2","headLogoutFontSize":"16px"},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.setHeaderStyle()
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
let sessionTable = this.$storage.get("sessionTable")
|
|
||||||
this.$http({
|
|
||||||
url: sessionTable + '/session',
|
|
||||||
method: "get"
|
|
||||||
}).then(({
|
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
if (data && data.code === 0) {
|
|
||||||
this.user = data.data;
|
|
||||||
} else {
|
|
||||||
let message = this.$message
|
|
||||||
message.error(data.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
onLogout() {
|
|
||||||
let storage = this.$storage
|
|
||||||
let router = this.$router
|
|
||||||
storage.remove("Token");
|
|
||||||
router.replace({
|
|
||||||
name: "login"
|
|
||||||
});
|
|
||||||
},
|
|
||||||
onIndexTap(){
|
|
||||||
window.location.href = `${this.$base.indexUrl}`
|
|
||||||
},
|
|
||||||
setHeaderStyle() {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.navbar .right-menu .logout').forEach(el=>{
|
|
||||||
el.addEventListener("mouseenter", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = this.heads.headLogoutFontHoverBgColor
|
|
||||||
el.style.color = this.heads.headLogoutFontHoverColor
|
|
||||||
})
|
|
||||||
el.addEventListener("mouseleave", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = "transparent"
|
|
||||||
el.style.color = this.heads.headLogoutFontColor
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.navbar {
|
|
||||||
height: 60px;
|
|
||||||
line-height: 60px;
|
|
||||||
width: 100%;
|
|
||||||
padding: 0 34px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background-color: #ff00ff;
|
|
||||||
position: relative;
|
|
||||||
z-index: 111;
|
|
||||||
|
|
||||||
.right-menu {
|
|
||||||
position: absolute;
|
|
||||||
right: 34px;
|
|
||||||
top: 0;
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
align-items: center;
|
|
||||||
z-index: 111;
|
|
||||||
|
|
||||||
.user-info {
|
|
||||||
font-size: 16px;
|
|
||||||
color: red;
|
|
||||||
padding: 0 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logout {
|
|
||||||
font-size: 16px;
|
|
||||||
color: red;
|
|
||||||
padding: 0 12px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.title-menu {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
.title-img {
|
|
||||||
width: 44px;
|
|
||||||
height: 44px;
|
|
||||||
border-radius: 22px;
|
|
||||||
box-shadow: 0 1px 6px #444;
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title-name {
|
|
||||||
font-size: 24px;
|
|
||||||
color: #fff;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// .el-header .fr {
|
|
||||||
// float: right;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .el-header .fl {
|
|
||||||
// float: left;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .el-header {
|
|
||||||
// width: 100%;
|
|
||||||
// color: #333;
|
|
||||||
// text-align: center;
|
|
||||||
// line-height: 60px;
|
|
||||||
// padding: 0;
|
|
||||||
// z-index: 99;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .logo {
|
|
||||||
// width: 60px;
|
|
||||||
// height: 60px;
|
|
||||||
// margin-left: 70px;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .avator {
|
|
||||||
// width: 40px;
|
|
||||||
// height: 40px;
|
|
||||||
// background: #ffffff;
|
|
||||||
// border-radius: 50%;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .title {
|
|
||||||
// color: #ffffff;
|
|
||||||
// font-size: 20px;
|
|
||||||
// font-weight: bold;
|
|
||||||
// margin-left: 20px;
|
|
||||||
// }
|
|
||||||
</style>
|
|
@ -1,89 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-header>
|
|
||||||
<el-menu background-color="#00c292" text-color="#FFFFFF" active-text-color="#FFFFFF" mode="horizontal">
|
|
||||||
<div class="fl title">{{this.$project.projectName}}</div>
|
|
||||||
<div class="fr logout" style="display:flex;">
|
|
||||||
<el-menu-item index="3">
|
|
||||||
<div>{{this.$storage.get('role')}} {{this.$storage.get('adminName')}}</div>
|
|
||||||
</el-menu-item>
|
|
||||||
<el-menu-item @click="onLogout" index="2">
|
|
||||||
<div>退出登录</div>
|
|
||||||
</el-menu-item>
|
|
||||||
</div>
|
|
||||||
</el-menu>
|
|
||||||
</el-header>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
ruleForm: {},
|
|
||||||
user: {}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.$http({
|
|
||||||
url: `${this.$storage.get("sessionTable")}/session`,
|
|
||||||
method: "get"
|
|
||||||
}).then(({
|
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
if (data && data.code === 0) {
|
|
||||||
this.user = data.data;
|
|
||||||
} else {
|
|
||||||
this.$message.error(data.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
onLogout() {
|
|
||||||
this.$storage.remove("Token");
|
|
||||||
this.$router.replace({
|
|
||||||
name: "login"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.el-header .fr {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-header .fl {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-header {
|
|
||||||
width: 100%;
|
|
||||||
color: #333;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 60px;
|
|
||||||
padding: 0;
|
|
||||||
z-index: 99;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
width: 60px;
|
|
||||||
height: 60px;
|
|
||||||
margin-left: 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avator {
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
background: #ffffff;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
color: #ffffff;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-left: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,124 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-main>
|
|
||||||
<bread-crumbs :title="title" class="bread-crumbs"></bread-crumbs>
|
|
||||||
<router-view class="router-view"></router-view>
|
|
||||||
</el-main>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import menu from "@/utils/menu";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
menuList: [],
|
|
||||||
role: "",
|
|
||||||
currentIndex: -2,
|
|
||||||
itemMenu: [],
|
|
||||||
title: ''
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
let menus = menu.list();
|
|
||||||
this.menuList = menus;
|
|
||||||
this.role = this.$storage.get("role");
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
menuHandler(menu) {
|
|
||||||
this.$router.push({
|
|
||||||
name: menu.tableName
|
|
||||||
});
|
|
||||||
this.title = menu.menu;
|
|
||||||
},
|
|
||||||
titleChange(index, menus) {
|
|
||||||
this.currentIndex = index
|
|
||||||
this.itemMenu = menus;
|
|
||||||
console.log(menus);
|
|
||||||
},
|
|
||||||
homeChange(index) {
|
|
||||||
this.itemMenu = [];
|
|
||||||
this.title = ""
|
|
||||||
this.currentIndex = index
|
|
||||||
this.$router.push({
|
|
||||||
name: 'home'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
centerChange(index) {
|
|
||||||
this.itemMenu = [{
|
|
||||||
"buttons": ["新增", "查看", "修改", "删除"],
|
|
||||||
"menu": "修改密码",
|
|
||||||
"tableName": "updatePassword"
|
|
||||||
}, {
|
|
||||||
"buttons": ["新增", "查看", "修改", "删除"],
|
|
||||||
"menu": "个人信息",
|
|
||||||
"tableName": "center"
|
|
||||||
}];
|
|
||||||
this.title = ""
|
|
||||||
this.currentIndex = index
|
|
||||||
this.$router.push({
|
|
||||||
name: 'home'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
background: #00c292;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-list {
|
|
||||||
width: 100%;
|
|
||||||
margin: 0 auto;
|
|
||||||
text-align: left;
|
|
||||||
margin-top: 20px;
|
|
||||||
|
|
||||||
.nav-title {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 15px;
|
|
||||||
color: #333;
|
|
||||||
padding: 15px 25px;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-title.active {
|
|
||||||
color: #555;
|
|
||||||
cursor: default;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-item {
|
|
||||||
margin-top: 20px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
padding: 15px 0;
|
|
||||||
|
|
||||||
.menu {
|
|
||||||
padding: 15px 25px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-main {
|
|
||||||
background-color: #F6F8FA;
|
|
||||||
padding: 0 24px;
|
|
||||||
// padding-top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.router-view {
|
|
||||||
padding: 10px;
|
|
||||||
margin-top: 10px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bread-crumbs {
|
|
||||||
width: 100%;
|
|
||||||
// border-bottom: 1px solid #e9eef3;
|
|
||||||
// border-top: 1px solid #e9eef3;
|
|
||||||
margin-top: 10px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,569 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="main-content">
|
|
||||||
<!-- 列表页 -->
|
|
||||||
<div v-if="showFlag">
|
|
||||||
<el-form :inline="true" :model="searchForm" class="form-content">
|
|
||||||
<el-row :gutter="20" class="slt" :style="{justifyContent:contents.searchBoxPosition=='1'?'flex-start':contents.searchBoxPosition=='2'?'center':'flex-end'}">
|
|
||||||
<el-form-item :label="contents.inputTitle == 1 ? '房主账号' : ''">
|
|
||||||
<el-input v-if="contents.inputIcon == 1 && contents.inputIconPosition == 1" prefix-icon="el-icon-search" v-model="searchForm.fangzhuzhanghao" placeholder="房主账号" clearable></el-input>
|
|
||||||
<el-input v-if="contents.inputIcon == 1 && contents.inputIconPosition == 2" suffix-icon="el-icon-search" v-model="searchForm.fangzhuzhanghao" placeholder="房主账号" clearable></el-input>
|
|
||||||
<el-input v-if="contents.inputIcon == 0" v-model="searchForm.fangzhuzhanghao" placeholder="房主账号" clearable></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item :label="contents.inputTitle == 1 ? '房主姓名' : ''">
|
|
||||||
<el-input v-if="contents.inputIcon == 1 && contents.inputIconPosition == 1" prefix-icon="el-icon-search" v-model="searchForm.fangzhuxingming" placeholder="房主姓名" clearable></el-input>
|
|
||||||
<el-input v-if="contents.inputIcon == 1 && contents.inputIconPosition == 2" suffix-icon="el-icon-search" v-model="searchForm.fangzhuxingming" placeholder="房主姓名" clearable></el-input>
|
|
||||||
<el-input v-if="contents.inputIcon == 0" v-model="searchForm.fangzhuxingming" placeholder="房主姓名" clearable></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button v-if="contents.searchBtnIcon == 1 && contents.searchBtnIconPosition == 1" icon="el-icon-search" type="success" @click="search()">{{ contents.searchBtnFont == 1?'查询':'' }}</el-button>
|
|
||||||
<el-button v-if="contents.searchBtnIcon == 1 && contents.searchBtnIconPosition == 2" type="success" @click="search()">{{ contents.searchBtnFont == 1?'查询':'' }}<i class="el-icon-search el-icon--right"/></el-button>
|
|
||||||
<el-button v-if="contents.searchBtnIcon == 0" type="success" @click="search()">{{ contents.searchBtnFont == 1?'查询':'' }}</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-row>
|
|
||||||
<el-row class="ad" :style="{justifyContent:contents.btnAdAllBoxPosition=='1'?'flex-start':contents.btnAdAllBoxPosition=='2'?'center':'flex-end'}">
|
|
||||||
<el-form-item>
|
|
||||||
<el-button
|
|
||||||
v-if="isAuth('fangzhu','新增') && contents.btnAdAllIcon == 1 && contents.btnAdAllIconPosition == 1"
|
|
||||||
type="success"
|
|
||||||
icon="el-icon-plus"
|
|
||||||
@click="addOrUpdateHandler()"
|
|
||||||
>{{ contents.btnAdAllFont == 1?'新增':'' }}</el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="isAuth('fangzhu','新增') && contents.btnAdAllIcon == 1 && contents.btnAdAllIconPosition == 2"
|
|
||||||
type="success"
|
|
||||||
@click="addOrUpdateHandler()"
|
|
||||||
>{{ contents.btnAdAllFont == 1?'新增':'' }}<i class="el-icon-plus el-icon--right" /></el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="isAuth('fangzhu','新增') && contents.btnAdAllIcon == 0"
|
|
||||||
type="success"
|
|
||||||
@click="addOrUpdateHandler()"
|
|
||||||
>{{ contents.btnAdAllFont == 1?'新增':'' }}</el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="isAuth('fangzhu','删除') && contents.btnAdAllIcon == 1 && contents.btnAdAllIconPosition == 1 && contents.tableSelection"
|
|
||||||
:disabled="dataListSelections.length <= 0"
|
|
||||||
type="danger"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
@click="deleteHandler()"
|
|
||||||
>{{ contents.btnAdAllFont == 1?'删除':'' }}</el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="isAuth('fangzhu','删除') && contents.btnAdAllIcon == 1 && contents.btnAdAllIconPosition == 2 && contents.tableSelection"
|
|
||||||
:disabled="dataListSelections.length <= 0"
|
|
||||||
type="danger"
|
|
||||||
@click="deleteHandler()"
|
|
||||||
>{{ contents.btnAdAllFont == 1?'删除':'' }}<i class="el-icon-delete el-icon--right" /></el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="isAuth('fangzhu','删除') && contents.btnAdAllIcon == 0 && contents.tableSelection"
|
|
||||||
:disabled="dataListSelections.length <= 0"
|
|
||||||
type="danger"
|
|
||||||
@click="deleteHandler()"
|
|
||||||
>{{ contents.btnAdAllFont == 1?'删除':'' }}</el-button>
|
|
||||||
|
|
||||||
|
|
||||||
</el-form-item>
|
|
||||||
</el-row>
|
|
||||||
</el-form>
|
|
||||||
<div class="table-content">
|
|
||||||
<el-table class="tables" :size="contents.tableSize" :show-header="contents.tableShowHeader"
|
|
||||||
:header-row-style="headerRowStyle" :header-cell-style="headerCellStyle"
|
|
||||||
:border="contents.tableBorder"
|
|
||||||
:fit="contents.tableFit"
|
|
||||||
:stripe="contents.tableStripe"
|
|
||||||
:row-style="rowStyle"
|
|
||||||
:cell-style="cellStyle"
|
|
||||||
:style="{width: '100%',fontSize:contents.tableContentFontSize,color:contents.tableContentFontColor}"
|
|
||||||
v-if="isAuth('fangzhu','查看')"
|
|
||||||
:data="dataList"
|
|
||||||
v-loading="dataListLoading"
|
|
||||||
@selection-change="selectionChangeHandler">
|
|
||||||
<el-table-column v-if="contents.tableSelection"
|
|
||||||
type="selection"
|
|
||||||
header-align="center"
|
|
||||||
align="center"
|
|
||||||
width="50">
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="索引" v-if="contents.tableIndex" type="index" width="50" />
|
|
||||||
<el-table-column :sortable="contents.tableSortable" :align="contents.tableAlign"
|
|
||||||
prop="fangzhuzhanghao"
|
|
||||||
header-align="center"
|
|
||||||
label="房主账号">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
{{scope.row.fangzhuzhanghao}}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :sortable="contents.tableSortable" :align="contents.tableAlign"
|
|
||||||
prop="mima"
|
|
||||||
header-align="center"
|
|
||||||
label="密码">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
{{scope.row.mima}}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :sortable="contents.tableSortable" :align="contents.tableAlign"
|
|
||||||
prop="fangzhuxingming"
|
|
||||||
header-align="center"
|
|
||||||
label="房主姓名">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
{{scope.row.fangzhuxingming}}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :sortable="contents.tableSortable" :align="contents.tableAlign"
|
|
||||||
prop="xingbie"
|
|
||||||
header-align="center"
|
|
||||||
label="性别">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
{{scope.row.xingbie}}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :sortable="contents.tableSortable" :align="contents.tableAlign" prop="touxiang"
|
|
||||||
header-align="center"
|
|
||||||
width="200"
|
|
||||||
label="头像">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<div v-if="scope.row.touxiang">
|
|
||||||
<img :src="scope.row.touxiang.split(',')[0]" width="100" height="100">
|
|
||||||
</div>
|
|
||||||
<div v-else>无图片</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :sortable="contents.tableSortable" :align="contents.tableAlign"
|
|
||||||
prop="shouji"
|
|
||||||
header-align="center"
|
|
||||||
label="手机">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
{{scope.row.shouji}}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :sortable="contents.tableSortable" :align="contents.tableAlign"
|
|
||||||
prop="shenfenzheng"
|
|
||||||
header-align="center"
|
|
||||||
label="身份证">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
{{scope.row.shenfenzheng}}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column width="300" :align="contents.tableAlign"
|
|
||||||
header-align="center"
|
|
||||||
label="操作">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-button v-if="isAuth('fangzhu','修改') && contents.tableBtnIcon == 1 && contents.tableBtnIconPosition == 1" type="primary" icon="el-icon-edit" size="mini" @click="addOrUpdateHandler(scope.row.id)">{{ contents.tableBtnFont == 1?'修改':'' }}</el-button>
|
|
||||||
<el-button v-if="isAuth('fangzhu','修改') && contents.tableBtnIcon == 1 && contents.tableBtnIconPosition == 2" type="primary" size="mini" @click="addOrUpdateHandler(scope.row.id)">{{ contents.tableBtnFont == 1?'修改':'' }}<i class="el-icon-edit el-icon--right" /></el-button>
|
|
||||||
<el-button v-if="isAuth('fangzhu','修改') && contents.tableBtnIcon == 0" type="primary" size="mini" @click="addOrUpdateHandler(scope.row.id)">{{ contents.tableBtnFont == 1?'修改':'' }}</el-button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<el-button v-if="isAuth('fangzhu','删除') && contents.tableBtnIcon == 1 && contents.tableBtnIconPosition == 1" type="danger" icon="el-icon-delete" size="mini" @click="deleteHandler(scope.row.id)">{{ contents.tableBtnFont == 1?'删除':'' }}</el-button>
|
|
||||||
<el-button v-if="isAuth('fangzhu','删除') && contents.tableBtnIcon == 1 && contents.tableBtnIconPosition == 2" type="danger" size="mini" @click="deleteHandler(scope.row.id)">{{ contents.tableBtnFont == 1?'删除':'' }}<i class="el-icon-delete el-icon--right" /></el-button>
|
|
||||||
<el-button v-if="isAuth('fangzhu','删除') && contents.tableBtnIcon == 0" type="danger" size="mini" @click="deleteHandler(scope.row.id)">{{ contents.tableBtnFont == 1?'删除':'' }}</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
<el-pagination
|
|
||||||
clsss="pages"
|
|
||||||
:layout="layouts"
|
|
||||||
@size-change="sizeChangeHandle"
|
|
||||||
@current-change="currentChangeHandle"
|
|
||||||
:current-page="pageIndex"
|
|
||||||
:page-sizes="[10, 20, 50, 100]"
|
|
||||||
:page-size="Number(contents.pageEachNum)"
|
|
||||||
:total="totalPage"
|
|
||||||
:small="contents.pageStyle"
|
|
||||||
class="pagination-content"
|
|
||||||
:background="contents.pageBtnBG"
|
|
||||||
:style="{textAlign:contents.pagePosition==1?'left':contents.pagePosition==2?'center':'right'}"
|
|
||||||
></el-pagination>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 添加/修改页面 将父组件的search方法传递给子组件-->
|
|
||||||
<add-or-update v-if="addOrUpdateFlag" :parent="this" ref="addOrUpdate"></add-or-update>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import AddOrUpdate from "./add-or-update";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
searchForm: {
|
|
||||||
key: ""
|
|
||||||
},
|
|
||||||
dataList: [],
|
|
||||||
pageIndex: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
totalPage: 0,
|
|
||||||
dataListLoading: false,
|
|
||||||
dataListSelections: [],
|
|
||||||
showFlag: true,
|
|
||||||
sfshVisiable: false,
|
|
||||||
shForm: {},
|
|
||||||
chartVisiable: false,
|
|
||||||
addOrUpdateFlag:false,
|
|
||||||
contents:{"searchBtnFontColor":"#333","pagePosition":"1","inputFontSize":"14px","inputBorderRadius":"22px","tableBtnDelFontColor":"#333","tableBtnIconPosition":"1","searchBtnHeight":"40px","inputIconColor":"rgba(66, 130, 129, 1)","searchBtnBorderRadius":"22px","tableStripe":false,"btnAdAllWarnFontColor":"#333","tableBtnDelBgColor":"rgba(244, 150, 150, 1)","searchBtnIcon":"1","tableSize":"medium","searchBtnBorderStyle":"solid","tableSelection":true,"searchBtnBorderWidth":"1px","tableContentFontSize":"14px","searchBtnBgColor":"rgba(153, 239, 237, 1)","inputTitleSize":"14px","btnAdAllBorderColor":"#DCDFE6","pageJumper":true,"btnAdAllIconPosition":"1","searchBoxPosition":"1","tableBtnDetailFontColor":"#333","tableBtnHeight":"40px","pagePager":true,"searchBtnBorderColor":"#DCDFE6","tableHeaderFontColor":"rgba(33, 34, 35, 1)","inputTitle":"1","tableBtnBorderRadius":"22px","btnAdAllFont":"1","btnAdAllDelFontColor":"rgba(21, 20, 20, 1)","tableBtnIcon":"1","btnAdAllHeight":"40px","btnAdAllWarnBgColor":"rgba(238, 236, 126, 1)","btnAdAllBorderWidth":"1px","tableStripeFontColor":"#606266","tableBtnBorderStyle":"solid","inputHeight":"40px","btnAdAllBorderRadius":"22px","btnAdAllDelBgColor":"rgba(234, 93, 93, 0.69)","pagePrevNext":true,"btnAdAllAddBgColor":"rgba(153, 239, 237, 1)","searchBtnFont":"1","tableIndex":true,"btnAdAllIcon":"1","tableSortable":true,"pageSizes":true,"tableFit":true,"pageBtnBG":true,"searchBtnFontSize":"14px","tableBtnEditBgColor":"rgba(240, 242, 124, 1)","inputBorderWidth":"1px","inputFontPosition":"1","inputFontColor":"#333","pageEachNum":10,"tableHeaderBgColor":"rgba(152, 129, 129, 1)","inputTitleColor":"#333","btnAdAllBoxPosition":"1","tableBtnDetailBgColor":"rgba(171, 239, 239, 1)","inputIcon":"0","searchBtnIconPosition":"1","btnAdAllFontSize":"14px","inputBorderStyle":"solid","inputBgColor":"rgba(197, 174, 174, 0.32)","pageStyle":false,"pageTotal":true,"btnAdAllAddFontColor":"#333","tableBtnFont":"1","tableContentFontColor":"rgba(22, 22, 23, 1)","inputBorderColor":"rgba(152, 129, 129, 1)","tableShowHeader":true,"tableBtnFontSize":"14px","tableBtnBorderColor":"rgba(196, 210, 244, 1)","inputIconPosition":"1","tableBorder":true,"btnAdAllBorderStyle":"solid","tableBtnBorderWidth":"1px","tableStripeBgColor":"rgba(213, 197, 197, 1)","tableBtnEditFontColor":"#333","tableAlign":"center"},
|
|
||||||
layouts: '',
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.init();
|
|
||||||
this.getDataList();
|
|
||||||
this.contentStyleChange()
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
|
|
||||||
},
|
|
||||||
filters: {
|
|
||||||
htmlfilter: function (val) {
|
|
||||||
return val.replace(/<[^>]*>/g).replace(/undefined/g,'');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
AddOrUpdate,
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
contentStyleChange() {
|
|
||||||
this.contentSearchStyleChange()
|
|
||||||
this.contentBtnAdAllStyleChange()
|
|
||||||
this.contentSearchBtnStyleChange()
|
|
||||||
this.contentTableBtnStyleChange()
|
|
||||||
this.contentPageStyleChange()
|
|
||||||
},
|
|
||||||
contentSearchStyleChange() {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.form-content .slt .el-input__inner').forEach(el=>{
|
|
||||||
let textAlign = 'left'
|
|
||||||
if(this.contents.inputFontPosition == 2) textAlign = 'center'
|
|
||||||
if(this.contents.inputFontPosition == 3) textAlign = 'right'
|
|
||||||
el.style.textAlign = textAlign
|
|
||||||
el.style.height = this.contents.inputHeight
|
|
||||||
el.style.lineHeight = this.contents.inputHeight
|
|
||||||
el.style.color = this.contents.inputFontColor
|
|
||||||
el.style.fontSize = this.contents.inputFontSize
|
|
||||||
el.style.borderWidth = this.contents.inputBorderWidth
|
|
||||||
el.style.borderStyle = this.contents.inputBorderStyle
|
|
||||||
el.style.borderColor = this.contents.inputBorderColor
|
|
||||||
el.style.borderRadius = this.contents.inputBorderRadius
|
|
||||||
el.style.backgroundColor = this.contents.inputBgColor
|
|
||||||
})
|
|
||||||
if(this.contents.inputTitle) {
|
|
||||||
document.querySelectorAll('.form-content .slt .el-form-item__label').forEach(el=>{
|
|
||||||
el.style.color = this.contents.inputTitleColor
|
|
||||||
el.style.fontSize = this.contents.inputTitleSize
|
|
||||||
el.style.lineHeight = this.contents.inputHeight
|
|
||||||
})
|
|
||||||
}
|
|
||||||
setTimeout(()=>{
|
|
||||||
document.querySelectorAll('.form-content .slt .el-input__prefix').forEach(el=>{
|
|
||||||
el.style.color = this.contents.inputIconColor
|
|
||||||
el.style.lineHeight = this.contents.inputHeight
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.form-content .slt .el-input__suffix').forEach(el=>{
|
|
||||||
el.style.color = this.contents.inputIconColor
|
|
||||||
el.style.lineHeight = this.contents.inputHeight
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.form-content .slt .el-input__icon').forEach(el=>{
|
|
||||||
el.style.lineHeight = this.contents.inputHeight
|
|
||||||
})
|
|
||||||
},10)
|
|
||||||
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 搜索按钮
|
|
||||||
contentSearchBtnStyleChange() {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.form-content .slt .el-button--success').forEach(el=>{
|
|
||||||
el.style.height = this.contents.searchBtnHeight
|
|
||||||
el.style.color = this.contents.searchBtnFontColor
|
|
||||||
el.style.fontSize = this.contents.searchBtnFontSize
|
|
||||||
el.style.borderWidth = this.contents.searchBtnBorderWidth
|
|
||||||
el.style.borderStyle = this.contents.searchBtnBorderStyle
|
|
||||||
el.style.borderColor = this.contents.searchBtnBorderColor
|
|
||||||
el.style.borderRadius = this.contents.searchBtnBorderRadius
|
|
||||||
el.style.backgroundColor = this.contents.searchBtnBgColor
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 新增、批量删除
|
|
||||||
contentBtnAdAllStyleChange() {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.form-content .ad .el-button--success').forEach(el=>{
|
|
||||||
el.style.height = this.contents.btnAdAllHeight
|
|
||||||
el.style.color = this.contents.btnAdAllAddFontColor
|
|
||||||
el.style.fontSize = this.contents.btnAdAllFontSize
|
|
||||||
el.style.borderWidth = this.contents.btnAdAllBorderWidth
|
|
||||||
el.style.borderStyle = this.contents.btnAdAllBorderStyle
|
|
||||||
el.style.borderColor = this.contents.btnAdAllBorderColor
|
|
||||||
el.style.borderRadius = this.contents.btnAdAllBorderRadius
|
|
||||||
el.style.backgroundColor = this.contents.btnAdAllAddBgColor
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.form-content .ad .el-button--danger').forEach(el=>{
|
|
||||||
el.style.height = this.contents.btnAdAllHeight
|
|
||||||
el.style.color = this.contents.btnAdAllDelFontColor
|
|
||||||
el.style.fontSize = this.contents.btnAdAllFontSize
|
|
||||||
el.style.borderWidth = this.contents.btnAdAllBorderWidth
|
|
||||||
el.style.borderStyle = this.contents.btnAdAllBorderStyle
|
|
||||||
el.style.borderColor = this.contents.btnAdAllBorderColor
|
|
||||||
el.style.borderRadius = this.contents.btnAdAllBorderRadius
|
|
||||||
el.style.backgroundColor = this.contents.btnAdAllDelBgColor
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.form-content .ad .el-button--warning').forEach(el=>{
|
|
||||||
el.style.height = this.contents.btnAdAllHeight
|
|
||||||
el.style.color = this.contents.btnAdAllWarnFontColor
|
|
||||||
el.style.fontSize = this.contents.btnAdAllFontSize
|
|
||||||
el.style.borderWidth = this.contents.btnAdAllBorderWidth
|
|
||||||
el.style.borderStyle = this.contents.btnAdAllBorderStyle
|
|
||||||
el.style.borderColor = this.contents.btnAdAllBorderColor
|
|
||||||
el.style.borderRadius = this.contents.btnAdAllBorderRadius
|
|
||||||
el.style.backgroundColor = this.contents.btnAdAllWarnBgColor
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 表格
|
|
||||||
rowStyle({ row, rowIndex}) {
|
|
||||||
if (rowIndex % 2 == 1) {
|
|
||||||
if(this.contents.tableStripe) {
|
|
||||||
return {color:this.contents.tableStripeFontColor}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
cellStyle({ row, rowIndex}){
|
|
||||||
if (rowIndex % 2 == 1) {
|
|
||||||
if(this.contents.tableStripe) {
|
|
||||||
return {backgroundColor:this.contents.tableStripeBgColor}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
headerRowStyle({ row, rowIndex}){
|
|
||||||
return {color: this.contents.tableHeaderFontColor}
|
|
||||||
},
|
|
||||||
headerCellStyle({ row, rowIndex}){
|
|
||||||
return {backgroundColor: this.contents.tableHeaderBgColor}
|
|
||||||
},
|
|
||||||
// 表格按钮
|
|
||||||
contentTableBtnStyleChange(){
|
|
||||||
// this.$nextTick(()=>{
|
|
||||||
// setTimeout(()=>{
|
|
||||||
// document.querySelectorAll('.table-content .tables .el-table__body .el-button--success').forEach(el=>{
|
|
||||||
// el.style.height = this.contents.tableBtnHeight
|
|
||||||
// el.style.color = this.contents.tableBtnDetailFontColor
|
|
||||||
// el.style.fontSize = this.contents.tableBtnFontSize
|
|
||||||
// el.style.borderWidth = this.contents.tableBtnBorderWidth
|
|
||||||
// el.style.borderStyle = this.contents.tableBtnBorderStyle
|
|
||||||
// el.style.borderColor = this.contents.tableBtnBorderColor
|
|
||||||
// el.style.borderRadius = this.contents.tableBtnBorderRadius
|
|
||||||
// el.style.backgroundColor = this.contents.tableBtnDetailBgColor
|
|
||||||
// })
|
|
||||||
// document.querySelectorAll('.table-content .tables .el-table__body .el-button--primary').forEach(el=>{
|
|
||||||
// el.style.height = this.contents.tableBtnHeight
|
|
||||||
// el.style.color = this.contents.tableBtnEditFontColor
|
|
||||||
// el.style.fontSize = this.contents.tableBtnFontSize
|
|
||||||
// el.style.borderWidth = this.contents.tableBtnBorderWidth
|
|
||||||
// el.style.borderStyle = this.contents.tableBtnBorderStyle
|
|
||||||
// el.style.borderColor = this.contents.tableBtnBorderColor
|
|
||||||
// el.style.borderRadius = this.contents.tableBtnBorderRadius
|
|
||||||
// el.style.backgroundColor = this.contents.tableBtnEditBgColor
|
|
||||||
// })
|
|
||||||
// document.querySelectorAll('.table-content .tables .el-table__body .el-button--danger').forEach(el=>{
|
|
||||||
// el.style.height = this.contents.tableBtnHeight
|
|
||||||
// el.style.color = this.contents.tableBtnDelFontColor
|
|
||||||
// el.style.fontSize = this.contents.tableBtnFontSize
|
|
||||||
// el.style.borderWidth = this.contents.tableBtnBorderWidth
|
|
||||||
// el.style.borderStyle = this.contents.tableBtnBorderStyle
|
|
||||||
// el.style.borderColor = this.contents.tableBtnBorderColor
|
|
||||||
// el.style.borderRadius = this.contents.tableBtnBorderRadius
|
|
||||||
// el.style.backgroundColor = this.contents.tableBtnDelBgColor
|
|
||||||
// })
|
|
||||||
|
|
||||||
// }, 50)
|
|
||||||
// })
|
|
||||||
},
|
|
||||||
// 分页
|
|
||||||
contentPageStyleChange(){
|
|
||||||
let arr = []
|
|
||||||
|
|
||||||
if(this.contents.pageTotal) arr.push('total')
|
|
||||||
if(this.contents.pageSizes) arr.push('sizes')
|
|
||||||
if(this.contents.pagePrevNext){
|
|
||||||
arr.push('prev')
|
|
||||||
if(this.contents.pagePager) arr.push('pager')
|
|
||||||
arr.push('next')
|
|
||||||
}
|
|
||||||
if(this.contents.pageJumper) arr.push('jumper')
|
|
||||||
this.layouts = arr.join()
|
|
||||||
this.contents.pageEachNum = 10
|
|
||||||
},
|
|
||||||
|
|
||||||
init () {
|
|
||||||
},
|
|
||||||
search() {
|
|
||||||
this.pageIndex = 1;
|
|
||||||
this.getDataList();
|
|
||||||
},
|
|
||||||
// 获取数据列表
|
|
||||||
getDataList() {
|
|
||||||
this.dataListLoading = true;
|
|
||||||
let params = {
|
|
||||||
page: this.pageIndex,
|
|
||||||
limit: this.pageSize,
|
|
||||||
sort: 'id',
|
|
||||||
}
|
|
||||||
if(this.searchForm.fangzhuzhanghao!='' && this.searchForm.fangzhuzhanghao!=undefined){
|
|
||||||
params['fangzhuzhanghao'] = '%' + this.searchForm.fangzhuzhanghao + '%'
|
|
||||||
}
|
|
||||||
if(this.searchForm.fangzhuxingming!='' && this.searchForm.fangzhuxingming!=undefined){
|
|
||||||
params['fangzhuxingming'] = '%' + this.searchForm.fangzhuxingming + '%'
|
|
||||||
}
|
|
||||||
this.$http({
|
|
||||||
url: "fangzhu/page",
|
|
||||||
method: "get",
|
|
||||||
params: params
|
|
||||||
}).then(({ data }) => {
|
|
||||||
if (data && data.code === 0) {
|
|
||||||
this.dataList = data.data.list;
|
|
||||||
this.totalPage = data.data.total;
|
|
||||||
} else {
|
|
||||||
this.dataList = [];
|
|
||||||
this.totalPage = 0;
|
|
||||||
}
|
|
||||||
this.dataListLoading = false;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 每页数
|
|
||||||
sizeChangeHandle(val) {
|
|
||||||
this.pageSize = val;
|
|
||||||
this.pageIndex = 1;
|
|
||||||
this.getDataList();
|
|
||||||
},
|
|
||||||
// 当前页
|
|
||||||
currentChangeHandle(val) {
|
|
||||||
this.pageIndex = val;
|
|
||||||
this.getDataList();
|
|
||||||
},
|
|
||||||
// 多选
|
|
||||||
selectionChangeHandler(val) {
|
|
||||||
this.dataListSelections = val;
|
|
||||||
},
|
|
||||||
// 添加/修改
|
|
||||||
addOrUpdateHandler(id,type) {
|
|
||||||
this.showFlag = false;
|
|
||||||
this.addOrUpdateFlag = true;
|
|
||||||
this.crossAddOrUpdateFlag = false;
|
|
||||||
if(type!='info'){
|
|
||||||
type = 'else';
|
|
||||||
}
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.$refs.addOrUpdate.init(id,type);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 查看评论
|
|
||||||
// 下载
|
|
||||||
download(file){
|
|
||||||
window.open(`${file}`)
|
|
||||||
},
|
|
||||||
// 删除
|
|
||||||
deleteHandler(id) {
|
|
||||||
var ids = id
|
|
||||||
? [Number(id)]
|
|
||||||
: this.dataListSelections.map(item => {
|
|
||||||
return Number(item.id);
|
|
||||||
});
|
|
||||||
this.$confirm(`确定进行[${id ? "删除" : "批量删除"}]操作?`, "提示", {
|
|
||||||
confirmButtonText: "确定",
|
|
||||||
cancelButtonText: "取消",
|
|
||||||
type: "warning"
|
|
||||||
}).then(() => {
|
|
||||||
this.$http({
|
|
||||||
url: "fangzhu/delete",
|
|
||||||
method: "post",
|
|
||||||
data: ids
|
|
||||||
}).then(({ data }) => {
|
|
||||||
if (data && data.code === 0) {
|
|
||||||
this.$message({
|
|
||||||
message: "操作成功",
|
|
||||||
type: "success",
|
|
||||||
duration: 1500,
|
|
||||||
onClose: () => {
|
|
||||||
this.search();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
this.$message.error(data.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.slt {
|
|
||||||
margin: 0 !important;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ad {
|
|
||||||
margin: 0 !important;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pages {
|
|
||||||
& /deep/ el-pagination__sizes{
|
|
||||||
& /deep/ el-input__inner {
|
|
||||||
height: 22px;
|
|
||||||
line-height: 22px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.el-button+.el-button {
|
|
||||||
margin:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tables {
|
|
||||||
& /deep/ .el-button--success {
|
|
||||||
height: 40px;
|
|
||||||
color: #333;
|
|
||||||
font-size: 14px;
|
|
||||||
border-width: 1px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(196, 210, 244, 1);
|
|
||||||
border-radius: 22px;
|
|
||||||
background-color: rgba(171, 239, 239, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
& /deep/ .el-button--primary {
|
|
||||||
height: 40px;
|
|
||||||
color: #333;
|
|
||||||
font-size: 14px;
|
|
||||||
border-width: 1px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(196, 210, 244, 1);
|
|
||||||
border-radius: 22px;
|
|
||||||
background-color: rgba(240, 242, 124, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
& /deep/ .el-button--danger {
|
|
||||||
height: 40px;
|
|
||||||
color: #333;
|
|
||||||
font-size: 14px;
|
|
||||||
border-width: 1px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(196, 210, 244, 1);
|
|
||||||
border-radius: 22px;
|
|
||||||
background-color: rgba(244, 150, 150, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
& /deep/ .el-button {
|
|
||||||
margin: 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
@ -1,22 +0,0 @@
|
|||||||
/**
|
|
||||||
* 工具类css
|
|
||||||
*/
|
|
||||||
/* 嵌套文字横线 */
|
|
||||||
.line-container {
|
|
||||||
width: 100%;
|
|
||||||
background: url(../img/line.jpg) left center repeat-x;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.line {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0 10px;
|
|
||||||
text-align: center;
|
|
||||||
font-family: 'Microsoft Yahei';
|
|
||||||
font-size: 24px;
|
|
||||||
background: #fff;
|
|
||||||
color: #000000;
|
|
||||||
line-height: 1.3;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 工具类css end
|
|
||||||
*/
|
|
@ -1,701 +0,0 @@
|
|||||||
.container {
|
|
||||||
margin: 0 auto;
|
|
||||||
width: 980px;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 导航栏 */
|
|
||||||
.nav {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-nav * {
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 轮播图 */
|
|
||||||
.swiper-item {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-carousel-ind li {
|
|
||||||
width: 80px;
|
|
||||||
height: 5px;
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 商品推荐标题 */
|
|
||||||
.recommend-container {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.index-title {
|
|
||||||
margin: 0 auto;
|
|
||||||
width: 980px;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 42px;
|
|
||||||
font-family: "Times New Roman", Times, serif;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recommend-list {
|
|
||||||
width: 1000px;
|
|
||||||
margin: 0 auto;
|
|
||||||
height: 360px;
|
|
||||||
padding: 0px 0 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recommend-item {
|
|
||||||
float: left;
|
|
||||||
width: 1000px;
|
|
||||||
padding: 20px 0 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recommend-item li {
|
|
||||||
float: left;
|
|
||||||
width: 218px;
|
|
||||||
position: relative;
|
|
||||||
display: inline;
|
|
||||||
margin: 0 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recommend-item li a.img {
|
|
||||||
float: left;
|
|
||||||
width: 218px;
|
|
||||||
height: 218px;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
background: url(../img/yuan.png) left top no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recommend-item li a.wor {
|
|
||||||
float: left;
|
|
||||||
width: 218px;
|
|
||||||
height: 30px;
|
|
||||||
line-height: 30px;
|
|
||||||
text-align: center;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #000;
|
|
||||||
display: inline;
|
|
||||||
margin: 10px 0 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 首页新闻样式(手风琴) */
|
|
||||||
.news-home-container {
|
|
||||||
padding-top: 20px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .layui-collapse {
|
|
||||||
border: 0;
|
|
||||||
margin: 0 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .layui-colla-item {
|
|
||||||
margin-top: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .layui-colla-content {
|
|
||||||
font-size: 16px;
|
|
||||||
line-height: 40px;
|
|
||||||
height: 115px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .layui-colla-title {
|
|
||||||
height: 50px;
|
|
||||||
line-height: 50px;
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .card-container {
|
|
||||||
margin-top: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .layui-card-header {
|
|
||||||
height: 50px;
|
|
||||||
line-height: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 底部导航 */
|
|
||||||
.nav-bottom {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 底部栏 */
|
|
||||||
.footer {
|
|
||||||
margin: 10px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-item {
|
|
||||||
color: #515151;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 留言 */
|
|
||||||
.message-container {
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.message-container .message-form {
|
|
||||||
margin-top: 20px;
|
|
||||||
border-bottom: 1px dotted #888888;
|
|
||||||
}
|
|
||||||
|
|
||||||
.message-container .message-list {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.message-container .message-list .message-item {
|
|
||||||
margin-top: 20px;
|
|
||||||
border-bottom: 1px solid #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
.message-container .message-list .message-item .username-container {
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.message-container .message-list .message-item .username-container .avator {
|
|
||||||
width: 60px;
|
|
||||||
height: 60px;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.message-container .message-list .message-item .content {
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.message-container .message-list .message-item .replay {
|
|
||||||
background: #EEEEEE;
|
|
||||||
margin: 10px;
|
|
||||||
padding: 20px;
|
|
||||||
border-radius: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 论坛 */
|
|
||||||
.forum-container {
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .forum-list {
|
|
||||||
text-align: left;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .forum-list .forum-item {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
padding: 20px;
|
|
||||||
border-bottom: 3px dotted #EEEEEE;
|
|
||||||
border-top: 3px dotted #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .forum-list .forum-item.line {
|
|
||||||
background: #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.forum-container .forum-list .forum-item .h2 {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .forum-list .forum-item .create-time {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .title {
|
|
||||||
font-size: 22px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .content {
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
text-align: left;
|
|
||||||
margin-top: 30px;
|
|
||||||
font-size: 16px;
|
|
||||||
line-height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .auth-container {
|
|
||||||
margin-top: 20px;
|
|
||||||
color: #888888;
|
|
||||||
border-bottom: 1px dotted #888888;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .bottom-container {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
background: #EEEEEE;
|
|
||||||
height: 60px;
|
|
||||||
line-height: 60px;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .bottom-container .title {
|
|
||||||
margin-left: 30px;
|
|
||||||
font-size: 20px;
|
|
||||||
color: #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .bottom-container .btn {
|
|
||||||
font-size: 20px;
|
|
||||||
padding: 0 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .message-list {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.forum-container .message-list .message-item {
|
|
||||||
margin-top: 20px;
|
|
||||||
border-bottom: 1px solid #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .message-list .message-item .username-container {
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .message-list .message-item .username-container .avator {
|
|
||||||
width: 60px;
|
|
||||||
height: 60px;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .message-list .message-item .content {
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .message-list .message-item .replay {
|
|
||||||
background: #EEEEEE;
|
|
||||||
margin: 10px;
|
|
||||||
padding: 20px;
|
|
||||||
border-radius: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 考试 */
|
|
||||||
.paper-container {
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
margin-top: 20px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.paper-container thead {
|
|
||||||
border-radius: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.paper-container thead tr th {
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: blod;
|
|
||||||
line-height: 50px;
|
|
||||||
height: 50px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.paper-container tbody tr td {
|
|
||||||
font-size: 16px;
|
|
||||||
height: 50px;
|
|
||||||
border-bottom: 5px dotted #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
.paper-container tbody tr {
|
|
||||||
border: 3px dotted #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 个人中心 */
|
|
||||||
.center-container {
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
margin-top: 20px;
|
|
||||||
text-align: center;
|
|
||||||
display: flex;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.center-container .left-container {
|
|
||||||
border: 2px dotted #EEEEEE;
|
|
||||||
background: #FFFFFF;
|
|
||||||
width: 200px;
|
|
||||||
padding-top: 20px;
|
|
||||||
height: 600px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.center-container .right-container {
|
|
||||||
flex: 1;
|
|
||||||
border: 2px dotted #EEEEEE;
|
|
||||||
background: #FFFFFF;
|
|
||||||
text-align: left;
|
|
||||||
padding: 20px;
|
|
||||||
padding-top: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 购物车 */
|
|
||||||
.btn-container {
|
|
||||||
margin-top: 20px;
|
|
||||||
text-align: right;
|
|
||||||
margin-bottom: 60px;
|
|
||||||
border: 2px dotted #EEEEEE;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 登陆注册 */
|
|
||||||
.login-container {
|
|
||||||
background: #FFFFFF;
|
|
||||||
z-index: 9;
|
|
||||||
position: relative;
|
|
||||||
width: 480px;
|
|
||||||
margin: 0 auto;
|
|
||||||
border-radius: 20px;
|
|
||||||
margin-top: 100px;
|
|
||||||
padding-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-form {
|
|
||||||
text-align: center;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-bg {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
opacity: 0.8;
|
|
||||||
background-size: 100% 100%;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-container .bottom-container {
|
|
||||||
text-align: center;
|
|
||||||
color: #888888;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-container .bottom-container a {
|
|
||||||
margin-left: 10px;
|
|
||||||
border: 2px dotted #888888;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 确认下单页面 */
|
|
||||||
.address-table {
|
|
||||||
border: 3px dotted #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 图文列表 */
|
|
||||||
.data-container {
|
|
||||||
margin: 20px 0;
|
|
||||||
text-align: center;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-container .data-list .data-item {
|
|
||||||
padding: 20px;
|
|
||||||
text-align: left;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
min-height: 330px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-container .data-list .data-item:hover {
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.data-container .data-list .data-item .cover {
|
|
||||||
width: 100%;
|
|
||||||
height: 200px;
|
|
||||||
object-fit: cover;
|
|
||||||
border: 1px solid #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-container .data-list .data-item .title {
|
|
||||||
text-align: center;
|
|
||||||
padding: 10px;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-container .data-list .data-item .price {
|
|
||||||
font-size: 20px;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-container .data-list .data-item .data {
|
|
||||||
font-size: 16px;
|
|
||||||
border: 1px solid #EEEEEE;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-container .data-list .data-item .data .item {
|
|
||||||
width: 40%;
|
|
||||||
text-align: center;
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-container {
|
|
||||||
border: 0;
|
|
||||||
font-size: 16px;
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
text-align: left;
|
|
||||||
margin-top: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 数据详情页 */
|
|
||||||
|
|
||||||
.data-detail {
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
margin-top: 20px;
|
|
||||||
text-align: left;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail-breadcrumb {
|
|
||||||
margin: 10px 0;
|
|
||||||
padding: 20px;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .title {
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: bold;
|
|
||||||
border: 3px dotted #EEEEEE;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .count-container {
|
|
||||||
background: url(../img/seckilling.jpg);
|
|
||||||
margin-top: 20px;
|
|
||||||
padding: 15px;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .count-container .text {
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: blod;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .count-container .number {
|
|
||||||
padding: 10px;
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: blod;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .tool-container {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
margin-top: 20px;
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bolder;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .price {
|
|
||||||
color: red;
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bolder;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: bolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .detail-item {
|
|
||||||
background: #EEEEEE;
|
|
||||||
padding: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .desc {
|
|
||||||
font-size: 16px;
|
|
||||||
color: #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.video-container {
|
|
||||||
width: 100%;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.num-picker {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.num-picker button {
|
|
||||||
border: 0;
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.num-picker input {
|
|
||||||
width: 50px;
|
|
||||||
text-align: center;
|
|
||||||
height: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-add-container{
|
|
||||||
width: 800px;
|
|
||||||
margin: 0 auto;
|
|
||||||
margin-top: 20px;
|
|
||||||
text-align: left;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
padding: 20px;
|
|
||||||
padding-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 详情页选座 */
|
|
||||||
.seat-list {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
background: #FFFFFF;
|
|
||||||
margin: 20px;
|
|
||||||
border-radius: 20px;
|
|
||||||
padding: 20px;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.seat-item {
|
|
||||||
width: 10%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
flex-direction: column;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.seat-icon {
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* banner */
|
|
||||||
.banner {
|
|
||||||
width: 100%;
|
|
||||||
height: 50px;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 新闻列表 */
|
|
||||||
.news-container {
|
|
||||||
text-align: center;
|
|
||||||
margin: 0 auto;
|
|
||||||
margin: 40px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .pager {
|
|
||||||
margin: 20px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .news-list {
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .news-list .news-item {
|
|
||||||
display: flex;
|
|
||||||
border-bottom: 1px solid #EEEEEE;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .news-list .news-item .cover-container {
|
|
||||||
margin: 0 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .news-list .news-item .cover-container .cover {
|
|
||||||
width: 200px;
|
|
||||||
height: 200px;
|
|
||||||
object-fit: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .news-list .news-item .detail-container .h2 {
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .news-list .news-item .detail-container .desc {
|
|
||||||
height: 140px;
|
|
||||||
padding-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .title {
|
|
||||||
font-size: 22px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .content {
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
text-align: left;
|
|
||||||
margin-top: 30px;
|
|
||||||
font-size: 16px;
|
|
||||||
line-height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .auth-container {
|
|
||||||
margin-top: 20px;
|
|
||||||
color: #888888;
|
|
||||||
border-bottom: 1px dotted #888888;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.news-container .bottom-container {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
background: #EEEEEE;
|
|
||||||
height: 60px;
|
|
||||||
line-height: 60px;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .bottom-container .title {
|
|
||||||
margin-left: 30px;
|
|
||||||
font-size: 20px;
|
|
||||||
color: #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .bottom-container .btn {
|
|
||||||
font-size: 20px;
|
|
||||||
padding: 0 20px;
|
|
||||||
}
|
|
@ -1,265 +0,0 @@
|
|||||||
/* 导航栏 */
|
|
||||||
.nav {
|
|
||||||
background: #f7f7f7;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-nav .layui-nav-item a {
|
|
||||||
color: #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-nav .layui-this:after,
|
|
||||||
.layui-nav-bar,
|
|
||||||
.layui-nav-tree .layui-nav-itemed:after {
|
|
||||||
background-color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-nav .layui-nav-item a:hover {
|
|
||||||
color: #FFFFFF;
|
|
||||||
background-color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-nav .layui-nav-child dd.layui-this a,
|
|
||||||
.layui-nav-child dd.layui-this {
|
|
||||||
background-color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-nav-tree .layui-nav-child dd.layui-this, .layui-nav-tree .layui-nav-child dd.layui-this a, .layui-nav-tree .layui-this, .layui-nav-tree .layui-this>a, .layui-nav-tree .layui-this>a:hover {
|
|
||||||
background-color: #ce0b07;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 轮播图 */
|
|
||||||
.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul {
|
|
||||||
background-color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-carousel-ind li.layui-this {
|
|
||||||
background-color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-carousel-ind li {
|
|
||||||
background-color: #888888;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 首页标题 */
|
|
||||||
.index-title {
|
|
||||||
color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 首页新闻 */
|
|
||||||
.news-home-container {
|
|
||||||
background: #e5e5e5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .layui-colla-item {
|
|
||||||
border: 1px solid #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .layui-colla-content {
|
|
||||||
background: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .layui-colla-title {
|
|
||||||
background: #d1d1d1;
|
|
||||||
border: 1px solid #EEEEEE;
|
|
||||||
color: #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .layui-colla-title:hover {
|
|
||||||
background: #ce0b07;
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-home-container .layui-card-header {
|
|
||||||
background: #d1d1d1;
|
|
||||||
border: 1px solid #FFFFFF;
|
|
||||||
color: #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 图文列表 */
|
|
||||||
|
|
||||||
.data-container .data-list .data-item:hover {
|
|
||||||
border: 1px solid #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.data-container .data-list .data-item .title:hover {
|
|
||||||
background: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.data-container .data-list .data-item .title {
|
|
||||||
background: #515151;
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-container .data-list .data-item .price {
|
|
||||||
color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 详情页 */
|
|
||||||
.data-detail {
|
|
||||||
background: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail-breadcrumb {
|
|
||||||
background: #EEEEEE;
|
|
||||||
color: #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .title {
|
|
||||||
color: #515151;
|
|
||||||
border: 3px dotted #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .count-container {
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .count-container .number {
|
|
||||||
background: #443b3b;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .tool-container{
|
|
||||||
border: 3px dotted #EEEEEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-detail .price{
|
|
||||||
color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.layui-tab-card>.layui-tab-title .layui-this {
|
|
||||||
background-color: #ce0b07;
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 底部导航栏 */
|
|
||||||
.nav-bottom {
|
|
||||||
background: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-bottom .layui-nav-item a {
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* banner */
|
|
||||||
.banner {
|
|
||||||
background: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 新闻资讯 */
|
|
||||||
.news-container .news-list .news-item .detail-container .h2 {
|
|
||||||
color: #4e6990;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .news-list .news-item .detail-container .desc {
|
|
||||||
color: #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .news-list .news-item .detail-container .create-time {
|
|
||||||
color: #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news-container .title {
|
|
||||||
color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.news-container .bottom-container .btn {
|
|
||||||
background: #ce0b07;
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 论坛 */
|
|
||||||
|
|
||||||
.forum-container .bottom-container .btn {
|
|
||||||
background: #ce0b07;
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .forum-list .forum-item:hover {
|
|
||||||
background: #ce0b07;
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.forum-container .forum-list .forum-item.line:hover {
|
|
||||||
background: #ce0b07;
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 考试 */
|
|
||||||
.paper-container thead tr{
|
|
||||||
background: #ce0b07 ;
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.paper-container tbody tr:hover{
|
|
||||||
color: #FFFFFF;
|
|
||||||
background-color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 个人中心 */
|
|
||||||
|
|
||||||
.center-container .layui-nav .layui-nav-more {
|
|
||||||
border-color: #515151 transparent transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.center-container .layui-nav-itemed>a, .layui-nav-tree .layui-nav-title a, .layui-nav-tree .layui-nav-title a:hover {
|
|
||||||
color: #515151 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.center-container .layui-nav .layui-nav-mored, .layui-nav-itemed>a .layui-nav-more {
|
|
||||||
border-color: transparent transparent #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.center-container .layui-nav {
|
|
||||||
background-color: #FFFFFF;
|
|
||||||
color: #515151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.center-container .layui-nav-itemed>.layui-nav-child {
|
|
||||||
background-color: #FFFFFF !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.center-container .layui-nav-tree .layui-nav-bar {
|
|
||||||
width: 5px;
|
|
||||||
height: 0;
|
|
||||||
background-color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 分页插件 */
|
|
||||||
.layui-laypage .layui-laypage-curr .layui-laypage-em {
|
|
||||||
background-color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-laypage a:hover {
|
|
||||||
color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-submit {
|
|
||||||
background: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-theme{
|
|
||||||
background: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* checkbox */
|
|
||||||
.layui-form-radio>i:hover, .layui-form-radioed>i {
|
|
||||||
color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-form-select dl dd.layui-this {
|
|
||||||
background-color: #ce0b07;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-tab-brief>.layui-tab-title .layui-this {
|
|
||||||
color: #ce0b07;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-tab-brief>.layui-tab-more li.layui-this:after, .layui-tab-brief>.layui-tab-title .layui-this:after {
|
|
||||||
border-bottom: 2px solid #ce0b07;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 4.7 KiB |
@ -1,302 +0,0 @@
|
|||||||
<!-- 首页 -->
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
||||||
<title>首页</title>
|
|
||||||
<link rel="stylesheet" href="./layui/css/layui.css">
|
|
||||||
<link rel="stylesheet" href="./xznstatic/css/common.css"/>
|
|
||||||
<link rel="stylesheet" href="./xznstatic/css/style.css"/>
|
|
||||||
</head>
|
|
||||||
<style type="text/css">
|
|
||||||
html, body {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
#iframe {
|
|
||||||
width: 100%;
|
|
||||||
margin-top: 38px;
|
|
||||||
padding-top: 100px;
|
|
||||||
}
|
|
||||||
#header {
|
|
||||||
height: auto;
|
|
||||||
background: #fff;
|
|
||||||
border-bottom: 0;
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#header .nav-top {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
padding: 0 20px;
|
|
||||||
font-size: 16px;
|
|
||||||
color: #2a8a15;
|
|
||||||
box-sizing: border-box;
|
|
||||||
height: 38px;
|
|
||||||
background-color: rgba(127, 78, 22, 1);
|
|
||||||
box-shadow: 0 1px 6px rgba(0,0,0,.3);
|
|
||||||
justify-content: center;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#header .nav-top-img {
|
|
||||||
width: 124px;
|
|
||||||
height: 40px;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
border-radius: 6px;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0,0,0,.3);
|
|
||||||
box-shadow: 0 0 6px rgba(0,0,0,.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
#header .nav-top-title {
|
|
||||||
line-height: 40px;
|
|
||||||
font-size: 25px;
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
padding: 0 10px;
|
|
||||||
margin: 0 10px;
|
|
||||||
border-radius: 6px;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(127, 78, 22, 1);
|
|
||||||
box-shadow: 0 0 0px rgba(0,0,0,.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
#header .nav-top-tel {
|
|
||||||
line-height: 40px;
|
|
||||||
font-size: 25px;
|
|
||||||
color: rgba(222, 222, 222, 1);
|
|
||||||
padding: 0 10px;
|
|
||||||
margin: 0;
|
|
||||||
border-radius: 6px;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(179, 172, 172, 1);
|
|
||||||
box-shadow: 0 0 0px rgba(0,0,0,.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
#header .navs {
|
|
||||||
display: flex;
|
|
||||||
padding: 0 20px;
|
|
||||||
align-items: center;
|
|
||||||
box-sizing: border-box;
|
|
||||||
height: 100px;
|
|
||||||
background-color: rgba(69, 69, 69, 1);
|
|
||||||
box-shadow: 0 1px 6px rgba(0,0,0,0);
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
#header .navs .title {
|
|
||||||
width: auto;
|
|
||||||
line-height: 40px;
|
|
||||||
font-size: 16px;
|
|
||||||
color: #333;
|
|
||||||
padding: 0 10px;
|
|
||||||
margin: 0 5px;
|
|
||||||
border-radius: 6px;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0,0,0,.3);
|
|
||||||
box-shadow: 0 0 6px rgba(0,0,0,0);
|
|
||||||
}
|
|
||||||
#header .navs li {
|
|
||||||
display: inline-block;
|
|
||||||
width: auto;
|
|
||||||
line-height: 34px;
|
|
||||||
padding: 0 10px;
|
|
||||||
margin: 0 5px;
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
font-size: 20px;
|
|
||||||
border-radius: 6px;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0,0,0,.3);
|
|
||||||
background-color: $template2.front.base.nav.list.item.backgroundColor;
|
|
||||||
box-shadow: 0 0 6px rgba(0,0,0,.1);
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#header .navs li a{
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
#header .navs li.current a{
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
#header .navs li a:hover{
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
#header .navs li.current {
|
|
||||||
color: rgba(247, 197, 30, 1);
|
|
||||||
font-size: 21px;
|
|
||||||
border-radius: 6px;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: $template2.front.base.nav.list.activeBox.borderColor;
|
|
||||||
background-color: $template2.front.base.nav.list.activeBox.backgroundColor;
|
|
||||||
box-shadow: 0 0 0px rgba(255,0,0,.8);
|
|
||||||
}
|
|
||||||
#header .navs li:hover {
|
|
||||||
color: #fff;
|
|
||||||
font-size: 20px;
|
|
||||||
border-radius: 6px;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0,0,0,.3);
|
|
||||||
background-color: rgba(247, 197, 30, 1);
|
|
||||||
box-shadow: 0 0 0px rgba(0,0,0,.3);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<body>
|
|
||||||
<!-- start 顶部导航栏 -->
|
|
||||||
<div id="header">
|
|
||||||
<div v-if='true' class="nav-top">
|
|
||||||
<img v-if='false' class="nav-top-img" src='https://www.baidu.com/img/flexible/logo/pc/result@2.png'>
|
|
||||||
<div v-if="true" class="nav-top-title">{{projectName}}</div>
|
|
||||||
<div class="nav-top-tel"></div>
|
|
||||||
</div>
|
|
||||||
<div class="navs">
|
|
||||||
<!-- <div class="logo" style="font-size: 20px;top: 32px;color: #fff;font-weight: bold;margin-left: -200px;width: 240px;" v-text="projectName"></div> -->
|
|
||||||
<div class="title" v-if="false" v-text="projectName"></div>
|
|
||||||
<div class="list">
|
|
||||||
<ul>
|
|
||||||
<li class='current'><a href="javascript:navPage('./pages/home/home.html')" class="menumain"><i v-if="false" class="layui-icon layui-icon-home"></i>首页</a></li>
|
|
||||||
<li v-for="(item,index) in indexNav" v-bind:key="index"><a :href="'javascript:navPage(\''+item.url+'\')'" class="menumain" style="cursor: pointer;"><i v-if="false" class="layui-icon" :class="iconArr[index]"></i>{{item.name}}</a></li>
|
|
||||||
<li><a href="javascript:centerPage();" class="menumain"><i v-if="false" class="layui-icon layui-icon-username"></i>个人中心</a></li>
|
|
||||||
<li v-if="cartFlag"><a href="javascript:navPage('./pages/shop-cart/list.html')" class="menumain"><i v-if="false" class="layui-icon"></i>购物车</a></li>
|
|
||||||
<li v-if="chatFlag"><a href="javascript:chatTap()" class="menumain"><i v-if="false" class="layui-icon"></i>客服</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- end 顶部导航栏 -->
|
|
||||||
|
|
||||||
<iframe src="./pages/home/home.html" id="iframe" frameborder="0" scrolling="no" width="100%" onload="changeFrameHeight"></iframe>
|
|
||||||
|
|
||||||
<div id="tabbar" v-if="true" class="tabbar" :style='{"padding":"20px 0","boxShadow":"0 0 6px #F2F2F2","margin":"10px 0 0 0","borderColor":"rgba(0,0,0,.3)","backgroundColor":"rgba(242, 242, 242, 1)","borderRadius":"0","borderWidth":"0","borderStyle":"solid"}' style="position: relative;z-index: 999;">
|
|
||||||
<img v-if='false' :style='{"boxShadow":"0 0 6px rgba(255,0,0,.8)","margin":"0 auto","borderColor":"rgba(0,0,0,.3)","borderRadius":"100%","borderWidth":"1px","width":"44px","borderStyle":"solid","height":"44px"}' style='display: block;' src='http://codegen.caihongy.cn/20201024/ed5e326ca66f403aa3197b5fbb4ec733.jpg' />
|
|
||||||
<div :style='{"padding":"0 10px","boxShadow":"0 0 6px #F2F2F2","margin":"10px auto","borderColor":"rgba(242, 242, 242, 1)","backgroundColor":"rgba(242, 242, 242, 1)","color":"#fff","textAlign":"center","borderRadius":"0","borderWidth":"0","width":"100%","lineHeight":"32px","fontSize":"14px","borderStyle":"solid"}' class="company"></div>
|
|
||||||
<div :style='{"padding":"0 10px","boxShadow":"0 0 6px #F2F2F2","margin":"10px auto","borderColor":"rgba(242, 242, 242, 1)","backgroundColor":"rgba(242, 242, 242, 1)","color":"rgba(64, 59, 59, 1)","textAlign":"center","borderRadius":"0","borderWidth":"0","width":"100%","lineHeight":"32px","fontSize":"14px","borderStyle":"solid"}' class="record">© 2020-2021 毕业设计所有</div>
|
|
||||||
<div :style='{"padding":"0 10px","boxShadow":"0 0 6px rgba(255,0,0,0)","margin":"10px auto 30px auto","borderColor":"rgba(255,255,255,1)","backgroundColor":"#000","color":"#fff","textAlign":"center","borderRadius":"0","borderWidth":"1px 0","width":"40%","lineHeight":"32px","fontSize":"14px","borderStyle":"solid"}' class="desc"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="./xznstatic/js/jquery-1.11.3.min.js"></script>
|
|
||||||
<script src="./layui/layui.js"></script>
|
|
||||||
<script src="./js/vue.js"></script>
|
|
||||||
<script src="./js/config.js"></script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
var vue1 = new Vue({el: '#tabbar'})
|
|
||||||
|
|
||||||
var vue = new Vue({
|
|
||||||
el: '#header',
|
|
||||||
data: {
|
|
||||||
iconArr: ['layui-icon-gift','layui-icon-email','layui-icon-logout','layui-icon-transfer','layui-icon-slider','layui-icon-print','layui-icon-cols','layui-icon-snowflake','layui-icon-note','layui-icon-flag','layui-icon-theme','layui-icon-website','layui-icon-console','layui-icon-face-surprised','layui-icon-template-1','layui-icon-app','layui-icon-read','layui-icon-component','layui-icon-file-b','layui-icon-unlink','layui-icon-tabs','layui-icon-form','layui-icon-chat'],
|
|
||||||
indexNav: indexNav,
|
|
||||||
cartFlag: cartFlag,
|
|
||||||
adminurl: adminurl,
|
|
||||||
chatFlag: chatFlag,
|
|
||||||
projectName: projectName,
|
|
||||||
},
|
|
||||||
mounted: function() {
|
|
||||||
this.bindClickOnLi();
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.iconArr.sort(()=>{
|
|
||||||
return (0.5-Math.random())
|
|
||||||
})
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
jump(url) {
|
|
||||||
jump(url)
|
|
||||||
},
|
|
||||||
bindClickOnLi() {
|
|
||||||
let list = document.getElementsByTagName("li");
|
|
||||||
for(var i = 0;i<list.length;i++){
|
|
||||||
list[i].onclick = function(){
|
|
||||||
$(this).addClass("current").siblings().removeClass("current");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
layui.use(['element','layer'], function() {
|
|
||||||
var element = layui.element;
|
|
||||||
var layer = layui.layer;
|
|
||||||
});
|
|
||||||
|
|
||||||
function chatTap(){
|
|
||||||
var userTable = localStorage.getItem('userTable');
|
|
||||||
if (userTable) {
|
|
||||||
layui.layer.open({
|
|
||||||
type: 2,
|
|
||||||
title: '客服',
|
|
||||||
area: ['600px', '600px'],
|
|
||||||
content: './pages/chat/chat.html'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
window.location.href = './pages/login/login.html'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 导航栏跳转
|
|
||||||
function navPage(url) {
|
|
||||||
localStorage.setItem('iframeUrl', url);
|
|
||||||
document.getElementById('iframe').src = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 跳转到个人中心也
|
|
||||||
function centerPage() {
|
|
||||||
var userTable = localStorage.getItem('userTable');
|
|
||||||
if (userTable) {
|
|
||||||
localStorage.setItem('iframeUrl', './pages/' + userTable + '/center.html');
|
|
||||||
document.getElementById('iframe').src = './pages/' + userTable + '/center.html';
|
|
||||||
} else {
|
|
||||||
window.location.href = './pages/login/login.html'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var iframeUrl = localStorage.getItem('iframeUrl');
|
|
||||||
document.getElementById('iframe').src = iframeUrl || './pages/home/home.html';
|
|
||||||
|
|
||||||
// var i = 0;
|
|
||||||
setInterval(function(){
|
|
||||||
// i++;
|
|
||||||
// if(i<50) changeFrameHeight();
|
|
||||||
changeFrameHeight();
|
|
||||||
},200)
|
|
||||||
|
|
||||||
function changeFrameHeight() {
|
|
||||||
var iframe = document.getElementById('iframe');
|
|
||||||
// iframe.height = 'auto';
|
|
||||||
if (iframe) {
|
|
||||||
var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
|
|
||||||
if (iframeWin.document.body) {
|
|
||||||
iframe.height = iframeWin.document.body.scrollHeight;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// 窗口变化时候iframe自适应
|
|
||||||
// function changeFrameHeight() {
|
|
||||||
// var header = document.getElementById('header').scrollHeight;
|
|
||||||
// let isshow = true
|
|
||||||
// var tabbar = 0
|
|
||||||
// if(isshow) {
|
|
||||||
// tabbar = document.getElementById('tabbar').scrollHeight
|
|
||||||
// }
|
|
||||||
// var ifm = document.getElementById("iframe");
|
|
||||||
// ifm.height = document.documentElement.clientHeight - header - tabbar;
|
|
||||||
// ifm.width = document.documentElement.clientWidth;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// reasize 事件 窗口大小变化后执行的方法
|
|
||||||
window.onresize = function() {
|
|
||||||
changeFrameHeight();
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,707 +0,0 @@
|
|||||||
/**
|
|
||||||
* BootstrapAMapPositionPicker v0.8.3
|
|
||||||
* @author: Kinegratii
|
|
||||||
*/
|
|
||||||
(function (factory) {
|
|
||||||
'use strict';
|
|
||||||
if (typeof define === 'function' && define.amd) {
|
|
||||||
define(['jquery', 'AMap'], factory);
|
|
||||||
} else if (typeof exports === 'object') {
|
|
||||||
module.exports = factory(require('jquery'), require('AMap'));
|
|
||||||
} else {
|
|
||||||
if (typeof jQuery === 'undefined') {
|
|
||||||
throw 'AMapPositionPicker requires jQuery to be loaded first';
|
|
||||||
}
|
|
||||||
if (typeof AMap == 'undefined') {
|
|
||||||
throw 'AMapPositionPicker requires AMap to be loaded first';
|
|
||||||
}
|
|
||||||
factory(jQuery, AMap);
|
|
||||||
}
|
|
||||||
}(function ($, AMap) {
|
|
||||||
// Global tool functions
|
|
||||||
String.prototype.format = function (data) {
|
|
||||||
var result = this;
|
|
||||||
for (var key in data) {
|
|
||||||
if (data[key] != undefined) {
|
|
||||||
var reg = new RegExp("({" + key + "})", "g");
|
|
||||||
result = result.replace(reg, data[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
if (typeof String.prototype.startsWith != 'function') {
|
|
||||||
String.prototype.startsWith = function (prefix) {
|
|
||||||
return this.slice(0, prefix.length) === prefix;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function wrapFormat(formatter, data) {
|
|
||||||
if (typeof formatter == 'function') {
|
|
||||||
return formatter(data);
|
|
||||||
} else if (typeof formatter == 'string') {
|
|
||||||
return formatter.format(data);
|
|
||||||
} else {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Data Structure Start
|
|
||||||
var Position = (function () {
|
|
||||||
function Position(longitude, latitude, address, label) {
|
|
||||||
this.longitude = longitude;
|
|
||||||
this.latitude = latitude;
|
|
||||||
this.address = address || '';
|
|
||||||
this.label = label || '';
|
|
||||||
}
|
|
||||||
|
|
||||||
Position.prototype.isValid = function () {
|
|
||||||
return this.longitude != undefined && this.longitude != null && this.latitude != undefined && this.latitude != null;
|
|
||||||
};
|
|
||||||
Position.prototype.copy = function (data) {
|
|
||||||
if (data == undefined) {
|
|
||||||
return new Position(this.longitude, this.latitude, this.address, this.label);
|
|
||||||
} else {
|
|
||||||
return new Position(
|
|
||||||
data.longitude || this.longitude,
|
|
||||||
data.latitude || this.latitude,
|
|
||||||
data.address || this.address,
|
|
||||||
data.label || this.label
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Position.prototype.getDisplayString = function () {
|
|
||||||
if (this.label) {
|
|
||||||
return this.label;
|
|
||||||
} else {
|
|
||||||
return this.address;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Position.fromOptions = function (options) {
|
|
||||||
if (options instanceof Position) {
|
|
||||||
return options;
|
|
||||||
} else {
|
|
||||||
return new Position(options.longitude, options.latitude, options.address, options.label);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Position.empty = function () {
|
|
||||||
return new Position(null, null, "", "");
|
|
||||||
};
|
|
||||||
Position.validate = function (position) {
|
|
||||||
if (position) {
|
|
||||||
return position.isValid();
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Position.validateLngLat = function (lnglatStr) {
|
|
||||||
var result = /^([+-]?(0?\d{1,2}(\.\d{1,6})?|1[0-7]?\d{1}(\.\d{1,6})?|180\.0{1,6}))[-;,]([-+]?([0-8]?\d{1}(\.\d{1,6})?|90(\.0{1,6})?))$/.exec(lnglatStr);
|
|
||||||
if (result) {
|
|
||||||
return {longitude: parseFloat(result[1]), latitude: parseFloat(result[5])};
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Position.LNGLAT_FORMATTER = ['{longitude}-{latitude}', '{longitude};{latitude}', '{longitude},{latitude}'];
|
|
||||||
return Position;
|
|
||||||
}());
|
|
||||||
|
|
||||||
var Field = (function () {
|
|
||||||
var idIndex = -1;
|
|
||||||
|
|
||||||
function generateSelectorId(selector) {
|
|
||||||
if (selector.startsWith('#')) {
|
|
||||||
return selector.substring(1);
|
|
||||||
} else {
|
|
||||||
idIndex += 1;
|
|
||||||
return 'id_ampp_i' + idIndex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function Field(options) {
|
|
||||||
this.name = options.name;
|
|
||||||
if (options.selector instanceof jQuery) {
|
|
||||||
this.$widget = options.selector;
|
|
||||||
this.created = true;
|
|
||||||
}
|
|
||||||
else if ($(options.selector).length > 0) {
|
|
||||||
this.$widget = $(options.selector);
|
|
||||||
this.created = true;
|
|
||||||
} else {
|
|
||||||
var inputHtml = '<input type="hidden" id="{id}" name="{name}"/>'.format({
|
|
||||||
id: generateSelectorId(options.selector),
|
|
||||||
name: options.name
|
|
||||||
});
|
|
||||||
this.$widget = $(inputHtml);
|
|
||||||
this.created = false;
|
|
||||||
}
|
|
||||||
this.formatter = function (position) {
|
|
||||||
return wrapFormat(options.formatter, position);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
Field.prototype.render = function (position, hasPicked) {
|
|
||||||
|
|
||||||
var v;
|
|
||||||
if (hasPicked) {
|
|
||||||
v = this.formatter(position);
|
|
||||||
} else {
|
|
||||||
v = '';
|
|
||||||
}
|
|
||||||
console.log(v);
|
|
||||||
if (this.$widget.is('input') || this.$widget.is('textarea')) {
|
|
||||||
this.$widget.val(v);
|
|
||||||
} else if (this.$widget.is('div') || this.$widget.is('td') || this.$widget.is('p')) {
|
|
||||||
this.$widget.html(v);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return Field;
|
|
||||||
|
|
||||||
}());
|
|
||||||
|
|
||||||
var FieldManager = (function () {
|
|
||||||
var fields = [];
|
|
||||||
|
|
||||||
function FieldManager() {
|
|
||||||
fields = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
FieldManager.prototype.addField = function (field) {
|
|
||||||
fields.push(field);
|
|
||||||
};
|
|
||||||
|
|
||||||
FieldManager.prototype.render = function (position, hasPicked) {
|
|
||||||
for (var i = 0.; i < fields.length; i++) {
|
|
||||||
fields[i].render(position, hasPicked);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
return FieldManager;
|
|
||||||
|
|
||||||
}());
|
|
||||||
|
|
||||||
// Data Structure End
|
|
||||||
|
|
||||||
function buildBootstrapModalHTML() {
|
|
||||||
var toolsHtml = '<div class="btn-group">'
|
|
||||||
+ '<button id="idAMapPositionPickerLocation" type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-map-marker"></span> 定位</button>'
|
|
||||||
+ '<button id="idAMapPositionPickerReset" type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-repeat"></span> 重置</button>'
|
|
||||||
+ '<button id="idAMapPositionPickerClear" type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-remove"></span> 清除</button>'
|
|
||||||
+ '<button id="idAMapPositionPickerSearch" type="button" class="btn btn-default btn-sm" data-toggle="collapse" data-target="#idAMapPositionPickerSearchPanel"><span class="glyphicon glyphicon-search"></span> 搜索</button>'
|
|
||||||
+ '</div>';
|
|
||||||
var searchPanelHtml = '<div id="idAMapPositionPickerSearchPanel" class="collapse"><input class="form-control input-sm" id="idAMapPositionPickerSearchInput"/><ul id="idAMapPositionPickerSearchResult" class="list-group"></ul></div>';
|
|
||||||
var mapPanelHtml = '<div id="idAMapPositionPickerFloatContainer" style="position: absolute;z-index: 2;top:5px;right: 5px;">' + toolsHtml + searchPanelHtml + '</div>';
|
|
||||||
var modalHtml = '<div class="modal fade" id="idAMapPositionPickerModal">'
|
|
||||||
+ '<div class="modal-dialog">'
|
|
||||||
+ '<div class="modal-content">'
|
|
||||||
+ '<div class="modal-header"><button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button><h4 class="modal-title">请选择地址</h4><small id="idAMapPositionPickerAlert" style="color: red">必须选择一个位置</small></div>'
|
|
||||||
+ '<div class="modal-body">'
|
|
||||||
+ '<div id="idAMapPositionPickerMap" style="height: 500px;" class="form-control">'
|
|
||||||
+ mapPanelHtml
|
|
||||||
+ '</div>' //End of Map container
|
|
||||||
+ '<input class="form-control input-sm" style="margin-top:5px;" id="idAMapPositionPickerAddress"/>'
|
|
||||||
+ '</div>' //End of modal-Body
|
|
||||||
+ '<div class="modal-footer">'
|
|
||||||
+ '<button id="idAMapPositionPickerSelect" type="button" class="btn btn-primary btn-sm">确定</button><button id="idAMapPositionPickerCancelBtn" type="button" class="btn btn-default btn-sm" data-dismiss="modal">取消</button>'
|
|
||||||
+ '</div>' //End of Modal-footer
|
|
||||||
+ '</div>' //End of Modal-content
|
|
||||||
+ '</div>' // End of Modal-dialog
|
|
||||||
+ '</div>';//End of Modal
|
|
||||||
return modalHtml;
|
|
||||||
}
|
|
||||||
|
|
||||||
var PICKER_CONTROLLER = (function () {
|
|
||||||
// Common Modal Controller for all elements
|
|
||||||
|
|
||||||
// Context pick
|
|
||||||
var mPicker = null;
|
|
||||||
var mapObj = null;
|
|
||||||
|
|
||||||
var isShowOrPickMode = false;
|
|
||||||
|
|
||||||
var $modal = null, $map, $addressInput, $alert, $pickBtn, $locationBtn, $resetBtn, $clearBtn, $cancelBtn;
|
|
||||||
|
|
||||||
// Current picked
|
|
||||||
var selectedMarker = null;
|
|
||||||
var cachePosition = Position.empty();
|
|
||||||
// Search plugin
|
|
||||||
var $searchBtn, $searchPanel, $searchInput, $searchResultList;
|
|
||||||
var markerList = [];
|
|
||||||
|
|
||||||
var geolocation;
|
|
||||||
|
|
||||||
|
|
||||||
var mapClickClickHandler = function (e) {
|
|
||||||
$alert.hide();
|
|
||||||
selectMarker(createMarkerFromLnglat(e.lnglat.lng, e.lnglat.lat));
|
|
||||||
};
|
|
||||||
|
|
||||||
function activate(picker) {
|
|
||||||
mPicker = picker;
|
|
||||||
showModal();
|
|
||||||
}
|
|
||||||
|
|
||||||
function deactivate() {
|
|
||||||
mPicker = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function showModal() {
|
|
||||||
initializeController();
|
|
||||||
initializePicker();
|
|
||||||
|
|
||||||
var p = mPicker.position();
|
|
||||||
if (p && p.isValid()) {
|
|
||||||
selectMarker(createMarkerFromPosition(p));
|
|
||||||
} else {
|
|
||||||
if (selectedMarker) {
|
|
||||||
selectedMarker.setMap(null);
|
|
||||||
}
|
|
||||||
$addressInput.val('');
|
|
||||||
if (mPicker.opts.center.longitude && mPicker.opts.center.latitude) {
|
|
||||||
mapObj.setCenter(new AMap.LngLat(mPicker.opts.center.longitude, mPicker.opts.center.latitude));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$modal.modal('show');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function initializeController() {
|
|
||||||
// Initialize global options
|
|
||||||
if ($modal == null) {
|
|
||||||
$modal = $(buildBootstrapModalHTML());
|
|
||||||
$(document.body).append($modal);
|
|
||||||
mapObj = new AMap.Map("idAMapPositionPickerMap", {
|
|
||||||
zoom: 15
|
|
||||||
});
|
|
||||||
AMap.plugin(['AMap.ToolBar', 'AMap.Scale', 'AMap.OverView'],
|
|
||||||
function () {
|
|
||||||
mapObj.addControl(new AMap.ToolBar());
|
|
||||||
mapObj.addControl(new AMap.Scale());
|
|
||||||
mapObj.addControl(new AMap.OverView({isOpen: true}));
|
|
||||||
});
|
|
||||||
mapObj.on('click', mapClickClickHandler);
|
|
||||||
mapObj.plugin('AMap.Geolocation', function () {
|
|
||||||
geolocation = new AMap.Geolocation({
|
|
||||||
enableHighAccuracy: true,
|
|
||||||
timeout: 3000,
|
|
||||||
maximumAge: 0,
|
|
||||||
convert: true,
|
|
||||||
panToLocation: true,
|
|
||||||
zoomToAccuracy: true,
|
|
||||||
markerOptions: {}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
// DOM Selectors and events
|
|
||||||
$map = $("#idAMapPositionPickerMap");
|
|
||||||
$pickBtn = $("#idAMapPositionPickerSelect");
|
|
||||||
$locationBtn = $("#idAMapPositionPickerLocation");
|
|
||||||
$resetBtn = $("#idAMapPositionPickerReset");
|
|
||||||
$clearBtn = $("#idAMapPositionPickerClear");
|
|
||||||
$addressInput = $("#idAMapPositionPickerAddress");
|
|
||||||
$cancelBtn = $("#idAMapPositionPickerCancelBtn");
|
|
||||||
$alert = $("#idAMapPositionPickerAlert");
|
|
||||||
|
|
||||||
$searchBtn = $("#idAMapPositionPickerSearch");
|
|
||||||
$searchPanel = $("#idAMapPositionPickerSearchPanel");
|
|
||||||
$searchInput = $("#idAMapPositionPickerSearchInput");
|
|
||||||
$searchResultList = $("#idAMapPositionPickerSearchResult");
|
|
||||||
|
|
||||||
$pickBtn.on('click', pickPosition);
|
|
||||||
$resetBtn.on('click', resetInitialPosition);
|
|
||||||
$clearBtn.on('click', clearPosition);
|
|
||||||
$locationBtn.on('click', location);
|
|
||||||
$searchPanel.on('show.bs.collapse', function () {
|
|
||||||
$searchBtn.removeClass('btn-default').addClass('btn-primary');
|
|
||||||
startSearch();
|
|
||||||
}).on('hide.bs.collapse', function () {
|
|
||||||
$searchBtn.removeClass('btn-primary').addClass('btn-default');
|
|
||||||
endSearch();
|
|
||||||
});
|
|
||||||
$('ul#idAMapPositionPickerSearchResult').on('click', 'li[data-poi-index]', highlightMarker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function initializePicker() {
|
|
||||||
toggleMode(false);
|
|
||||||
$map.css('height', mPicker.opts.height);
|
|
||||||
$modal.find('h4.modal-title').html(mPicker.opts.title);
|
|
||||||
$alert.hide();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function location() {
|
|
||||||
$alert.hide();
|
|
||||||
geolocation.getCurrentPosition(function (status, result) {
|
|
||||||
if (status == 'complete') {
|
|
||||||
selectMarker(createMarkerFromLnglat(result.position.lng, result.position.lat, result.formattedAddress))
|
|
||||||
} else {
|
|
||||||
$alert.html(result.message).show();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function clearPosition() {
|
|
||||||
cachePosition = Position.empty();
|
|
||||||
if (selectedMarker != null) {
|
|
||||||
selectedMarker.setMap(null);
|
|
||||||
}
|
|
||||||
$addressInput.val('');
|
|
||||||
}
|
|
||||||
|
|
||||||
function resetInitialPosition() {
|
|
||||||
cachePosition = mPicker.getInitialPosition();
|
|
||||||
if (Position.validate(cachePosition)) {
|
|
||||||
selectMarker(createMarkerFromPosition(cachePosition));
|
|
||||||
} else if (selectedMarker != null) {
|
|
||||||
selectedMarker.setMap(null);
|
|
||||||
$addressInput.val('');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function isPositionPicked() {
|
|
||||||
return cachePosition.isValid();
|
|
||||||
}
|
|
||||||
|
|
||||||
function pickPosition() {
|
|
||||||
if (isShowOrPickMode) {
|
|
||||||
$modal.modal('hide');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var address = $addressInput.val();
|
|
||||||
cachePosition.address = address;
|
|
||||||
|
|
||||||
// Always use new position instance
|
|
||||||
var pickedPosition;
|
|
||||||
var hasPicked = isPositionPicked();
|
|
||||||
if (hasPicked) {
|
|
||||||
pickedPosition = cachePosition.copy();
|
|
||||||
} else {
|
|
||||||
pickedPosition = Position.empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mPicker.opts.required && !hasPicked) {
|
|
||||||
$alert.html(mPicker.opts.errorTip).show();
|
|
||||||
} else {
|
|
||||||
$alert.hide();
|
|
||||||
$modal.modal('hide');
|
|
||||||
mPicker._onPickedCallback(pickedPosition, hasPicked);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Search Start
|
|
||||||
function highlightMarker(e) {
|
|
||||||
|
|
||||||
var index = $(this).data('poiIndex');
|
|
||||||
if (index < markerList.length) {
|
|
||||||
markerList[index].resumeMove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function startSearch() {
|
|
||||||
mapObj.off('click', mapClickClickHandler);
|
|
||||||
$resetBtn.prop('disabled', true);
|
|
||||||
$clearBtn.prop('disabled', true);
|
|
||||||
$locationBtn.prop('disabled', true);
|
|
||||||
|
|
||||||
$searchInput.on('keydown', function (e) {
|
|
||||||
var searchKeyword = $searchInput.val();
|
|
||||||
if (e.which == '13' && searchKeyword.length > 0) { //Enter
|
|
||||||
AMap.service('AMap.PlaceSearch', function () {
|
|
||||||
var placeSearch = new AMap.PlaceSearch({
|
|
||||||
pageSize: 6,
|
|
||||||
pageIndex: 1,
|
|
||||||
extensions: 'all' // return full address for POI
|
|
||||||
});
|
|
||||||
// Search in the given bound
|
|
||||||
placeSearch.searchInBounds(searchKeyword, mapObj.getBounds(), function (status, result) {
|
|
||||||
$searchResultList.children('li').remove();
|
|
||||||
for (var i in markerList) {
|
|
||||||
markerList[i].setMap(null);
|
|
||||||
}
|
|
||||||
markerList = [];
|
|
||||||
if (status == 'complete') {
|
|
||||||
for (var i in result.poiList.pois) {
|
|
||||||
var poi = result.poiList.pois[i];
|
|
||||||
var li = $('<li data-poi-index="{i}" class="list-group-item"><small>{name}</small></li>'.format({
|
|
||||||
i: i,
|
|
||||||
name: poi.name
|
|
||||||
}));
|
|
||||||
$searchResultList.append(li);
|
|
||||||
// delay to username poi.address
|
|
||||||
var mMarker = createMarkerFromLnglat(poi.location.lng, poi.location.lat);
|
|
||||||
mMarker.on('click', function (e) {
|
|
||||||
selectMarker(e.target);
|
|
||||||
});
|
|
||||||
markerList.push(mMarker);
|
|
||||||
}
|
|
||||||
mapObj.panTo(markerList[0].getPosition());
|
|
||||||
} else {
|
|
||||||
$searchPanel.append('<li class="list-group-item disabled"><small>抱歉,暂无找到符合条件的结果。</small></li>');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function endSearch() {
|
|
||||||
mapObj.on('click', mapClickClickHandler);
|
|
||||||
$resetBtn.prop('disabled', false);
|
|
||||||
$clearBtn.prop('disabled', false);
|
|
||||||
$locationBtn.prop('disabled', false);
|
|
||||||
$searchInput.val('').off('keydown');
|
|
||||||
for (var i in markerList) {
|
|
||||||
markerList[i].setMap(null);
|
|
||||||
}
|
|
||||||
markerList = [];
|
|
||||||
$searchResultList.children('li').remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Search End
|
|
||||||
|
|
||||||
|
|
||||||
// New tools
|
|
||||||
|
|
||||||
function createMarkerFromPosition(position) {
|
|
||||||
var markerOpts = {
|
|
||||||
map: mapObj,
|
|
||||||
position: new AMap.LngLat(position.longitude, position.latitude),
|
|
||||||
topWhenClick: true,
|
|
||||||
offset: new AMap.Pixel(-5, -30),
|
|
||||||
animation: 'AMAP_ANIMATION_DROP',
|
|
||||||
extData: position
|
|
||||||
};
|
|
||||||
if (position.address) {
|
|
||||||
markerOpts.title = position.address;
|
|
||||||
}
|
|
||||||
var marker = new AMap.Marker(markerOpts);
|
|
||||||
return marker;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createMarkerFromLnglat(longitude, latitude, address) {
|
|
||||||
var position = new Position(longitude, latitude, address, "");
|
|
||||||
return createMarkerFromPosition(position);
|
|
||||||
}
|
|
||||||
|
|
||||||
function selectMarker(marker) {
|
|
||||||
clearPosition();
|
|
||||||
selectedMarker = marker;
|
|
||||||
var position = marker.getExtData();
|
|
||||||
var lngLat = marker.getPosition();
|
|
||||||
|
|
||||||
cachePosition.longitude = position.longitude;
|
|
||||||
cachePosition.latitude = position.latitude;
|
|
||||||
if (!position.address) {
|
|
||||||
var geocoder;
|
|
||||||
mapObj.plugin(["AMap.Geocoder"], function () {
|
|
||||||
geocoder = new AMap.Geocoder({
|
|
||||||
radius: 1000,
|
|
||||||
extensions: "base"
|
|
||||||
});
|
|
||||||
AMap.event.addListener(geocoder, "complete", function (GeocoderResult) {
|
|
||||||
if (GeocoderResult["info"] == "OK") {
|
|
||||||
var address = GeocoderResult.regeocode.formattedAddress;
|
|
||||||
position.address = address;
|
|
||||||
selectedMarker.setExtData(position);
|
|
||||||
cachePosition.address = address;
|
|
||||||
$addressInput.val(address);
|
|
||||||
mapObj.panTo(lngLat);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
geocoder.getAddress(lngLat);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
cachePosition.address = position.address;
|
|
||||||
mapObj.panTo(lngLat);
|
|
||||||
$addressInput.val(position.address);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// End Tool functions
|
|
||||||
|
|
||||||
function toggleMode(isShowOrPick) {
|
|
||||||
isShowOrPickMode = isShowOrPick;
|
|
||||||
|
|
||||||
$addressInput.prop('readonly', isShowOrPick);
|
|
||||||
if (isShowOrPick) {
|
|
||||||
mapObj.off('click', mapClickClickHandler);
|
|
||||||
$cancelBtn.hide();
|
|
||||||
$alert.hide();
|
|
||||||
$('#idAMapPositionPickerFloatContainer').hide();
|
|
||||||
} else {
|
|
||||||
mapObj.on('click', mapClickClickHandler);
|
|
||||||
$('#idAMapPositionPickerFloatContainer').show();
|
|
||||||
$cancelBtn.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function showPositionInMap(position) {
|
|
||||||
initializeController();
|
|
||||||
toggleMode(true);
|
|
||||||
clearPosition();
|
|
||||||
var mMarker = createMarkerFromPosition(position);
|
|
||||||
mapObj.panTo(mMarker.getPosition());
|
|
||||||
$modal.find('h4.modal-title').html(position.getDisplayString());
|
|
||||||
$addressInput.val(position.address);
|
|
||||||
$modal.modal('show');
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
activate: activate,
|
|
||||||
deactivate: activate,
|
|
||||||
//Tools
|
|
||||||
showPositionInMap: showPositionInMap
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
var aMapPositionPicker = function (element, options) {
|
|
||||||
|
|
||||||
var picker = {
|
|
||||||
isFirstLoad: false,
|
|
||||||
initialPosition: null,
|
|
||||||
fieldManager: new FieldManager()
|
|
||||||
};
|
|
||||||
var $inputEl = null;
|
|
||||||
|
|
||||||
function triggerPickedComplete(mPosition, hasPicked) {
|
|
||||||
if (options.onPicked) {
|
|
||||||
options.onPicked(mPosition)
|
|
||||||
} else {
|
|
||||||
element.trigger('AMPP.PickCompleted', [mPosition, hasPicked]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// API for PICKER_CONTROLLER
|
|
||||||
picker._onPickedCallback = function (mPosition, hasPicked) {
|
|
||||||
element.data('position', mPosition);
|
|
||||||
$inputEl.val(wrapFormat(options.formatter, mPosition));
|
|
||||||
picker.fieldManager.render(mPosition, hasPicked);
|
|
||||||
triggerPickedComplete(mPosition, hasPicked);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Public API
|
|
||||||
|
|
||||||
picker.getInitialPosition = function () {
|
|
||||||
return initialPosition;
|
|
||||||
};
|
|
||||||
|
|
||||||
picker.position = function () {
|
|
||||||
var s = JSON.stringify(element.data('position'));
|
|
||||||
return element.data('position');
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
//
|
|
||||||
if (element.is('input') || element.is('textarea')) {
|
|
||||||
$inputEl = element;
|
|
||||||
} else {
|
|
||||||
$inputEl = element.children('input');
|
|
||||||
}
|
|
||||||
$inputEl.prop("readonly", true);
|
|
||||||
//Handle initial data
|
|
||||||
if (Position.LNGLAT_FORMATTER.indexOf(options.formatter)) {
|
|
||||||
var result = Position.validateLngLat($inputEl.val());
|
|
||||||
if (result) {
|
|
||||||
options.value.longitude = parseFloat(result.longitude);
|
|
||||||
options.value.latitude = parseFloat(result.latitude);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var initialPosition = new Position(options.value.longitude, options.value.latitude, options.value.address, options.value.label);
|
|
||||||
element.data('position', initialPosition.copy());
|
|
||||||
// Register events
|
|
||||||
element.on('click', function () {
|
|
||||||
//show modal/
|
|
||||||
PICKER_CONTROLLER.activate(picker);
|
|
||||||
});
|
|
||||||
// 处理fields
|
|
||||||
var fields = options.fields || [];
|
|
||||||
for (var i in fields) {
|
|
||||||
var iEl = new Field(fields[i] || {});
|
|
||||||
if (!iEl.created) {
|
|
||||||
$inputEl.after(iEl.$widget);
|
|
||||||
}
|
|
||||||
picker.fieldManager.addField(iEl);
|
|
||||||
}
|
|
||||||
|
|
||||||
picker.opts = options;
|
|
||||||
return picker;
|
|
||||||
};
|
|
||||||
|
|
||||||
$.fn.AMapPositionPicker = function (options) {
|
|
||||||
options = options || {};
|
|
||||||
var args = Array.prototype.slice.call(arguments, 1),
|
|
||||||
isInstance = true,
|
|
||||||
thisMethods = [], //可级联函数列表
|
|
||||||
returnValue;
|
|
||||||
if (typeof options == 'object') {
|
|
||||||
return this.each(function () {
|
|
||||||
var $this = $(this);
|
|
||||||
if (!$this.data('AMapPositionPicker')) {
|
|
||||||
var dataOptions = {
|
|
||||||
formatter: $this.data('formatter'),
|
|
||||||
title: $this.data('title'),
|
|
||||||
errorTip: $this.data('errorTip'),
|
|
||||||
height: $this.data('height'),
|
|
||||||
required: $this.data('required'),
|
|
||||||
value: {
|
|
||||||
longitude: $this.data('valueLongitude'),
|
|
||||||
latitude: $this.data('valueLatitude'),
|
|
||||||
address: $this.data('valueAddress'),
|
|
||||||
label: $this.data('valueLabel')
|
|
||||||
},
|
|
||||||
center: {
|
|
||||||
longitude: $this.data('centerLongitude'),
|
|
||||||
latitude: $this.data('centerLatitude')
|
|
||||||
}
|
|
||||||
};
|
|
||||||
options = $.extend(true, {}, $.fn.AMapPositionPicker.defaults, dataOptions, options);
|
|
||||||
$this.data('AMapPositionPicker', aMapPositionPicker($this, options));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (typeof options == 'string') {
|
|
||||||
this.each(function () {
|
|
||||||
var $this = $(this),
|
|
||||||
instance = $this.data('AMapPositionPicker');
|
|
||||||
if (!instance) {
|
|
||||||
throw new Error('AMapPositionPicker("' + options + '") method was called on an element that is not using AMapPositionPicker');
|
|
||||||
}
|
|
||||||
returnValue = instance[options].apply(instance, args);
|
|
||||||
isInstance = returnValue === instance;
|
|
||||||
});
|
|
||||||
if (isInstance || $.inArray(options, thisMethods) > -1) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
return returnValue;
|
|
||||||
}
|
|
||||||
throw new TypeError('Invalid arguments for AMapPositionPicker: ' + options);
|
|
||||||
};
|
|
||||||
$.fn.AMapPositionPicker.defaults = {
|
|
||||||
formatter: '{address}',
|
|
||||||
onPicked: null,
|
|
||||||
value: {
|
|
||||||
longitude: null,
|
|
||||||
latitude: null,
|
|
||||||
address: null
|
|
||||||
},
|
|
||||||
required: true,
|
|
||||||
title: '请选择地址',
|
|
||||||
errorTip: '请选择地址',
|
|
||||||
height: '500px',
|
|
||||||
fields: []
|
|
||||||
};
|
|
||||||
$.extend({AMapPositionPicker: {}});
|
|
||||||
$.extend($.AMapPositionPicker, {
|
|
||||||
showPositionInMap: function (position) {
|
|
||||||
PICKER_CONTROLLER.showPositionInMap(Position.fromOptions(position));
|
|
||||||
},
|
|
||||||
pluginVersion: '0.8.3'
|
|
||||||
});
|
|
||||||
$(function () {
|
|
||||||
$('[data-provide="AMapPositionPicker"]').AMapPositionPicker();
|
|
||||||
});
|
|
||||||
}))
|
|
||||||
;
|
|
@ -1,2 +0,0 @@
|
|||||||
/** layui-v2.5.6 MIT License By https://www.layui.com */
|
|
||||||
html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}
|
|
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 701 B |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 299 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.0 KiB |