Commit 844c9782 authored by daniel's avatar daniel

feat(service): 新增自助服务

parent d5149a5e
......@@ -89,6 +89,7 @@
,remark2
,remark3
,remark4
,status
FROM
gksite.joyful_rich_text
WHERE
......@@ -97,7 +98,8 @@
<select id="getJoyfulRichTextList" resultType="com.dlbridge.jadp.plugins.cmpt.dao.model.JoyfulRichText">
SELECT
title
id
,title
,address
,lng
,lat
......@@ -106,6 +108,8 @@
,remark2
,remark3
,remark4
,type
,status
FROM
gksite.joyful_rich_text
WHERE
......
......@@ -7,6 +7,8 @@ import com.dlbridge.jadp.plugins.cmpt.utils.GpsUtil;
import com.dlbridge.jadp.plugins.cmpt.utils.QRCodeUtil;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
......@@ -25,6 +27,7 @@ import java.util.stream.Collectors;
@Service
public class JoyfulRichTextService {
private static final Logger log = LoggerFactory.getLogger(JoyfulRichTextService.class);
@Resource
JoyfulRichTextMapper joyfulRichTextMapper;
......
......@@ -151,12 +151,13 @@ public class JoyfulRoadController {
@PostMapping(value = "/getJoyfulRichTextList/{pageNo}/{pageCount}")
@ApiOperation(value = "自助服务管理条件检索", notes = "自助服务管理条件检索", tags = "自助服务管理条件检索")
public Result<List<JoyfulRichText>> getJoyfulRichTextList(@RequestBody JoyfulRichTextBean joyfulRichTextBean, @PathVariable("pageNo") int pageNo, @PathVariable("pageCount") int pageCount) {
if (StringUtils.isNotBlank(joyfulRichTextBean.getType())) {
} else if (StringUtils.isNotBlank(joyfulRichTextBean.getTitle())) {
} else if (StringUtils.isNotBlank(joyfulRichTextBean.getDistance()) && StringUtils.isNotBlank(joyfulRichTextBean.getLng()) && StringUtils.isNotBlank(joyfulRichTextBean.getLat())) {
} else {
return Result.fail().setMsg("请输入检索条件。");
}
// TODO 先注释
//if (StringUtils.isNotBlank(joyfulRichTextBean.getType())) {
//} else if (StringUtils.isNotBlank(joyfulRichTextBean.getTitle())) {
//} else if (StringUtils.isNotBlank(joyfulRichTextBean.getDistance()) && StringUtils.isNotBlank(joyfulRichTextBean.getLng()) && StringUtils.isNotBlank(joyfulRichTextBean.getLat())) {
//} else {
// return Result.fail().setMsg("请输入检索条件。");
//}
List<JoyfulRichText> joyfulRichTextList = joyfulRichTextService.getJoyfulRichTextList(joyfulRichTextBean);
int fromIndex = pointService.getOffset(pageNo, pageCount);
joyfulRichTextList = JoyfulRichTextService.subList(joyfulRichTextList, fromIndex, fromIndex + pageCount);
......
package com.dlbridge.jadp.plugins.cmpt.web;
import com.dlbridge.jadp.common.interceptor.PageView;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreRule;
import com.dlbridge.jadp.plugins.cmpt.dao.model.Cmpt;
import com.dlbridge.jadp.plugins.cmpt.service.CmptScoreRuleService;
import com.dlbridge.jadp.plugins.cmpt.service.CmptService;
import com.dlbridge.jadp.plugins.cmpt.service.RemoteService;
import com.neusoft.www.utils.web.Result;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import java.util.List;
@Controller
@Log4j2
@RequestMapping("gk/service/")
@ApiIgnore
public class ServiceSettingController {
@Resource
private CmptService cmptService;
@RequestMapping("index/{cmptId}")
@PageView
public ModelAndView outterLink(@PathVariable("cmptId") Integer cmptId, ModelAndView mv) {
Cmpt cmpt = cmptService.queryCmptBycmptId(cmptId);
mv.addObject("cmpt", cmpt);
mv.setViewName("cmpt/service");
return mv;
}
}
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!doctype html>
<html>
<head>
<title>自助服务</title>
<!-- Bootstrap CSS-->
<link rel="stylesheet" href="${ctxStatic}/newdermon/vendor/bootstrap/css/bootstrap.min.css">
<!-- Font Awesome CSS-->
<link rel="stylesheet"
href="${ctxStatic}/newdermon/vendor/font-awesome/css/font-awesome.min.css">
<!-- Fontastic Custom icon font-->
<link rel="stylesheet" href="${ctxStatic}/newdermon/css/fontastic.css">
<!-- Google fonts - Poppins -->
<link rel="stylesheet" href="${ctxStatic}/newdermon/css/font-css.css">
<!-- theme stylesheet-->
<link rel="stylesheet"
href="${ctxStatic}/newdermon/css/style.default.css?v=<%=System.currentTimeMillis()%>"
id="theme-stylesheet">
<!-- Custom stylesheet - for your changes-->
<link rel="stylesheet"
href="${ctxStatic}/newdermon/css/custom.css?v=<%=System.currentTimeMillis()%>">
<link rel="stylesheet" href="${ctxStatic}/newdermon/css/juery-ui-1.12.css">
<!-- Favicon-->
<link rel="shortcut icon" href="https://img.geexek.com/files/home/favicon.ico">
<link rel="stylesheet"
href="${ctxStatic}/newdermon/css/custom.css?v=<%=System.currentTimeMillis()%>">
<link rel="stylesheet"
href="${ctxStatic}/newdermon/css/main.css?v=<%=System.currentTimeMillis()%>">
<link rel="stylesheet" href="${ctxStatic}/cmpt/setting.css?v=<%=System.currentTimeMillis()%>">
<link rel="stylesheet"
href="${ctxStatic}/leaflet/css/leaflet.css?v=<%=System.currentTimeMillis()%>" />
<link rel="stylesheet" href="${ctxStatic}/leaflet/css/leaflet_label.css" />
<script src="${ctxStatic}/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
<script src="${ctxStatic}/newdermon/vendor/jquery/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8" src="${ctxStatic}/layer/layer.js"></script>
<link rel="stylesheet" href="${ctxStatic}/layer/skin/layer.css">
<link rel="stylesheet" href="/static/cmpt/score.css?<%=System.currentTimeMillis()%>">
<style>
.action {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-around;
}
.action div {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
user-select: none;
}
.submit {
display: inline-block;
width: 120px;
height: 45px;
text-align: center;
line-height: 45px;
color: white;
background: #ce3939;
border-radius: 4px;
letter-spacing: 1px;
cursor: pointer;
font-size: 16px;
}
.cancel {
width: 120px;
height: 45px;
background: #949494;
border-radius: 4px;
font-size: 16px;
color: #FFFFFF;
line-height: 45px;
text-align: center;
margin-right: 20px;
}
.input {
width: 100%;
height: 40px !important;
line-height: 40px !important;
;
border: 2px solid #F4F4F4;
border-radius: 4px;
margin-right: 30px;
margin-left: 0px;
padding-left: 12px;
background: rgba(247, 247, 247, 1);
border-radius: 4px;
border: 1px solid rgba(229, 229, 229, 1);
}
.title {
font-size: 24px;
font-weight: 500;
color: rgba(51, 51, 51, 1);
}
.title-new {
font-size: 20px;
color: rgba(51, 51, 51, 1);
margin-right: 15px;
margin-bottom: 15px;
width: 80px;
}
.section {
display: flex;
background: rgba(255, 255, 255, 1);
border-radius: 4px;
flex-direction: column;
}
.func {
display: flex;
flex-direction: column;
/* height: 90px; */
padding: 5px 0;
}
.tip {
font-size: 16px;
color: rgba(51, 51, 51, 1);
position: absolute;
right: 45px;
top: 10px;
}
.road-notice {
top: 16px;
height: 15px;
width: 15px;
}
.road-notice-txt {
color: rgb(206, 57, 57);
font-size: 16px;
width: 430px;
display: inline-block;
}
.saveDiv {
display: flex;
justify-content: flex-end;
margin: 0 20px;
padding-top: 10px;
}
label {
/* width: auto; */
/* width: 200px; */
display: flex;
flex-direction: row;
align-items: center;
}
.label-box {
display: flex;
flex-direction: row;
align-items: center;
}
.dialog input {
width: 100% !important;
}
.dialog label input {
width: 20px !important;
height: 20px !important;
margin: 0 10px !important;
}
.cover {
width: 100%;
height: 200px;
background: rgba(247, 247, 247, 1);
border-radius: 4px;
border: 1px solid rgba(238, 238, 238, 1);
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
background-repeat: no-repeat;
background-position: center;
background-size: auto;
}
.icon-cover {
width: 34px;
height: 34px;
background-image: url("/static/images/icon_cover.png");
background-size: 100%;
background-repeat: no-repeat;
}
.section {
width: 100% !important;
display: flex;
flex-direction: row;
align-items: center;
}
.rule-field tbody tr td:first-child {
padding-left: 0 !important;
height: auto !;
}
tbody tr td {
font-size: 15px !important;
}
</style>
</head>
<body>
<jsp:include page="../common/header.jsp"></jsp:include>
<div class="page-content d-flex align-items-stretch main-body">
<jsp:include page="../common/menu.jsp"></jsp:include>
<div class="rght" id="sevice">
<div class="section">
<h3 class="title">自助服务</h3>
<div class="btn-toolbar mx-2 flex justify-between" role="toolbar"
aria-label="Toolbar with button groups">
<div class="btn-group mr-2" role="group" aria-label="First group">
<button :class="[index==typeIndex?'btn-danger':'btn-default']"
@click="changeType(index)" type="button"
v-for="(type,index) in serviceTypes" :key="type.name"
class="btn btn-sm">
{{type.name}}
</button>
</div>
<div class="input-group mr-2">
<input type="text" class="form-control" placeholder="请输入搜索关键字"
@keyup.enter="queryAll" v-model="keyword"
aria-label="Input group example" aria-describedby="btnGroupAddon">
</div>
<button class="btn btn-sm" :class="{
'btn-danger':keyword
}" @click="queryAll">搜索</button>
</div>
<div class="add-btn" @click="addService">
<span>+</span>
<span>添加自助服务</span>
</div>
</div>
<div style="margin-top: -10px;margin-bottom: 50px">
<table style="width: 100%" class="rule-field">
<colgroup>
<col style="width:20%;">
<col style="width:40%;">
<col style="width:10%;">
<col style="width:15%;">
<col style="width:15%;">
</colgroup>
<thead>
<tr>
<th style="text-align: center">封面</th>
<th style="text-align: left">服务名称</th>
<th style="text-align: center">类型</th>
<th style="text-align: center">状态</th>
<th style="text-align: center">操作</th>
</tr>
</thead>
<tbody>
<tr v-if="" v-for="item in list" :data-id="item.id">
<td style="text-align: center">
<img :src="item.imgUrl" style="width:80px;height:80px;" />
</td>
<td class="name" style="text-align: left;">
<span v-text="item.title"></span>
</td>
<td style="text-align: center">
<span v-text="serviceTypes[item.type].name"></span>
</td>
<td style="text-align: center">
<span class="badge badge-pill"
:class="[item.status==1?'badge-success':'badge-default']"
v-text="statusType[item.status]"></span>
</td>
<td style="text-align: center">
<div class="action">
<div class="opt edit.opt" @click="showEdit(item.id)">
<span class="icon-edit"></span>
<span class="edit">
编辑
</span>
</div>
<div class="opt del" @click="delService(item)">
<span class="icon-del"></span>
<span class="del">
删除
</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<nav class="mt-2" aria-label="Page navigation">
<ul class="pagination">
<li class="page-item" v-if="page!==1" @click="preview"><a class="page-link"
href="#">Previous</a></li>
<li @click="changePage(item+1)" v-for="item,index in totalPage"
:key="item+'page'" class="page-item" :class="{active:(index+1)==page}">
<a class="page-link" href="#">{{item}}</a>
</li>
<li class="page-item" v-if="list.length===pageSize" @click="next"><a
class="page-link" href="#">Next</a></li>
</ul>
</nav>
</div>
<div class="dialog" v-show="dialog"
style="width: 60vw; height: 80vh; z-index: 99;display: flex;flex-direction: column;">
<div>
<span class="title" style="margin-bottom: 10px; color: #CE3939">{{title}}</span>
</div>
<div style="display: flex;flex-direction: column;flex:1;overflow-y: auto;">
<div class="func">
<div>
<span class="title-new">名称</span>
</div>
<div>
<input class="input" type="text" v-model="service.title"
placeholder="请输入功能名称,最多五个字符">
</div>
</div>
<!-- 类型 (type) -->
<div class="func">
<span class="title-new">类型</span>
<div class="label-box">
<label>
<input type="radio" v-model="service.type" :value="1"> 打卡点
</label>
<label>
<input type="radio" v-model="service.type" :value="2"> 服务驿站
</label>
<label>
<input type="radio" v-model="service.type" :value="3"> 民宿
</label>
<label>
<input type="radio" v-model="service.type" :value="4"> 景点
</label>
<label>
<input type="radio" v-model="service.type" :value="5"> 餐饮
</label>
</div>
</div>
<div class="func">
<span class="title-new">地址</span>
<div>
<input class="input" type="text" v-model="service.address"
placeholder="请输入地址">
</div>
</div>
<div class="func">
<span class="title-new">经度</span>
<div>
<input class="input" type="number" v-model="service.lng"
placeholder="请输入经度">
</div>
</div>
<div class="func">
<span class="title-new">纬度</span>
<div>
<input class="input" type="number" v-model="service.lat"
placeholder="请输入纬度">
</div>
</div>
<div class="func">
<span class="title-new">内容</span>
<div>
<textarea class="input" v-model="service.content"
placeholder="请输入内容"></textarea>
</div>
</div>
<div class="func">
<span class="title-new">封面</span>
<span style="font-size: 16px;color: #ce3939;margin:10px 0;">
<span
style="font-size: 12px;display: inline-block;border-radius: 50%;height: 18px;width: 18px;background: #ce3939;color: white;text-align: center;">注</span>
<span style="display: inline">建议分辨率710*242</span>
</span>
<div>
<label for="file">
<div v-if="!service.imgUrl" class="cover">
<span class="icon-cover"></span>
</div>
<img v-else class="cover" :src="service.imgUrl" />
</label>
<input id="file" type="file" style="display: none" @change="uploadFile">
</div>
</div>
<div class="func">
<span class="title-new">备注 1</span>
<div>
<input class="input" type="text" v-model="service.remark1"
placeholder="请输入备注 1">
</div>
</div>
<div class="func">
<span class="title-new">备注 2</span>
<div>
<input class="input" type="text" v-model="service.remark2"
placeholder="请输入备注 2">
</div>
</div>
<div class="func">
<span class="title-new">备注 3</span>
<div>
<input class="input" type="text" v-model="service.remark3"
placeholder="请输入备注 3">
</div>
</div>
<div class="func">
<span class="title-new">备注 4</span>
<div>
<input class="input" type="text" v-model="service.remark4"
placeholder="请输入备注 4">
</div>
</div>
<!-- 状态 (status) -->
<div class="func">
<span class="title-new">状态</span>
<div class="label-box">
<label>
<input type="radio" v-model="service.status" value="0"> 草稿
</label>
<label>
<input type="radio" v-model="service.status" value="1"> 发布
</label>
</div>
</div>
</div>
<div class="saveDiv">
<span @click="cancel" class="cancel">取消</span>
<span @click="submit" class="submit">保存</span>
</div>
</div>
<div v-show="dialog"
style="position: fixed;height: 100%;width: 100%;background: black;z-index: 10;opacity: 0.5;top:0px;left:0px">
</div>
</div>
<script src="${ctxStatic}/vue/vue.js"></script>
<script>
var app = new Vue({
el: '#sevice',
data: {
list: [],
dialog: false,
title: '新增自助服务',
service: {
"id": null,
"userId": getUId(),
"type": 1,// 子类型(1:打卡点,2:服务驿站,3:民宿:4:景点,5:餐饮)
"title": null,
"address": null,
"lng": null,
"lat": null,
"content": null,
"imgUrl": null,
"remark1": null,
"remark2": null,
"remark3": null,
"remark4": null,
"status": 1, // 状态(0:草稿 1:发布)
"delFlg": null // 删除状态(0:未删除 1:已删除)
},
typeIndex: 0,
keyword: '',
page: 1,
pageSize: 10,
totalPage: 1,
serviceTypes: {
0: {
name: '全部',
value: 0,
},
1: {
name: '打卡点',
value: 1,
},
2: {
name: '服务驿站',
value: 2,
},
3: {
name: '民宿',
value: 3,
},
4: {
name: '景点',
value: 4,
},
5: {
name: '餐饮',
value: 5,
},
},
statusType: {
0: '草稿',
1: '发布'
}
},
methods: {
// 展示dialog
addService() {
this.dialog = !this.dialog;
this.resetForm();
},
changePage(page) {
this.page = page
this.queryAll()
},
changeType(index) {
this.page = 1
this.typeIndex = index
this.queryAll()
},
next() {
this.page += 1
this.queryAll()
},
preview() {
this.page -= 1
this.queryAll()
},
// 重置表单
resetForm() {
this.service = {
id: null,
userId: getUId(),
type: 1,
title: '',
address: null,
lng: null,
lat: null,
content: null,
imgUrl: null,
remark1: null,
remark2: null,
remark3: null,
remark4: null,
status: 1,
delFlg: null,
};
},
// 编辑
showEdit(id) {
this.getDetail(id);
},
// 删除
delService(data) {
layer.confirm("确认要删除吗?", function () {
$.ajax({
url: '/api/joyfulRoad/delJoyfulRichText',
data: JSON.stringify(data), // 将 data 转换为 JSON 字符串
type: 'post',
contentType: 'application/json',
beforeSend: () => {
layer.load()
},
success: () => {
layer.msg('删除成功!');
},
complete: () => {
layer.closeAll()
app.queryAll();
}
});
});
},
// 保存
submit() {
const service = this.service
// 假设 service 对象已经定义并初始化
if (!service.imgUrl) {
layer.msg("封面不能为空!", { icon: 5, duration: 1500 });
return;
}
if (!service.title) {
layer.msg("标题不能为空!", { icon: 5, duration: 1500 });
return;
}
if (!service.address) {
layer.msg("地址不能为空!", { icon: 5, duration: 1500 });
return;
}
if (!service.lng || !service.lat) {
layer.msg("经纬度不能为空!", { icon: 5, duration: 1500 });
return;
}
if (!service.content) {
layer.msg("内容不能为空!", { icon: 5, duration: 1500 });
return;
}
const url = this.service.id ? '/api/joyfulRoad/updJoyfulRichText' : '/api/joyfulRoad/insJoyfulRichText'
$.ajax({
url: url,
data: JSON.stringify(service), // 将 data 转换为 JSON 字符串
type: 'post',
contentType: 'application/json',
beforeSend: () => {
layer.load()
},
success: (data) => {
layer.msg('保存成功!');
app.$data.dialog = false;
app.queryAll();
},
complete: () => {
layer.closeAll()
}
})
},
// 返回
cancel() {
this.dialog = false;
},
// 查询所有
queryAll() {
if (!getCId) return
const type = this.serviceTypes[this.typeIndex].value === 0 ? null : this.serviceTypes[this.typeIndex].value
const url = '/api/joyfulRoad/getJoyfulRichTextList/' + this.page + '/' + this.pageSize
$.ajax({
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
type,
title: this.keyword
}),
url,
beforeSend: () => {
layer.load()
},
complete: () => {
layer.closeAll()
},
success: (data) => {
this.list = data.content;
if (data.content.length === this.pageSize) this.totalPage = this.page + 1
}
})
},
// 获取详情
getDetail(id) {
$.ajax({
url: '/api/joyfulRoad/getJoyfulRichText/' + id,
success: (data) => {
if (data.content) {
this.service = data.content;
this.dialog = true;
}
},
beforeSend: () => {
layer.load()
},
complete: () => {
layer.closeAll()
},
});
},
//文件上传处理
uploadFile(obj) {
logoFile = obj.target.files[0];
if (logoFile.type && logoFile.type.indexOf("image") == -1) {
return layer.msg('请上传图片', { icon: 5 })
}
var reads = new FileReader();
reads.readAsDataURL(logoFile);
reads.onload = function () {
//将处理完的图片文件上传到阿里云服务器
//上传LOGO图片
var formData = new FormData();
formData.append("uploadImg", logoFile);
$.ajax({
url: 'https://event.geexek.com/upload/file.do', /*接口域名地址*/
type: 'post',
data: formData,
contentType: false,
processData: false,
success: function (res) {
if (res.code == "1") {
layer.msg('上传成功', { icon: 1, time: 1500 });
app.$data.service.imgUrl = res.result
} else {
console.log(res);
}
},
beforeSend: () => {
layer.load()
},
complete: () => {
layer.closeAll()
},
})
};
}
}
});
app.queryAll();
</script>
</body>
</html>
\ No newline at end of file
......@@ -291,6 +291,12 @@
<span class="menu-txt">排行榜</span>
</a>
</li>
<li class="service menu-sub-item">
<a href="/gk/service/index/${cmpt.cmptId}?uId=${uId}&cId=${cId}&timestamp=${timestamp}&sign=${sign}">
<span class="left-arrow"></span>
<span class="menu-txt">自助服务</span>
</a>
</li>
</ul>
</li>
</ul>
......@@ -348,7 +354,7 @@
var classes = ['cmptSetting', 'nameList', 'manual', 'contact','manage',
'route', 'road', 'equip', 'photo', 'news','cert','data',
'banner','score','auto','scan','review','customer','rule',
'outter-link','sure-letter','rankSetting'];
'outter-link','sure-letter','rankSetting','service'];
let url = document.location.href;
var done = false;
for (var i in classes) {
......
.section{
.section {
width: 1010px;
background: white;
padding: 20px 25px;
margin: 10px 0px;
position: relative;
}
.title{
.title {
font-size: 24px;
color: #333;
font-weight: normal;
......@@ -13,24 +14,29 @@
height: 50px;
line-height: 50px;
}
.count-input{
.count-input {
width: 670px;
height: 50px;
}
input{
background: rgba(247,247,247,1);
input {
background: rgba(247, 247, 247, 1);
border-radius: 4px;
border: 1px solid rgba(229,229,229,1);
border: 1px solid rgba(229, 229, 229, 1);
padding-left: 7px;
}
.tip{
.tip {
font-size: 16px;
color: #333;
margin-right: 10px;;
margin-right: 10px;
;
}
.rule-item{
.rule-item {
border-radius: 4px;
border: 1px solid rgba(229,229,229,1);
border: 1px solid rgba(229, 229, 229, 1);
display: flex;
justify-content: space-between;
align-items: center;
......@@ -41,20 +47,24 @@ input{
padding: 0px 10px;
margin-top: 10px;
}
.search-group{
.search-group {
position: relative;
}
.search{
width:317px;
height:50px;
background:rgba(247,247,247,1);
border-radius:4px;
border:1px solid rgba(229,229,229,1);
.search {
width: 317px;
height: 50px;
background: rgba(247, 247, 247, 1);
border-radius: 4px;
border: 1px solid rgba(229, 229, 229, 1);
}
.clear{
.clear {
clear: both;
}
.search-btn{
.search-btn {
position: absolute;
right: 0px;
line-height: 50px;
......@@ -68,22 +78,25 @@ input{
border-radius: 0px 4px 4px 0pc;
cursor: pointer;
}
thead tr th{
thead tr th {
font-size: 16px;
color:#999;
color: #999;
height: 50px;
line-height: 50px;
font-weight: normal;
}
tbody tr td{
tbody tr td {
font-size: 20px;
color:#333;
color: #333;
font-weight: 400;
}
.add-btn {
width: 146px;
height: 40px;
background: rgba(206,57,57,1);
background: rgba(206, 57, 57, 1);
border-radius: 4px;
color: white;
position: absolute;
......@@ -94,10 +107,11 @@ tbody tr td{
align-items: center;
cursor: pointer;
}
.deleteBtn{
.deleteBtn {
width: 146px;
height: 40px;
background: rgba(206,57,57,1);
background: rgba(206, 57, 57, 1);
border-radius: 4px;
color: white;
justify-content: center;
......@@ -105,43 +119,55 @@ tbody tr td{
align-items: center;
cursor: pointer;
}
.rule-field{
.rule-field {
background: white;
}
.rule-field tr{
.rule-field tr {
height: 60px;
line-height: 60px;
}
.rule-field tbody tr td:first-child{
.rule-field tbody tr td:first-child {
padding-left: 25px;
height: 80px;
}
.rule-field tbody tr td:nth-child(2n){
.rule-field tbody tr td:nth-child(2n) {
text-align: center;
}
.rule-field tbody tr:nth-child(odd){
background:rgba(247,247,247,1);
.rule-field tbody tr:nth-child(odd) {
background: rgba(247, 247, 247, 1);
}
.del, .edit {
.del,
.edit {
height: 40px;
line-height: 40px;;
line-height: 40px;
;
font-size: 14px;
margin-right: 0px;
}
.edit{
.edit {
color: #ce3939;
}
#score-body tr{
#score-body tr {
height: 60px;
}
.opt{
.opt {
display: flex;
height: 60px;
align-items: center;
cursor: pointer;
justify-content: center;
}
.rule-field .opt{
.rule-field .opt {
height: 40px;
}
......@@ -168,18 +194,22 @@ tbody tr td{
margin-right: 8px;
margin-top: -9px;
}
.line-tr{
background: rgba(247,247,247,1);
.line-tr {
background: rgba(247, 247, 247, 1);
height: 60px;
border-bottom: 2px rgba(229,229,229,1) solid;
border-bottom: 2px rgba(229, 229, 229, 1) solid;
}
.line-tr:last-child{
.line-tr:last-child {
border-bottom: none;
}
label{
label {
margin-bottom: 0px;
}
.save-btn{
.save-btn {
color: white;
background: #ce3939;
display: inline-block;
......@@ -190,21 +220,24 @@ label{
cursor: pointer;
width: 146px;
height: 40px;
background: rgba(206,57,57,1);
background: rgba(206, 57, 57, 1);
border-radius: 4px;
float: right;
margin-right: 16px;
}
.input-group{
.input-group {
position: relative;
width: 170px;
}
.time-input{
.time-input {
width: 170px;
height: 38px;
cursor: pointer;
}
.down-arrow{
.down-arrow {
width: 18px;
height: 10px;
display: inline-block;
......@@ -216,13 +249,15 @@ label{
right: 86px;
background-size: contain;
}
.line{
.line {
width: 50px;
height: 1px;
background: #E5E5E5;
margin: 0px 10px;
}
.export{
.export {
width: 146px;
height: 40px;
background: #ce3939;
......@@ -236,27 +271,30 @@ label{
border-radius: 4px;
cursor: pointer;
}
.mask{
.mask {
width: 100%;
height: 100%;
position: fixed;
left: 0px;
top: 0px;
background: rgba(0,0,0,0.3);
background: rgba(0, 0, 0, 0.3);
z-index: 99;
display: none;
}
.maskErr{
.maskErr {
width: 100%;
height: 100%;
position: fixed;
left: 0px;
top: 0px;
background: rgba(0,0,0,0.3);
background: rgba(0, 0, 0, 0.3);
z-index: 99;
display: none;
}
.dialog{
.dialog {
padding: 30px 40px;
height: 300px;
width: 680px;
......@@ -267,40 +305,46 @@ label{
position: absolute;
background: white;
}
.dialog h3{
width:138px;
height:30px;
font-size:22px;
font-weight:400;
color:rgba(206,57,57,1);
line-height:30px;
}
.dialog input{
width:610px;
height:50px;
background:rgba(247,247,247,1);
border-radius:4px;
border:1px solid rgba(229,229,229,1);
}
.btn{
.dialog h3 {
width: 138px;
height: 30px;
font-size: 22px;
font-weight: 400;
color: rgba(206, 57, 57, 1);
line-height: 30px;
}
.dialog input {
width: 610px;
height: 50px;
background: rgba(247, 247, 247, 1);
border-radius: 4px;
border: 1px solid rgba(229, 229, 229, 1);
}
.btn {
color: white;
cursor: pointer;
font-size: 20px;
/* font-size: 20px; */
}
.cancel {
width: 146px;
height: 42px;
background: rgba(148, 148, 148, 1);
border-radius: 4px;
}
.cancel{
width:146px;
height:42px;
background:rgba(148,148,148,1);
border-radius:4px;
}
.sure{
width:146px;
height:42px;
background:rgba(206,57,57,1);
border-radius:4px;
.sure {
width: 146px;
height: 42px;
background: rgba(206, 57, 57, 1);
border-radius: 4px;
margin-left: 20px;
}
.extra-item{
.extra-item {
height: 80px;
display: flex;
justify-content: space-between;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment