Commit 4c834c2c authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 304ba144 6d217452
......@@ -14,12 +14,11 @@
<!-- 富文本 -->
<quill-editor
class="editor ql-editor"
v-model="value"
v-model="contnet"
ref="myQuillEditor"
:options="editorOption"
@blur="onEditorBlur($event)"
@focus="onEditorFocus($event)"
@change="onEditorChange($event)"
>
</quill-editor>
</div>
......@@ -106,9 +105,7 @@ export default {
data() {
return {
quillUpdateImg: false, // 根据图片上传状态来确定是否显示loading动画,刚开始是false,不显示
api: process.env.VUE_APP_API_BASE_URL.includes("base")
? process.env.VUE_APP_API_BASE_URL.replace("base", "")
: process.env.VUE_APP_API_BASE_URL + "/",
api: process.env.VUE_APP_API_BASE_URL + "/",
editorOption: {
theme: "snow", // or 'bubble'
placeholder: "请输入文本......",
......@@ -151,7 +148,16 @@ export default {
},
};
},
computed: {
contnet: {
get() {
return this.value;
},
set(val) {
this.$emit("input", val);
},
},
},
methods: {
onEditorBlur() {
//失去焦点事件
......@@ -159,10 +165,6 @@ export default {
onEditorFocus() {
//获得焦点事件
},
onEditorChange() {
//内容改变事件
this.$emit("input", this.value);
},
// 富文本图片上传前
beforeUpload() {
......
......@@ -18,7 +18,7 @@ module.exports = {
multiPage: true, //多页签模式,true:开启,false:不开启
cachePage: true, //是否缓存页面数据,仅多页签模式下生效,true 缓存, false 不缓存
hideSetting: false, //隐藏设置抽屉,true:隐藏,false:不隐藏
systemName: "智慧政务一体化综合管理平台", //系统名称
systemName: "基础设置平台", //系统名称
copyright: "2021 ICZER 信宏翔科技有限公司", //copyright
asyncRoutes: false, //异步加载路由,true:开启,false:不开启
showPageTitle: true, //是否显示页面标题(PageLayout 布局中的页面标题),true:显示,false:不显示
......
......@@ -4,8 +4,8 @@
<a-layout-header class="header">
<div class="flex aic">
<router-link to="/" class="flex aic">
<!-- <img width="32" src="@/assets/img/logo.png" /> -->
<h1>{{ systemName }}</h1>
<img class="mr10" width="32" src="@/assets/img/logo.png" />
<h1 class="title">基础设置平台</h1>
</router-link>
<HeaderSite class="ml20"></HeaderSite>
</div>
......@@ -72,11 +72,12 @@ export default {
<style lang="less" scoped>
.ant-layout-header {
padding: 0px 24px;
background-color: #2681e8;
// background-color: #2681e8;
font-size: 14px;
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(90deg, #1845c6 0%, #2999ff 100%);
h1 {
color: #fff;
font-size: 16px;
......@@ -85,6 +86,10 @@ export default {
a {
color: #fff;
}
.title {
font-size: 20px;
font-weight: bold;
}
}
.main {
height: calc(100vh - 64px);
......
......@@ -157,7 +157,7 @@ export default {
<style lang="less" scoped>
.ant-dropdown-link {
padding: 0 20px;
font-size: 14px;
font-size: 16px;
min-width: 200px;
display: inline-block;
color: #fff;
......
......@@ -34,6 +34,22 @@
</a-form-model-item>
<a-form-model-item label="应用图标" prop="appIconPath">
<a-upload
name="file"
list-type="picture-card"
:action="api + 'base/file/commonupload'"
:file-list="iconFileList"
@change="handleChangeIcon"
:accept="accept"
:before-upload="iconBeforeUpload"
@preview="handlePreview"
>
<div v-if="iconFileList.length < 1">
<a-icon type="plus" />
<div class="ant-upload-text">选择图标</div>
</div>
</a-upload>
<!-- <a-upload
name="file"
list-type="picture-card"
class="avatar-uploader"
......@@ -51,7 +67,7 @@
<a-icon :type="loading ? 'loading' : 'plus'" />
<div class="ant-upload-text">选择图标</div>
</div>
</a-upload>
</a-upload> -->
</a-form-model-item>
<a-form-model-item label="应用简介" prop="summary">
<a-textarea
......@@ -150,6 +166,11 @@
<a-button type="primary" @click="onSubmit"> 保存 </a-button>
</a-space>
</div>
<!-- 预览 -->
<PrevieModal
:previewData="previewData"
:previewVisible.sync="previewVisible"
></PrevieModal>
</a-drawer>
</div>
</template>
......@@ -159,9 +180,11 @@ import YSwitch from "../../../../components/yswitch/YSwitch.vue";
import { saveApp } from "@/services/market";
import { mapGetters } from "vuex";
import { changeCodeNumber } from "@/utils/validate";
import PrevieModal from "@/components/PrevieModal.vue";
export default {
components: {
YSwitch,
PrevieModal,
},
props: {
title: {
......@@ -184,8 +207,12 @@ export default {
},
data() {
return {
accept: "image/jpeg,image/png,image/svg+xml",
api: process.env.VUE_APP_API_BASE_URL + "/",
api2: process.env.VUE_APP_API_IMG_URL,
previewData: {}, // 预览
previewVisible: false,
iconFileList: [],
labelCol: {
span: 3,
},
......@@ -290,27 +317,51 @@ export default {
// 图标上传之前
iconBeforeUpload(file) {
const isJpgOrPng =
file.type === "image/jpeg" || file.type === "image/png";
file.type === "image/jpeg" ||
file.type === "image/png" ||
file.type === "image/svg+xml";
if (!isJpgOrPng) {
this.$message.error("请上传jpeg或者png格式图片!");
this.$message.error("请上传jpeg、png或者svg格式图片!");
}
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
this.$message.error("图片大小不能超过 2MB!");
const isLt5M = file.size / 1024 / 1024 < 5;
if (!isLt5M) {
this.$message.error("图片大小不能超过 5MB!");
}
return isJpgOrPng && isLt2M;
return isJpgOrPng && isLt5M;
},
// 上传图标
handleChangeIcon(info) {
if (info.file.status === "uploading") {
this.loading = true;
return;
}
if (info.file.status === "done") {
this.form.appIconPath = info.file.response.url;
this.loading = false;
handleChangeIcon({ fileList }) {
// if (info.file.status === "uploading") {
// this.loading = true;
// return;
// }
// if (info.file.status === "done") {
// this.form.appIconPath = info.file.response.url;
// this.loading = false;
// }
this.iconFileList = [...fileList].slice(-1);
this.iconFileList = this.iconFileList.map((v) => {
if (v.response) {
v.url2 = v.response.url;
v.url = this.api2 + v.response.url;
}
return v;
});
if (this.iconFileList[0]) {
this.form.appIconPath = this.iconFileList[0].url2;
} else {
this.form.appIconPath = "";
}
},
// 预览
handlePreview(info) {
this.previewData = {
type: "img",
url: info.url,
};
this.previewVisible = true;
},
// 上传应用
handleChangeFile(info) {
let fileList = [...info.fileList];
......@@ -338,7 +389,6 @@ export default {
},
// 编辑
onEdit(data) {
console.log(data);
this.form = { ...data };
this.fileList = [
{
......@@ -348,6 +398,15 @@ export default {
url: this.form.filePath,
},
];
this.iconFileList = [
{
uid: "-2",
name: this.form.appIconPath,
status: "done",
url: this.api2 + this.form.appIconPath,
url2: this.form.appIconPath,
},
];
},
// 选中站点
changeSite(value, label) {
......
......@@ -57,6 +57,7 @@
</template>
<!-- 展现类型 -->
<template slot="displayType" slot-scope="text">
<!-- {{ text.displayType || "--" }} -->
<a-tag>{{ filterItems(text.displayType, dict.displayType) }} </a-tag>
</template>
<!-- 操作 -->
......
......@@ -41,6 +41,7 @@
</a-select>
</a-form-model-item>
<a-form-model-item label="展现类型" prop="displayType">
<!-- <a-input v-model="form.displayType" placeholder="请输入排序" /> -->
<a-select v-model="form.displayType" placeholder="请选择展现类型">
<a-select-option
v-for="(v, key) in dict.displayType"
......
package com.mortals.xhx.module.app.service.impl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.net.url.UrlBuilder;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.google.common.net.InternetDomainName;
import com.mortals.framework.model.DbMatchMode;
import com.google.common.collect.Maps;
import cn.hutool.core.io.FileUtil;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.common.pdu.app.AppPdu;
import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.common.utils.ZipUtils;
import com.mortals.xhx.feign.app.device.IAppFeign;
import com.mortals.xhx.module.app.dao.AppDao;
import com.mortals.xhx.module.app.model.*;
import com.mortals.xhx.module.app.service.*;
import com.mortals.xhx.module.device.model.DeviceBlackappEntity;
import com.mortals.xhx.module.device.model.DeviceBlackappQuery;
import com.mortals.xhx.module.device.service.DeviceBlackappService;
import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.service.SiteService;
import com.mortals.xhx.utils.EncodeUtil;
import com.mortals.xhx.version.model.VersionEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.app.dao.AppDao;
import org.springframework.util.ObjectUtils;
import java.io.File;
......@@ -79,43 +69,31 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
private DeviceBlackappService deviceBlackappService;
/**
* @param params
* @param pageInfo
* @param context
* @return
* @throws AppException
*/
@Override
protected AppEntity findBefore(AppEntity params, PageInfo pageInfo, Context context) throws AppException {
return super.findBefore(params, pageInfo, context);
}
@Override
protected void findAfter(AppEntity params, PageInfo pageInfo, Context context, List<AppEntity> list) throws AppException {
//判断是否存在设备编码。存在 查询设备编码应用黑名单
checkDeviceBlackApp(params, list);
//根据指定的idlist顺序进行排序
sortAppByIdList(params, list);
//统计站点
list.forEach(item -> {
String domainUrl = "";
if (!ObjectUtils.isEmpty(params.getServerName()) && Validator.isIpv4(params.getServerName())) {
domainUrl = String.format("http://%s:%d", params.getServerName(), params.getServerPort() > 0 ? params.getServerPort() : 11078);
} else {
boolean isDomain = ReUtil.isMatch("^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})*\\.[a-zA-Z]{2,}$", params.getServerName());
if (isDomain) {
domainUrl = String.format("https://%s", params.getServerName());
} else {
domainUrl = "";
}
}
for (AppEntity item : list) {
List<AppEntity> appEntityList = this.find(new AppQuery().appCode(item.getAppCode()), context);
item.setApplianceSiteScope(appEntityList.size());
item.setSiteIdList(appEntityList.stream().map(AppEntity::getSiteId).collect(Collectors.toList()));
//构建访问地址
SiteEntity siteEntity = siteService.getCache(item.getSiteId().toString());
String domainUrl = "";
if (!ObjectUtils.isEmpty(params.getServerName()) && Validator.isIpv4(params.getServerName())) {
domainUrl = String.format("http://%s:%d", params.getServerName(), params.getServerPort() > 0 ? params.getServerPort() : 11078);
} else {
boolean isDomain = ReUtil.isMatch("^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})*\\.[a-zA-Z]{2,}$", params.getServerName());
if (isDomain) {
domainUrl = String.format("https://%s", params.getServerName());
} else {
domainUrl = "";
}
}
if (!ObjectUtils.isEmpty(siteEntity)) {
//请求地址 http://domian/app/siteCode/appcode/html
......@@ -137,7 +115,7 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
item.setAppIconUrl(item.getAppIconPath());
}
});
};
super.findAfter(params, pageInfo, context, list);
}
......@@ -331,6 +309,59 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
return Rest.ok("克隆应用完成!");
}
/**
* @param appEntity
* @param context
* @return
*/
@Override
public Rest<String> cloneAppBySameSite(AppEntity appEntity, Context context) {
Long sourceAppId = appEntity.getSourceAppId();
Long targetAppId = appEntity.getTargetAppId();
AppEntity sourceAppEntity = this.get(sourceAppId, context);
AppEntity targetAppEntity = this.get(targetAppId, context);
//删除应用的数据集
Long[] delIds = targetAppEntity.getAppDatasetList().stream().map(i -> i.getId()).toArray(Long[]::new);
if (ObjectUtils.isEmpty(delIds)) {
appDatasetService.remove(delIds, context);
}
//保存数据集
List<AppDatasetEntity> appDatasetList = sourceAppEntity.getAppDatasetList();
if (!ObjectUtils.isEmpty(appDatasetList)) {
for (AppDatasetEntity appDatasetEntity : appDatasetList) {
AppDatasetEntity appDatasetClone = new AppDatasetEntity();
appDatasetClone.initAttrValue();
BeanUtils.copyProperties(appDatasetEntity, appDatasetClone, BeanUtil.getNullPropertyNames(appDatasetEntity));
appDatasetClone.setAppId(targetAppEntity.getId());
appDatasetService.save(appDatasetClone, context);
//查询属性列表
List<AppInfoFieldEntity> appInfoFieldList = appInfoFieldService.find(new AppInfoFieldQuery().datasetId(appDatasetEntity.getId()));
if (!ObjectUtils.isEmpty(appInfoFieldList)) {
ArrayList<AppInfoFieldEntity> cloneList = new ArrayList<>();
for (AppInfoFieldEntity appInfoFieldEntity : appInfoFieldList) {
AppInfoFieldEntity appInfoFieldClone = new AppInfoFieldEntity();
appInfoFieldClone.initAttrValue();
BeanUtils.copyProperties(appInfoFieldEntity, appInfoFieldClone, BeanUtil.getNullPropertyNames(appInfoFieldEntity));
appInfoFieldClone.setDatasetId(appDatasetClone.getId());
cloneList.add(appInfoFieldClone);
}
if (!ObjectUtils.isEmpty(cloneList)) {
appInfoFieldService.save(cloneList, context);
}
}
}
}
return Rest.ok();
}
@Override
public AppDao getAppDao() {
......
......@@ -15,13 +15,17 @@ import java.util.List;
@Data
public class SkinBaseVo extends BaseEntityLong {
/** 产品编码 */
private String productCode;
private String imageResolutionValue;
private String serverName;
private Integer serverPort;
/** 属性列表 */
private List<SkinFieldEntity> skinFieldList;
......
package com.mortals.xhx.module.skin.service.impl;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.net.URLDecoder;
import cn.hutool.core.net.url.UrlBuilder;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.exception.AppException;
......@@ -78,31 +80,50 @@ public class SkinBaseServiceImpl extends AbstractCRUDServiceImpl<SkinBaseDao, Sk
protected void findAfter(SkinBaseEntity entity, PageInfo pageInfo, Context context, List<SkinBaseEntity> list) throws AppException {
Map<String, String> imageResolutionMap = paramService.getParamBySecondOrganize("SkinBase", "imageResolution");
list.stream().forEach(item -> {
String domainUrl = "";
if (!ObjectUtils.isEmpty(entity.getServerName()) && Validator.isIpv4(entity.getServerName())) {
domainUrl = String.format("http://%s:%d", entity.getServerName(), entity.getServerPort() > 0 ? entity.getServerPort() : 11078);
} else {
boolean isDomain = ReUtil.isMatch("^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})*\\.[a-zA-Z]{2,}$", entity.getServerName());
if (isDomain) {
domainUrl = String.format("https://%s", entity.getServerName());
} else {
domainUrl = "";
}
}
for (SkinBaseEntity item : list) {
List<SkinFieldEntity> skinFieldEntities = skinFieldService.find(new SkinFieldQuery().skinId(item.getId()));
String domain = GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/");
skinFieldEntities.forEach(field -> {
// String domain = GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/");
for (SkinFieldEntity field : skinFieldEntities) {
if ("2".equals(field.getFieldType())) {
UrlBuilder builder = UrlBuilder.ofHttp(domain, CharsetUtil.CHARSET_UTF_8).addPath(field.getFieldValue());
field.setFieldValueUrl(builder.build());
String fieldUrl = String.format("%s/%s", domainUrl, field.getFieldValue());
//UrlBuilder builder = UrlBuilder.ofHttp(domainUrl, CharsetUtil.CHARSET_UTF_8).addPath(field.getFieldValue());
field.setFieldValueUrl(fieldUrl);
}
});
}
ProductEntity productEntity = productService.get(item.getProductId());
item.setProductCode(productEntity == null ? "" : productEntity.getProductCode());
item.setImageResolutionValue(imageResolutionMap.get(entity.getImageResolution() == null ? "1" : entity.getImageResolution()));
item.setSkinFieldList(skinFieldEntities);
if (!ObjectUtils.isEmpty(item.getPreviewImagePath())) {
UrlBuilder builder = UrlBuilder.ofHttp(domain, CharsetUtil.CHARSET_UTF_8).addPath(item.getPreviewImagePath());
item.setPreviewImagePath(builder.build());
// UrlBuilder builder = UrlBuilder.ofHttp(domainUrl, CharsetUtil.CHARSET_UTF_8).addPath(item.getPreviewImagePath());
String fieldUrl = String.format("%s/%s", domainUrl, item.getPreviewImagePath());
// item.setPreviewImagePath(builder.build());
item.setPreviewImagePath(fieldUrl);
//log.info("cssUrl:" + URLDecoder.decode(item.getPreviewImagePath(), CharsetUtil.CHARSET_UTF_8));
}
if (!ObjectUtils.isEmpty(item.getCssFilePath())) {
UrlBuilder builder = UrlBuilder.ofHttp(domain, CharsetUtil.CHARSET_UTF_8).addPath(item.getCssFilePath());
item.setCssFilePath(builder.build());
//UrlBuilder builder = UrlBuilder.ofHttp(domainUrl, CharsetUtil.CHARSET_UTF_8).addPath(item.getCssFilePath());
//item.setCssFilePath(builder.build());
String fieldUrl = String.format("%s/%s", domainUrl, item.getCssFilePath());
item.setCssFilePath(fieldUrl);
//log.info("cssUrl:" + URLDecoder.decode(item.getCssFilePath(), CharsetUtil.CHARSET_UTF_8));
}
});
}
super.findAfter(entity, pageInfo, context, list);
}
......
package com.mortals.xhx.module.skin.web;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.net.url.UrlBuilder;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.util.DataUtil;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.key.Constant;
......@@ -13,14 +17,17 @@ import com.mortals.xhx.module.product.service.ProductService;
import com.mortals.xhx.module.skin.model.SkinFieldEntity;
import com.mortals.xhx.module.skin.model.SkinFieldQuery;
import com.mortals.xhx.module.skin.service.SkinFieldService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.skin.model.SkinBaseEntity;
import com.mortals.xhx.module.skin.model.SkinBaseQuery;
......@@ -33,21 +40,26 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 系统基础皮肤
*
* @author zxfei
* @date 2022-05-24
*/
* 系统基础皮肤
*
* @author zxfei
* @date 2022-05-24
*/
@RestController
@RequestMapping("skin/base")
public class SkinBaseController extends BaseCRUDJsonBodyMappingController<SkinBaseService,SkinBaseEntity,Long> {
@Slf4j
public class SkinBaseController extends BaseCRUDJsonBodyMappingController<SkinBaseService, SkinBaseEntity, Long> {
@Autowired
private ParamService paramService;
......@@ -56,21 +68,27 @@ public class SkinBaseController extends BaseCRUDJsonBodyMappingController<SkinBa
@Autowired
private SkinFieldService skinFieldService;
public SkinBaseController(){
super.setModuleDesc( "系统基础皮肤");
public SkinBaseController() {
super.setModuleDesc("系统基础皮肤");
}
@Override
protected void doListBefore(SkinBaseEntity query, Map<String, Object> model, Context context) throws AppException {
if(!ObjectUtils.isEmpty(query.getProductCode())){
if (!ObjectUtils.isEmpty(query.getProductCode())) {
ProductEntity productEntity = productService.selectOne(new ProductQuery().productCode(query.getProductCode()));
if(!ObjectUtils.isEmpty(productEntity)){
if (!ObjectUtils.isEmpty(productEntity)) {
query.setProductId(productEntity.getId());
query.setProductCode(null);
}
}
String serverName = request.getHeader("server-name");
Integer serverPort = DataUtil.converStr2Int(request.getHeader("server-port"), 0);
log.info("【应用请求】【请求体】-->serverName{} ,port:{}", serverName, serverPort);
query.setServerName(serverName);
query.setServerPort(serverPort);
super.doListBefore(query, model, context);
}
......@@ -85,17 +103,37 @@ public class SkinBaseController extends BaseCRUDJsonBodyMappingController<SkinBa
@Override
protected int viewAfter(Long id, Map<String, Object> model, SkinBaseEntity entity, Context context) throws AppException {
List<SkinFieldEntity> skinFieldEntities = skinFieldService.find(new SkinFieldQuery().skinId(entity.getId()));
skinFieldEntities.forEach(skinFieldEntity -> updateUrl(skinFieldEntity));
entity.setSkinFieldList(skinFieldEntities);
return super.viewAfter(id, model, entity, context);
}
private void updateUrl(SkinFieldEntity field) {
if ("2".equals(field.getFieldType())) {
String domain = GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/");
UrlBuilder builder = UrlBuilder.ofHttp(domain, CharsetUtil.CHARSET_UTF_8).addPath(field.getFieldValue());
field.setFieldValue(builder.build());
String serverName = request.getHeader("server-name");
Integer serverPort = DataUtil.converStr2Int(request.getHeader("server-port"), 0);
String domainUrl = "";
if (!ObjectUtils.isEmpty(serverName) && Validator.isIpv4(serverName)) {
domainUrl = String.format("http://%s:%d",serverName, serverPort > 0 ? serverPort : 11078);
} else {
boolean isDomain = ReUtil.isMatch("^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})*\\.[a-zA-Z]{2,}$", entity.getServerName());
if (isDomain) {
domainUrl = String.format("https://%s", serverName);
} else {
serverName = "";
}
}
for (SkinFieldEntity field : skinFieldEntities) {
if ("2".equals(field.getFieldType())) {
// String domain = GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/");
// UrlBuilder builder = UrlBuilder.ofHttp(domain, CharsetUtil.CHARSET_UTF_8).addPath(field.getFieldValue());
// field.setFieldValue(builder.build());
String fieldUrl = String.format("%s/%s", domainUrl, field.getFieldValue());
field.setFieldValueUrl(fieldUrl);
}
}
entity.setSkinFieldList(skinFieldEntities);
return super.viewAfter(id, model, entity, context);
}
......
......@@ -19,7 +19,7 @@ Content-Type: application/json
{
"page":1,
"size":10
"size":1
}
......
......@@ -11,6 +11,3 @@ VUE_APP_API_PHP_URL=http://8.136.255.30:8090
#正式
VUE_APP_API_PRP_RUL=http://112.19.80.237:11007
#易政秀报表
VUE_APP_API_TEST_RUL=http://8.136.255.30
This source diff could not be displayed because it is too large. You can view the blob instead.
import http from "../request/http";
let baseURL = process.env.VUE_APP_API_TEST_RUL
let baseURL = "http://8.136.255.30"
let proURL = process.env.VUE_APP_API_PRP_RUL;
// 查询客户管理列表
......
......@@ -190,4 +190,4 @@ export function getImpossibleInfo(params) {
*/
export function getKqalert(params) {
return http.get(`${BASEURL}/admin/kqalert/list`, params);
}
}
\ No newline at end of file
import http from "../request/http";
let baseURL = process.env.VUE_APP_API_BASE_URL;
// ----------ps-----------------
// 查询产品信息列表
export function getProduct(params) {
return http.post(`${baseURL}/zwfw/product/list`, params);
}
// 产品信息
export function saveProduct(params) {
return http.post(`${baseURL}/zwfw/product/save`, params);
}
// 产品信息
export function deleteProduct(params) {
return http.get(`${baseURL}/zwfw/product/delete`, params);
}
//-------------xj: --------------------
// 产品接口
export function getInterfaceList(params) {
return http.post(`${baseURL}/zwfw/product/interface/list`, params);
}
// 新增编辑产品接口
export function getInterfaceSave(params) {
return http.post(`${baseURL}/zwfw/product/interface/save`, params);
}
// 查看产品接口
export function getInterfaceInfo(params) {
return http.get(`${baseURL}/zwfw/product/interface/info`, params);
}
// 删除产品接口
export function getInterfaceDelete(params) {
return http.get(`${baseURL}/zwfw/product/interface/delete`, params);
}
\ No newline at end of file
......@@ -4,7 +4,8 @@
<div>
<a-button
:loading="btnLoading"
type="primary" class="addclass"
type="primary"
class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -50,7 +51,9 @@
>
</a-range-picker>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch"
>搜索</a-button
>
<a-button @click="handleReset">重置</a-button>
</a-space>
</span>
......@@ -184,7 +187,7 @@ export default {
searchName: undefined,
searchForm: {
type: 1, // 事项或者材料搜索
type: 2, // 事项或者材料搜索
status: "", // 打印或者提交
searchName: "", // 搜索内容
BegindAndEndTime: [
......
......@@ -28,10 +28,14 @@
orderInfo.endtime
}}
</p>
<p>
<span>预约方式:</span>{{ orderInfo.up_type=='phone'?'微官网':orderInfo.up_type=='app'?'自助终端':orderInfo.up_type=='tftb'?'天府通办':'--' }}
</p>
</div>
<div class="qrcode">
<!-- <img src="~@/assets/images/logo.png" alt="" />
<p>预约信息二维码</p> -->
<!-- <img src="~@/assets/images/logo.png" alt="" /> -->
<img :src="baseurl + '/'+ orderInfo.qrcode" alt="" />
<p>预约信息二维码</p>
</div>
</div>
<ul class="bottom">
......@@ -145,6 +149,7 @@ export default {
statusItem,
style,
orderInfo: {}, // 预约信息
baseurl: process.env.VUE_APP_API_PHP_URL,
};
},
......
......@@ -4,7 +4,8 @@
<div>
<a-button
:loading="btnLoading"
type="primary" class="addclass"
type="primary"
class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -40,7 +41,9 @@
>
</a-range-picker>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch"
>搜索</a-button
>
<a-button @click="handleReset">重置</a-button>
</a-space>
</span>
......@@ -140,7 +143,7 @@ export default {
},
],
searchForm: {
type: 1, // 事项或者材料搜索
type: 2, // 事项或者材料搜索
status: "", // 打印或者提交
searchName: "", // 搜索内容
BegindAndEndTime: [
......
......@@ -2,6 +2,7 @@
<a-layout class="Container">
<a-layout-header class="header_box">
<div class="logo">
<img style="width: 40px;margin-right: 20px;" src="@/assets/images/logo.jpg" alt="">
<i class="title">智慧大厅集成化综合管理平台</i>
<!-- <i class="title">智慧政务一体化综合管理平台4.0</i> -->
<div class="selectOnptions">
......
......@@ -2,14 +2,14 @@
<div class="PoliticsShow-Container">
<div class="header_box">
<div>
<button class="add_btn">
<button class="add_btn" @click="openDetails('新增',{})">
<span>新增</span>
</button>
</div>
<span>
<a-input
allowClear
v-model="searchName"
v-model="query.interfaceName"
placeholder="请输入接口名称查询"
>
<a-icon slot="prefix" type="search" />
......@@ -67,14 +67,14 @@
:dataSource="tableSourceData"
>
<template slot="operation" slot-scope="text, record, index">
<a-button type="link" @click="openDetails"
>详情{{ index + 1 }}</a-button
<a-button type="link" @click="openDetails('详情',record)"
>详情</a-button
>
<a-button type="link" @click="openDetails"
>编辑{{ index + 1 }}</a-button
<a-button type="link" @click="openDetails('编辑',record)"
>编辑</a-button
>
<a-button type="link" style="color: #ff4420"
>删除{{ index + 1 }}</a-button
>删除</a-button
>
</template>
</a-table>
......@@ -86,6 +86,7 @@
<script>
import table from "@/mixins/table";
import Details from "./components/Details.vue";
import {getInterfaceList} from '@/api/thePlatformIsSet.js'
export default {
mixins: [table],
name: "PortalAdminVueAlerting",
......@@ -103,42 +104,47 @@ export default {
{
title: "API名称",
align: "center",
dataIndex: "API名称",
dataIndex: "interfaceName",
},
{
title: "请求类型",
align: "center",
dataIndex: "请求类型",
dataIndex: "requestType",
customRender: (text, record, index) => `${record.requestType == 1 ? 'POST' : 'GET'}`,
},
{
title: "标签",
align: "center",
dataIndex: "标签",
dataIndex: "interfaceTag",
},
{
title: "请求协议",
align: "center",
dataIndex: "请求协议",
dataIndex: "requestProtocol",
customRender: (text, record, index) => `${record.requestProtocol == 1 ? 'HTTP' : 'HTTPS'}`,
},
{
title: "版本",
align: "center",
dataIndex: "版本",
dataIndex: "versionNumber",
},
{
title: "来源",
align: "center",
dataIndex: "来源",
dataIndex: "interfaceSource",
customRender: (text, record, index) => `${record.interfaceSource == 1 ? '自有' : '非自有'}`,
},
{
title: "策略",
align: "center",
dataIndex: "策略",
dataIndex: "limitStrategy",
customRender: (text, record, index) => `${record.limitStrategy == 1 ? '分钟' : '小时'}`,
},
{
title: "访问网络",
align: "center",
dataIndex: "访问网络",
dataIndex: "network",
customRender: (text, record, index) => `${record.network == 1 ? '互联网' : '政务网'}`,
},
{
......@@ -151,29 +157,26 @@ export default {
},
},
],
searchName: undefined,
query:{
interfaceName: undefined,
page:1,
size:10,
},
total:0
};
},
components: {
Details,
},
mounted() {
this.setMoment();
for (let key = 0; key < 20; key++) {
this.tableSourceData.push({
id: `00${key + 1}`,
API名称: `排队信息查询接口${key + 1}`,
请求类型: `POST${key + 1}`,
标签: `政务外网${key + 1}`,
请求协议: `HTTP${key + 1}`,
版本: `v1.0${key + 1}`,
来源: `自有${key + 1}`,
策略: `--${key + 1}`,
访问网络: `互联网${key + 1}`,
});
}
this.getList();
},
methods: {
getList() {
getInterfaceList(this.query).then(res=>{
this.tableSourceData = res.data.data
})
},
QueueState(type) {
switch (type) {
case 0:
......@@ -185,8 +188,8 @@ export default {
return "type0";
}
},
openDetails() {
this.$refs.Details.modalInfo.title = "新增接口";
openDetails(type) {
this.$refs.Details.modalInfo.title = type;
this.$refs.Details.modalInfo.visible = true;
this.$refs.Details.modalInfo.width = "55%";
},
......
<template>
<a-drawer
:destroyOnClose="true"
:title="modalInfo.title"
:width="modalInfo.width"
:visible="modalInfo.visible"
@close="modalClose"
>
<a-form-model
ref="ruleForm"
:model="detailsForm"
:rules="detailsRules"
:label-col="{ span: 4 }"
:wrapper-col="{ span: 20 }"
>
<a-row :gutter="16">
<a-col :span="12">
<a-form-model-item label="接口名称" prop="接口名称">
<a-input
v-model="detailsForm.接口名称"
placeholder="请输入"
allowClear
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="版本号" prop="版本号">
<a-input
v-model="detailsForm.版本号"
placeholder="请输入"
allowClear
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="请求类型" prop="请求类型">
<a-select
v-model="detailsForm.请求类型"
placeholder="请选择"
allowClear
>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="请求协议" prop="请求协议">
<a-select
v-model="detailsForm.请求协议"
placeholder="请选择"
allowClear
>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="请求路径" prop="请求路径">
<a-input
v-model="detailsForm.请求路径"
placeholder="请输入"
allowClear
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="超时时长" prop="超时时长">
<a-input
v-model="detailsForm.超时时长"
placeholder="请输入"
allowClear
>
<template slot="suffix"></template>
</a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="限流策略" prop="限流策略">
<a-select
v-model="detailsForm.限流策略"
placeholder="请选择"
allowClear
>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="访问网络" prop="访问网络">
<a-checkbox-group
v-model="detailsForm.访问网络"
:options="options"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="描述" prop="描述">
<a-textarea
v-model="detailsForm.描述"
placeholder="请输入"
:rows="4"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="流控信息" prop="流控信息">
<a-textarea
v-model="detailsForm.流控信息"
placeholder="请输入"
:rows="4"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="授权信息" prop="授权信息">
<a-textarea
v-model="detailsForm.授权信息"
placeholder="请输入"
:rows="4"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-drawer :destroyOnClose="true" :title="modalInfo.title" :width="modalInfo.width" :visible="modalInfo.visible"
@close="modalClose">
<a-form-model ref="ruleForm" :model="detailsForm" :rules="detailsRules" :label-col="{ span: 4 }"
:wrapper-col="{ span: 20 }">
<a-row :gutter="16">
<a-col :span="12">
<a-form-model-item label="接口名称" prop="interfaceName">
<a-input v-model="detailsForm.interfaceName" placeholder="请输入" allowClear />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="版本号" prop="versionNumber">
<a-input v-model="detailsForm.versionNumber" placeholder="请输入" allowClear />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="请求类型" prop="requestType">
<a-select v-model="detailsForm.requestType" placeholder="请选择" allowClear>
<a-select-option value="1"> POST </a-select-option>
<a-select-option value="2"> GET </a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="请求协议" prop="requestProtocol">
<a-select v-model="detailsForm.requestProtocol" placeholder="请选择" allowClear>
<a-select-option value="1"> HTTP </a-select-option>
<a-select-option value="2"> HTTPS </a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="请求路径" prop="requestUrl">
<a-input v-model="detailsForm.requestUrl" placeholder="请输入" allowClear />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="超时时长" prop="requestUrl">
<a-input v-model="detailsForm.requestUrl" placeholder="请输入" allowClear>
<template slot="suffix"></template>
</a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="限流策略" prop="limitStrategy">
<a-select v-model="detailsForm.limitStrategy" placeholder="请选择" allowClear>
<a-select-option value="1"> 分钟 </a-select-option>
<a-select-option value="2"> 小时 </a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="访问网络" prop="network">
<a-checkbox-group v-model="detailsForm.network" :options="options" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="描述" prop="description">
<a-textarea v-model="detailsForm.description" placeholder="请输入" :rows="4" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="流控信息" prop="flowControl">
<a-textarea v-model="detailsForm.flowControl" placeholder="请输入" :rows="4" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="授权信息" prop="authorizeInfo">
<a-textarea v-model="detailsForm.authorizeInfo" placeholder="请输入" :rows="4" />
</a-form-model-item>
</a-col>
</a-row>
<h1 class="title_">请求参数</h1>
<a-radio-group default-value="a" button-style="solid">
<a-radio-button value="a"> 路径参数 </a-radio-button>
<a-radio-button value="b"> headers </a-radio-button>
<a-radio-button value="c"> query </a-radio-button>
<a-radio-button value="d"> body </a-radio-button>
</a-radio-group>
<h1 class="title_">请求参数</h1>
<a-radio-group v-model="type" button-style="solid">
<a-radio-button value="路径参数"> 路径参数 </a-radio-button>
<a-radio-button value="headers"> headers </a-radio-button>
<a-radio-button value="query"> query </a-radio-button>
<a-radio-button value="body"> body </a-radio-button>
</a-radio-group>
<a-table
size="middle"
bordered
:row-key="(record) => record.id"
:pagination="false"
:columns="请求参数_columns"
:dataSource="请求参数_dataSource"
>
<template slot="参数名" slot-scope="text, record, index">
<a-input v-model="record.参数名" placeholder="请输入" allowClear />
</template>
<template slot="关联参数" slot-scope="text, record, index">
<a-select v-model="record.关联参数" placeholder="请选择" allowClear>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</template>
<template slot="参数值类型" slot-scope="text, record, index">
<a-select v-model="record.参数值类型" placeholder="请选择" allowClear>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</template>
<template slot="jsonPath" slot-scope="text, record, index">
<a-input v-model="record.jsonPath" placeholder="请输入" allowClear />
</template>
<template slot="默认值" slot-scope="text, record, index">
<a-input v-model="record.默认值" placeholder="请输入" allowClear />
</template>
<template slot="是否必填" slot-scope="text, record, index">
<a-select v-model="record.是否必填" placeholder="请选择" allowClear>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</template>
<template slot="描述" slot-scope="text, record, index">
<a-input v-model="record.描述" placeholder="请输入" allowClear />
</template>
<a-table size="middle" bordered :row-key="(record) => record.id" :pagination="false"
:columns="table_columns" :dataSource="requestParameters[type]">
<template slot="参数名" slot-scope="text, record, index">
<a-input v-model="record.name" placeholder="请输入" allowClear />
</template>
<template slot="关联参数" slot-scope="text, record, index">
<a-select v-model="record.association" placeholder="请选择" allowClear>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</template>
<template slot="参数值类型" slot-scope="text, record, index">
<a-select v-model="record.type" placeholder="请选择" allowClear>
<a-select-option value="String"> String </a-select-option>
</a-select>
</template>
<template slot="jsonPath" slot-scope="text, record, index">
<a-input v-model="record.jsonPath" placeholder="请输入" allowClear />
</template>
<template slot="默认值" slot-scope="text, record, index">
<a-input v-model="record.default" placeholder="请输入" allowClear />
</template>
<template slot="是否必填" slot-scope="text, record, index">
<a-select v-model="record.isMust" placeholder="请选择" allowClear>
<a-select-option value="1"></a-select-option>
<a-select-option value="0"></a-select-option>
</a-select>
</template>
<template slot="描述" slot-scope="text, record, index">
<a-input v-model="record.describe" placeholder="请输入" allowClear />
</template>
<template slot="operation" slot-scope="text, record, index">
<a-button type="link" style="color: #ff4420"
>删除{{ index + 1 }}</a-button
>
</template>
</a-table>
<div class="table_footer">
<a-button type="primary" class="addclass" @click="ceshidayin"> 添加参数 </a-button>
</div>
<template slot="operation" slot-scope="text, record, index">
<a-button type="link" style="color: #ff4420">删除</a-button>
</template>
</a-table>
<div class="table_footer">
<a-button type="primary" class="addclass" @click="ceshidayin"> 添加参数 </a-button>
</div>
<h1 class="title_">响应数据</h1>
<h1 class="title_">响应数据</h1>
<a-table
size="middle"
bordered
:row-key="(record) => record.id"
:pagination="false"
:columns="请求参数_columns"
:dataSource="请求参数_dataSource"
>
<template slot="参数名" slot-scope="text, record, index">
<a-input v-model="record.参数名" placeholder="请输入" allowClear />
</template>
<template slot="关联参数" slot-scope="text, record, index">
<a-select v-model="record.关联参数" placeholder="请选择" allowClear>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</template>
<template slot="参数值类型" slot-scope="text, record, index">
<a-select v-model="record.参数值类型" placeholder="请选择" allowClear>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</template>
<template slot="jsonPath" slot-scope="text, record, index">
<a-input v-model="record.jsonPath" placeholder="请输入" allowClear />
</template>
<template slot="默认值" slot-scope="text, record, index">
<a-input v-model="record.默认值" placeholder="请输入" allowClear />
</template>
<template slot="是否必填" slot-scope="text, record, index">
<a-select v-model="record.是否必填" placeholder="请选择" allowClear>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</template>
<template slot="描述" slot-scope="text, record, index">
<a-input v-model="record.描述" placeholder="请输入" allowClear />
</template>
<a-table size="middle" bordered :row-key="(record) => record.id" :pagination="false"
:columns="table_columns" :dataSource="responseParameters">
<template slot="参数名" slot-scope="text, record, index">
<a-input v-model="record.name" placeholder="请输入" allowClear />
</template>
<template slot="关联参数" slot-scope="text, record, index">
<a-select v-model="record.association" placeholder="请选择" allowClear>
<a-select-option value="001"> 选项001 </a-select-option>
</a-select>
</template>
<template slot="参数值类型" slot-scope="text, record, index">
<a-select v-model="record.type" placeholder="请选择" allowClear>
<a-select-option value="String"> String </a-select-option>
</a-select>
</template>
<template slot="jsonPath" slot-scope="text, record, index">
<a-input v-model="record.jsonPath" placeholder="请输入" allowClear />
</template>
<template slot="默认值" slot-scope="text, record, index">
<a-input v-model="record.default" placeholder="请输入" allowClear />
</template>
<template slot="是否必填" slot-scope="text, record, index">
<a-select v-model="record.isMust" placeholder="请选择" allowClear>
<a-select-option value="1"></a-select-option>
<a-select-option value="0"></a-select-option>
</a-select>
</template>
<template slot="描述" slot-scope="text, record, index">
<a-input v-model="record.describe" placeholder="请输入" allowClear />
</template>
<template slot="operation" slot-scope="text, record, index">
<a-button type="link" style="color: #ff4420"
>删除{{ index + 1 }}</a-button
>
</template>
</a-table>
<div class="table_footer">
<a-button type="primary" class="addclass" @click="ceshidayin"> 添加参数 </a-button>
</div>
<template slot="operation" slot-scope="text, record, index">
<a-button type="link" style="color: #ff4420">删除</a-button>
</template>
</a-table>
<div class="table_footer">
<a-button type="primary" class="addclass" @click="ceshidayin"> 添加参数 </a-button>
</div>
<div class="drawer_footer">
<a-button type="primary" class="addclass" @click="modalClose"> 保存 </a-button>
<a-button @click="modalClose"> 取消 </a-button>
</div>
</a-form-model>
</a-drawer>
<!-- <h1 class="title_">错误码</h1>
<a-table size="middle" bordered :row-key="(record) => record.id" :pagination="false"
:columns="errorCode_columns" :dataSource="errorCode">
<template slot="Http Code" slot-scope="text, record, index">
<a-input v-model="record.httpCode" placeholder="请输入" allowClear />
</template>
<template slot="Error Code" slot-scope="text, record, index">
<a-input v-model="record.errorCode" placeholder="请输入" allowClear />
</template>
<template slot="错误信息" slot-scope="text, record, index">
<a-input v-model="record.errorMessage" placeholder="请输入" allowClear />
</template>
<template slot="operation" slot-scope="text, record, index">
<a-button type="link" style="color: #ff4420">删除</a-button>
</template>
</a-table>
<div class="table_footer">
<a-button type="primary" class="addclass" @click="ceshidayin"> 添加参数 </a-button>
</div>
<h1 class="title_">变更历史</h1>
<a-table size="middle" bordered :row-key="(record) => record.id" :pagination="false"
:columns="changeHistory_columns" :dataSource="changeHistory">
<template slot="变更时间" slot-scope="text, record, index">
<a-input v-model="record.time" placeholder="请输入" allowClear />
</template>
<template slot="变更内容概要" slot-scope="text, record, index">
<a-input v-model="record.content" placeholder="请输入" allowClear />
</template>
<template slot="operation" slot-scope="text, record, index">
<a-button type="link" style="color: #ff4420">删除</a-button>
</template>
</a-table>
<div class="table_footer">
<a-button type="primary" class="addclass" @click="ceshidayin"> 添加参数 </a-button>
</div> -->
<div class="drawer_footer">
<a-button type="primary" class="addclass" @click="modalSubmit"> 保存 </a-button>
<a-button @click="modalClose"> 取消 </a-button>
</div>
</a-form-model>
</a-drawer>
</template>
<script>
import modal from "../mixins/modal";
export default {
mixins: [modal],
name: "PortalAdminVuePicWorks",
import modal from "../mixins/modal";
import {
getInterfaceSave
} from '@/api/thePlatformIsSet.js'
export default {
mixins: [modal],
name: "PortalAdminVuePicWorks",
data() {
return {
detailsForm: {
接口名称: undefined,
版本号: undefined,
请求类型: undefined,
请求协议: undefined,
请求路径: undefined,
超时时长: undefined,
限流策略: undefined,
访问网络: undefined,
描述: undefined,
流控信息: undefined,
授权信息: undefined,
},
detailsRules: {
接口名称: [
{
required: true,
message: "请输入",
trigger: "blur",
},
],
版本号: [
{
required: true,
message: "请输入",
trigger: "blur",
},
],
请求类型: [
{
required: true,
message: "请输入",
trigger: "change",
},
],
请求协议: [
{
required: true,
message: "请输入",
trigger: "change",
},
],
请求路径: [
{
required: true,
message: "请输入",
trigger: "blur",
},
],
超时时长: [
{
required: true,
message: "请输入",
trigger: "blur",
},
],
访问网络: [
{
required: true,
message: "请输入",
trigger: "change",
},
],
},
options: [
{
label: "互联网",
value: "001",
},
{
label: "政务网",
value: "002",
},
],
请求参数_columns: [
{
title: "参数名",
align: "center",
dataIndex: "参数名",
scopedSlots: {
customRender: "参数名",
},
},
{
title: "关联参数",
align: "center",
dataIndex: "关联参数",
scopedSlots: {
customRender: "关联参数",
},
},
{
title: "参数值类型",
align: "center",
dataIndex: "参数值类型",
scopedSlots: {
customRender: "参数值类型",
},
},
{
title: "jsonPath",
align: "center",
dataIndex: "jsonPath",
scopedSlots: {
customRender: "jsonPath",
},
},
{
title: "默认值",
align: "center",
dataIndex: "默认值",
scopedSlots: {
customRender: "默认值",
},
},
{
title: "是否必填",
align: "center",
dataIndex: "是否必填",
scopedSlots: {
customRender: "是否必填",
},
},
{
title: "描述",
align: "center",
dataIndex: "描述",
scopedSlots: {
customRender: "描述",
},
},
data() {
return {
detailsForm: {
interfaceName: undefined,
versionNumber: undefined,
requestType: undefined,
requestProtocol: undefined,
requestUrl: undefined,
timeoutValue: undefined,
timeoutValue: undefined,
network: undefined,
description: undefined,
flowControl: undefined,
authorizeInfo: undefined,
},
detailsRules: {
interfaceName: [{
required: true,
message: "请输入",
trigger: "blur",
}, ],
versionNumber: [{
required: true,
message: "请输入",
trigger: "blur",
}, ],
requestType: [{
required: true,
message: "请输入",
trigger: "change",
}, ],
requestProtocol: [{
required: true,
message: "请输入",
trigger: "change",
}, ],
requestUrl: [{
required: true,
message: "请输入",
trigger: "blur",
}, ],
timeoutValue: [{
required: true,
message: "请输入",
trigger: "blur",
}, ],
network: [{
required: true,
message: "请输入",
trigger: "change",
}, ],
},
options: [{
label: "互联网",
value: "1",
},
{
label: "政务网",
value: "2",
},
],
table_columns: [{
title: "参数名",
align: "center",
dataIndex: "name",
scopedSlots: {
customRender: "参数名",
},
},
{
title: "关联参数",
align: "center",
dataIndex: "association",
scopedSlots: {
customRender: "关联参数",
},
},
{
title: "参数值类型",
align: "center",
dataIndex: "type",
scopedSlots: {
customRender: "参数值类型",
},
},
{
title: "jsonPath",
align: "center",
dataIndex: "jsonPath",
scopedSlots: {
customRender: "jsonPath",
},
},
{
title: "默认值",
align: "center",
dataIndex: "default",
scopedSlots: {
customRender: "默认值",
},
},
{
title: "是否必填",
align: "center",
dataIndex: "isMust",
scopedSlots: {
customRender: "是否必填",
},
},
{
title: "描述",
align: "center",
dataIndex: "describe",
scopedSlots: {
customRender: "描述",
},
},
{
title: "操作",
align: "center",
width: "60px",
dataIndex: "operation",
scopedSlots: {
customRender: "operation",
},
},
],
请求参数_dataSource: [
{
id: `001`,
参数名: `参数名`,
关联参数: `关联参数`,
参数值类型: `参数值类型`,
jsonPath: `jsonPath`,
默认值: `默认值`,
是否必填: `是否必填`,
描述: `描述`,
},
],
};
},
{
title: "操作",
align: "center",
width: "60px",
dataIndex: "operation",
scopedSlots: {
customRender: "operation",
},
},
],
type: '路径参数',
requestParameters: {
'路径参数': [{
name: ``,
association: undefined,
type: undefined,
jsonPath: ``,
default: ``,
isMust: undefined,
describe: ``,
}],
'headers': [{
name: ``,
association: undefined,
type: undefined,
jsonPath: ``,
default: ``,
isMust: undefined,
describe: ``,
}],
'query': [{
name: ``,
association: undefined,
type: undefined,
jsonPath: ``,
default: ``,
isMust: undefined,
describe: ``,
}],
'body': [{
name: ``,
association: undefined,
type: undefined,
jsonPath: ``,
default: ``,
isMust: undefined,
describe: ``,
}]
},
responseParameters: [{
name: ``,
association: undefined,
type: undefined,
jsonPath: ``,
default: ``,
isMust: undefined,
describe: ``,
}],
errorCode_columns: [{
title: "Http Code",
align: "center",
dataIndex: "httpCode",
scopedSlots: {
customRender: "Http Code",
}
},
{
title: "Error Code",
align: "center",
dataIndex: "errorCode",
scopedSlots: {
customRender: "Error Code",
},
},
{
title: "错误信息",
align: "center",
dataIndex: "errorMessage",
scopedSlots: {
customRender: "错误信息",
},
},
{
title: "操作",
align: "center",
width: "60px",
dataIndex: "operation",
scopedSlots: {
customRender: "operation",
},
}
],
errorCode: [{
httpCode: ``,
errorCode: ``,
errorMessage: ``
}],
changeHistory_columns: [{
title: "变更时间",
align: "center",
dataIndex: "time",
scopedSlots: {
customRender: "变更时间",
}
},
{
title: "变更内容概要",
align: "center",
dataIndex: "content",
scopedSlots: {
customRender: "变更内容概要",
},
}
],
changeHistory: [{
time: '',
content: ''
}]
};
},
mounted() {},
mounted() {},
methods: {
ceshidayin() {
console.log(this.请求参数_dataSource);
},
},
};
methods: {
modalSubmit() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
alert('submit!');
} else {
return false;
}
});
},
ceshidayin() {
console.log(this.请求参数_dataSource);
},
},
};
</script>
<style lang="less" scoped>
/deep/.ant-drawer-content {
overflow-x: hidden !important;
}
.drawer_footer {
z-index: 1;
text-align: left;
background: #fff;
padding: 10px 16px;
border-top: 1px solid #e9e9e9;
width: 100%;
bottom: 0;
right: 0;
position: absolute;
}
.title_ {
font-size: 16px;
font-weight: bold;
color: #333;
margin-bottom: 10px;
}
.table_footer {
text-align: center;
padding-top: 10px;
}
/deep/.ant-drawer-body {
margin-bottom: 100px;
}
/deep/.ant-radio-group {
margin-bottom: 10px !important;
}
</style>
/deep/.ant-drawer-content {
overflow-x: hidden !important;
}
.drawer_footer {
z-index: 1;
text-align: left;
background: #fff;
padding: 10px 16px;
border-top: 1px solid #e9e9e9;
width: 100%;
bottom: 0;
right: 0;
position: absolute;
}
.title_ {
font-size: 16px;
font-weight: bold;
color: #333;
margin-bottom: 10px;
}
.table_footer {
text-align: center;
padding-top: 10px;
}
/deep/.ant-drawer-body {
margin-bottom: 100px;
}
/deep/.ant-radio-group {
margin-bottom: 10px !important;
}
</style>
\ No newline at end of file
<template>
<a-modal
:title="VisibleTitle"
:centered="true"
:destroyOnClose="true"
:visible="Visible"
@cancel="Visible = false"
width="30%"
>
<a-form-model
:label-col="{
span: 5,
}"
:wrapper-col="{
span: 19,
}"
layout="horizontal"
ref="appInfoFome"
:model="appInfoFome"
:rules="appInfoRules"
>
<a-form-model-item label="产品名称" prop="appName">
<a-input
placeholder="请输入产品名称"
allowClear
v-model="appInfoFome.appName"
/>
<a-modal :title="VisibleTitle" :centered="true" :destroyOnClose="true" :visible="Visible" @cancel="Visible = false"
width="30%">
<a-form-model :label-col="{
span: 5,
}" :wrapper-col="{
span: 19,
}" layout="horizontal" ref="appInfoFome" :model="appInfoFome" :rules="appInfoRules">
<a-form-model-item label="产品名称" prop="productName">
<a-input placeholder="请输入产品名称" allowClear v-model="appInfoFome.productName" />
</a-form-model-item>
</a-form-model>
<template slot="footer">
<a-button type="primary" class="addclass" @click="Modal_Ok">确定</a-button>
<a-button type="primary" class="addclass" @click="Modal_Ok">确定</a-button>
<a-button @click="resetForm">重置</a-button>
</template>
</a-modal>
</template>
<script>
import { saveProduct } from "@/api/thePlatformIsSet.js";
export default {
name: "PortalAdminVueAddEditAppName",
data() {
......@@ -42,14 +26,15 @@ export default {
Visible: false, //模态
VisibleTitle: "新增产品",
appInfoFome: {
appName: undefined,
productName: undefined,
siteId: JSON.parse(localStorage.getItem("siteId"))
}, //页面表单信息
appInfoRules: {
appName: [
productName: [
{
required: true, //是否必选
whitespace: true, //必选时,空格是否会被视为错误
message: "请输入用户名称",
message: "请输入产品名称",
trigger: "blur",
},
// {
......@@ -61,12 +46,22 @@ export default {
};
},
mounted() {},
mounted() { },
methods: {
Modal_Ok() {
this.$refs.appInfoFome.validate((valid) => {
if (valid) {
console.log(this.appInfoFome);
saveProduct(this.appInfoFome).then(res => {
let { code, msg } = res
if (code == 1) {
this.$message.success('保存成功');
this.resetForm();
this.Visible = false
this.$parent.getList()
} else {
this.$message.error(msg);
}
})
} else {
this.$message.error(`请完善表单信息!`);
return false;
......@@ -75,7 +70,7 @@ export default {
},
resetForm() {
this.$nextTick(() => {
this.$refs.appInfoFome.resetFields();
this.appInfoFome.productName = ''
});
},
},
......
......@@ -4,29 +4,31 @@
<h3>产品管理</h3>
<h4>
<a-input placeholder="请输入产品名称关键字查询" v-model="searchVal" />
<button class="search_btn btn">
<button class="search_btn btn" @click="getList">
<span>查询</span>
</button>
</h4>
</div>
<div class="main">
<a-button type="primary" class="addclass add_btn" ghost @click="showModal(2)">
<a-button type="primary" class="addclass add_btn" ghost @click="showModal()">
新增产品
</a-button>
<ul class="content">
<li class="list" v-for="item of 5" :key="item">
<li class="list" v-for="item, index of listData" :key="index">
<a-popover placement="leftBottom">
<template slot="content">
<div class="popoverContent">
<p>
<a-button type="link" size="small" style="color: #0595fd" @click="showModal(1)">
<a-button type="link" size="small" style="color: #0595fd" @click="showModal(item)">
编辑
</a-button>
</p>
<p>
<a-button type="link" size="small" style="color: #ff4d4f">
删除
</a-button>
<a-popconfirm title="确定要删除此产品吗?" ok-text="Yes" cancel-text="No" @confirm="delModal(item)">
<a-button type="link" size="small" style="color: #ff4d4f">
删除
</a-button>
</a-popconfirm>
</p>
</div>
</template>
......@@ -34,13 +36,15 @@
</a-popover>
<img src="~@/assets/images/u52.png" alt="" class="app-img" />
<div class="app-name">排号系统</div>
<div class="app-name">{{ item.productName }}</div>
<ul class="app-option">
<li @click="routerpush1">接口管理<a-icon type="right" /></li>
<li @click="routerpush2">应用管理<a-icon type="right" /></li>
<li @click="routerpush3">文档资料<a-icon type="right" /></li>
<li @click="routerpush1(item)">接口管理<a-icon type="right" /></li>
<li @click="routerpush2(item)">应用管理<a-icon type="right" /></li>
<li @click="routerpush3(item)">文档资料<a-icon type="right" /></li>
</ul>
</li>
<div class="not-data" v-if="!listData.length">暂无数据</div>
</ul>
</div>
<AddEditAppName ref="AddEditAppName" />
......@@ -48,52 +52,80 @@
</template>
<script>
import { getProduct, deleteProduct } from "@/api/thePlatformIsSet.js";
import AddEditAppName from "./components/addEditAppName.vue";
export default {
name: "PortalAdminVueProductManage",
data() {
return {
searchVal: undefined,
searchVal: '',
listData: []
};
},
components: {
AddEditAppName,
},
mounted() { },
mounted() {
this.getList()
},
methods: {
delModal(item) {
deleteProduct({
id: item.id
}).then((res) => {
let { code, msg } = res
if (code == 1) {
this.$message.success('删除成功');
this.getList()
} else {
this.$message.error(msg);
}
})
},
getList() {
getProduct({
page: 1,
size: -1,
productName: this.searchVal
}).then((res) => {
this.listData = res.data.data
})
},
pushroeuter() {
this.$router.push({
path: "/home/thePlatformIsSet/portDocument",
// query: { testoption: "test001" },
});
},
showModal(type) {
if (type == 1) {
showModal(item) {
if (item) {
this.$refs.AddEditAppName.VisibleTitle = "编辑";
} else if (type == 2) {
this.$refs.AddEditAppName.appInfoFome.id = item.id
this.$refs.AddEditAppName.appInfoFome.productName = item.productName
} else {
this.$refs.AddEditAppName.VisibleTitle = "新增产品";
}
this.$refs.AddEditAppName.Visible = true;
},
routerpush1() {
routerpush1(item) {
// 测试
this.$router.push({
path: `/home/thePlatformIsSet/InterfaceManage/manage`,
// query: { testoption: "test001" },
query: { id: item.id },
});
},
routerpush2() {
routerpush2(item) {
// 测试
this.$router.push({
path: `/home/thePlatformIsSet/appManage/application`,
// query: { testoption: "test001" },
query: { id: item.id },
});
},
routerpush3() {
routerpush3(item) {
// 测试
this.$router.push({
path: `/home/thePlatformIsSet/docData/fileData`,
// query: { testoption: "test001" },
query: { id: item.id },
});
},
},
......@@ -101,6 +133,13 @@ export default {
</script>
<style lang="less" scoped>
.not-data{
line-height: 100px;
text-align: center;
width: 100%;
color: #999;
font-size: 14px;
}
@headerH: 4.5rem;
.Container {
......@@ -319,4 +358,5 @@ export default {
rgba(108, 53, 247, 1) 85%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#3b87ff", endColorstr="#6c35f7", GradientType=1);
}
}</style>
}
</style>
......@@ -34,7 +34,7 @@
"@ant-design/colors" "^3.1.0"
babel-runtime "^6.26.0"
"@ant-design/icons@^2.1.1":
"@ant-design/icons@^2.0.0", "@ant-design/icons@^2.1.1":
version "2.1.1"
resolved "https://registry.npmmirror.com/@ant-design/icons/-/icons-2.1.1.tgz"
integrity sha512-jCH+k2Vjlno4YWl6g535nHR09PwCEmTBKAG6VqF+rhkrSPRLfgpU2maagwbZPLjaHuU5Jd1DFQ2KJpQuI6uG8w==
......@@ -51,7 +51,7 @@
resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.20.10.tgz"
integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==
"@babel/core@^7.12.16":
"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.12.0", "@babel/core@^7.12.16", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0":
version "7.20.12"
resolved "https://registry.npmmirror.com/@babel/core/-/core-7.20.12.tgz"
integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==
......@@ -1043,7 +1043,16 @@
"@jridgewell/set-array" "^1.0.0"
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
"@jridgewell/gen-mapping@^0.3.0":
version "0.3.2"
resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz"
integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
dependencies:
"@jridgewell/set-array" "^1.0.1"
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.9"
"@jridgewell/gen-mapping@^0.3.2":
version "0.3.2"
resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz"
integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
......@@ -1070,7 +1079,7 @@
"@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14":
version "1.4.14"
resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
......@@ -1103,7 +1112,7 @@
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
version "2.0.5"
resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
......@@ -1493,7 +1502,7 @@
resolved "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz"
integrity sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA==
"@vue/cli-service@~5.0.0":
"@vue/cli-service@^3.0.0 || ^4.0.0 || ^5.0.0-0", "@vue/cli-service@~5.0.0":
version "5.0.8"
resolved "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-5.0.8.tgz"
integrity sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==
......@@ -1762,7 +1771,7 @@ acorn-walk@^8.0.0, acorn-walk@^8.0.2:
resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
acorn@^8.0.4, acorn@^8.0.5, acorn@^8.5.0, acorn@^8.7.1:
acorn@^8, acorn@^8.0.4, acorn@^8.0.5, acorn@^8.5.0, acorn@^8.7.1:
version "8.8.1"
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz"
integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
......@@ -1819,7 +1828,7 @@ ajv-keywords@^5.0.0:
dependencies:
fast-deep-equal "^3.1.3"
ajv@^6.12.4, ajv@^6.12.5:
ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1:
version "6.12.6"
resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
......@@ -1829,7 +1838,17 @@ ajv@^6.12.4, ajv@^6.12.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.8.0:
ajv@^8.0.0:
version "8.12.0"
resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.2.2"
ajv@^8.8.0, ajv@^8.8.2:
version "8.12.0"
resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
......@@ -1866,7 +1885,14 @@ ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
ansi-styles@^4.0.0:
version "4.3.0"
resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
......@@ -1956,16 +1982,16 @@ archiver@^5.3.1:
tar-stream "^2.2.0"
zip-stream "^4.1.0"
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz"
integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
array-flatten@^2.1.2:
version "2.1.2"
resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz"
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz"
integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
array-tree-filter@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz"
......@@ -2085,7 +2111,7 @@ babel-polyfill@^6.26.0:
core-js "^2.5.0"
regenerator-runtime "^0.10.5"
babel-runtime@6.x, babel-runtime@^6.23.0, babel-runtime@^6.26.0:
babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@6.x:
version "6.26.0"
resolved "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz"
integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==
......@@ -2192,7 +2218,7 @@ braces@^3.0.2, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.16.6, browserslist@^4.21.3, browserslist@^4.21.4:
browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.16.6, browserslist@^4.21.3, browserslist@^4.21.4, "browserslist@>= 4.21.0":
version "4.21.4"
resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.4.tgz"
integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
......@@ -2306,7 +2332,23 @@ chalk@^3.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
chalk@^4.0.0:
version "4.1.2"
resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chalk@^4.1.0:
version "4.1.2"
resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chalk@^4.1.2:
version "4.1.2"
resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
......@@ -2436,16 +2478,16 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
colord@^2.9.1:
version "2.9.3"
resolved "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz"
......@@ -2605,7 +2647,17 @@ core-js-compat@^3.25.1, core-js-compat@^3.8.3:
dependencies:
browserslist "^4.21.4"
core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5:
core-js@^2.4.0:
version "2.6.12"
resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz"
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^2.5.0:
version "2.6.12"
resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz"
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^2.6.5:
version "2.6.12"
resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz"
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
......@@ -2790,14 +2842,14 @@ de-indent@^1.0.2:
resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz"
integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
debug@2.6.9:
version "2.6.9"
resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
debug@^3.2.6:
version "3.2.7"
resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
dependencies:
ms "2.0.0"
ms "^2.1.1"
debug@^3.2.6, debug@^3.2.7:
debug@^3.2.7:
version "3.2.7"
resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
......@@ -2811,6 +2863,13 @@ debug@^4.1.0, debug@^4.1.1:
dependencies:
ms "2.1.2"
debug@2.6.9:
version "2.6.9"
resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
deepmerge@^1.2.0, deepmerge@^1.5.2:
version "1.5.2"
resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz"
......@@ -2862,16 +2921,16 @@ delayed-stream@~1.0.0:
resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
depd@2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz"
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
depd@2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
destroy@1.2.0:
version "1.2.0"
resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz"
......@@ -3390,11 +3449,6 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz"
......@@ -3431,7 +3485,7 @@ get-stream@^6.0.0:
resolved "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz"
integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
glob-parent@^5.1.2, glob-parent@~5.1.2:
glob-parent@^5.1.2:
version "5.1.2"
resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
......@@ -3445,6 +3499,13 @@ glob-parent@^6.0.1:
dependencies:
is-glob "^4.0.3"
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob-to-regexp@^0.4.1:
version "0.4.1"
resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
......@@ -3624,6 +3685,16 @@ http-deceiver@^1.2.7:
resolved "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz"
integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz"
integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
http-errors@2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz"
......@@ -3635,16 +3706,6 @@ http-errors@2.0.0:
statuses "2.0.1"
toidentifier "1.0.1"
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz"
integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
http-parser-js@>=0.5.1:
version "0.5.8"
resolved "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz"
......@@ -3675,13 +3736,6 @@ human-signals@^2.1.0:
resolved "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
iconv-lite@^0.6.3:
version "0.6.3"
resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz"
......@@ -3689,6 +3743,13 @@ iconv-lite@^0.6.3:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
icss-utils@^5.0.0, icss-utils@^5.1.0:
version "5.1.0"
resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz"
......@@ -3730,7 +3791,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4:
version "2.0.4"
resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
......@@ -3745,16 +3806,16 @@ intersperse@^1.0.0:
resolved "https://registry.npmmirror.com/intersperse/-/intersperse-1.0.0.tgz"
integrity sha512-LGcfug7OTeWkaQ8PEq8XbTy9Jl6uCNg8DrPnQUmwxSY8UETj1Y+LLmpdD0qHdEj6KVchuH3BE3ZzIXQ1t3oFUw==
ipaddr.js@1.9.1:
version "1.9.1"
resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz"
integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==
ipaddr.js@1.9.1:
version "1.9.1"
resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz"
......@@ -4039,7 +4100,7 @@ less-loader@^8.0.0:
dependencies:
klona "^2.0.4"
less@^4.0.0:
"less@^3.5.0 || ^4.0.0", less@^4.0.0:
version "4.1.3"
resolved "https://registry.npmmirror.com/less/-/less-4.1.3.tgz"
integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==
......@@ -4276,7 +4337,7 @@ micromatch@^4.0.2, micromatch@^4.0.4:
braces "^3.0.2"
picomatch "^2.3.1"
mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
"mime-db@>= 1.43.0 < 2", mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
......@@ -4288,7 +4349,7 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17,
dependencies:
mime-db "1.52.0"
mime@1.6.0, mime@^1.4.1:
mime@^1.4.1, mime@1.6.0:
version "1.6.0"
resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
......@@ -4363,16 +4424,16 @@ mrmime@^1.0.0:
resolved "https://registry.npmmirror.com/mrmime/-/mrmime-1.0.1.tgz"
integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==
ms@^2.1.1, ms@2.1.2:
version "2.1.2"
resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz"
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
ms@2.1.2, ms@^2.1.1:
version "2.1.2"
resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@2.1.3:
version "2.1.3"
resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz"
......@@ -4517,7 +4578,7 @@ nth-check@^2.0.1:
dependencies:
boolbase "^1.0.0"
object-assign@4.x, object-assign@^4.0.1:
object-assign@^4.0.1, object-assign@4.x:
version "4.1.1"
resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
......@@ -5038,15 +5099,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^7.0.36:
version "7.0.39"
resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
dependencies:
picocolors "^0.2.1"
source-map "^0.6.1"
postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.12, postcss@^8.4.14, postcss@^8.4.19:
"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.12, postcss@^8.4.14, postcss@^8.4.19:
version "8.4.21"
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz"
integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
......@@ -5055,6 +5108,14 @@ postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.12, postcss@^8.4.14, postcss@^8.4.1
picocolors "^1.0.0"
source-map-js "^1.0.2"
postcss@^7.0.36:
version "7.0.39"
resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
dependencies:
picocolors "^0.2.1"
source-map "^0.6.1"
"prettier@^1.18.2 || ^2.0.0":
version "2.8.2"
resolved "https://registry.npmmirror.com/prettier/-/prettier-2.8.2.tgz"
......@@ -5118,7 +5179,7 @@ punycode@^2.1.0:
resolved "https://registry.npmmirror.com/punycode/-/punycode-2.2.0.tgz"
integrity sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==
qs@6.11.0, qs@^6.10.3:
qs@^6.10.3, qs@6.11.0:
version "6.11.0"
resolved "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz"
integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
......@@ -5183,7 +5244,7 @@ read-pkg@^5.1.1, read-pkg@^5.2.0:
parse-json "^5.0.0"
type-fest "^0.6.0"
readable-stream@^2.0.0, readable-stream@^2.0.5:
readable-stream@^2.0.0:
version "2.3.8"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
......@@ -5209,6 +5270,19 @@ readable-stream@^2.0.1:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^2.0.5:
version "2.3.8"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz"
......@@ -5380,15 +5454,20 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1:
version "5.2.1"
resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safe-buffer@5.1.2:
version "5.1.2"
resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
version "2.1.2"
......@@ -5409,7 +5488,25 @@ schema-utils@^2.6.5:
ajv "^6.12.4"
ajv-keywords "^3.5.2"
schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
schema-utils@^3.0.0:
version "3.1.1"
resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz"
integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
dependencies:
"@types/json-schema" "^7.0.8"
ajv "^6.12.5"
ajv-keywords "^3.5.2"
schema-utils@^3.1.0:
version "3.1.1"
resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz"
integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
dependencies:
"@types/json-schema" "^7.0.8"
ajv "^6.12.5"
ajv-keywords "^3.5.2"
schema-utils@^3.1.1:
version "3.1.1"
resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz"
integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
......@@ -5447,7 +5544,12 @@ selfsigned@^2.1.1:
dependencies:
node-forge "^1"
"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0:
semver@^5.5.0:
version "5.7.1"
resolved "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
semver@^5.6.0:
version "5.7.1"
resolved "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
......@@ -5457,13 +5559,32 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
resolved "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.3.4, semver@^7.3.5, semver@^7.3.8:
semver@^7.3.4:
version "7.3.8"
resolved "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz"
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
dependencies:
lru-cache "^6.0.0"
semver@^7.3.5:
version "7.3.8"
resolved "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz"
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
dependencies:
lru-cache "^6.0.0"
semver@^7.3.8:
version "7.3.8"
resolved "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz"
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
dependencies:
lru-cache "^6.0.0"
"semver@2 || 3 || 4 || 5":
version "5.7.1"
resolved "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
send@0.18.0:
version "0.18.0"
resolved "https://registry.npmmirror.com/send/-/send-0.18.0.tgz"
......@@ -5697,15 +5818,29 @@ stackframe@^1.3.4:
resolved "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz"
integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
statuses@2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz"
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
string-convert@^0.2.0:
version "0.2.1"
......@@ -5729,20 +5864,6 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
strip-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz"
......@@ -5928,7 +6049,7 @@ tr46@~0.0.3:
resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
tslib@2.3.0, tslib@^2.0.3, tslib@^2.3.0:
tslib@^2.0.3, tslib@^2.3.0, tslib@2.3.0:
version "2.3.0"
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
......@@ -5979,7 +6100,7 @@ universalify@^2.0.0:
resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
unpipe@1.0.0, unpipe@~1.0.0:
unpipe@~1.0.0, unpipe@1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
......@@ -6084,7 +6205,7 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.3:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
vue-template-compiler@^2.6.14:
vue-template-compiler@^2.0.0, vue-template-compiler@^2.6.0, vue-template-compiler@^2.6.14, vue-template-compiler@>=2.5.0:
version "2.7.14"
resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz"
integrity sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==
......@@ -6097,7 +6218,7 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
vue@^2.6.14:
vue@*, "vue@^2 || ^3.2.13", vue@^2.0.0, vue@^2.5.17, vue@^2.6.0, vue@^2.6.14, vue@>=2.5.0:
version "2.7.14"
resolved "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz"
integrity sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==
......@@ -6221,7 +6342,7 @@ webpack-merge@^5.7.3:
clone-deep "^4.0.1"
wildcard "^2.0.0"
webpack-sources@^3.2.3:
webpack-sources@*, webpack-sources@^3.2.3:
version "3.2.3"
resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
......@@ -6231,7 +6352,7 @@ webpack-virtual-modules@^0.4.2:
resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz"
integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==
webpack@^5.54.0:
"webpack@^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", "webpack@^4.0.0 || ^5.0.0", "webpack@^4.1.0 || ^5.0.0-0", "webpack@^4.27.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.54.0, webpack@>=2:
version "5.75.0"
resolved "https://registry.npmmirror.com/webpack/-/webpack-5.75.0.tgz"
integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==
......@@ -6261,7 +6382,7 @@ webpack@^5.54.0:
watchpack "^2.4.0"
webpack-sources "^3.2.3"
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
websocket-driver@^0.7.4, websocket-driver@>=0.5.1:
version "0.7.4"
resolved "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz"
integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment