手机大屏
|
@ -40,24 +40,42 @@ public class ApiStatisticsContactController extends ApiBaseController {
|
|||
|
||||
@ApiOperation("联络站总数量")
|
||||
@GetMapping("count")
|
||||
public void count() {
|
||||
int count = officeService.count(new LambdaQueryWrapper<Office>().eq(Office::getDuty, "contact"));
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
public void count(String streetId) {
|
||||
int count = officeService.count(new LambdaQueryWrapper<Office>().eq(Office::getDuty, "contact")
|
||||
.eq(StrUtil.isNotBlank(streetId), Office::getStreet, streetId));
|
||||
render(Ret.ok().data(count));
|
||||
}
|
||||
|
||||
@ApiOperation("联络站身份的人举办的活动次数")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("activity/count")
|
||||
public void activityCount() {
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_office a right join t_activity b on a.user_id=b.created_id where a.duty='contact'", Integer.class);
|
||||
public void activityCount(String streetId) {
|
||||
Integer activityCount;
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_office a right join t_activity b on a.user_id=b.created_id " +
|
||||
"where a.duty='contact' and a.street=? ", Integer.class, streetId);
|
||||
} else {
|
||||
activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_office a right join t_activity b on a.user_id=b.created_id " +
|
||||
"where a.duty='contact'", Integer.class);
|
||||
}
|
||||
render(Ret.ok().data(activityCount));
|
||||
}
|
||||
|
||||
@ApiOperation("联络站活动举办次数排名")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("activity/count/rank")
|
||||
public void activityCountRank() {
|
||||
List<CountRankVo> list = jdbcTemplate.query("SELECT c.name,(SELECT count(a.id) FROM t_activity a LEFT JOIN t_office b ON a.created_id=b.user_id WHERE a.created_id=c.user_id) AS count FROM t_office c WHERE c.duty='contact' order by count desc limit 0,6 ", new BeanPropertyRowMapper(CountRankVo.class));
|
||||
public void activityCountRank(String streetId) {
|
||||
List<CountRankVo> list;
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
list = jdbcTemplate.query("SELECT c.name,(SELECT count(a.id) FROM t_activity a LEFT JOIN t_office b ON a.created_id=b.user_id WHERE a.created_id=c.user_id) AS count " +
|
||||
"FROM t_office c WHERE c.duty='contact' and c.street=? order by count desc limit 0,6 ", new BeanPropertyRowMapper(CountRankVo.class), streetId);
|
||||
} else {
|
||||
list = jdbcTemplate.query("SELECT c.name,(SELECT count(a.id) FROM t_activity a LEFT JOIN t_office b ON a.created_id=b.user_id WHERE a.created_id=c.user_id) AS count " +
|
||||
"FROM t_office c WHERE c.duty='contact' order by count desc limit 0,6 ", new BeanPropertyRowMapper(CountRankVo.class));
|
||||
}
|
||||
List<String> nameList = list.stream().map(CountRankVo::getName).collect(Collectors.toList());
|
||||
List<String> countList = list.stream().map(CountRankVo::getCount).collect(Collectors.toList());
|
||||
List<Integer> countList = list.stream().map(CountRankVo::getCount).collect(Collectors.toList());
|
||||
render(Ret.ok().data(Dict.create().set("nameList", nameList).set("countList", countList)));
|
||||
}
|
||||
|
||||
|
@ -78,49 +96,20 @@ public class ApiStatisticsContactController extends ApiBaseController {
|
|||
@GetMapping("sign/record")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
public void signRecord(String streetId) {
|
||||
//活动签到
|
||||
if (StrUtil.isBlank(streetId)) {
|
||||
List<ActivitySignVo> list = jdbcTemplate.query("SELECT a.sign_time AS signTime,b.activity_address AS address,c.user_name AS NAME FROM t_activity_user a LEFT JOIN t_activity b ON a.activity_id=b.id LEFT JOIN t_sys_user c ON a.user_id=c.id WHERE to_days(a.sign_time)=to_days(now()) ORDER BY a.sign_time DESC LIMIT 0,3", new BeanPropertyRowMapper(ActivitySignVo.class));
|
||||
render(Ret.ok().data(list));
|
||||
List<ActivitySignVo> list;
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
list = jdbcTemplate.query("SELECT a.sign_time AS signTime,b.activity_address AS address,c.user_name AS NAME FROM t_activity_user a LEFT JOIN t_activity b ON a.activity_id=b.id LEFT JOIN t_sys_user c ON a.user_id=c.id WHERE to_days(a.sign_time)=to_days(now()) AND c.street_id=? ORDER BY a.sign_time DESC LIMIT 0,3", new BeanPropertyRowMapper(ActivitySignVo.class), streetId);
|
||||
} else {
|
||||
List<ActivitySignVo> list = jdbcTemplate.query("SELECT a.sign_time AS signTime,b.activity_address AS address,c.user_name AS NAME FROM t_activity_user a LEFT JOIN t_activity b ON a.activity_id=b.id LEFT JOIN t_sys_user c ON a.user_id=c.id WHERE to_days(a.sign_time)=to_days(now()) AND c.street_id=? ORDER BY a.sign_time DESC LIMIT 0,3", new BeanPropertyRowMapper(ActivitySignVo.class), streetId);
|
||||
render(Ret.ok().data(list));
|
||||
list = jdbcTemplate.query("SELECT a.sign_time AS signTime,b.activity_address AS address,c.user_name AS NAME FROM t_activity_user a LEFT JOIN t_activity b ON a.activity_id=b.id LEFT JOIN t_sys_user c ON a.user_id=c.id WHERE to_days(a.sign_time)=to_days(now()) ORDER BY a.sign_time DESC LIMIT 0,3", new BeanPropertyRowMapper(ActivitySignVo.class));
|
||||
}
|
||||
render(Ret.ok().data(list));
|
||||
}
|
||||
|
||||
@ApiOperation("指定街道的统计 不传为全部")
|
||||
@GetMapping("count/detail")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
public void countDetail(String streetId) {
|
||||
if (StrUtil.isBlank(streetId)) {
|
||||
//根据街道找联络站账号
|
||||
List<Office> officeList = officeService.list(new LambdaQueryWrapper<Office>().eq(Office::getDuty, "contact"));
|
||||
if (CollectionUtil.isNotEmpty(officeList)) {
|
||||
//省级人大代表数
|
||||
//-省1,市2,县3,乡镇4
|
||||
Integer provinceDbCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_db a LEFT JOIN t_office b ON a.office_id=b.id WHERE b.duty='contact' AND a.db_identity=? ", Integer.class, "1");
|
||||
//市级人大代表数
|
||||
Integer cityDbCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_db a LEFT JOIN t_office b ON a.office_id=b.id WHERE b.duty='contact' AND a.db_identity=? ", Integer.class, "2");
|
||||
//县级人大代表数
|
||||
Integer countryDbCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_db a LEFT JOIN t_office b ON a.office_id=b.id WHERE b.duty='contact' AND a.db_identity=? ", Integer.class, "3");
|
||||
//乡镇级人大代表数
|
||||
Integer townDbCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_db a LEFT JOIN t_office b ON a.office_id=b.id WHERE b.duty='contact' AND a.db_identity=? ", Integer.class, "4");
|
||||
//受理问题数
|
||||
Integer questionCount = jdbcTemplate.queryForObject("select count(id) from t_voter_suggest_db ", Integer.class);
|
||||
//督事活动数
|
||||
Integer superviseThingCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_supervise_thing a left join t_office b on a.created_id=b.created_id where b.duty='contact' ", Integer.class);
|
||||
//联络站数量
|
||||
Dict dict = Dict.create().set("contactNum", officeList.size())
|
||||
.set("provinceDbCount", provinceDbCount)
|
||||
.set("cityDbCount", cityDbCount)
|
||||
.set("countryDbCount", countryDbCount)
|
||||
.set("townDbCount", townDbCount)
|
||||
.set("questionCount", questionCount)
|
||||
.set("superviseThingCount", superviseThingCount);
|
||||
render(Ret.ok().data(dict));
|
||||
}
|
||||
} else {
|
||||
//根据街道找联络站账号
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
List<Office> officeList = officeService.list(new LambdaQueryWrapper<Office>().eq(Office::getDuty, "contact")
|
||||
.eq(Office::getStreet, streetId));
|
||||
if (CollectionUtil.isNotEmpty(officeList)) {
|
||||
|
@ -147,6 +136,32 @@ public class ApiStatisticsContactController extends ApiBaseController {
|
|||
.set("superviseThingCount", superviseThingCount);
|
||||
render(Ret.ok().data(dict));
|
||||
}
|
||||
} else {
|
||||
List<Office> officeList = officeService.list(new LambdaQueryWrapper<Office>().eq(Office::getDuty, "contact"));
|
||||
if (CollectionUtil.isNotEmpty(officeList)) {
|
||||
//省级人大代表数
|
||||
//-省1,市2,县3,乡镇4
|
||||
Integer provinceDbCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_db a LEFT JOIN t_office b ON a.office_id=b.id WHERE b.duty='contact' AND a.db_identity=? ", Integer.class, "1");
|
||||
//市级人大代表数
|
||||
Integer cityDbCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_db a LEFT JOIN t_office b ON a.office_id=b.id WHERE b.duty='contact' AND a.db_identity=? ", Integer.class, "2");
|
||||
//县级人大代表数
|
||||
Integer countryDbCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_db a LEFT JOIN t_office b ON a.office_id=b.id WHERE b.duty='contact' AND a.db_identity=? ", Integer.class, "3");
|
||||
//乡镇级人大代表数
|
||||
Integer townDbCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_db a LEFT JOIN t_office b ON a.office_id=b.id WHERE b.duty='contact' AND a.db_identity=? ", Integer.class, "4");
|
||||
//受理问题数
|
||||
Integer questionCount = jdbcTemplate.queryForObject("select count(id) from t_voter_suggest_db ", Integer.class);
|
||||
//督事活动数
|
||||
Integer superviseThingCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_supervise_thing a left join t_office b on a.created_id=b.created_id where b.duty='contact' ", Integer.class);
|
||||
//联络站数量
|
||||
Dict dict = Dict.create().set("contactNum", officeList.size())
|
||||
.set("provinceDbCount", provinceDbCount)
|
||||
.set("cityDbCount", cityDbCount)
|
||||
.set("countryDbCount", countryDbCount)
|
||||
.set("townDbCount", townDbCount)
|
||||
.set("questionCount", questionCount)
|
||||
.set("superviseThingCount", superviseThingCount);
|
||||
render(Ret.ok().data(dict));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -160,18 +175,18 @@ public class ApiStatisticsContactController extends ApiBaseController {
|
|||
String year = Convert.toStr(DateUtil.year(date));
|
||||
List<String> monthList = DateUtils.getMonthList();
|
||||
Iterator<String> iterator = monthList.iterator();
|
||||
if (StrUtil.isBlank(streetId)) {
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_office a right join t_activity b on a.user_id=b.created_id where a.duty='contact' and DATE_FORMAT( b.created_at, '%Y-%m' )=?", Integer.class, yearMonth);
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_office a right join t_activity b on a.user_id=b.created_id where a.duty='contact' and DATE_FORMAT( b.created_at, '%Y-%m' )=? and a.street=?", Integer.class, yearMonth, streetId);
|
||||
countList.add(activityCount);
|
||||
}
|
||||
} else {
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_office a right join t_activity b on a.user_id=b.created_id where a.duty='contact' and DATE_FORMAT( b.created_at, '%Y-%m' )=? and a.street=?", Integer.class, yearMonth, streetId);
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_office a right join t_activity b on a.user_id=b.created_id where a.duty='contact' and DATE_FORMAT( b.created_at, '%Y-%m' )=?", Integer.class, yearMonth);
|
||||
countList.add(activityCount);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import lombok.AllArgsConstructor;
|
|||
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
|
@ -50,50 +51,68 @@ public class ApiStatisticsDbController extends ApiBaseController {
|
|||
PerformService performService;
|
||||
|
||||
@ApiOperation("人大代表数量统计")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("count")
|
||||
public void count() {
|
||||
int provinceDbCount = dbService.count(new LambdaQueryWrapper<Db>().eq(Db::getDbIdentity, "1"));
|
||||
int cityDbCount = dbService.count(new LambdaQueryWrapper<Db>().eq(Db::getDbIdentity, "2"));
|
||||
int countryDbCount = dbService.count(new LambdaQueryWrapper<Db>().eq(Db::getDbIdentity, "3"));
|
||||
int townDbCount = dbService.count(new LambdaQueryWrapper<Db>().eq(Db::getDbIdentity, "4"));
|
||||
public void count(String streetId) {
|
||||
int provinceDbCount = dbService.count(new LambdaQueryWrapper<Db>().eq(Db::getDbIdentity, "1").eq(StrUtil.isNotBlank(streetId), Db::getPrecinctAddress, streetId));
|
||||
int cityDbCount = dbService.count(new LambdaQueryWrapper<Db>().eq(Db::getDbIdentity, "2").eq(StrUtil.isNotBlank(streetId), Db::getPrecinctAddress, streetId));
|
||||
int countryDbCount = dbService.count(new LambdaQueryWrapper<Db>().eq(Db::getDbIdentity, "3").eq(StrUtil.isNotBlank(streetId), Db::getPrecinctAddress, streetId));
|
||||
int townDbCount = dbService.count(new LambdaQueryWrapper<Db>().eq(Db::getDbIdentity, "4").eq(StrUtil.isNotBlank(streetId), Db::getPrecinctAddress, streetId));
|
||||
Dict dict = Dict.create().set("provinceDbCount", provinceDbCount).set("cityDbCount", cityDbCount).set("countryDbCount", countryDbCount).set("townDbCount", townDbCount);
|
||||
render(Ret.ok().data(dict));
|
||||
}
|
||||
|
||||
@ApiOperation("代表履职活动排行")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("perform/count")
|
||||
public void performCount() {
|
||||
List<CountRankVo> list = jdbcTemplate.query("SELECT c.name,(SELECT count(a.id) FROM t_perform a LEFT JOIN t_db b ON a.created_id=b.user_id WHERE a.created_id=c.user_id) AS count FROM t_db c order by count desc limit 0,10 ", new BeanPropertyRowMapper(CountRankVo.class));
|
||||
public void performCount(String streetId) {
|
||||
List<CountRankVo> list;
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
list = jdbcTemplate.query("SELECT c.name,(SELECT count(a.id) FROM t_perform a LEFT JOIN t_db b ON a.created_id=b.user_id WHERE a.created_id=c.user_id) AS count FROM t_db c and c.precinct_address=? order by count desc limit 0,10 ", new BeanPropertyRowMapper(CountRankVo.class), streetId);
|
||||
} else {
|
||||
list = jdbcTemplate.query("SELECT c.name,(SELECT count(a.id) FROM t_perform a LEFT JOIN t_db b ON a.created_id=b.user_id WHERE a.created_id=c.user_id) AS count FROM t_db c order by count desc limit 0,10 ", new BeanPropertyRowMapper(CountRankVo.class));
|
||||
}
|
||||
List<String> nameList = list.stream().map(CountRankVo::getName).collect(Collectors.toList());
|
||||
List<String> countList = list.stream().map(CountRankVo::getCount).collect(Collectors.toList());
|
||||
List<Integer> countList = list.stream().map(CountRankVo::getCount).collect(Collectors.toList());
|
||||
render(Ret.ok().data(Dict.create().set("nameList", nameList).set("countList", countList)));
|
||||
}
|
||||
|
||||
@ApiOperation("代表履职活动情况分析")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("perform/analyze")
|
||||
public void performAnalyze() {
|
||||
public void performAnalyze(String streetId) {
|
||||
List countList = new ArrayList();
|
||||
//默认当前年
|
||||
Date date = DateUtil.date();
|
||||
String year = Convert.toStr(DateUtil.year(date));
|
||||
List<String> monthList = DateUtils.getMonthList();
|
||||
Iterator<String> iterator = monthList.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_perform b , t_db a where a.user_id=b.created_id and DATE_FORMAT( b.created_at, '%Y-%m' )=?", Integer.class, yearMonth);
|
||||
countList.add(activityCount);
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_perform b , t_db a where a.user_id=b.created_id and DATE_FORMAT( b.created_at, '%Y-%m' )=? and a.precinct_address=?", Integer.class, yearMonth, streetId);
|
||||
countList.add(activityCount);
|
||||
}
|
||||
} else {
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_perform b , t_db a where a.user_id=b.created_id and DATE_FORMAT( b.created_at, '%Y-%m' )=?", Integer.class, yearMonth);
|
||||
countList.add(activityCount);
|
||||
}
|
||||
}
|
||||
render(Ret.ok().data(Dict.create().set("countList", countList).set("monthList", DateUtils.getMonthStrList())));
|
||||
}
|
||||
|
||||
@ApiOperation("代表督事阶段占比")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("supervise_thing/status_count")
|
||||
public void SuperviseThingStatusCount() {
|
||||
int allCount = superviseThingService.count(new LambdaQueryWrapper<SuperviseThing>());
|
||||
int yiCount = superviseThingService.count(new LambdaQueryWrapper<SuperviseThing>().eq(SuperviseThing::getStatus, SuperviseThing.STATUS_YI));
|
||||
int duCount = superviseThingService.count(new LambdaQueryWrapper<SuperviseThing>().eq(SuperviseThing::getStatus, SuperviseThing.STATUS_DU));
|
||||
int pingCount = superviseThingService.count(new LambdaQueryWrapper<SuperviseThing>().eq(SuperviseThing::getStatus, SuperviseThing.STATUS_PING));
|
||||
public void SuperviseThingStatusCount(String streetId) {
|
||||
int allCount = superviseThingService.count(new LambdaQueryWrapper<SuperviseThing>().eq(StrUtil.isNotBlank(streetId), SuperviseThing::getStreet, streetId));
|
||||
int yiCount = superviseThingService.count(new LambdaQueryWrapper<SuperviseThing>().eq(SuperviseThing::getStatus, SuperviseThing.STATUS_YI).eq(StrUtil.isNotBlank(streetId), SuperviseThing::getStreet, streetId));
|
||||
int duCount = superviseThingService.count(new LambdaQueryWrapper<SuperviseThing>().eq(SuperviseThing::getStatus, SuperviseThing.STATUS_DU).eq(StrUtil.isNotBlank(streetId), SuperviseThing::getStreet, streetId));
|
||||
int pingCount = superviseThingService.count(new LambdaQueryWrapper<SuperviseThing>().eq(SuperviseThing::getStatus, SuperviseThing.STATUS_PING).eq(StrUtil.isNotBlank(streetId), SuperviseThing::getStreet, streetId));
|
||||
|
||||
//问 (督事一创建就进入了议状态,所以永远都是0)
|
||||
Double wenPercent = 0D;
|
||||
|
@ -109,20 +128,34 @@ public class ApiStatisticsDbController extends ApiBaseController {
|
|||
}
|
||||
|
||||
@ApiOperation("代表督事区域分布")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("supervise_thing/region/count")
|
||||
public void SuperviseThingRegionCount() {
|
||||
List<CountRankVo> list = jdbcTemplate.query("select b.name,count(a.id)as count from t_supervise_thing a left join t_sys_street b on a.street=b.id GROUP BY b.name order by count desc", new BeanPropertyRowMapper(CountRankVo.class));
|
||||
public void SuperviseThingRegionCount(String streetId) {
|
||||
List<CountRankVo> list;
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
list = jdbcTemplate.query("select b.name,count(a.id)as count from t_supervise_thing a left join t_sys_street b on a.street=b.id where a.street=? GROUP BY b.name order by count desc", new BeanPropertyRowMapper(CountRankVo.class), streetId);
|
||||
} else {
|
||||
list = jdbcTemplate.query("select b.name,count(a.id)as count from t_supervise_thing a left join t_sys_street b on a.street=b.id GROUP BY b.name order by count desc", new BeanPropertyRowMapper(CountRankVo.class));
|
||||
}
|
||||
List<String> nameList = list.stream().map(CountRankVo::getName).collect(Collectors.toList());
|
||||
List<String> countList = list.stream().map(CountRankVo::getCount).collect(Collectors.toList());
|
||||
List<Integer> countList = list.stream().map(CountRankVo::getCount).collect(Collectors.toList());
|
||||
render(Ret.ok().data(Dict.create().set("nameList", nameList).set("countList", countList)));
|
||||
}
|
||||
|
||||
@ApiOperation("代表列表")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("list")
|
||||
public void list() {
|
||||
List<DbVo> list = jdbcTemplate.query("SELECT a.*,(" +
|
||||
"SELECT count(b.id) FROM t_perform b WHERE b.created_id=a.user_id) AS performCount,(" +
|
||||
"SELECT count(c.id) FROM t_voter_suggest_db c WHERE c.db=a.id) AS voterSuggestCount FROM t_db a WHERE a.show_screen=1", new BeanPropertyRowMapper(DbVo.class));
|
||||
public void list(String streetId) {
|
||||
List<DbVo> list;
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
list = jdbcTemplate.query("SELECT a.*,(" +
|
||||
"SELECT count(b.id) FROM t_perform b WHERE b.created_id=a.user_id) AS performCount,(" +
|
||||
"SELECT count(c.id) FROM t_voter_suggest_db c WHERE c.db=a.id) AS voterSuggestCount FROM t_db a WHERE a.show_screen=1 and a.precinct_address=?", new BeanPropertyRowMapper(DbVo.class), streetId);
|
||||
} else {
|
||||
list = jdbcTemplate.query("SELECT a.*,(" +
|
||||
"SELECT count(b.id) FROM t_perform b WHERE b.created_id=a.user_id) AS performCount,(" +
|
||||
"SELECT count(c.id) FROM t_voter_suggest_db c WHERE c.db=a.id) AS voterSuggestCount FROM t_db a WHERE a.show_screen=1", new BeanPropertyRowMapper(DbVo.class));
|
||||
}
|
||||
list.forEach(item -> {
|
||||
item.setSex(DictUtils.getDictLabel("sys_user_sex", item.getSex()));
|
||||
item.setDbIdentity(DictUtils.getDictLabel("sys_db_identity", item.getDbIdentity()));
|
||||
|
@ -134,9 +167,9 @@ public class ApiStatisticsDbController extends ApiBaseController {
|
|||
}
|
||||
|
||||
@ApiOperation("代表详情")
|
||||
@GetMapping("detail")
|
||||
@GetMapping("detail/{id}")
|
||||
@ApiImplicitParam(name = "id", value = "代表id")
|
||||
public void detail(String id) {
|
||||
public void detail(@PathVariable String id) {
|
||||
Db db = dbService.getById(id);
|
||||
DbVO dbVO = DbWrapper.build().entityVO(db);
|
||||
//履职记录
|
||||
|
|
|
@ -18,6 +18,7 @@ import com.ydool.boot.modules.rddb.wrapper.NoticeWrapper;
|
|||
import com.ydool.boot.modules.sys.entity.Config;
|
||||
import com.ydool.boot.modules.sys.service.ConfigService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
||||
|
@ -48,35 +49,59 @@ public class ApiStatisticsOfficeController extends ApiBaseController {
|
|||
ConferenceService conferenceService;
|
||||
|
||||
@ApiOperation("基础情况")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("count")
|
||||
public void count() {
|
||||
public void count(String streetId) {
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
//文件发放
|
||||
int dataBankCount = dataBankService.count();
|
||||
//文件阅览
|
||||
int readFileCount = readFileService.count();
|
||||
//文件办理
|
||||
int auditCount = auditService.count();
|
||||
//报送
|
||||
int reportCount = reportService.count();
|
||||
//录用
|
||||
int passCount = reportService.count(new LambdaQueryWrapper<Report>().eq(Report::getHireStatus, 1));
|
||||
//录用率
|
||||
Double passPercent = reportCount == 0 ? 0 : Convert.toDouble(passCount) / Convert.toDouble(reportCount) * 100;
|
||||
Dict dict = Dict.create()
|
||||
.set("dataBankCount", dataBankCount)
|
||||
.set("readFileCount", readFileCount)
|
||||
.set("auditCount", auditCount)
|
||||
.set("reportCount", reportCount)
|
||||
.set("passCount", passCount)
|
||||
.set("passPercent", df.format(passPercent));
|
||||
render(Ret.ok().data(dict));
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
Integer dataBankCount = jdbcTemplate.queryForObject("select count(a.id) from t_data_bank a left join t_sys_user b on a.created_id=b.id where b.street_id=?", Integer.class, streetId);
|
||||
Integer readFileCount = jdbcTemplate.queryForObject("select count(a.id) from t_read_file a left join t_sys_user b on a.created_id=b.id where b.street_id=?", Integer.class, streetId);
|
||||
Integer auditCount = jdbcTemplate.queryForObject("select count(a.id) from t_audit a left join t_sys_user b on a.created_id=b.id where b.street_id=?", Integer.class, streetId);
|
||||
int reportCount = reportService.count(new LambdaQueryWrapper<Report>().eq(Report::getStreet, streetId).ne(Report::getHireStatus, 2));
|
||||
int passCount = reportService.count(new LambdaQueryWrapper<Report>().eq(Report::getHireStatus, 1).eq(Report::getStreet, streetId));
|
||||
Double passPercent = reportCount == 0 ? 0 : Convert.toDouble(passCount) / Convert.toDouble(reportCount) * 100;
|
||||
Dict dict = Dict.create()
|
||||
.set("dataBankCount", dataBankCount)
|
||||
.set("readFileCount", readFileCount)
|
||||
.set("auditCount", auditCount)
|
||||
.set("reportCount", reportCount)
|
||||
.set("passCount", passCount)
|
||||
.set("passPercent", df.format(passPercent));
|
||||
render(Ret.ok().data(dict));
|
||||
} else {
|
||||
//文件发放
|
||||
int dataBankCount = dataBankService.count();
|
||||
//文件阅览
|
||||
int readFileCount = readFileService.count();
|
||||
//文件办理
|
||||
int auditCount = auditService.count();
|
||||
//报送
|
||||
int reportCount = reportService.count(new LambdaQueryWrapper<Report>().ne(Report::getHireStatus, 3));
|
||||
//录用
|
||||
int passCount = reportService.count(new LambdaQueryWrapper<Report>().eq(Report::getHireStatus, 1));
|
||||
//录用率
|
||||
Double passPercent = reportCount == 0 ? 0 : Convert.toDouble(passCount) / Convert.toDouble(reportCount) * 100;
|
||||
Dict dict = Dict.create()
|
||||
.set("dataBankCount", dataBankCount)
|
||||
.set("readFileCount", readFileCount)
|
||||
.set("auditCount", auditCount)
|
||||
.set("reportCount", reportCount)
|
||||
.set("passCount", passCount)
|
||||
.set("passPercent", df.format(passPercent));
|
||||
render(Ret.ok().data(dict));
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation("乡镇信息报道录用分析")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("analyze")
|
||||
public void analyze() {
|
||||
List<CountRankVo> list = jdbcTemplate.query("select b.name,count(a.id)as count from t_report a left join t_sys_street b on a.street=b.id GROUP BY b.name order by count desc", new BeanPropertyRowMapper(CountRankVo.class));
|
||||
public void analyze(String streetId) {
|
||||
List<CountRankVo> list;
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
list = jdbcTemplate.query("select b.name,count(a.id)as count from t_report a left join t_sys_street b on a.street=b.id where a.street=? GROUP BY b.name order by count desc", new BeanPropertyRowMapper(CountRankVo.class), streetId);
|
||||
} else {
|
||||
list = jdbcTemplate.query("select b.name,count(a.id)as count from t_report a left join t_sys_street b on a.street=b.id GROUP BY b.name order by count desc", new BeanPropertyRowMapper(CountRankVo.class));
|
||||
}
|
||||
render(Ret.ok().data(list));
|
||||
}
|
||||
|
||||
|
@ -97,26 +122,37 @@ public class ApiStatisticsOfficeController extends ApiBaseController {
|
|||
}
|
||||
|
||||
@ApiOperation("人大会议月度召开情况统计")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("conference/analyze")
|
||||
public void conferenceAnalyze() {
|
||||
public void conferenceAnalyze(String streetId) {
|
||||
List countList = new ArrayList();
|
||||
//默认当前年
|
||||
Date date = DateUtil.date();
|
||||
String year = Convert.toStr(DateUtil.year(date));
|
||||
List<String> monthList = DateUtils.getMonthList();
|
||||
Iterator<String> iterator = monthList.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a where DATE_FORMAT( a.created_at, '%Y-%m' )=?", Integer.class, yearMonth);
|
||||
countList.add(activityCount);
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a left join t_sys_user b on a.created_id=b.id where b.street_id=? and DATE_FORMAT( a.created_at, '%Y-%m' )=?", Integer.class, streetId, yearMonth);
|
||||
countList.add(activityCount);
|
||||
}
|
||||
} else {
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a where DATE_FORMAT( a.created_at, '%Y-%m' )=?", Integer.class, yearMonth);
|
||||
countList.add(activityCount);
|
||||
}
|
||||
}
|
||||
render(Ret.ok().data(Dict.create().set("monthList", DateUtils.getMonthStrList()).set("countList", countList)));
|
||||
}
|
||||
|
||||
@ApiOperation("当月人大会议类型情况占比")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("conference/category/count")
|
||||
public void conferenceCategoryCount() {
|
||||
public void conferenceCategoryCount(String streetId) {
|
||||
//默认当前年
|
||||
Date date = DateUtil.date();
|
||||
String year = Convert.toStr(DateUtil.year(date));
|
||||
|
@ -124,25 +160,46 @@ public class ApiStatisticsOfficeController extends ApiBaseController {
|
|||
String yearMonth = year + "-" + month;
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
//总数
|
||||
Integer allCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a where DATE_FORMAT( a.created_at, '%Y-%m' )=?", Integer.class, yearMonth);
|
||||
//主任会议数 常委会议数 其他会议数
|
||||
//1主任 2常委 3其他
|
||||
int zrCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a where DATE_FORMAT( a.created_at, '%Y-%m' )=? and a.category=1", Integer.class, yearMonth);
|
||||
int cwCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a where DATE_FORMAT( a.created_at, '%Y-%m' )=? and a.category=2", Integer.class, yearMonth);
|
||||
int otherCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a where DATE_FORMAT( a.created_at, '%Y-%m' )=? and a.category=3", Integer.class, yearMonth);
|
||||
Double zrPercent = allCount == 0 ? 0 : Convert.toDouble(zrCount) / Convert.toDouble(allCount) * 100;
|
||||
Double cwPercent = allCount == 0 ? 0 : Convert.toDouble(cwCount) / Convert.toDouble(allCount) * 100;
|
||||
Double otherPercent = allCount == 0 ? 0 : Convert.toDouble(otherCount) / Convert.toDouble(allCount) * 100;
|
||||
Dict dist = Dict.create().set("zrPercent", df.format(zrPercent)).set("cwPercent", df.format(cwPercent)).set("otherPercent", df.format(otherPercent));
|
||||
render(Ret.ok().data(dist));
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
Integer allCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a left join t_sys_user b on a.created_id=b.id where b.street_id=? and DATE_FORMAT( a.created_at, '%Y-%m' )=?", Integer.class, streetId, yearMonth);
|
||||
//主任会议数 常委会议数 其他会议数
|
||||
//1主任 2常委 3其他
|
||||
int zrCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a left join t_sys_user b on a.created_id=b.id where b.street_id=? and DATE_FORMAT( a.created_at, '%Y-%m' )=? and a.category=1", Integer.class, streetId, yearMonth);
|
||||
int cwCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a left join t_sys_user b on a.created_id=b.id where b.street_id=? and DATE_FORMAT( a.created_at, '%Y-%m' )=? and a.category=2", Integer.class, streetId, yearMonth);
|
||||
int otherCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a left join t_sys_user b on a.created_id=b.id where b.street_id=? and DATE_FORMAT( a.created_at, '%Y-%m' )=? and a.category=3", Integer.class, streetId, yearMonth);
|
||||
Double zrPercent = allCount == 0 ? 0 : Convert.toDouble(zrCount) / Convert.toDouble(allCount) * 100;
|
||||
Double cwPercent = allCount == 0 ? 0 : Convert.toDouble(cwCount) / Convert.toDouble(allCount) * 100;
|
||||
Double otherPercent = allCount == 0 ? 0 : Convert.toDouble(otherCount) / Convert.toDouble(allCount) * 100;
|
||||
Dict dist = Dict.create().set("zrPercent", df.format(zrPercent)).set("cwPercent", df.format(cwPercent)).set("otherPercent", df.format(otherPercent));
|
||||
render(Ret.ok().data(dist));
|
||||
} else {
|
||||
Integer allCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a where DATE_FORMAT( a.created_at, '%Y-%m' )=?", Integer.class, yearMonth);
|
||||
//主任会议数 常委会议数 其他会议数
|
||||
//1主任 2常委 3其他
|
||||
int zrCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a where DATE_FORMAT( a.created_at, '%Y-%m' )=? and a.category=1", Integer.class, yearMonth);
|
||||
int cwCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a where DATE_FORMAT( a.created_at, '%Y-%m' )=? and a.category=2", Integer.class, yearMonth);
|
||||
int otherCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_conference a where DATE_FORMAT( a.created_at, '%Y-%m' )=? and a.category=3", Integer.class, yearMonth);
|
||||
Double zrPercent = allCount == 0 ? 0 : Convert.toDouble(zrCount) / Convert.toDouble(allCount) * 100;
|
||||
Double cwPercent = allCount == 0 ? 0 : Convert.toDouble(cwCount) / Convert.toDouble(allCount) * 100;
|
||||
Double otherPercent = allCount == 0 ? 0 : Convert.toDouble(otherCount) / Convert.toDouble(allCount) * 100;
|
||||
Dict dist = Dict.create().set("zrPercent", df.format(zrPercent)).set("cwPercent", df.format(cwPercent)).set("otherPercent", df.format(otherPercent));
|
||||
render(Ret.ok().data(dist));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ApiOperation("人大大事记")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("notice")
|
||||
public void notice() {
|
||||
IPage<Notice> paged = noticeService.page(new Page<>(getPageNum(), getPageSize()),
|
||||
new QueryWrapper<Notice>().orderByDesc("created_at"));
|
||||
render(Ret.ok().paged(NoticeWrapper.build().pageVO(paged)));
|
||||
public void notice(String streetId) {
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
IPage<Notice> paged = noticeService._page(new Page<>(getPageNum(), getPageSize()),
|
||||
new QueryWrapper<Notice>().eq("b.street_id", streetId));
|
||||
render(Ret.ok().paged(NoticeWrapper.build().pageVO(paged)));
|
||||
} else {
|
||||
IPage<Notice> paged = noticeService.page(new Page<>(getPageNum(), getPageSize()),
|
||||
new QueryWrapper<Notice>().orderByDesc("created_at"));
|
||||
render(Ret.ok().paged(NoticeWrapper.build().pageVO(paged)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import com.ydool.boot.common.result.Ret;
|
|||
import com.ydool.boot.modules.rddb.entity.VoterSuggestDb;
|
||||
import com.ydool.boot.modules.rddb.service.VoterSuggestDbService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
||||
|
@ -38,14 +39,19 @@ public class ApiStatisticsVoterController extends ApiBaseController {
|
|||
VoterSuggestDbService voterSuggestDbService;
|
||||
|
||||
@ApiOperation("民情统计")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("count")
|
||||
public void count() {
|
||||
public void count(String streetId) {
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
//总量
|
||||
int allCount = voterSuggestDbService.count();
|
||||
//受理总量
|
||||
int okCount = voterSuggestDbService.count(new LambdaQueryWrapper<VoterSuggestDb>().eq(VoterSuggestDb::getStatus, 1));
|
||||
//受理率
|
||||
int allCount;
|
||||
int okCount;
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
allCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_voter_suggest_db a left join t_db b on a.db=b.id where b.precinct_address=? ", Integer.class, streetId);
|
||||
okCount = jdbcTemplate.queryForObject("SELECT count(a.id) FROM t_voter_suggest_db a left join t_db b on a.db=b.id where b.precinct_address=? and a.status=1", Integer.class, streetId);
|
||||
} else {
|
||||
allCount = voterSuggestDbService.count();
|
||||
okCount = voterSuggestDbService.count(new LambdaQueryWrapper<VoterSuggestDb>().eq(VoterSuggestDb::getStatus, 1));
|
||||
}
|
||||
Double percent = allCount == 0 ? 0 : Convert.toDouble(okCount) / Convert.toDouble(allCount) * 100;
|
||||
|
||||
String averageTime = ConfigUtils.getStr("screen_vote_average_time");
|
||||
|
@ -61,20 +67,25 @@ public class ApiStatisticsVoterController extends ApiBaseController {
|
|||
}
|
||||
|
||||
@ApiOperation("区域民情分析")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("analyze")
|
||||
public void analyze() {
|
||||
public void analyze(String streetId) {
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
List<CountRankVo> list = jdbcTemplate.query("select b.name,count(a.id)as count from t_voter_suggest_db a left join t_sys_street b on a.db_region=b.id GROUP BY b.name order by count desc", new BeanPropertyRowMapper(CountRankVo.class));
|
||||
List<CountRankVo> list;
|
||||
if (StrUtil.isNotBlank(streetId)) {
|
||||
list = jdbcTemplate.query("select b.name,count(a.id)as count from t_voter_suggest_db a left join t_sys_street b on a.db_region=b.id where a.db_region=? GROUP BY b.name order by count desc", new BeanPropertyRowMapper(CountRankVo.class), streetId);
|
||||
} else {
|
||||
list = jdbcTemplate.query("select b.name,count(a.id)as count from t_voter_suggest_db a left join t_sys_street b on a.db_region=b.id GROUP BY b.name order by count desc", new BeanPropertyRowMapper(CountRankVo.class));
|
||||
}
|
||||
List<String> nameList = list.stream().map(CountRankVo::getName).collect(Collectors.toList());
|
||||
List<String> countList = list.stream().map(CountRankVo::getCount).collect(Collectors.toList());
|
||||
List<Integer> countList = list.stream().map(CountRankVo::getCount).collect(Collectors.toList());
|
||||
List<String> percentList = new ArrayList<>();
|
||||
|
||||
String max = CollectionUtil.max(countList);
|
||||
if (StrUtil.isNotBlank(max)) {
|
||||
Integer maxCount = Convert.toInt(max);
|
||||
Iterator<String> iterator = countList.iterator();
|
||||
if (CollectionUtil.isNotEmpty(countList)) {
|
||||
Integer maxCount = CollectionUtil.max(countList);
|
||||
Iterator<Integer> iterator = countList.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String item = iterator.next();
|
||||
Integer item = iterator.next();
|
||||
Double percent = maxCount == 0 ? 0 : Convert.toDouble(item) / Convert.toDouble(maxCount) * 100;
|
||||
percentList.add(df.format(percent));
|
||||
}
|
||||
|
@ -83,19 +94,29 @@ public class ApiStatisticsVoterController extends ApiBaseController {
|
|||
}
|
||||
|
||||
@ApiOperation("民情月度受理统计")
|
||||
@ApiImplicitParam(name = "streetId", value = "街道id")
|
||||
@GetMapping("month/count")
|
||||
public void monthCount() {
|
||||
public void monthCount(String streetId) {
|
||||
List countList = new ArrayList();
|
||||
//默认当前年
|
||||
Date date = DateUtil.date();
|
||||
String year = Convert.toStr(DateUtil.year(date));
|
||||
List<String> monthList = DateUtils.getMonthList();
|
||||
Iterator<String> iterator = monthList.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_voter_suggest_db b , t_db a where a.id=b.db and DATE_FORMAT( b.created_at, '%Y-%m' )=?", Integer.class, yearMonth);
|
||||
countList.add(activityCount);
|
||||
if(StrUtil.isNotBlank(streetId)){
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_voter_suggest_db b left join t_db a on a.id=b.db where a.db_region=? and DATE_FORMAT( b.created_at, '%Y-%m' )=?", Integer.class, streetId,yearMonth);
|
||||
countList.add(activityCount);
|
||||
}
|
||||
}else{
|
||||
while (iterator.hasNext()) {
|
||||
String month = iterator.next();
|
||||
String yearMonth = year + "-" + month;
|
||||
Integer activityCount = jdbcTemplate.queryForObject("SELECT count(b.id) FROM t_voter_suggest_db b left join t_db a on a.id=b.db where DATE_FORMAT( b.created_at, '%Y-%m' )=?", Integer.class, yearMonth);
|
||||
countList.add(activityCount);
|
||||
}
|
||||
}
|
||||
render(Ret.ok().data(Dict.create().set("monthList", DateUtils.getMonthStrList()).set("countList", countList)));
|
||||
}
|
||||
|
@ -135,5 +156,4 @@ public class ApiStatisticsVoterController extends ApiBaseController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -6,5 +6,5 @@ import lombok.Data;
|
|||
public class CountRankVo {
|
||||
//联络站的名字、举办的次数
|
||||
String name;
|
||||
String count;
|
||||
Integer count;
|
||||
}
|
|
@ -1,12 +1,21 @@
|
|||
package com.ydool.boot.modules.rddb.mapper;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ydool.boot.modules.rddb.entity.Notice;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
/**
|
||||
* @author chenchen
|
||||
* @date 2020/07/27
|
||||
*/
|
||||
public interface NoticeMapper extends BaseMapper<Notice> {
|
||||
|
||||
@Select("select a.* from t_notice a left join t_sys_user b on a.created_id = b.id ${ew.customSqlSegment} ")
|
||||
IPage<Notice> _page(Page<Object> page, @Param(Constants.WRAPPER) QueryWrapper<Notice> qw);
|
||||
}
|
||||
|
|
|
@ -2,6 +2,9 @@ package com.ydool.boot.modules.rddb.service;
|
|||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ydool.boot.modules.rddb.entity.Const;
|
||||
import com.ydool.boot.modules.rddb.entity.Message;
|
||||
|
@ -66,4 +69,7 @@ public class NoticeService extends ServiceImpl<NoticeMapper, Notice> {
|
|||
return flag;
|
||||
}
|
||||
|
||||
public IPage<Notice> _page(Page<Object> page, QueryWrapper<Notice> qw) {
|
||||
return getBaseMapper()._page(page,qw);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package com.ydool.boot.show;
|
||||
|
||||
import com.ydool.boot.modules.sys.entity.User;
|
||||
import com.ydool.boot.modules.sys.service.UserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||
|
||||
|
||||
@Controller
|
||||
@RequestMapping(value = {"/mshow", "/mshow/"})
|
||||
public class MShowIndexController {
|
||||
|
||||
@Autowired
|
||||
UserService userService;
|
||||
|
||||
@GetMapping
|
||||
public String index(String userId, RedirectAttributes attr) {
|
||||
User user = userService.getById(userId);
|
||||
if ("admin".equals(user.getAccountType())) {
|
||||
attr.addAttribute("streetId", "");
|
||||
} else {
|
||||
String streetId = user.getStreetId();
|
||||
attr.addAttribute("streetId", streetId);
|
||||
}
|
||||
return "redirect:/mshow/index.html";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package com.ydool.boot.show;
|
||||
|
||||
import com.ydool.boot.modules.sys.service.UserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
|
||||
@Controller
|
||||
@RequestMapping(value = {"${ydool.showUrl}", "${ydool.showUrl}/"})
|
||||
public class ShowIndexController {
|
||||
|
||||
@Autowired
|
||||
UserService userService;
|
||||
|
||||
@GetMapping
|
||||
public String index() {
|
||||
return "redirect:/show/index.html";
|
||||
}
|
||||
|
||||
}
|
|
@ -1,14 +1,14 @@
|
|||
#online
|
||||
#db.user = ydool_rd
|
||||
#db.pass = MfaSPabGrDmPtET@123
|
||||
#db.url = jdbc:mysql://122.112.138.17:3306/ydool_rd?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8
|
||||
#db.driver = com.mysql.cj.jdbc.Driver
|
||||
db.user = ydool_rd
|
||||
db.pass = MfaSPabGrDmPtET@123
|
||||
db.url = jdbc:mysql://122.112.138.17:3306/ydool_rd?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8
|
||||
db.driver = com.mysql.cj.jdbc.Driver
|
||||
|
||||
#local
|
||||
db.user = root
|
||||
db.pass = 123456
|
||||
db.url = jdbc:mysql://127.0.0.1:3306/ydool_rd?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8
|
||||
db.driver = com.mysql.cj.jdbc.Driver
|
||||
#db.user = root
|
||||
#db.pass = 123456
|
||||
#db.url = jdbc:mysql://127.0.0.1:3306/ydool_rd?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8
|
||||
#db.driver = com.mysql.cj.jdbc.Driver
|
||||
|
||||
spring.servlet.multipart.max-file-size=500MB
|
||||
spring.servlet.multipart.max-request-size=500MB
|
||||
|
@ -17,6 +17,7 @@ spring.redis.host=106.54.109.185
|
|||
|
||||
ydool.path=/admin
|
||||
ydool.homeUrl=/page
|
||||
ydool.showUrl=/show
|
||||
|
||||
ydool.skipAuthUrls[0] = /admin/static/**
|
||||
|
||||
|
|
After Width: | Height: | Size: 233 KiB |
|
@ -0,0 +1,390 @@
|
|||
*{
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
text-decoration: none;
|
||||
list-style: none;
|
||||
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
|
||||
}
|
||||
body{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
/* background: url('../img/bg.jpg') no-repeat; */
|
||||
background: #10234B;
|
||||
/* background-size: 100% 100%; */
|
||||
color: #fff;
|
||||
padding-bottom: 60px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.menu{
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
z-index: 99;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
background: #0F1A46;
|
||||
height: 60px;
|
||||
align-items: center;
|
||||
padding:0 5%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.menu .iconfont{
|
||||
font-size: 20px;
|
||||
margin-bottom: 2px;
|
||||
text-align: center;
|
||||
}
|
||||
.menu a{
|
||||
color: #fff;
|
||||
}
|
||||
.menu .active{
|
||||
color: #00E9F9;
|
||||
}
|
||||
.allname{
|
||||
background: url('../img/namebg.png') no-repeat;
|
||||
height: 60px;
|
||||
background-size: 100% 100%;
|
||||
text-align: center;
|
||||
line-height: 60px;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
}
|
||||
.charts{
|
||||
padding:0 5% 30px;
|
||||
}
|
||||
.charts>div{
|
||||
margin-top: 30px;
|
||||
}
|
||||
.charts>div .name{
|
||||
color: #fff;
|
||||
background: url('../img/title.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
display: inline-block;
|
||||
padding:0 10px;
|
||||
box-sizing: border-box;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
}
|
||||
.circle{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.circle>div{
|
||||
flex: 1;
|
||||
}
|
||||
.circle p{
|
||||
text-align:center;
|
||||
color:#fff;
|
||||
}
|
||||
.map{
|
||||
position: relative;
|
||||
}
|
||||
.map>img{
|
||||
width: 100%;
|
||||
}
|
||||
.dimap{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.dimap img{
|
||||
width: 12px;
|
||||
}
|
||||
.dimap>div{
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
cursor: pointer;
|
||||
}
|
||||
@keyframes beats{
|
||||
0% {
|
||||
top: -10px;
|
||||
}
|
||||
25%{
|
||||
top: -5px;
|
||||
}
|
||||
50%{
|
||||
top: 0;
|
||||
}
|
||||
75%{
|
||||
top: -5px;
|
||||
}
|
||||
100%{
|
||||
top: -10px;
|
||||
}
|
||||
}
|
||||
.dimap .dong{
|
||||
animation-name: beats;
|
||||
animation-duration: 1s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
animation-play-state: running;
|
||||
}
|
||||
.item1{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
background: #07216A;
|
||||
bottom: 50px;
|
||||
width: 240px;
|
||||
border-radius: 8px;
|
||||
padding: 15px;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
}
|
||||
.item2{
|
||||
position: absolute;
|
||||
right: -10px;
|
||||
background: rgba(8,37,117,.5);
|
||||
top: 50px;
|
||||
width: 250px;
|
||||
border-radius: 8px;
|
||||
padding: 15px;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
z-index: 99;
|
||||
}
|
||||
.item2>div{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.item2>div .icon{
|
||||
background: url('../img/blue.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
width: 70px;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
box-sizing: border-box;
|
||||
padding-left: 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.item2>div .red{
|
||||
background: url('../img/red.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
.item2>div .desc{
|
||||
padding:10px 15px;
|
||||
border-left: 1px solid #1D5ECD;
|
||||
line-height: 30px;
|
||||
}
|
||||
.item1>div{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.item1>div div{
|
||||
width: 50%;
|
||||
margin-top: 15px;
|
||||
line-height: 30px;
|
||||
}
|
||||
.item1>div div span{
|
||||
color: #F8CD03;
|
||||
}
|
||||
.box>div{
|
||||
display: none;
|
||||
}
|
||||
.page1 .numbox{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: 15px 0 15px 5%;
|
||||
background: url('../img/kuang.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
.page1 .numbox>div{
|
||||
width: 50%;
|
||||
font-size: 14px;
|
||||
margin: 10px 0;
|
||||
color: #B2DCF9;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.page1 .numbox>div span:first-child{
|
||||
color: #CBCCD3;
|
||||
font-weight: bold;
|
||||
}
|
||||
.page1 .numbox>div span:last-child{
|
||||
color: #0BBFCA;
|
||||
font-size: 18px;
|
||||
}
|
||||
.page1 .item{
|
||||
display: block;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
padding:7px 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.page1 .wai{
|
||||
border:1px solid #353B52;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.page1 .item>div:first-child{
|
||||
text-align: center;
|
||||
}
|
||||
.page1 .item img{
|
||||
width: 128px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.page1 .item .info{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.page1 .item .info p{
|
||||
width: 50%;
|
||||
opacity: .7;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.page1 .item .btn{
|
||||
background: url('../img/border.png') no-repeat;
|
||||
width: 80px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
background-size: 100% 100%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
.page3 .info{
|
||||
color: #fff;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
font-size: 14px;
|
||||
justify-content: space-between;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.page3 .info>div{
|
||||
border-left: 2px solid #8F93A4;
|
||||
background: linear-gradient(to right, #102254 , #0C1948);
|
||||
width: 48%;
|
||||
padding:5px 8px;
|
||||
box-sizing: border-box;
|
||||
line-height: 26px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.page3 .info>div span:first-child{
|
||||
font-size: 18px;
|
||||
color: #0BBFCA;
|
||||
}
|
||||
.page3 .info>div span:last-child{
|
||||
font-size: 14px;
|
||||
}
|
||||
.page3 .info>div p:last-child{
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.page3 .redian{
|
||||
background:url('../img/kuang2.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.page4 .info{
|
||||
color: #7882BC;
|
||||
font-size: 14px;
|
||||
}
|
||||
.page4 .info>div{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
line-height: 36px;
|
||||
font-weight: bold;
|
||||
background:url('../img/kuang2.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
margin-top: 20px;
|
||||
padding:20px 10px;
|
||||
}
|
||||
.page4 .info>div p{
|
||||
width: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.page4 .info span{
|
||||
color: #E34561;
|
||||
font-size: 18px;
|
||||
}
|
||||
.page4 .list{
|
||||
color: #fff;
|
||||
}
|
||||
.page4 .list .head{
|
||||
display: flex;
|
||||
color: #7882BC;
|
||||
border-bottom: 2px solid #46BAB1;
|
||||
line-height: 50px;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.page4 .list .head>p{
|
||||
text-align: center;
|
||||
}
|
||||
.page4 .list .head>p:last-child{
|
||||
width: 30%;
|
||||
}
|
||||
.page4 .list .head>p:first-child,.page4 .list .box>div p:first-child{
|
||||
width: 65%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space:nowrap;
|
||||
}
|
||||
.page4 .list .box{
|
||||
height: 250px;
|
||||
max-height: 250px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.page4 .list .box>div{
|
||||
display: flex;
|
||||
line-height: 40px;
|
||||
color: #eee;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.page4 .list .box>div p:last-child{
|
||||
width: 30%;
|
||||
text-align: center;
|
||||
}
|
||||
.xq{
|
||||
position: absolute;
|
||||
width: 90%;
|
||||
height: 800px;
|
||||
background: url('../img/bg.jpg') no-repeat;
|
||||
top: 140px;
|
||||
left: 5%;
|
||||
display: none;
|
||||
z-index: 11;
|
||||
padding:50px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.zhe{
|
||||
background-color: rgba(0, 0, 0, .8);
|
||||
position: absolute;
|
||||
width:1920px;
|
||||
height: 1080px;
|
||||
z-index: 10;
|
||||
}
|
||||
.xq>div{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.xq .graph{
|
||||
color: #fff;
|
||||
width:30%;
|
||||
}
|
||||
.xq .graph>p{
|
||||
font-size: 20px;
|
||||
padding:10px 30px;
|
||||
background: linear-gradient(to right,rgba(9,33,143,1),rgba(16,29,71,.1));
|
||||
}
|
||||
.xq .graph>div{
|
||||
margin-top: 20px;
|
||||
}
|
||||
.xq .graph .listitem{
|
||||
line-height: 50px;
|
||||
padding:0 20px;
|
||||
}
|
||||
.xq .graph .listitem:nth-child(2n){
|
||||
background: #1B375E;
|
||||
}
|
||||
.xq .graph .listitem span:first-child{
|
||||
margin-right: 15px;
|
||||
}
|
||||
.xq .graph .wen{
|
||||
line-height: 30px;
|
||||
padding:0 20px;
|
||||
}
|
||||
.xq .graph .wen p{
|
||||
margin-bottom: 10px;
|
||||
}
|
|
@ -0,0 +1,606 @@
|
|||
/**
|
||||
* Swiper 6.3.5
|
||||
* Most modern mobile touch slider and framework with hardware accelerated transitions
|
||||
* https://swiperjs.com
|
||||
*
|
||||
* Copyright 2014-2020 Vladimir Kharlampidi
|
||||
*
|
||||
* Released under the MIT License
|
||||
*
|
||||
* Released on: October 30, 2020
|
||||
*/
|
||||
|
||||
@font-face {
|
||||
font-family: swiper-icons;
|
||||
src: url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: normal
|
||||
}
|
||||
|
||||
:root {
|
||||
--swiper-theme-color: #007aff
|
||||
}
|
||||
|
||||
.swiper-container {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
z-index: 1
|
||||
}
|
||||
|
||||
.swiper-container-vertical>.swiper-wrapper {
|
||||
flex-direction: column
|
||||
}
|
||||
|
||||
.swiper-wrapper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
transition-property: transform;
|
||||
box-sizing: content-box
|
||||
}
|
||||
|
||||
.swiper-container-android .swiper-slide,
|
||||
.swiper-wrapper {
|
||||
transform: translate3d(0px, 0, 0)
|
||||
}
|
||||
|
||||
.swiper-container-multirow>.swiper-wrapper {
|
||||
flex-wrap: wrap
|
||||
}
|
||||
|
||||
.swiper-container-multirow-column>.swiper-wrapper {
|
||||
flex-wrap: wrap;
|
||||
flex-direction: column
|
||||
}
|
||||
|
||||
.swiper-container-free-mode>.swiper-wrapper {
|
||||
transition-timing-function: ease-out;
|
||||
margin: 0 auto
|
||||
}
|
||||
|
||||
.swiper-slide {
|
||||
flex-shrink: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
transition-property: transform
|
||||
}
|
||||
|
||||
.swiper-slide-invisible-blank {
|
||||
visibility: hidden
|
||||
}
|
||||
|
||||
.swiper-container-autoheight,
|
||||
.swiper-container-autoheight .swiper-slide {
|
||||
height: auto
|
||||
}
|
||||
|
||||
.swiper-container-autoheight .swiper-wrapper {
|
||||
align-items: flex-start;
|
||||
transition-property: transform, height
|
||||
}
|
||||
|
||||
.swiper-container-3d {
|
||||
perspective: 1200px
|
||||
}
|
||||
|
||||
.swiper-container-3d .swiper-cube-shadow,
|
||||
.swiper-container-3d .swiper-slide,
|
||||
.swiper-container-3d .swiper-slide-shadow-bottom,
|
||||
.swiper-container-3d .swiper-slide-shadow-left,
|
||||
.swiper-container-3d .swiper-slide-shadow-right,
|
||||
.swiper-container-3d .swiper-slide-shadow-top,
|
||||
.swiper-container-3d .swiper-wrapper {
|
||||
transform-style: preserve-3d
|
||||
}
|
||||
|
||||
.swiper-container-3d .swiper-slide-shadow-bottom,
|
||||
.swiper-container-3d .swiper-slide-shadow-left,
|
||||
.swiper-container-3d .swiper-slide-shadow-right,
|
||||
.swiper-container-3d .swiper-slide-shadow-top {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: none;
|
||||
z-index: 10
|
||||
}
|
||||
|
||||
.swiper-container-3d .swiper-slide-shadow-left {
|
||||
background-image: linear-gradient(to left, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0))
|
||||
}
|
||||
|
||||
.swiper-container-3d .swiper-slide-shadow-right {
|
||||
background-image: linear-gradient(to right, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0))
|
||||
}
|
||||
|
||||
.swiper-container-3d .swiper-slide-shadow-top {
|
||||
background-image: linear-gradient(to top, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0))
|
||||
}
|
||||
|
||||
.swiper-container-3d .swiper-slide-shadow-bottom {
|
||||
background-image: linear-gradient(to bottom, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0))
|
||||
}
|
||||
|
||||
.swiper-container-css-mode>.swiper-wrapper {
|
||||
overflow: auto;
|
||||
scrollbar-width: none;
|
||||
-ms-overflow-style: none
|
||||
}
|
||||
|
||||
.swiper-container-css-mode>.swiper-wrapper::-webkit-scrollbar {
|
||||
display: none
|
||||
}
|
||||
|
||||
.swiper-container-css-mode>.swiper-wrapper>.swiper-slide {
|
||||
scroll-snap-align: start start
|
||||
}
|
||||
|
||||
.swiper-container-horizontal.swiper-container-css-mode>.swiper-wrapper {
|
||||
scroll-snap-type: x mandatory
|
||||
}
|
||||
|
||||
.swiper-container-vertical.swiper-container-css-mode>.swiper-wrapper {
|
||||
scroll-snap-type: y mandatory
|
||||
}
|
||||
|
||||
:root {
|
||||
--swiper-navigation-size: 44px
|
||||
}
|
||||
|
||||
.swiper-button-next,
|
||||
.swiper-button-prev {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: calc(var(--swiper-navigation-size)/ 44 * 27);
|
||||
height: var(--swiper-navigation-size);
|
||||
margin-top: calc(-1 * var(--swiper-navigation-size)/ 2);
|
||||
z-index: 10;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #fff;
|
||||
background: #CCCCCC;
|
||||
|
||||
}
|
||||
|
||||
.swiper-button-next.swiper-button-disabled,
|
||||
.swiper-button-prev.swiper-button-disabled {
|
||||
opacity: .35;
|
||||
cursor: auto;
|
||||
pointer-events: none
|
||||
}
|
||||
|
||||
.swiper-button-next:after,
|
||||
.swiper-button-prev:after {
|
||||
font-family: swiper-icons;
|
||||
font-size: var(--swiper-navigation-size);
|
||||
text-transform: none !important;
|
||||
letter-spacing: 0;
|
||||
text-transform: none;
|
||||
font-variant: initial;
|
||||
line-height: 1
|
||||
}
|
||||
|
||||
.swiper-button-prev,
|
||||
.swiper-container-rtl .swiper-button-next {
|
||||
left: 10px;
|
||||
right: auto
|
||||
}
|
||||
|
||||
.swiper-button-prev:after,
|
||||
.swiper-container-rtl .swiper-button-next:after {
|
||||
content: 'prev'
|
||||
}
|
||||
|
||||
.swiper-button-next,
|
||||
.swiper-container-rtl .swiper-button-prev {
|
||||
right: 10px;
|
||||
left: auto
|
||||
}
|
||||
|
||||
.swiper-button-next:after,
|
||||
.swiper-container-rtl .swiper-button-prev:after {
|
||||
content: 'next'
|
||||
}
|
||||
|
||||
.swiper-button-next.swiper-button-white,
|
||||
.swiper-button-prev.swiper-button-white {
|
||||
--swiper-navigation-color: #ffffff
|
||||
}
|
||||
|
||||
.swiper-button-next.swiper-button-black,
|
||||
.swiper-button-prev.swiper-button-black {
|
||||
--swiper-navigation-color: #000000
|
||||
}
|
||||
|
||||
.swiper-button-lock {
|
||||
display: none
|
||||
}
|
||||
|
||||
.swiper-pagination {
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
transition: .3s opacity;
|
||||
transform: translate3d(0, 0, 0);
|
||||
z-index: 10
|
||||
}
|
||||
|
||||
.swiper-pagination.swiper-pagination-hidden {
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
.swiper-container-horizontal>.swiper-pagination-bullets,
|
||||
.swiper-pagination-custom,
|
||||
.swiper-pagination-fraction {
|
||||
bottom: 10px;
|
||||
left: 0;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.swiper-pagination-bullets-dynamic {
|
||||
overflow: hidden;
|
||||
font-size: 0
|
||||
}
|
||||
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
|
||||
transform: scale(.33);
|
||||
position: relative
|
||||
}
|
||||
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {
|
||||
transform: scale(1)
|
||||
}
|
||||
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {
|
||||
transform: scale(1)
|
||||
}
|
||||
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {
|
||||
transform: scale(.66)
|
||||
}
|
||||
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {
|
||||
transform: scale(.33)
|
||||
}
|
||||
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {
|
||||
transform: scale(.66)
|
||||
}
|
||||
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {
|
||||
transform: scale(.33)
|
||||
}
|
||||
|
||||
.swiper-pagination-bullet {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
display: inline-block;
|
||||
border-radius: 100%;
|
||||
background: #000;
|
||||
opacity: .2
|
||||
}
|
||||
|
||||
button.swiper-pagination-bullet {
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-shadow: none;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none
|
||||
}
|
||||
|
||||
.swiper-pagination-clickable .swiper-pagination-bullet {
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
.swiper-pagination-bullet-active {
|
||||
opacity: 1;
|
||||
background: var(--swiper-pagination-color, var(--swiper-theme-color))
|
||||
}
|
||||
|
||||
.swiper-container-vertical>.swiper-pagination-bullets {
|
||||
right: 10px;
|
||||
top: 50%;
|
||||
transform: translate3d(0px, -50%, 0)
|
||||
}
|
||||
|
||||
.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet {
|
||||
margin: 6px 0;
|
||||
display: block
|
||||
}
|
||||
|
||||
.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 8px
|
||||
}
|
||||
|
||||
.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
|
||||
display: inline-block;
|
||||
transition: .2s transform, .2s top
|
||||
}
|
||||
|
||||
.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet {
|
||||
margin: 0 4px
|
||||
}
|
||||
|
||||
.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
white-space: nowrap
|
||||
}
|
||||
|
||||
.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
|
||||
transition: .2s transform, .2s left
|
||||
}
|
||||
|
||||
.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
|
||||
transition: .2s transform, .2s right
|
||||
}
|
||||
|
||||
.swiper-pagination-progressbar {
|
||||
background: rgba(0, 0, 0, .25);
|
||||
position: absolute
|
||||
}
|
||||
|
||||
.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
|
||||
background: var(--swiper-pagination-color, var(--swiper-theme-color));
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
transform: scale(0);
|
||||
transform-origin: left top
|
||||
}
|
||||
|
||||
.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
|
||||
transform-origin: right top
|
||||
}
|
||||
|
||||
.swiper-container-horizontal>.swiper-pagination-progressbar,
|
||||
.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {
|
||||
width: 100%;
|
||||
height: 4px;
|
||||
left: 0;
|
||||
top: 0
|
||||
}
|
||||
|
||||
.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,
|
||||
.swiper-container-vertical>.swiper-pagination-progressbar {
|
||||
width: 4px;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0
|
||||
}
|
||||
|
||||
.swiper-pagination-white {
|
||||
--swiper-pagination-color: #ffffff
|
||||
}
|
||||
|
||||
.swiper-pagination-black {
|
||||
--swiper-pagination-color: #000000
|
||||
}
|
||||
|
||||
.swiper-pagination-lock {
|
||||
display: none
|
||||
}
|
||||
|
||||
.swiper-scrollbar {
|
||||
border-radius: 10px;
|
||||
position: relative;
|
||||
-ms-touch-action: none;
|
||||
background: rgba(0, 0, 0, .1)
|
||||
}
|
||||
|
||||
.swiper-container-horizontal>.swiper-scrollbar {
|
||||
position: absolute;
|
||||
left: 1%;
|
||||
bottom: 3px;
|
||||
z-index: 50;
|
||||
height: 5px;
|
||||
width: 98%
|
||||
}
|
||||
|
||||
.swiper-container-vertical>.swiper-scrollbar {
|
||||
position: absolute;
|
||||
right: 3px;
|
||||
top: 1%;
|
||||
z-index: 50;
|
||||
width: 5px;
|
||||
height: 98%
|
||||
}
|
||||
|
||||
.swiper-scrollbar-drag {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
background: rgba(0, 0, 0, .5);
|
||||
border-radius: 10px;
|
||||
left: 0;
|
||||
top: 0
|
||||
}
|
||||
|
||||
.swiper-scrollbar-cursor-drag {
|
||||
cursor: move
|
||||
}
|
||||
|
||||
.swiper-scrollbar-lock {
|
||||
display: none
|
||||
}
|
||||
|
||||
.swiper-zoom-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center
|
||||
}
|
||||
|
||||
.swiper-zoom-container>canvas,
|
||||
.swiper-zoom-container>img,
|
||||
.swiper-zoom-container>svg {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
object-fit: contain
|
||||
}
|
||||
|
||||
.swiper-slide-zoomed {
|
||||
cursor: move
|
||||
}
|
||||
|
||||
.swiper-lazy-preloader {
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -21px;
|
||||
margin-top: -21px;
|
||||
z-index: 10;
|
||||
transform-origin: 50%;
|
||||
animation: swiper-preloader-spin 1s infinite linear;
|
||||
box-sizing: border-box;
|
||||
border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
|
||||
border-radius: 50%;
|
||||
border-top-color: transparent
|
||||
}
|
||||
|
||||
.swiper-lazy-preloader-white {
|
||||
--swiper-preloader-color: #fff
|
||||
}
|
||||
|
||||
.swiper-lazy-preloader-black {
|
||||
--swiper-preloader-color: #000
|
||||
}
|
||||
|
||||
@keyframes swiper-preloader-spin {
|
||||
100% {
|
||||
transform: rotate(360deg)
|
||||
}
|
||||
}
|
||||
|
||||
.swiper-container .swiper-notification {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
pointer-events: none;
|
||||
opacity: 0;
|
||||
z-index: -1000
|
||||
}
|
||||
|
||||
.swiper-container-fade.swiper-container-free-mode .swiper-slide {
|
||||
transition-timing-function: ease-out
|
||||
}
|
||||
|
||||
.swiper-container-fade .swiper-slide {
|
||||
pointer-events: none;
|
||||
transition-property: opacity
|
||||
}
|
||||
|
||||
.swiper-container-fade .swiper-slide .swiper-slide {
|
||||
pointer-events: none
|
||||
}
|
||||
|
||||
.swiper-container-fade .swiper-slide-active,
|
||||
.swiper-container-fade .swiper-slide-active .swiper-slide-active {
|
||||
pointer-events: auto
|
||||
}
|
||||
|
||||
.swiper-container-cube {
|
||||
overflow: visible
|
||||
}
|
||||
|
||||
.swiper-container-cube .swiper-slide {
|
||||
pointer-events: none;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
z-index: 1;
|
||||
visibility: hidden;
|
||||
transform-origin: 0 0;
|
||||
width: 100%;
|
||||
height: 100%
|
||||
}
|
||||
|
||||
.swiper-container-cube .swiper-slide .swiper-slide {
|
||||
pointer-events: none
|
||||
}
|
||||
|
||||
.swiper-container-cube.swiper-container-rtl .swiper-slide {
|
||||
transform-origin: 100% 0
|
||||
}
|
||||
|
||||
.swiper-container-cube .swiper-slide-active,
|
||||
.swiper-container-cube .swiper-slide-active .swiper-slide-active {
|
||||
pointer-events: auto
|
||||
}
|
||||
|
||||
.swiper-container-cube .swiper-slide-active,
|
||||
.swiper-container-cube .swiper-slide-next,
|
||||
.swiper-container-cube .swiper-slide-next+.swiper-slide,
|
||||
.swiper-container-cube .swiper-slide-prev {
|
||||
pointer-events: auto;
|
||||
visibility: visible
|
||||
}
|
||||
|
||||
.swiper-container-cube .swiper-slide-shadow-bottom,
|
||||
.swiper-container-cube .swiper-slide-shadow-left,
|
||||
.swiper-container-cube .swiper-slide-shadow-right,
|
||||
.swiper-container-cube .swiper-slide-shadow-top {
|
||||
z-index: 0;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden
|
||||
}
|
||||
|
||||
.swiper-container-cube .swiper-cube-shadow {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #000;
|
||||
opacity: .6;
|
||||
-webkit-filter: blur(50px);
|
||||
filter: blur(50px);
|
||||
z-index: 0
|
||||
}
|
||||
|
||||
.swiper-container-flip {
|
||||
overflow: visible
|
||||
}
|
||||
|
||||
.swiper-container-flip .swiper-slide {
|
||||
pointer-events: none;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
z-index: 1
|
||||
}
|
||||
|
||||
.swiper-container-flip .swiper-slide .swiper-slide {
|
||||
pointer-events: none
|
||||
}
|
||||
|
||||
.swiper-container-flip .swiper-slide-active,
|
||||
.swiper-container-flip .swiper-slide-active .swiper-slide-active {
|
||||
pointer-events: auto
|
||||
}
|
||||
|
||||
.swiper-container-flip .swiper-slide-shadow-bottom,
|
||||
.swiper-container-flip .swiper-slide-shadow-left,
|
||||
.swiper-container-flip .swiper-slide-shadow-right,
|
||||
.swiper-container-flip .swiper-slide-shadow-top {
|
||||
z-index: 0;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden
|
||||
}
|
After Width: | Height: | Size: 957 B |
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 957 B |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 420 KiB |
After Width: | Height: | Size: 796 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 583 KiB |
After Width: | Height: | Size: 438 KiB |
After Width: | Height: | Size: 473 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 338 B |
After Width: | Height: | Size: 388 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 28 KiB |
|
@ -0,0 +1,28 @@
|
|||
var act = {
|
||||
baseUrl: "https://rd.ydool.org",
|
||||
streetId: "",
|
||||
ajax: (url, type, data, func) => {
|
||||
$.ajax({
|
||||
"url": act.baseUrl + url,
|
||||
"type": type,
|
||||
"data": data,
|
||||
"dataType": "json",
|
||||
success: function (resp) {
|
||||
if (func) func(resp);
|
||||
}
|
||||
});
|
||||
},
|
||||
get: (url, func) => {
|
||||
act.ajax(url + "?streetId=" + act.streetId, "get", null, func);
|
||||
}
|
||||
}
|
||||
|
||||
act.streetId = window.location.href.split("streetId=")[1];
|
||||
$(function () {
|
||||
$("a").on("click", function (e) {
|
||||
var href = $(this).attr("href");
|
||||
e.preventDefault();
|
||||
href += "?streetId=" + act.streetId;
|
||||
window.location.href = href;
|
||||
});
|
||||
});
|
|
@ -0,0 +1,11 @@
|
|||
xun();
|
||||
function xun(){
|
||||
if($('.xun').length==0){
|
||||
$('.top img').addClass('xun');
|
||||
}else{
|
||||
$('.top img').removeClass('xun');
|
||||
}
|
||||
}
|
||||
setInterval(() => {
|
||||
xun()
|
||||
}, 3000);
|
|
@ -0,0 +1,29 @@
|
|||
// JavaScript Document
|
||||
(function($){
|
||||
$.fn.extend({
|
||||
"slideUp":function(h,value){
|
||||
var docthis = this;
|
||||
value=$.extend({
|
||||
"time":5000,
|
||||
"movetime":1000
|
||||
},value)
|
||||
function autoani(){
|
||||
$("div:first",docthis).animate({"margin-top":-h},value.movetime,function(){
|
||||
$(this).css("margin-top",0).appendTo(".box");
|
||||
})
|
||||
}
|
||||
var anifun = setInterval(autoani,value.time);
|
||||
|
||||
$(docthis).children("div").hover(function(){
|
||||
clearInterval(anifun);
|
||||
},function(){
|
||||
if($('.zhe').length==0){
|
||||
anifun = setInterval(autoani,value.time);
|
||||
}
|
||||
})
|
||||
$('.dise').click(function(){
|
||||
anifun = setInterval(autoani,value.time);
|
||||
})
|
||||
}
|
||||
})
|
||||
})(jQuery)
|
|
@ -0,0 +1,159 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/db/perform/analyze", function (resp) {
|
||||
var data = resp.data.countList;
|
||||
option = {
|
||||
animation: true,
|
||||
grid: {
|
||||
top: "15%",
|
||||
bottom: 40,
|
||||
right: 0,
|
||||
left: 40
|
||||
},
|
||||
xAxis: {
|
||||
data: resp.data.monthList,
|
||||
axisLine: {
|
||||
show: false //隐藏X轴轴线
|
||||
},
|
||||
axisTick: {
|
||||
show: false //隐藏X轴轴线
|
||||
},
|
||||
splitLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: "rgba(77, 128, 254, 0.2)",
|
||||
width: 2
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
show: true,
|
||||
margin: 14,
|
||||
interval: 0,
|
||||
fontSize: 14,
|
||||
textStyle: {
|
||||
color: "#65D5FF" //X轴文字颜色
|
||||
}
|
||||
}
|
||||
},
|
||||
yAxis: [
|
||||
{
|
||||
type: "value",
|
||||
gridIndex: 0,
|
||||
// splitNumber: 4,
|
||||
splitLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: "rgba(77, 128, 254, 0.2)",
|
||||
width: 2
|
||||
}
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: "rgba(77, 128, 254, 0.2)"
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
show: true,
|
||||
margin: 14,
|
||||
fontSize: 14,
|
||||
textStyle: {
|
||||
color: "#65D5FF"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: "设备在线率",
|
||||
type: "bar",
|
||||
barWidth: 16,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{
|
||||
offset: 0,
|
||||
color: "rgba(146, 225, 255, 1)"
|
||||
},
|
||||
{
|
||||
offset: 1,
|
||||
color: "rgba(0, 151, 251, 1)"
|
||||
}
|
||||
])
|
||||
}
|
||||
},
|
||||
data: data,
|
||||
z: 10,
|
||||
zlevel: 0
|
||||
},
|
||||
{
|
||||
// 分隔
|
||||
type: "pictorialBar",
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: "#0F375F"
|
||||
}
|
||||
},
|
||||
symbolRepeat: "fixed",
|
||||
symbolMargin: 6,
|
||||
symbol: "rect",
|
||||
symbolClip: true,
|
||||
symbolSize: [18, 2],
|
||||
symbolPosition: "start",
|
||||
symbolOffset: [1, 1],
|
||||
data: data,
|
||||
width: 2,
|
||||
z: 0,
|
||||
zlevel: 1
|
||||
},
|
||||
{
|
||||
name: "外框",
|
||||
type: "bar",
|
||||
barGap: "-110%", // 设置外框粗细
|
||||
data: [100, 100, 100, 100, 100, 100, 100],
|
||||
barWidth: 16,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: "transparent", // 填充色
|
||||
// barBorderRadius: 0, //圆角半径
|
||||
label: {
|
||||
// 标签显示位置
|
||||
show: false,
|
||||
position: "top" // insideTop 或者横向的 insideLeft
|
||||
}
|
||||
}
|
||||
},
|
||||
z: 0
|
||||
},
|
||||
{
|
||||
name: "背影",
|
||||
type: "line",
|
||||
smooth: true, //平滑曲线显示
|
||||
showAllSymbol: false, //显示所有图形。
|
||||
symbolSize: 0,
|
||||
lineStyle: {
|
||||
width: 0
|
||||
},
|
||||
areaStyle: {
|
||||
color: "rgba(0, 151, 251, 0.1)"
|
||||
},
|
||||
data: data,
|
||||
z: 5
|
||||
}
|
||||
],
|
||||
dataZoom: [
|
||||
{
|
||||
type: "slider",
|
||||
show: false,
|
||||
xAxisIndex: [0],
|
||||
endValue: 11,
|
||||
startValue: 0
|
||||
}
|
||||
]
|
||||
}
|
||||
var myChart = echarts.init(document.getElementById('page1_1'));
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,205 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/db/supervise_thing/region/count", function (resp) {
|
||||
let categoryData = resp.data.nameList;
|
||||
let partdata = resp.data.nameList.slice(0, 5);
|
||||
let chartdata = resp.data.countList;
|
||||
let numdata = resp.data.countList.slice(0, 5);
|
||||
let itemcolor = {
|
||||
type: 'linear',
|
||||
colorStops: [
|
||||
{
|
||||
offset: 0,
|
||||
color: 'rgba(6, 120, 157,1)',
|
||||
},
|
||||
{
|
||||
offset: 0.5,
|
||||
color: 'rgba(6, 120, 157,0.2)',
|
||||
},
|
||||
{
|
||||
offset: 1,
|
||||
color: 'rgba(6, 120, 157,1)',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
myoption = {
|
||||
textStyle: {
|
||||
color: '#c0c3cd',
|
||||
fontSize: 14,
|
||||
},
|
||||
toolbox: {
|
||||
show: false,
|
||||
feature: {
|
||||
saveAsImage: {
|
||||
backgroundColor: '#031245',
|
||||
},
|
||||
restore: {},
|
||||
},
|
||||
iconStyle: {
|
||||
borderColor: '#c0c3cd',
|
||||
},
|
||||
},
|
||||
legend: {
|
||||
top: 10,
|
||||
itemWidth: 8,
|
||||
itemHeight: 8,
|
||||
icon: 'circle',
|
||||
left: 'center',
|
||||
padding: 0,
|
||||
textStyle: {
|
||||
color: '#c0c3cd',
|
||||
fontSize: 14,
|
||||
padding: [2, 0, 0, 0],
|
||||
},
|
||||
},
|
||||
color: ['#00D7E9', 'rgba(0, 215, 233, 0.9)'],
|
||||
grid: {
|
||||
left: 30,
|
||||
right: 0,
|
||||
bottom: 20,
|
||||
top: 40,
|
||||
},
|
||||
xAxis: {
|
||||
nameTextStyle: {
|
||||
color: '#c0c3cd',
|
||||
padding: [0, 0, -10, 0],
|
||||
fontSize: 14,
|
||||
},
|
||||
axisLabel: {
|
||||
color: '#c0c3cd',
|
||||
fontSize: 14,
|
||||
interval: 0,
|
||||
},
|
||||
axisTick: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: '#384267',
|
||||
width: 1,
|
||||
},
|
||||
},
|
||||
splitLine: {
|
||||
show: false,
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#335971',
|
||||
},
|
||||
show: true,
|
||||
},
|
||||
data: partdata,
|
||||
type: 'category',
|
||||
},
|
||||
yAxis: {
|
||||
nameTextStyle: {
|
||||
color: '#c0c3cd',
|
||||
padding: [0, 0, -10, 0],
|
||||
fontSize: 14,
|
||||
},
|
||||
axisLabel: {
|
||||
color: '#c0c3cd',
|
||||
fontSize: 14,
|
||||
},
|
||||
axisTick: {
|
||||
lineStyle: {
|
||||
color: '#668092',
|
||||
width: 1,
|
||||
},
|
||||
show: true,
|
||||
},
|
||||
splitLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: '#335971',
|
||||
// "type": "dashed"
|
||||
},
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#668092',
|
||||
width: 1,
|
||||
// "type": "dashed"
|
||||
},
|
||||
show: true,
|
||||
},
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: numdata,
|
||||
type: 'bar',
|
||||
barMaxWidth: 'auto',
|
||||
barWidth: 20,
|
||||
itemStyle: {
|
||||
color: {
|
||||
x: 0,
|
||||
y: 1,
|
||||
x2: 0,
|
||||
y2: 0,
|
||||
type: 'linear',
|
||||
colorStops: [
|
||||
{
|
||||
offset: 0,
|
||||
color: '#00D7E9',
|
||||
},
|
||||
{
|
||||
offset: 1,
|
||||
color: 'rgba(0, 167, 233,0.3)',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
distance: 10,
|
||||
color: '#fff',
|
||||
},
|
||||
},
|
||||
{
|
||||
data: [1, 1, 1, 1, 1, 1],
|
||||
type: 'pictorialBar',
|
||||
barMaxWidth: '20',
|
||||
symbol: 'diamond',
|
||||
symbolOffset: [0, '50%'],
|
||||
symbolSize: [20, 10],
|
||||
},
|
||||
{
|
||||
data: numdata,
|
||||
type: 'pictorialBar',
|
||||
barMaxWidth: '20',
|
||||
|
||||
symbolPosition: 'end',
|
||||
symbol: 'diamond',
|
||||
symbolOffset: [0, '-50%'],
|
||||
symbolSize: [20, 12],
|
||||
zlevel: 2,
|
||||
},
|
||||
],
|
||||
tooltip: {
|
||||
show: true,
|
||||
formatter: '{b}:{c0}',
|
||||
},
|
||||
};
|
||||
|
||||
var num1 = 6;
|
||||
var num2 = 6;
|
||||
function han() {
|
||||
if (num1 > categoryData.length - 1) {
|
||||
num1 = 0;
|
||||
num2 = 0;
|
||||
}
|
||||
myoption.series[0].data.shift();
|
||||
myoption.series[0].data.push(chartdata[num2++]);
|
||||
|
||||
myoption.xAxis.data.shift();
|
||||
myoption.xAxis.data.push(categoryData[num1++]);
|
||||
|
||||
myChart.setOption(myoption);
|
||||
}
|
||||
interval = setInterval(function () {
|
||||
han()
|
||||
}, 3000);
|
||||
|
||||
var myChart = echarts.init(document.getElementById('page1_2'));
|
||||
myChart.setOption(myoption);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,77 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/db/perform/count", function (resp) {
|
||||
|
||||
let nameList = resp.data.nameList;
|
||||
let countList = resp.data.countList;
|
||||
option = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
show: false,
|
||||
axisPointer: { // 坐标轴指示器,坐标轴触发有效
|
||||
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
|
||||
},
|
||||
},
|
||||
legend: {
|
||||
show: false
|
||||
},
|
||||
grid: {
|
||||
top: 20,
|
||||
left: '15%',
|
||||
right: '8%',
|
||||
bottom: 0
|
||||
},
|
||||
xAxis: [{
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
type: 'value',
|
||||
show: false,
|
||||
}],
|
||||
yAxis: [{
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
axisLine: { //y轴
|
||||
show: false
|
||||
},
|
||||
type: 'category',
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
inverse: true,
|
||||
data: nameList,
|
||||
axisLabel: {
|
||||
color: '#A7D6F4',
|
||||
fontSize: 14,
|
||||
}
|
||||
}],
|
||||
series: [{
|
||||
name: '标准化',
|
||||
type: 'bar',
|
||||
barWidth: 12, // 柱子宽度
|
||||
label: {
|
||||
show: true,
|
||||
position: 'right', // 位置
|
||||
color: '#A7D6F4',
|
||||
fontSize: 14,
|
||||
distance: 15, // 距离
|
||||
formatter: '{c} 次' // 这里是数据展示的时候显示的数据
|
||||
}, // 柱子上方的数值
|
||||
itemStyle: {
|
||||
barBorderRadius: [0, 20, 20, 0], // 圆角(左上、右上、右下、左下)
|
||||
|
||||
color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
|
||||
offset: 0,
|
||||
color: '#51C5FD'
|
||||
}, {
|
||||
offset: 1,
|
||||
color: '#005BB1'
|
||||
}], false), // 渐变
|
||||
},
|
||||
data: countList
|
||||
},]
|
||||
};
|
||||
var myChart = echarts.init(document.getElementById('page1_3'));
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,99 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/db/supervise_thing/status_count", function (resp) {
|
||||
option = {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: "{b} : ({d}%)",
|
||||
extraCssText: 'z-index:2'
|
||||
},
|
||||
series: [{
|
||||
type: 'pie',
|
||||
radius: '68%',
|
||||
center: ['50%', '55%'],
|
||||
clockwise: false,
|
||||
data: [{
|
||||
value: resp.data.wenPercent,
|
||||
name: '问'
|
||||
}, {
|
||||
value: resp.data.pingPercent,
|
||||
name: '评'
|
||||
}, {
|
||||
value: resp.data.yiPercent,
|
||||
name: '议'
|
||||
}, {
|
||||
value: resp.data.duPercent,
|
||||
name: '督'
|
||||
}],
|
||||
label: {
|
||||
normal: {
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontSize: 14,
|
||||
}
|
||||
}
|
||||
},
|
||||
labelLine: {
|
||||
normal: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
itemStyle: {
|
||||
normal: {
|
||||
borderWidth: 2,
|
||||
borderColor: '#ffffff',
|
||||
},
|
||||
emphasis: {
|
||||
borderWidth: 0,
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}],
|
||||
color: [
|
||||
'#00acee',
|
||||
'#52cdd5',
|
||||
'#79d9f1',
|
||||
'#a7e7ff',
|
||||
'#c8efff'
|
||||
]
|
||||
};
|
||||
|
||||
var myChart = echarts.init(document.getElementById('page1_4'));
|
||||
myChart.setOption(option);
|
||||
|
||||
let index = 0;
|
||||
function fun() {
|
||||
var timer = setInterval(function () {
|
||||
myChart.dispatchAction({
|
||||
type: 'hideTip',
|
||||
seriesIndex: 0,
|
||||
dataIndex: index
|
||||
});
|
||||
// 显示提示框
|
||||
myChart.dispatchAction({
|
||||
type: 'showTip',
|
||||
seriesIndex: 0,
|
||||
dataIndex: index
|
||||
});
|
||||
// 取消高亮指定的数据图形
|
||||
myChart.dispatchAction({
|
||||
type: 'downplay',
|
||||
seriesIndex: 0,
|
||||
dataIndex: index == 0 ? 2 : index - 1
|
||||
});
|
||||
myChart.dispatchAction({
|
||||
type: 'highlight',
|
||||
seriesIndex: 0,
|
||||
dataIndex: index
|
||||
});
|
||||
index++;
|
||||
if (index > 4) {
|
||||
index = 0;
|
||||
}
|
||||
}, 2000)
|
||||
}
|
||||
|
||||
fun();
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,125 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/contact/count", function (resp) {
|
||||
var option = {
|
||||
series: [{
|
||||
type: 'liquidFill',
|
||||
radius: '60%',
|
||||
center: ['50%', '50%'],
|
||||
data: [0.5, 0.5, 0.5],
|
||||
backgroundStyle: {
|
||||
borderWidth: 1,
|
||||
color: 'rgb(255,0,255,0.1)'
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
formatter: resp.data + '个',
|
||||
textStyle: {
|
||||
fontSize: 20
|
||||
}
|
||||
}
|
||||
},
|
||||
outline: {
|
||||
show: false,
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "pie",
|
||||
"center": ["50%", "50%"],
|
||||
"radius": ["80%", "76%"],
|
||||
"hoverAnimation": false,
|
||||
"data": [{
|
||||
"name": "",
|
||||
"value": 500,
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5886f0'
|
||||
},
|
||||
emphasis: {
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5886f0'
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"value": 4,
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#ffffff',
|
||||
"normal": {
|
||||
"color": "#5886f0",
|
||||
"borderColor": "#5886f0",
|
||||
"borderWidth": 20,
|
||||
// borderRadius: '100%'
|
||||
},
|
||||
},
|
||||
label: {
|
||||
|
||||
borderRadius: '100%'
|
||||
},
|
||||
emphasis: {
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5886f0'
|
||||
},
|
||||
}
|
||||
|
||||
},
|
||||
{ // 解决圆点过大后续部分显示明显的问题
|
||||
"name": "",
|
||||
"value": 4,
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5886f0'
|
||||
},
|
||||
emphasis: {
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5886f0'
|
||||
},
|
||||
}
|
||||
},
|
||||
{ //画剩余的刻度圆环
|
||||
"name": "",
|
||||
"value": 0,
|
||||
itemStyle: {
|
||||
color: '#050038'
|
||||
},
|
||||
"label": {
|
||||
show: false
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
emphasis: {
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: 'rgba(255,255,255,0)'
|
||||
},
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
var myChart = echarts.init(document.getElementById('page2_1'));
|
||||
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,124 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/contact/activity/count", function (resp) {
|
||||
var option = {
|
||||
series: [{
|
||||
type: 'liquidFill',
|
||||
radius: '60%',
|
||||
center: ['50%', '50%'],
|
||||
data: [0.5, 0.5, 0.5],
|
||||
backgroundStyle: {
|
||||
borderWidth: 1,
|
||||
color: 'rgb(255,0,255,0.1)'
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
formatter: resp.data + '次',
|
||||
textStyle: {
|
||||
fontSize: 20
|
||||
}
|
||||
}
|
||||
},
|
||||
outline: {
|
||||
show: false,
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "pie",
|
||||
"center": ["50%", "50%"],
|
||||
"radius": ["80%", "76%"],
|
||||
"hoverAnimation": false,
|
||||
"data": [{
|
||||
"name": "",
|
||||
"value": 500,
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5886f0'
|
||||
},
|
||||
emphasis: {
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5886f0'
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"value": 4,
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#ffffff',
|
||||
"normal": {
|
||||
"color": "#5886f0",
|
||||
"borderColor": "#5886f0",
|
||||
"borderWidth": 20,
|
||||
// borderRadius: '100%'
|
||||
},
|
||||
},
|
||||
label: {
|
||||
|
||||
borderRadius: '100%'
|
||||
},
|
||||
emphasis: {
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5886f0'
|
||||
},
|
||||
}
|
||||
|
||||
},
|
||||
{ // 解决圆点过大后续部分显示明显的问题
|
||||
"name": "",
|
||||
"value": 4,
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5886f0'
|
||||
},
|
||||
emphasis: {
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5886f0'
|
||||
},
|
||||
}
|
||||
},
|
||||
{ //画剩余的刻度圆环
|
||||
"name": "",
|
||||
"value": 0,
|
||||
itemStyle: {
|
||||
color: '#050038'
|
||||
},
|
||||
"label": {
|
||||
show: false
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
emphasis: {
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
color: 'rgba(255,255,255,0)'
|
||||
},
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
var myChart = echarts.init(document.getElementById('page2_1_1'));
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,107 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/contact/activity/count/rank", function (resp) {
|
||||
let className = resp.data.nameList;
|
||||
let data = resp.data.countList;
|
||||
var colorList = ['#2473EF', '#33DDF8', '#2473EF', '#33DDF8', '#2473EF', '#33DDF8'];
|
||||
var defaultData = [100, 100, 100, 100, 100, 100];
|
||||
option = {
|
||||
grid: {
|
||||
left: '22%',
|
||||
right: '12%',
|
||||
bottom: 0,
|
||||
top: '10%',
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'none'
|
||||
},
|
||||
formatter: function (params) {
|
||||
return params[0].name + '<br/>' +
|
||||
"<span style='display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:rgba(36,207,233,0.9)'></span>" +
|
||||
// params[0].seriesName + ' : ' + Number((params[0].value.toFixed(4) / 10000).toFixed(2)).toLocaleString() + ' <br/>'
|
||||
params[0].seriesName + ' : ' + params[0].value + '次'
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
show: false,
|
||||
type: 'value'
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'category',
|
||||
inverse: true,
|
||||
axisLabel: {
|
||||
show: true,
|
||||
textStyle: {
|
||||
color: '#fff'
|
||||
},
|
||||
},
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
show: false
|
||||
},
|
||||
data: className
|
||||
}, {
|
||||
type: 'category',
|
||||
inverse: true,
|
||||
axisTick: 'none',
|
||||
axisLine: 'none',
|
||||
show: true,
|
||||
axisLabel: {
|
||||
textStyle: {
|
||||
color: '#ffffff',
|
||||
fontSize: '12'
|
||||
},
|
||||
formatter: function (value) {
|
||||
return value + ' 次';
|
||||
},
|
||||
},
|
||||
data: data
|
||||
}],
|
||||
series: [{
|
||||
name: '举办次数',
|
||||
type: 'bar',
|
||||
zlevel: 1,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
barBorderRadius: 13,
|
||||
// color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
|
||||
// offset: 0,
|
||||
// color: 'rgb(57,89,255,1)'
|
||||
// }, {
|
||||
// offset: 1,
|
||||
// color: 'rgb(46,200,207,1)'
|
||||
// }]),
|
||||
color: (params) => {
|
||||
return colorList[params.dataIndex]
|
||||
}
|
||||
},
|
||||
},
|
||||
barWidth: 10,
|
||||
data: data
|
||||
},
|
||||
{
|
||||
name: '背景',
|
||||
type: 'bar',
|
||||
barWidth: 10,
|
||||
barGap: '-100%',
|
||||
data: defaultData,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#1B375E',
|
||||
barBorderRadius: 0,
|
||||
}
|
||||
},
|
||||
},
|
||||
]
|
||||
};
|
||||
|
||||
var myChart = echarts.init(document.getElementById('page2_2'));
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,87 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/contact/activity/channel/count", function (resp) {
|
||||
|
||||
var channelArr = resp.data.channelArr;
|
||||
var countArr = resp.data.countArr;
|
||||
var objArr = new Array();
|
||||
channelArr.forEach((item, index) => {
|
||||
objArr.push({ "value": countArr[index], "name": item });
|
||||
});
|
||||
var color = ['#FFAA45', '#38FCBE', '#6844C6', '#164EB8', '#678198']
|
||||
option = {
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
right: 0,
|
||||
top: 'center',
|
||||
textStyle: {
|
||||
color: '#fff'
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
type: 'pie',
|
||||
radius: '80%',
|
||||
center: ['35%', '50%'],
|
||||
data: objArr,
|
||||
label: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
normal: {
|
||||
borderColor: '#10234B',
|
||||
borderWidth: '5',
|
||||
},
|
||||
},
|
||||
color: color,
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
var myChart = echarts.init(document.getElementById('page2_3'));
|
||||
myChart.setOption(option);
|
||||
|
||||
let index = 0;
|
||||
function fun() {
|
||||
var timer = setInterval(function () {
|
||||
myChart.dispatchAction({
|
||||
type: 'hideTip',
|
||||
seriesIndex: 0,
|
||||
dataIndex: index
|
||||
});
|
||||
// 显示提示框
|
||||
myChart.dispatchAction({
|
||||
type: 'showTip',
|
||||
seriesIndex: 0,
|
||||
dataIndex: index
|
||||
});
|
||||
// 取消高亮指定的数据图形
|
||||
myChart.dispatchAction({
|
||||
type: 'downplay',
|
||||
seriesIndex: 0,
|
||||
dataIndex: index == 0 ? 2 : index - 1
|
||||
});
|
||||
myChart.dispatchAction({
|
||||
type: 'highlight',
|
||||
seriesIndex: 0,
|
||||
dataIndex: index
|
||||
});
|
||||
index++;
|
||||
if (index > 5) {
|
||||
index = 0;
|
||||
}
|
||||
}, 2000)
|
||||
}
|
||||
|
||||
fun();
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,92 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/contact/activity/count/month", function (resp) {
|
||||
var monthList = resp.data.monthList;
|
||||
var countList = resp.data.countList;
|
||||
option = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
right: '3%',
|
||||
left: '8%',
|
||||
bottom: 30
|
||||
},
|
||||
xAxis: [{
|
||||
type: 'category',
|
||||
data: monthList,
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#FFFFFF'
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
margin: 10,
|
||||
color: '#e2e9ff',
|
||||
textStyle: {
|
||||
fontSize: 14
|
||||
},
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
}
|
||||
}],
|
||||
yAxis: [{
|
||||
axisLabel: {
|
||||
formatter: '{value}',
|
||||
color: '#e2e9ff',
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: 'rgba(0,186,255,.6)'
|
||||
}
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
color: 'rgba(255,255,255,0.12)'
|
||||
}
|
||||
}
|
||||
}],
|
||||
series: [{
|
||||
type: 'bar',
|
||||
data: countList,
|
||||
barWidth: '28px',
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||
offset: 0,
|
||||
color: 'rgba(0,244,255,1)' // 0% 处的颜色
|
||||
}, {
|
||||
offset: 1,
|
||||
color: 'rgba(0,77,167,1)' // 100% 处的颜色
|
||||
}], false),
|
||||
shadowColor: 'rgba(0,160,221,1)',
|
||||
shadowBlur: 4,
|
||||
}
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
show: true,
|
||||
lineHeight: 30,
|
||||
formatter: '{c}',
|
||||
position: 'top',
|
||||
textStyle: {
|
||||
color: '#00D6F9',
|
||||
fontSize: 14
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}]
|
||||
};
|
||||
|
||||
var myChart = echarts.init(document.getElementById('page2_4'));
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,220 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/contact/activity/month/analyze", function (resp) {
|
||||
var monthArr = resp.data.monthArr;
|
||||
var sameRateArr = resp.data.sameRateArr;
|
||||
var cycleRateArr = resp.data.cycleRateArr;
|
||||
// 统计百分比
|
||||
var data1 = cycleRateArr;
|
||||
var data2 = sameRateArr;
|
||||
var json = {
|
||||
chart0: {
|
||||
xcategory: monthArr,
|
||||
low: data1,
|
||||
lowLine: [],
|
||||
}
|
||||
};
|
||||
var json2 = {
|
||||
chart0: {
|
||||
xcategory: monthArr,
|
||||
low: data2,
|
||||
lowLine: [],
|
||||
}
|
||||
};
|
||||
var zrUtil = echarts.util;
|
||||
zrUtil.each(json.chart0.xcategory, function (item, index) {
|
||||
json.chart0.lowLine.push([{
|
||||
coord: [index, json.chart0.low[index]]
|
||||
}, {
|
||||
coord: [index + 1, json.chart0.low[index + 1]]
|
||||
}]);
|
||||
});
|
||||
zrUtil.each(json.chart0.xcategory, function (item, index) {
|
||||
json2.chart0.lowLine.push([{
|
||||
coord: [index, json2.chart0.low[index]]
|
||||
}, {
|
||||
coord: [index + 1, json2.chart0.low[index + 1]]
|
||||
}]);
|
||||
});
|
||||
|
||||
var option = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
lineStyle: {
|
||||
color: '#15ecf4'
|
||||
}
|
||||
},
|
||||
backgroundColor: 'rgba(0,0,0,.8)',
|
||||
extraCssText: 'box-shadow: 4px 4px 10px rgba(21, 250, 255,.6);',
|
||||
formatter: function (params) {
|
||||
var result = params[0].name + '<br>';
|
||||
params.forEach(function (item) {
|
||||
result += '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:' + item.color + '"></span>';
|
||||
// 判断设置增长还是降低
|
||||
if (parseFloat(item.data) >= 50) {
|
||||
result += item.seriesName + ": " + '<span class="growth">增长' + item.data + "%</span><br>"
|
||||
} else if (parseFloat(item.data) < 50) {
|
||||
result += item.seriesName + ": " + '<span class="reduce">降低' + item.data + "%</span><br>"
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
data: ['同比', '环比'],
|
||||
textStyle: {
|
||||
fontSize: 12,
|
||||
color: 'rgb(0,253,255,0.6)'
|
||||
},
|
||||
top: '5%',
|
||||
right: '5%'
|
||||
},
|
||||
grid: {
|
||||
bottom: 30,
|
||||
left: 50,
|
||||
right: 0,
|
||||
},
|
||||
xAxis: {
|
||||
axisLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: '#15faff',
|
||||
},
|
||||
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLabel: {
|
||||
show: true
|
||||
},
|
||||
data: ['1月', '2月', '3月', '4月', '5月', '6月'],
|
||||
},
|
||||
yAxis: {
|
||||
max: 100,
|
||||
splitNumber: 4,
|
||||
interval: 25,
|
||||
axisLine: {
|
||||
show: false,
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
type: 'dashed',
|
||||
color: '#4b4d64'
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
formatter: '{value} %',
|
||||
textStyle: { //改变刻度字体样式
|
||||
color: '#ffffff'
|
||||
}
|
||||
},
|
||||
},
|
||||
series: [{
|
||||
name: '环比',
|
||||
type: 'line',
|
||||
// smooth: true,
|
||||
symbol: 'circle',
|
||||
symbolSize: 10,
|
||||
areaStyle: {
|
||||
normal: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||
offset: 0,
|
||||
color: 'rgba(255, 204,1, .9)'
|
||||
}, {
|
||||
offset: 0.8,
|
||||
color: 'rgba(6, 8, 41,.1)'
|
||||
}], false),
|
||||
shadowColor: 'rgba(0, 0, 0, 0.1)',
|
||||
shadowBlur: 10
|
||||
}
|
||||
},
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#ffcb00'
|
||||
}
|
||||
},
|
||||
data: data1
|
||||
},
|
||||
{
|
||||
name: '环比',
|
||||
type: 'lines',
|
||||
coordinateSystem: 'cartesian2d',
|
||||
zlevel: 1,
|
||||
smooth: true,
|
||||
symbol: 'circle',
|
||||
effect: {
|
||||
show: true,
|
||||
smooth: true,
|
||||
period: 2,
|
||||
symbolSize: 8
|
||||
},
|
||||
lineStyle: {
|
||||
normal: {
|
||||
color: '#ffcb00',
|
||||
width: 0,
|
||||
opacity: 0,
|
||||
curveness: 0,
|
||||
}
|
||||
},
|
||||
data: json.chart0.lowLine
|
||||
},
|
||||
{
|
||||
name: '同比',
|
||||
type: 'line',
|
||||
// smooth: true,
|
||||
symbol: 'circle',
|
||||
symbolSize: 10,
|
||||
areaStyle: {
|
||||
normal: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||
offset: 0,
|
||||
color: 'rgba(21, 250, 255,.9)'
|
||||
}, {
|
||||
offset: 0.8,
|
||||
color: 'rgba(6, 8, 41,.1)'
|
||||
}], false),
|
||||
shadowColor: 'rgba(0, 0, 0, 0.1)',
|
||||
shadowBlur: 10
|
||||
}
|
||||
},
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#15faff'
|
||||
}
|
||||
},
|
||||
data: data2
|
||||
},
|
||||
{
|
||||
name: '同比',
|
||||
type: 'lines',
|
||||
coordinateSystem: 'cartesian2d',
|
||||
zlevel: 1,
|
||||
smooth: true,
|
||||
symbol: 'circle',
|
||||
effect: {
|
||||
show: true,
|
||||
smooth: true,
|
||||
period: 2,
|
||||
symbolSize: 8
|
||||
},
|
||||
lineStyle: {
|
||||
normal: {
|
||||
color: '#15faff',
|
||||
width: 0,
|
||||
opacity: 0,
|
||||
curveness: 0,
|
||||
}
|
||||
},
|
||||
data: json2.chart0.lowLine
|
||||
},
|
||||
]
|
||||
};
|
||||
|
||||
var myChart = echarts.init(document.getElementById('page2_5'));
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,93 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/contact/activity/people/month/analyze", function (resp) {
|
||||
var monthArr = resp.data.monthArr;
|
||||
var countArr = resp.data.countArr;
|
||||
option = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
right: '3%',
|
||||
left: '9%',
|
||||
bottom: '15%'
|
||||
},
|
||||
xAxis: [{
|
||||
type: 'category',
|
||||
data: monthArr,
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#FFFFFF'
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
margin: 10,
|
||||
color: '#e2e9ff',
|
||||
textStyle: {
|
||||
fontSize: 14
|
||||
},
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
}
|
||||
}],
|
||||
yAxis: [{
|
||||
axisLabel: {
|
||||
formatter: '{value}',
|
||||
color: '#e2e9ff',
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: 'rgba(0,186,255,.6)'
|
||||
}
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
color: 'rgba(255,255,255,0.12)'
|
||||
}
|
||||
}
|
||||
}],
|
||||
series: [{
|
||||
type: 'bar',
|
||||
data: countArr,
|
||||
barWidth: '14px',
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||
offset: 0,
|
||||
color: 'rgba(0,162,255,1)' // 0% 处的颜色
|
||||
}, {
|
||||
offset: 1,
|
||||
color: 'rgba(16,70,174,1)' // 100% 处的颜色
|
||||
}], false),
|
||||
shadowBlur: 4,
|
||||
//柱形图圆角,初始化效果
|
||||
barBorderRadius: [15, 15, 0, 0]
|
||||
}
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
show: true,
|
||||
lineHeight: 30,
|
||||
formatter: '{c}',
|
||||
position: 'top',
|
||||
textStyle: {
|
||||
color: '#00D6F9',
|
||||
fontSize: 14
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}]
|
||||
};
|
||||
|
||||
var myChart = echarts.init(document.getElementById('page2_6'));
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,244 @@
|
|||
(function () {
|
||||
|
||||
act.get("/api/statistics/voter/analyze", function (resp) {
|
||||
var nameList = resp.data.nameList;
|
||||
var leftIndex = nameList.length % 2 == 0 ? nameList.length / 2 : nameList.length / 2 + 1;
|
||||
|
||||
var leftNameList = nameList.slice(0, leftIndex);
|
||||
var rightNameList = nameList.slice(leftIndex, nameList.length);
|
||||
|
||||
var countList = resp.data.countList;
|
||||
var leftCountList = countList.slice(0, leftIndex);
|
||||
var rightCountList = countList.slice(leftIndex, countList.length);
|
||||
|
||||
var percentList = resp.data.percentList;
|
||||
var leftPercentList = percentList.slice(0, leftIndex);
|
||||
var rightPercentList = percentList.slice(leftIndex, percentList.length);
|
||||
|
||||
var leftFullPercentList = new Array();
|
||||
var rightFullPercentList = new Array();
|
||||
leftPercentList.forEach(() => {
|
||||
leftFullPercentList.push("100");
|
||||
});
|
||||
rightPercentList.forEach(() => {
|
||||
rightFullPercentList.push("100");
|
||||
});
|
||||
|
||||
var option = {
|
||||
grid: [
|
||||
{
|
||||
//左侧的柱状图grid
|
||||
width: "46%",
|
||||
left: 0,
|
||||
top: '8%',
|
||||
right: '5%',
|
||||
bottom: 0
|
||||
},
|
||||
{
|
||||
//右侧的柱状图grid
|
||||
width: "46%",
|
||||
left: '54%',
|
||||
top: '8%',
|
||||
right: 0,
|
||||
bottom: 0
|
||||
}
|
||||
],
|
||||
xAxis: [
|
||||
{
|
||||
//左侧柱状图的X轴
|
||||
gridIndex: 0,//x 轴所在的 grid 的索引
|
||||
show: false
|
||||
},
|
||||
{
|
||||
//右侧柱状图的X轴
|
||||
gridIndex: 1,//x 轴所在的 grid 的索引
|
||||
show: false
|
||||
}],
|
||||
yAxis: [
|
||||
{
|
||||
//左侧柱状图的Y轴
|
||||
gridIndex: 0,//y轴所在的 grid 的索引
|
||||
splitLine: 'none',
|
||||
axisTick: 'none',
|
||||
axisLine: 'none',
|
||||
axisLabel: {
|
||||
verticalAlign: 'bottom',
|
||||
align: 'left',
|
||||
padding: [0, 0, 8, 10],
|
||||
textStyle: {
|
||||
color: '#befbff',
|
||||
fontSize: '14',
|
||||
}
|
||||
},
|
||||
data: leftNameList,
|
||||
inverse: true,
|
||||
},
|
||||
{
|
||||
//左侧柱状图的Y轴
|
||||
gridIndex: 0,//y轴所在的 grid 的索引
|
||||
splitLine: 'none',
|
||||
axisTick: 'none',
|
||||
axisLine: 'none',
|
||||
data: leftCountList,
|
||||
inverse: true,
|
||||
axisLabel: {
|
||||
show: true,
|
||||
verticalAlign: 'bottom',
|
||||
align: 'right',
|
||||
padding: [0, 16, 8, 0],
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontSize: '14',
|
||||
},
|
||||
formatter: function (value) {
|
||||
return '{x|' + value + '} {y|' + "次}"
|
||||
},
|
||||
rich: {
|
||||
y: {
|
||||
color: '#befbff',
|
||||
fontSize: 14
|
||||
},
|
||||
x: {
|
||||
color: '#f6cf42',
|
||||
fontSize: 14
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
//左侧柱状图的Y轴
|
||||
gridIndex: 0,//y轴所在的 grid 的索引
|
||||
splitLine: 'none',
|
||||
axisTick: 'none',
|
||||
axisLine: 'none',
|
||||
data: []
|
||||
},
|
||||
|
||||
{
|
||||
//右侧柱状图的Y轴
|
||||
gridIndex: 1,//y轴所在的 grid 的索引
|
||||
splitLine: 'none',
|
||||
axisTick: 'none',
|
||||
axisLine: 'none',
|
||||
axisLabel: {
|
||||
verticalAlign: 'bottom',
|
||||
align: 'left',
|
||||
padding: [0, 0, 8, 10],
|
||||
textStyle: {
|
||||
color: '#befbff',
|
||||
fontSize: '14',
|
||||
}
|
||||
},
|
||||
data: rightNameList,
|
||||
inverse: true
|
||||
},
|
||||
{
|
||||
//右侧柱状图的Y轴
|
||||
gridIndex: 1,//y轴所在的 grid 的索引
|
||||
splitLine: 'none',
|
||||
axisTick: 'none',
|
||||
axisLine: 'none',
|
||||
data: rightCountList,
|
||||
inverse: true,
|
||||
axisLabel: {
|
||||
show: true,
|
||||
verticalAlign: 'bottom',
|
||||
align: 'right',
|
||||
padding: [0, 16, 8, 0],
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontSize: '14',
|
||||
},
|
||||
formatter: function (value) {
|
||||
return '{x|' + value + '} {y|' + "次}"
|
||||
},
|
||||
rich: {
|
||||
y: {
|
||||
color: '#befbff',
|
||||
fontSize: 14
|
||||
},
|
||||
x: {
|
||||
color: '#f6cf42',
|
||||
fontSize: 14
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
//右侧柱状图的Y轴
|
||||
gridIndex: 1,//y轴所在的 grid 的索引
|
||||
splitLine: 'none',
|
||||
axisTick: 'none',
|
||||
axisLine: 'none',
|
||||
data: []
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: '值',
|
||||
type: 'bar',
|
||||
xAxisIndex: 0,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
|
||||
yAxisIndex: 0,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。
|
||||
data: leftPercentList,
|
||||
barWidth: 10,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#0BBFCA',
|
||||
barBorderRadius: 6,
|
||||
}
|
||||
},
|
||||
z: 2
|
||||
},
|
||||
{
|
||||
name: '外框',
|
||||
type: 'bar',
|
||||
xAxisIndex: 0,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
|
||||
yAxisIndex: 2,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。
|
||||
barGap: '-100%',
|
||||
data: leftFullPercentList,
|
||||
barWidth: 10,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#2d5271',
|
||||
barBorderRadius: 6,
|
||||
}
|
||||
},
|
||||
z: 0
|
||||
},
|
||||
{
|
||||
name: '值',
|
||||
type: 'bar',
|
||||
xAxisIndex: 1,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
|
||||
yAxisIndex: 3,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。
|
||||
data: rightPercentList,
|
||||
barWidth: 10,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#0BBFCA',
|
||||
barBorderRadius: 6,
|
||||
}
|
||||
},
|
||||
z: 2
|
||||
},
|
||||
{
|
||||
name: '外框',
|
||||
type: 'bar',
|
||||
xAxisIndex: 1,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
|
||||
yAxisIndex: 5,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。
|
||||
barGap: '-100%',
|
||||
data: rightFullPercentList,
|
||||
barWidth: 10,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#2d5271',
|
||||
barBorderRadius: 6,
|
||||
}
|
||||
},
|
||||
z: 0
|
||||
}
|
||||
]
|
||||
};
|
||||
var myChart = echarts.init(document.getElementById('page3_1'));
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,110 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/voter/month/count", function (resp) {
|
||||
var countList = resp.data.countList;
|
||||
var monthList = resp.data.monthList;
|
||||
|
||||
option = {
|
||||
color: ["#63caff", "#3608FE"],
|
||||
grid: {
|
||||
left: 36,
|
||||
right: 0,
|
||||
bottom: 30,
|
||||
top: 40
|
||||
},
|
||||
xAxis: {
|
||||
axisLabel: {
|
||||
color: "#c0c3cd",
|
||||
fontSize: 14,
|
||||
interval: 0
|
||||
},
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: "#384267",
|
||||
width: 1,
|
||||
type: "dashed"
|
||||
},
|
||||
show: true
|
||||
},
|
||||
data: monthList,
|
||||
type: "category"
|
||||
},
|
||||
yAxis: {
|
||||
axisLabel: {
|
||||
color: "#c0c3cd",
|
||||
fontSize: 14
|
||||
},
|
||||
|
||||
splitLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: "#384267",
|
||||
type: "dashed"
|
||||
}
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: "#384267",
|
||||
width: 1,
|
||||
type: "dashed"
|
||||
},
|
||||
show: true
|
||||
},
|
||||
name: ""
|
||||
},
|
||||
series: [{
|
||||
data: countList,
|
||||
type: "bar",
|
||||
barWidth: 30,
|
||||
itemStyle: {
|
||||
color: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
x2: 0,
|
||||
y2: 1,
|
||||
type: "linear",
|
||||
global: false,
|
||||
colorStops: [{
|
||||
offset: 0,
|
||||
color: "#3A1BFD"
|
||||
}, {
|
||||
offset: 1,
|
||||
color: "#3BEFFD"
|
||||
}]
|
||||
}
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
position: "top",
|
||||
distance: 10,
|
||||
color: "#fff"
|
||||
}
|
||||
}, {
|
||||
data: [1, 1, 1, 1, 1, 1, 1, 1],
|
||||
type: "pictorialBar",
|
||||
barMaxWidth: "20",
|
||||
symbol: "diamond",
|
||||
symbolOffset: [0, "50%"],
|
||||
symbolSize: [30, 15]
|
||||
}, {
|
||||
data: countList,
|
||||
type: "pictorialBar",
|
||||
barMaxWidth: "20",
|
||||
symbolPosition: "end",
|
||||
symbol: "diamond",
|
||||
symbolOffset: [0, "-50%"],
|
||||
symbolSize: [30, 12],
|
||||
zlevel: 2
|
||||
}],
|
||||
tooltip: {
|
||||
trigger: "item",
|
||||
show: true
|
||||
}
|
||||
}
|
||||
|
||||
var myChart = echarts.init(document.getElementById('page3_2'));
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|
|
@ -0,0 +1,170 @@
|
|||
(function () {
|
||||
act.get("/api/statistics/voter/people_condition/category", function (resp) {
|
||||
var categoryArr = resp.data.categoryArr;
|
||||
var countArr = resp.data.countArr;
|
||||
var objArr = new Array();
|
||||
categoryArr.forEach((item, index) => {
|
||||
objArr.push({ "value": countArr[index], "name": item });
|
||||
});
|
||||
|
||||
option = {
|
||||
color: ["#EAEA26", "#906BF9", "#01E17E", "#3DD1F9", "#FE5656", "#164BCD", "#3434B0", "#FFAD05"],
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: "{b} : {c} ({d}%)"
|
||||
},
|
||||
legend: {
|
||||
type: "scroll",
|
||||
orient: "vartical",
|
||||
// x: "right",
|
||||
top: "center",
|
||||
right: 0,
|
||||
// bottom: "0%",
|
||||
itemWidth: 16,
|
||||
itemHeight: 8,
|
||||
itemGap: 10,
|
||||
textStyle: {
|
||||
color: '#A3E2F4',
|
||||
fontSize: 12,
|
||||
fontWeight: 0
|
||||
},
|
||||
data: categoryArr
|
||||
},
|
||||
polar: {},
|
||||
angleAxis: {
|
||||
interval: 1,
|
||||
type: 'category',
|
||||
data: [],
|
||||
z: 10,
|
||||
axisLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: "#0B4A6B",
|
||||
width: 1,
|
||||
type: "solid"
|
||||
},
|
||||
},
|
||||
axisLabel: {
|
||||
interval: 0,
|
||||
show: true,
|
||||
color: "#0B4A6B",
|
||||
margin: 8,
|
||||
fontSize: 14
|
||||
},
|
||||
},
|
||||
radiusAxis: {
|
||||
show: false,
|
||||
min: 40,
|
||||
max: 120,
|
||||
interval: 20,
|
||||
axisLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: "#0B3E5E",
|
||||
width: 1,
|
||||
type: "solid"
|
||||
},
|
||||
},
|
||||
axisLabel: {
|
||||
formatter: '{value} %',
|
||||
show: false,
|
||||
padding: [0, 0, 20, 0],
|
||||
color: "#0B3E5E",
|
||||
fontSize: 14
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
color: "#0B3E5E",
|
||||
width: 2,
|
||||
type: "solid"
|
||||
}
|
||||
}
|
||||
},
|
||||
calculable: true,
|
||||
series: [{
|
||||
type: 'pie',
|
||||
radius: ["5%", "10%"],
|
||||
center: ['40%', '50%'],
|
||||
hoverAnimation: false,
|
||||
labelLine: {
|
||||
normal: {
|
||||
show: false,
|
||||
length: 15,
|
||||
length2: 18
|
||||
},
|
||||
emphasis: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
data: [{
|
||||
name: '',
|
||||
value: 0,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: "#0B4A6B"
|
||||
}
|
||||
}
|
||||
}]
|
||||
}, {
|
||||
type: 'pie',
|
||||
radius: ["75%", "80%"],
|
||||
center: ['40%', '50%'],
|
||||
hoverAnimation: false,
|
||||
labelLine: {
|
||||
normal: {
|
||||
show: false,
|
||||
length: 30,
|
||||
length2: 55
|
||||
},
|
||||
emphasis: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
name: "",
|
||||
data: [{
|
||||
name: '',
|
||||
value: 0,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: "#0B4A6B"
|
||||
}
|
||||
}
|
||||
}]
|
||||
}, {
|
||||
stack: 'a',
|
||||
type: 'pie',
|
||||
radius: ['20%', '60%'],
|
||||
center: ['40%', '50%'],
|
||||
roseType: 'area',
|
||||
zlevel: 10,
|
||||
label: {
|
||||
normal: {
|
||||
show: true,
|
||||
formatter: "{c}",
|
||||
textStyle: {
|
||||
fontSize: 12,
|
||||
},
|
||||
position: 'outside'
|
||||
},
|
||||
emphasis: {
|
||||
show: true
|
||||
}
|
||||
},
|
||||
labelLine: {
|
||||
normal: {
|
||||
show: true,
|
||||
length: 10,
|
||||
length2: 20
|
||||
},
|
||||
emphasis: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
data: objArr
|
||||
},]
|
||||
}
|
||||
|
||||
var myChart = echarts.init(document.getElementById('page3_3'));
|
||||
myChart.setOption(option);
|
||||
});
|
||||
})()
|