Commit a8aa14c3 authored by “yiyousong”'s avatar “yiyousong”

feat:应用集市接口调试完成

parent 73996d6b
......@@ -70,3 +70,12 @@
.ant-input{
resize: none;
}
.ant-form-explain{
position:absolute
}
.ant-form-item {
display: flex;
align-items: center;
margin-bottom: 20px;
}
\ No newline at end of file
<template>
<div style="margin-bottom: 25px" :style="{ height: height }">
<div style="margin-bottom: 25px" class="y-quill" :style="{ height: height }">
<!-- 图片上传组件辅助-->
<a-upload
name="uploadFile"
......@@ -197,7 +197,7 @@ export default {
<style>
.editor {
line-height: normal !important;
height: 100%;
height: 90%;
}
.SizeTiShi {
font-size: 12px;
......
......@@ -6,10 +6,13 @@
>返回上一级</a-button
>
<a-tab-pane key="1" tab="详情">
<AppDetailsPage></AppDetailsPage>
<AppDetailsPage :appInfo="appInfo"></AppDetailsPage>
</a-tab-pane>
<a-tab-pane key="2" tab="数据更新" force-render>
<DataUpdata></DataUpdata>
<DataUpdata :appInfo="appInfo"></DataUpdata>
</a-tab-pane>
<a-tab-pane key="3" tab="数据配置" force-render>
<FieldConfig :appInfo="appInfo"></FieldConfig>
</a-tab-pane>
</a-tabs>
</div>
......@@ -18,15 +21,32 @@
<script>
import AppDetailsPage from "./components/AppDetailsPage.vue";
import DataUpdata from "./components/DataUpdate.vue";
import FieldConfig from "./components/FieldConfig.vue";
import { getAppInfo } from "@/services/market";
export default {
components: {
AppDetailsPage,
DataUpdata,
FieldConfig,
},
data() {
return {};
return {
appId: this.$route.query.id,
appInfo: {},
};
},
created() {
this.getAppInfo();
},
methods: {
// 获取应用详情
async getAppInfo() {
let res = await getAppInfo({ id: this.appId });
if (res.data.code === 1) {
this.appInfo = res.data.data;
}
},
handleBack() {
this.$router.back();
},
......
......@@ -5,7 +5,43 @@
</template>
<script>
export default {};
import { getSiteTree } from "@/services/basicsetFun";
import { mapMutations } from "vuex";
export default {
data() {
return {};
},
created() {
this.getSiteTree();
},
methods: {
...mapMutations("site", ["SET_SiteTree"]),
// 区域不能选择
editSelectable(arr) {
return arr.map((v) => {
if (v.children && v.children.length > 0) {
this.editSelectable(v.children);
}
if (v.type === "area") {
v.selectable = false;
v.checkable = false;
} else {
v.selectable = true;
v.checkable = true;
}
return v;
});
},
// 获取站点树
async getSiteTree() {
let res = await getSiteTree({});
let { siteTree } = res.data.data;
siteTree = this.editSelectable(siteTree);
this.SET_SiteTree(siteTree);
},
},
};
</script>
<style lang="less" scoped>
......
......@@ -7,10 +7,11 @@
class="logo"
width="50"
height="50"
src="../../../../assets/img/logo.png"
v-if="appInfo.appIconPath"
:src="api + appInfo.appIconPath"
/>
<div class="name">法律法规</div>
<div class="version">当前版本:v1.0</div>
<div class="name">{{ appInfo.appName }}</div>
<div class="version">当前版本:v{{ appInfo.version }}</div>
</div>
<div class="right flex1">
<a-form-model
......@@ -18,17 +19,25 @@
:label-col="{ span: 2 }"
:wrapper-col="{ span: 22 }"
>
<a-form-model-item label="应用主题"> 公共服务 </a-form-model-item>
<a-form-model-item label="应用主题">
{{ appInfo.appThemeName }}
</a-form-model-item>
<a-form-model-item label="应用简介">
汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识
汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识
汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识
汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识
{{ appInfo.summary }}
</a-form-model-item>
<a-form-model-item label="适用范围">
共计26个站点 <a class="primary ml10">查看详情</a>
共计
<span v-if="appInfo.siteIdList">{{
appInfo.siteIdList.length
}}</span>
个站点
<a class="primary ml10" @click="checkSite(appInfo.siteIdList)"
>查看详情</a
>
</a-form-model-item>
<a-form-model-item label="应用类型">
{{ appInfo.appType === 1 ? "应用程序" : "URL" }}
</a-form-model-item>
<a-form-model-item label="应用类型"> 应用程序 </a-form-model-item>
</a-form-model>
</div>
</div>
......@@ -60,29 +69,42 @@
<span slot="num" slot-scope="text, record, index">{{
(current - 1) * size + index + 1
}}</span>
<!-- 版本号 -->
<template slot="version" slot-scope="text">
v{{ text.version }}
</template>
<!-- 应用包 -->
<template slot="app" slot-scope="text">
<a class="primary">{{ text.app }}</a>
<template slot="fileName" slot-scope="text">
<a v-if="text.fileName" class="primary">{{ text.fileName }}</a>
<span>--</span>
</template>
<!-- 当前是否使用 -->
<template slot="danqian" slot-scope="text">
<a-tag v-if="text.danqian" color="blue"> 正在使用 </a-tag>
<template slot="used" slot-scope="text">
<a-tag v-if="text.used" color="blue"> 正在使用 </a-tag>
<span v-else></span>
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a class="primary" @click="handleUse(text.id)">使用</a>
<a class="primary" @click="handlePreview(text)">预览</a>
<a class="primary" @click="handlePreview(text.id)">预览</a>
</a-space>
</template>
</a-table>
</div>
</div>
<!-- 站点树弹窗 -->
<CheckSite
ref="CheckSite"
:appList="[appId]"
:siteVisible.sync="siteVisible"
></CheckSite>
</div>
</template>
<script>
import { getVersionList, usedVersion, previewVersion } from "@/services/market";
import CheckSite from "../modal/CheckSite.vue";
const columns = [
{
title: "序号",
......@@ -94,20 +116,20 @@ const columns = [
},
{
title: "版本号",
dataIndex: "banben",
scopedSlots: { customRender: "version" },
},
{
title: "更新说明",
width: "40%",
dataIndex: "shuom",
dataIndex: "notes",
},
{
title: "应用包",
scopedSlots: { customRender: "app" },
scopedSlots: { customRender: "fileName" },
},
{
title: "当前是否使用",
scopedSlots: { customRender: "danqian" },
scopedSlots: { customRender: "used" },
},
{
title: "操作",
......@@ -116,106 +138,104 @@ const columns = [
},
];
export default {
props: {
// 应用信息
appInfo: {
type: Object,
required: true,
default: () => {
return {};
},
},
},
components: {
CheckSite,
},
data() {
return {
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,
columns,
appId: this.$route.query.id,
current: 1,
size: 10,
total: 10,
total: 0,
loading: false,
pageSizeOptions: ["10", "30", "50", "100"],
form: {},
tableData: [
{
id: 1,
banben: "v1.0",
shuom: "修复了页面",
app: "app.zip",
danqian: 1,
},
{
id: 2,
banben: "v1.0",
shuom: "修复了页面",
app: "app.zip",
danqian: 0,
},
{
id: 3,
banben: "v1.0",
shuom: "修复了页面",
app: "app.zip",
danqian: 0,
},
{
id: 4,
banben: "v1.0",
shuom: "修复了页面",
app: "app.zip",
danqian: 1,
},
{
id: 5,
banben: "v1.0",
shuom: "修复了页面",
app: "app.zip",
danqian: 1,
tableData: [],
siteVisible: false,
};
},
{
id: 6,
banben: "v1.0",
shuom: "修复了页面",
app: "app.zip",
danqian: 1,
created() {
this.getVersions();
},
{
id: 7,
banben: "v1.0",
shuom: "修复了页面",
app: "app.zip",
danqian: 1,
},
{
id: 8,
banben: "v1.0",
shuom: "修复了页面",
app: "app.zip",
danqian: 1,
},
{
id: 9,
banben: "v1.0",
shuom: "修复了页面",
app: "app.zip",
danqian: 1,
methods: {
// 获取历史版本
async getVersions() {
this.loading = true;
let res = await getVersionList({
page: this.current,
size: this.size,
appId: this.appId,
});
this.loading = false;
if (res.data.code === 1) {
let { data, total } = res.data.data;
this.tableData = data;
this.total = total;
console.log(data);
}
},
{
id: 10,
banben: "v1.0",
shuom: "修复了页面",
app: "app.zip",
danqian: 1,
// 使用
handleUse(appVersionId) {
let _this = this;
_this.$confirm({
title: "系统提示",
content: "确定要使用该版本吗?",
okText: "确定",
okType: "primary",
cancelText: "取消",
centered: true,
icon: "question-circle",
maskClosable: true,
async onOk() {
let res = await usedVersion({ appVersionId });
let { code, msg } = res.data;
if (code === 1) {
_this.$message.success(msg);
_this.getVersions();
}
},
],
};
onCancel() {
console.log("Cancel");
},
methods: {
// 使用
handleUse(id) {
console.log(id);
});
},
// 预览
handlePreview(row) {
console.log(row);
async handlePreview(appVersionId) {
let res = await previewVersion({ appVersionId });
let { code, data } = res.data;
if (code === 1) {
window.open(data);
}
},
// 翻页
handleChange(cur) {
this.current = cur;
this.getVersions();
},
// 改变每页显示数量
showSizeChange(cur, size) {
this.current = cur;
this.size = size;
this.getVersions();
},
// 查看试用范围详情
checkSite(siteList) {
this.$refs.CheckSite.getSiteList(siteList);
this.siteVisible = true;
},
},
};
......
......@@ -17,8 +17,8 @@
<a-table
:loading="loading"
bordered
:scroll="{ y: 550 }"
:columns="columns"
:scroll="{ y: 550 }"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
......@@ -49,6 +49,7 @@
<!-- 新增数据 -->
<AddData
ref="AddData"
@addSuccess="getDatasetList"
:AddVisible.sync="AddVisible"
:title="title"
></AddData>
......@@ -57,172 +58,119 @@
<script>
import AddData from "../modal/AddData.vue";
const columns = [
{
title: "序号",
dataIndex: "num",
width: "65px",
scopedSlots: {
customRender: "num",
},
},
{
title: "标题",
dataIndex: "title",
ellipsis: true,
},
{
title: "制定机关",
dataIndex: "dpt",
ellipsis: true,
},
{
title: "法律性质",
dataIndex: "xingzhi",
width: "10%",
},
{
title: "公布日期",
dataIndex: "time",
width: "10%",
import { mapGetters } from "vuex";
import { getDatasetList, deleteDataset } from "@/services/market";
export default {
props: {
// 应用信息
appInfo: {
type: Object,
required: true,
default: () => {
return {};
},
{
title: "更新时间",
dataIndex: "time2",
width: "10%",
},
{
title: "操作",
width: "10%",
scopedSlots: { customRender: "action" },
},
];
export default {
components: {
AddData,
},
data() {
return {
columns,
appId: this.$route.query.id,
loading: false,
current: 1,
size: 10,
total: 100,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
searchVal: "",
tableData: [
{
id: 1,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
},
{
id: 2,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
},
{
id: 3,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
},
{
id: 4,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
},
{
id: 5,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
},
{
id: 6,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
},
{
id: 7,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
},
{
id: 8,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
tableData: [],
AddVisible: false,
title: "",
};
},
{
id: 9,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
computed: {
...mapGetters("site", ["appTemplate"]),
// 初始化表头
columns() {
let index = {
title: "序号",
width: "65px",
scopedSlots: {
customRender: "num",
},
{
id: 10,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
};
let action = {
title: "操作",
width: "10%",
scopedSlots: { customRender: "action" },
};
let arr = this.appTemplate
.filter((v) => {
return v.isList;
})
.map((v) => {
return {
title: v.fieldName,
dataIndex: v.fieldCode,
};
});
return [index, ...arr, action];
},
{
id: 11,
title: "中华人民共和国反电信网络诈骗法",
dpt: "全国人民代表大会常务委员会",
xingzhi: "法律",
time: "2022-10-30",
time2: "2022-10-30",
},
],
AddVisible: false,
title: "",
};
created() {
this.getDatasetList();
},
methods: {
// 获取数据列表
async getDatasetList() {
this.loading = true;
let res = await getDatasetList({
page: this.current,
size: this.size,
appId: this.appId,
});
this.loading = false;
if (res.data.code === 1) {
let { data, total } = res.data.data;
if (!data.length && this.current > 1) {
this.current -= 1;
this.getDatasetList();
}
data.forEach((v) => {
for (let item of v.appInfoFieldList) {
v[item.fieldCode] = item.fieldValue;
}
});
this.total = total;
this.tableData = data;
}
},
// 新增
handleAdd() {
if (!this.appTemplate.length) {
this.$message.warning("请先配置数据模板");
return;
}
this.title = "新增";
this.$refs.AddData.onAdd();
let arr = JSON.parse(JSON.stringify(this.appTemplate));
this.$refs.AddData.onAdd(arr);
this.AddVisible = true;
},
// 搜索
onSearch() {
console.log(2);
this.current = 1;
this.getDatasetList();
},
// 翻页
handleChange(cur) {
this.current = cur;
this.getDatasetList();
},
// 改变每页显示数量
showSizeChange(current, size) {
this.current = current;
this.size = size;
this.getDatasetList();
},
// 编辑
handleEdit(row) {
......@@ -243,7 +191,12 @@ export default {
icon: "exclamation-circle",
maskClosable: true,
async onOk() {
console.log(id);
let res = await deleteDataset({ id });
let { code, msg } = res.data;
if (code === 1) {
_this.$message.success(msg);
_this.getDatasetList();
}
},
onCancel() {
console.log("Cancel");
......
<template>
<div class="field-config">
<!-- 头部 -->
<div class="header flex aic jcb mb20">
<a-button type="primary" @click="handleAdd">新增字段</a-button>
<a-input-search
style="width: 300px"
placeholder="请输入字段名称搜索"
enter-button="搜索"
v-model="searchVal"
allowClear
@search="onSearch"
/>
</div>
<!-- 表格 -->
<div class="table-content">
<a-table
:loading="loading"
bordered
:scroll="{ y: 550 }"
:columns="columns"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
:data-source="tableData"
:rowKey="(record) => record.id"
>
<!-- 序号 -->
<span slot="num" slot-scope="text, record, index">{{
(current - 1) * size + index + 1
}}</span>
<!-- 允许为空 -->
<template slot="fieldNull" slot-scope="text">
<a-tag v-if="text.fieldNull === 1" color="green"></a-tag>
<a-tag v-else color="red"></a-tag>
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a class="primary" @click="handleEdit(text)">编辑</a>
<a class="delete" @click="handleDel(text.id)">删除</a>
</a-space>
</template>
</a-table>
</div>
<!-- 新增数据 -->
<AddField
ref="AddField"
@addSuccess="getTempleteList"
:fieldVisible.sync="fieldVisible"
:title="title"
></AddField>
</div>
</template>
<script>
import AddField from "../modal/AddField.vue";
import { getTempleteList, deleteTemplete } from "@/services/market";
import { mapMutations } from "vuex";
const columns = [
{
title: "序号",
width: "65px",
scopedSlots: {
customRender: "num",
},
},
{
title: "字段名称",
dataIndex: "fieldName",
},
{
title: "字段编码",
dataIndex: "fieldCode",
},
{
title: "字段类型",
dataIndex: "fieldType",
ellipsis: true,
},
{
title: "数据类型",
dataIndex: "dataType",
},
{
title: "数据长度",
dataIndex: "fieldLen",
},
{
title: "允许为空",
scopedSlots: { customRender: "fieldNull" },
},
{
title: "操作",
width: "10%",
scopedSlots: { customRender: "action" },
},
];
export default {
props: {
// 应用信息
appInfo: {
type: Object,
required: true,
default: () => {
return {};
},
},
},
components: {
AddField,
},
data() {
return {
appId: this.$route.query.id,
columns,
loading: false,
current: 1,
size: 10,
total: 100,
pageSizeOptions: ["10", "30", "50", "100"],
searchVal: "",
tableData: [],
fieldVisible: false,
title: "",
};
},
created() {
this.getTempleteList();
},
methods: {
...mapMutations("site", ["SET_appTemplate"]),
// 获取数据模板
async getTempleteList() {
let res = await getTempleteList({
page: this.current,
size: this.size,
appId: this.appId,
});
if (res.data.code === 1) {
let { data, total } = res.data.data;
if (!data.length && this.current > 1) {
this.current -= 1;
this.getTempleteList();
}
this.tableData = data;
this.SET_appTemplate(data);
this.total = total;
}
},
// 新增
handleAdd() {
this.title = "新增";
this.$refs.AddField.onAdd();
this.fieldVisible = true;
},
// 搜索
onSearch() {
this.current = 1;
this.getTempleteList();
},
// 翻页
handleChange(cur) {
this.current = cur;
this.getTempleteList();
},
// 改变每页显示数量
showSizeChange(current, size) {
this.current = current;
this.size = size;
this.getTempleteList();
},
// 编辑
handleEdit(row) {
this.title = "编辑";
this.$refs.AddField.onEdit(row);
this.fieldVisible = true;
},
// 删除
handleDel(id) {
let _this = this;
_this.$confirm({
title: "系统提示",
content: "删除不可恢复,确定要删除吗?",
okText: "确定",
okType: "danger",
cancelText: "取消",
centered: true,
icon: "exclamation-circle",
maskClosable: true,
async onOk() {
let res = await deleteTemplete({ id });
let { code, msg } = res.data;
if (code === 1) {
_this.$message.success(msg);
_this.getTempleteList();
}
},
onCancel() {
console.log("Cancel");
},
});
},
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
......@@ -3,7 +3,7 @@
<div class="header flex aic jcb mb20">
<a-space>
<a-button type="primary" @click="handleAdd"> 新增应用 </a-button>
<a-button type="primary"> 克隆 </a-button>
<a-button type="primary" @click="handleClone"> 克隆 </a-button>
</a-space>
<a-input-search
style="width: 300px"
......@@ -43,39 +43,69 @@
(current - 1) * size + index + 1
}}</span>
<!-- 图标 -->
<template slot="icon" slot-scope="text">
<img height="20" width="20" :src="text.icon" />
<template slot="appIconPath" slot-scope="text">
<img
v-if="text.appIconPath"
height="20"
width="20"
:src="api + text.appIconPath"
/>
<span v-else>--</span>
</template>
<!-- 类型 -->
<template slot="leix" slot-scope="text">
{{ text.leix }}
<!-- 简介 -->
<template slot="summary" slot-scope="text">
{{ text.summary ? text.summary : "--" }}
</template>
<!-- 下发设备 -->
<template slot="xiaf" slot-scope="text">
{{ text.xiaf }}
<!-- 类型 -->
<template slot="appType" slot-scope="text">
{{ text.appType === 1 ? "应用程序" : "URL" }}
</template>
<!-- 上下架 -->
<template slot="shangjia" slot-scope="text">
<YSwitch v-model="text.shangjia"></YSwitch>
<template slot="shelves" slot-scope="text">
<YSwitch
checkedChildren="上架"
unCheckedChildren="下架"
v-model="text.shelves"
@change="changeShelves(text)"
></YSwitch>
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a class="primary" @click="handleEdit(text)">编辑</a>
<a class="primary" @click="handleCheck(text.id)">查看</a>
<a class="delete" @click="handleDel(text.id)">删除</a>
<a
class="delete"
:class="{ unDelete: text.distribute }"
@click="handleDel(text.distribute, text.id)"
>删除</a
>
</a-space>
</template>
</a-table>
</div>
<!-- 新增应用 -->
<AddApp :AddVisible.sync="AddVisible" :title="title"></AddApp>
<AddApp
ref="AddApp"
@success="getAppList"
:AddVisible.sync="AddVisible"
:title="title"
></AddApp>
<!-- 选择站点 -->
<CheckSite
ref="CheckSite"
@checkSite="cloneSuccess"
:appList="selectedRowKeys"
:siteVisible.sync="siteVisible"
></CheckSite>
</div>
</template>
<script>
import YSwitch from "../../../../components/yswitch/YSwitch.vue";
import AddApp from "../modal/AddApp.vue";
import CheckSite from "../modal/CheckSite.vue";
import { getAppList, deleteApp, saveApp } from "@/services/market";
const columns = [
{
title: "序号",
......@@ -87,36 +117,36 @@ const columns = [
},
{
title: "应用名称",
dataIndex: "name",
dataIndex: "appName",
},
{
title: "应用图标",
scopedSlots: { customRender: "icon" },
scopedSlots: { customRender: "appIconPath" },
},
{
title: "当前版本",
dataIndex: "banben",
dataIndex: "version",
},
{
title: "应用主题",
dataIndex: "zhuti",
dataIndex: "appThemeName",
},
{
title: "应用简介",
width: "20%",
dataIndex: "jianjie",
scopedSlots: { customRender: "summary" },
},
{
title: "应用类型",
scopedSlots: { customRender: "leix" },
scopedSlots: { customRender: "appType" },
},
{
title: "下发设备",
scopedSlots: { customRender: "xiaf" },
dataIndex: "downDevCount",
},
{
title: "上架/下架",
scopedSlots: { customRender: "shangjia" },
scopedSlots: { customRender: "shelves" },
},
{
title: "操作",
......@@ -128,151 +158,80 @@ export default {
components: {
YSwitch,
AddApp,
CheckSite,
},
data() {
return {
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,
columns,
tableData: [
{
id: 1,
name: "法律法规",
icon: require("../../../../assets/img/logo.png"),
banben: "v1.0",
zhuti: "公共服务",
jianjie: "汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识",
leix: "应用程序",
xiaf: "自助服务",
shangjia: 1,
},
{
id: 2,
name: "法律法规",
icon: require("../../../../assets/img/logo.png"),
banben: "v1.0",
zhuti: "公共服务",
jianjie: "汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识",
leix: "应用程序",
xiaf: "自助服务",
shangjia: 1,
},
{
id: 3,
name: "法律法规",
icon: require("../../../../assets/img/logo.png"),
banben: "v1.0",
zhuti: "公共服务",
jianjie: "汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识",
leix: "应用程序",
xiaf: "自助服务",
shangjia: 1,
},
{
id: 4,
name: "法律法规",
icon: require("../../../../assets/img/logo.png"),
banben: "v1.0",
zhuti: "公共服务",
jianjie: "汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识",
leix: "应用程序",
xiaf: "自助服务",
shangjia: 1,
},
{
id: 5,
name: "法律法规",
icon: require("../../../../assets/img/logo.png"),
banben: "v1.0",
zhuti: "公共服务",
jianjie: "汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识",
leix: "应用程序",
xiaf: "自助服务",
shangjia: 1,
},
{
id: 6,
name: "法律法规",
icon: require("../../../../assets/img/logo.png"),
banben: "v1.0",
zhuti: "公共服务",
jianjie: "汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识",
leix: "应用程序",
xiaf: "自助服务",
shangjia: 1,
},
{
id: 7,
name: "法律法规",
icon: require("../../../../assets/img/logo.png"),
banben: "v1.0",
zhuti: "公共服务",
jianjie: "汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识",
leix: "应用程序",
xiaf: "自助服务",
shangjia: 1,
},
{
id: 8,
name: "法律法规",
icon: require("../../../../assets/img/logo.png"),
banben: "v1.0",
zhuti: "公共服务",
jianjie: "汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识",
leix: "应用程序",
xiaf: "自助服务",
shangjia: 1,
},
{
id: 9,
name: "法律法规",
icon: require("../../../../assets/img/logo.png"),
banben: "v1.0",
zhuti: "公共服务",
jianjie: "汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识",
leix: "应用程序",
xiaf: "自助服务",
shangjia: 1,
},
{
id: 10,
name: "法律法规",
icon: require("../../../../assets/img/logo.png"),
banben: "v1.0",
zhuti: "公共服务",
jianjie: "汇集婚姻法、劳动法、刑法等各种条例,让您能轻松获取法律知识",
leix: "应用程序",
xiaf: "自助服务",
shangjia: 1,
},
], // 表格数据
tableData: [], // 表格数据
loading: false,
searchVal: "", // 搜索
current: 1,
size: 10,
total: 1000,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
selectedRowKeys: [], // 表格勾选数据
AddVisible: false,
title: "新增应用",
siteVisible: false,
};
},
created() {
this.getAppList();
},
methods: {
// 获取应用列表
async getAppList() {
this.loading = true;
let res = await getAppList({
page: this.current,
size: this.size,
appName: `%${this.searchVal}%`,
type: 1,
});
this.loading = false;
let { data, total } = res.data.data;
if (res.data.code === 1) {
if (!data.length && this.current > 1) {
this.current -= 1;
this.getAppList();
}
this.tableData = data;
this.total = total;
}
},
// 克隆
handleClone() {
if (!this.selectedRowKeys.length) {
this.$message.warning("请先勾选应用");
return;
}
this.siteVisible = true;
},
// 新增
handleAdd() {
this.title = "新增应用";
this.$refs.AddApp.onAdd();
this.AddVisible = true;
},
// 搜索
onSearch() {
console.log(1);
this.current = 1;
this.getAppList();
},
// 翻页
handleChange(cur) {
this.current = cur;
this.getAppList();
},
// 改变每页显示数量
showSizeChange(current, size) {
this.current = current;
this.size = size;
this.getAppList();
},
// 勾选表格
onSelectChange(keys) {
......@@ -280,7 +239,9 @@ export default {
},
// 编辑
handleEdit(row) {
console.log(row);
this.title = "编辑应用";
this.$refs.AddApp.onEdit(row);
this.AddVisible = true;
},
// 查看
handleCheck(id) {
......@@ -292,7 +253,26 @@ export default {
});
},
// 删除
handleDel(id) {
handleDel(distribute, id) {
if (distribute) {
this.$confirm({
title: "拒绝删除",
content: "该应用正在使用中。",
okText: "确定",
okType: "danger",
cancelText: "取消",
centered: true,
icon: "exclamation-circle",
maskClosable: true,
onOk() {
console.log("ok");
},
onCancel() {
console.log("Cancel");
},
});
return;
}
let _this = this;
_this.$confirm({
title: "系统提示",
......@@ -304,16 +284,39 @@ export default {
icon: "exclamation-circle",
maskClosable: true,
async onOk() {
console.log(id);
let res = await deleteApp({ id });
let { code, msg } = res.data;
if (code === 1) {
_this.$message.success(msg);
_this.getAppList();
}
},
onCancel() {
console.log("Cancel");
},
});
},
// 克隆成功
cloneSuccess() {
this.selectedRowKeys = [];
this.getAppList();
},
// 上下架
async changeShelves(row) {
let res = await saveApp(row);
let { code, msg } = res.data;
if (code === 1) {
this.$message.success(msg);
} else {
this.getAppList();
}
},
},
};
</script>
<style lang="less" scoped>
.unDelete {
color: #ff4d5075 !important;
}
</style>
\ No newline at end of file
......@@ -10,39 +10,46 @@
<div class="main">
<a-form-model
:model="form"
:rules="rules"
ref="form"
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
<a-form-model-item label="应用名称" prop="">
<a-input v-model="form.name" placeholder="请输入应用名称" />
<a-form-model-item label="应用名称" prop="appName">
<a-input v-model="form.appName" placeholder="请输入应用名称" />
</a-form-model-item>
<a-form-model-item label="应用主题" prop="">
<a-select v-model="form.region" placeholder="请选择应用主题">
<a-form-model-item label="应用主题" prop="appThemeName">
<a-input v-model="form.appThemeName" placeholder="请输入应用主题" />
<!-- <a-select v-model="form.appThemeName" placeholder="请选择应用主题">
<a-select-option value="shanghai"> Zone one </a-select-option>
<a-select-option value="beijing"> Zone two </a-select-option>
</a-select>
</a-select> -->
</a-form-model-item>
<a-form-model-item label="应用主题" prop="">
<a-form-model-item label="应用图标" prop="appIconPath">
<a-upload
name="file"
list-type="picture-card"
class="avatar-uploader"
:show-upload-list="false"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
:action="api2 + 'file/commonupload'"
:before-upload="iconBeforeUpload"
@change="handleChangeIcon"
>
<img v-if="imageUrl" :src="imageUrl" alt="avatar" />
<img
class="icon"
v-if="form.appIconPath"
:src="api + form.appIconPath"
/>
<div v-else>
<a-icon :type="loading ? 'loading' : 'plus'" />
<div class="ant-upload-text">选择图标</div>
</div>
</a-upload>
</a-form-model-item>
<a-form-model-item label="应用简介" prop="">
<a-form-model-item label="应用简介" prop="summary">
<a-textarea
placeholder="请输入应用简介"
v-model="form.name"
v-model="form.summary"
allow-clear
:autoSize="{
minRows: 4,
......@@ -50,30 +57,47 @@
}"
/>
</a-form-model-item>
<a-form-model-item label="适用范围" prop="">
<a-button type="primary">
<a-form-model-item label="适用站点" prop="siteId">
<a-tree-select
v-model="form.siteId"
:tree-data="SiteTree"
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择站点"
allow-clear
:replaceFields="replaceFields"
@change="changeSite"
>
</a-tree-select>
<!-- <a-button type="primary">
<span>选择</span>
<!-- <span>已选择(32)</span> -->
</a-button>
<span>已选择(32)</span>
</a-button> -->
</a-form-model-item>
<a-form-model-item label="应用类型" prop="">
<a-radio-group v-model="form.resource">
<a-radio value="1"> 应用程序 </a-radio>
<a-radio value="2"> URL </a-radio>
<a-form-model-item label="应用类型" prop="appType">
<a-radio-group v-model="form.appType">
<a-radio :value="1"> 应用程序 </a-radio>
<a-radio :value="2"> URL </a-radio>
</a-radio-group>
</a-form-model-item>
<a-form-model-item class="upload-app" label="上传应用" prop="">
<a-form-model-item
class="upload-app"
label="上传应用"
prop="filePath"
>
<a-upload
name="file"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
:action="api2 + 'file/commonupload'"
:multiple="false"
:file-list="fileList"
@change="handleChangeFile"
>
<a-button> <a-icon type="upload" /> 选择文件 </a-button>
<a-button type="primary">
<a-icon type="upload" /> 选择文件
</a-button>
</a-upload>
</a-form-model-item>
<a-form-model-item label="更新说明" prop="">
<!-- <a-form-model-item label="更新说明" prop="">
<a-textarea
placeholder="请输入应用简介"
v-model="form.name"
......@@ -83,9 +107,13 @@
maxRows: 4,
}"
/>
</a-form-model-item>
<a-form-model-item label="更新数据" prop="">
<YSwitch v-model="form.name"></YSwitch>
</a-form-model-item> -->
<a-form-model-item label="更新数据" prop="dataUpdate">
<YSwitch
checkedChildren="有"
unCheckedChildren="无"
v-model="form.dataUpdate"
></YSwitch>
</a-form-model-item>
</a-form-model>
</div>
......@@ -112,6 +140,8 @@
<script>
import YSwitch from "../../../../components/yswitch/YSwitch.vue";
import { saveApp } from "@/services/market";
import { mapGetters } from "vuex";
export default {
components: {
YSwitch,
......@@ -130,6 +160,10 @@ export default {
},
data() {
return {
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,
api2: process.env.VUE_APP_API_BASE_URL + "/",
labelCol: {
span: 3,
},
......@@ -137,8 +171,49 @@ export default {
span: 21,
},
loading: false,
imageUrl: "",
form: {},
form: {
siteId: undefined, // 站点id
siteName: "", // 站点名称
appName: "", // 应用名称
appIconPath: "", // 应用图标
appThemeName: "", // 应用主题名称
type: 1, // 类型(1.终端应用,2.移动端应用)
appType: "", // 类型(1.应用程序,2.url)
shelves: 0,
fileName: "", // 文件名称
filePath: "", // 文件相对路径地址
summary: "", // 简介
dataUpdate: 0, // 是否数据更新(0.否,1.是)
},
replaceFields: {
title: "label",
key: "id",
value: "id",
},
rules: {
siteId: [{ required: true, message: "请选择站点", trigger: "change" }],
appName: [
{ required: true, message: "请输入应用名称", trigger: "blur" },
],
appIconPath: [
{ required: true, message: "请上传应用图标", trigger: "change" },
],
appType: [
{ required: true, message: "请选择应用类型", trigger: "change" },
],
appThemeName: [
{ required: true, message: "请输入主题名称", trigger: "blur" },
],
summary: [
{ required: true, message: "请输入应用简介", trigger: "blur" },
],
filePath: [
{ required: true, message: "请上传应用", trigger: "change" },
],
dataUpdate: [
{ required: true, message: "请选择是否有更新", trigger: "change" },
],
},
fileList: [],
};
},
......@@ -151,15 +226,29 @@ export default {
this.$emit("update:AddVisible", val);
},
},
...mapGetters("site", ["SiteTree"]),
},
created() {},
methods: {
// 关闭
onClose() {
this.$refs.form.resetFields();
this.fileList = [];
this.Visible = false;
},
// 提交
onSubmit() {
console.log(1);
this.$refs.form.validate(async (valid) => {
if (valid) {
let res = await saveApp(this.form);
let { code, msg } = res.data;
if (code === 1) {
this.$message.success(msg);
this.$emit("success");
this.onClose();
}
}
});
},
// 图标删除之前
iconBeforeUpload(file) {
......@@ -181,6 +270,8 @@ export default {
return;
}
if (info.file.status === "done") {
console.log(info);
this.form.appIconPath = info.file.response.url;
this.loading = false;
}
},
......@@ -195,15 +286,34 @@ export default {
return file;
});
this.fileList = fileList;
if (this.fileList.length) {
this.form.fileName = this.fileList[0].fileName;
this.form.filePath = this.fileList[0].url;
} else {
this.form.filePath = "";
this.form.fileName = "";
}
},
// 新增
onAdd() {
Object.assign(this.formInfo, this.$options.data().formInfo);
this.formInfo.id && this.$delete(this.formInfo, "id");
Object.assign(this.form, this.$options.data().form);
this.form.id && this.$delete(this.form, "id");
},
// 编辑
onEdit(data) {
this.form = { ...data };
this.fileList = [
{
uid: "-1",
name: this.form.fileName,
status: "done",
url: this.form.filePath,
},
];
},
// 选中站点
changeSite(value, label) {
this.form.siteName = label[0];
},
},
};
......@@ -232,5 +342,9 @@ export default {
padding: 24px;
flex: 1;
overflow-y: auto;
.icon {
width: 100%;
height: 100%;
}
}
</style>
\ No newline at end of file
......@@ -10,27 +10,44 @@
<div class="main">
<a-form-model
:model="form"
ref="form"
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
<a-form-model-item label="标题" prop="">
<a-input v-model="form.name" placeholder="请输入标题" />
</a-form-model-item>
<a-form-model-item label="制定机关" prop="">
<a-input v-model="form.name" placeholder="请输入制定机关" />
</a-form-model-item>
<a-form-model-item label="法律性质" prop="">
<a-select v-model="form.region" placeholder="请选择法律性质">
<a-select-option value="shanghai"> Zone one </a-select-option>
<a-select-option value="beijing"> Zone two </a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item label="公布日期" prop="">
<a-date-picker valueFormat="x" />
</a-form-model-item>
<a-form-model-item class="content" label="内容" prop="">
<div class="content-box">
<YQuillEditor height="auto" v-model="form.content"></YQuillEditor>
<a-form-model-item
v-for="(v, i) in form.appInfoFieldList"
:key="v.fieldCode"
:label="v.fieldName"
class="content"
:prop="`appInfoFieldList.${i}.fieldValue`"
:rules="{
required: true,
message: `${v.fieldName}不能为空`,
trigger:
v.fieldType == 'date' || v.fieldType == 'text'
? 'change'
: 'blur',
}"
>
<a-input
v-if="v.fieldType == 'input'"
v-model="v.fieldValue"
:placeholder="`请输入${v.fieldName}`"
/>
<a-date-picker
v-else-if="v.fieldType == 'date'"
v-model="v.fieldValue"
:placeholder="`请选择${v.fieldName}`"
valueFormat="YYYY-MM-DD"
/>
<a-textarea
v-else-if="v.fieldType == 'textarea'"
v-model="v.fieldValue"
:placeholder="`请输入${v.fieldName}`"
allow-clear
/>
<div v-else-if="v.fieldType == 'text'" class="content-box">
<YQuillEditor v-model="v.fieldValue" height="auto"></YQuillEditor>
</div>
</a-form-model-item>
</a-form-model>
......@@ -58,6 +75,7 @@
<script>
import YQuillEditor from "@/components/YQuillEditor.vue";
import { saveDataset } from "@/services/market";
export default {
components: {
YQuillEditor,
......@@ -82,12 +100,10 @@ export default {
wrapperCol: {
span: 22,
},
loading: false,
imageUrl: "",
form: {
content: "",
appId: "",
appInfoFieldList: [],
},
fileList: [],
};
},
computed: {
......@@ -103,16 +119,37 @@ export default {
methods: {
// 关闭
onClose() {
this.$refs.form.resetFields();
this.Visible = false;
},
// 提交
onSubmit() {
console.log(1);
async onSubmit() {
this.$refs.form.validate(async (valid) => {
if (valid) {
let res = await saveDataset(this.form);
let { code, msg } = res.data;
if (code === 1) {
this.$message.success(msg);
this.$emit("addSuccess");
this.onClose();
}
} else {
this.$message.warning("请完善表单信息");
}
});
},
// 新增
onAdd() {
Object.assign(this.formInfo, this.$options.data().formInfo);
this.formInfo.id && this.$delete(this.formInfo, "id");
onAdd(appTemplate) {
Object.assign(this.form, this.$options.data().form);
this.form.id && this.$delete(this.form, "id");
this.form.appInfoFieldList = appTemplate.map((v) => {
if (v.id) {
delete v.id;
}
v.fieldValue = "";
return v;
});
this.form.appId = this.$route.query.id;
},
// 编辑
onEdit(data) {
......
<template>
<div>
<a-modal v-model="Visible" title="新增数据字段">
<a-form-model
:model="form"
ref="form"
:rules="rules"
:label-col="{ span: 4 }"
:wrapper-col="{ span: 20 }"
>
<a-form-model-item label="字段名称" prop="fieldName">
<a-input v-model="form.fieldName" placeholder="请输入字段名称" />
</a-form-model-item>
<a-form-model-item label="字段编码" prop="fieldCode">
<a-input v-model="form.fieldCode" placeholder="请输入字段编码" />
</a-form-model-item>
<a-form-model-item label="字段类型" prop="fieldType">
<a-select v-model="form.fieldType" placeholder="请选择字段类型">
<a-select-option
v-for="v in fieldTypeItem"
:key="v.value"
:value="v.value"
>
{{ v.label }}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item label="数据类型" prop="dataType">
<a-radio-group v-model="form.dataType">
<a-radio value="number"> 数字 </a-radio>
<a-radio value="string"> 字符串 </a-radio>
</a-radio-group>
</a-form-model-item>
<a-form-model-item label="数据长度" prop="fieldLen">
<a-input-number v-model="form.fieldLen" :min="1" />
</a-form-model-item>
<a-form-model-item label="允许为空" prop="fieldNull">
<a-radio-group v-model="form.fieldNull">
<a-radio :value="0"></a-radio>
<a-radio :value="1"></a-radio>
</a-radio-group>
</a-form-model-item>
<a-form-model-item label="列表显示" prop="isList">
<a-radio-group v-model="form.isList">
<a-radio :value="0"></a-radio>
<a-radio :value="1"></a-radio>
</a-radio-group>
</a-form-model-item>
<a-form-model-item label="排序" prop="fieldOrderNo">
<a-input-number v-model="form.fieldOrderNo" :min="0" />
</a-form-model-item>
<a-form-model-item label="备注" prop="remark">
<a-textarea
:autoSize="{ minRows: 3, maxRows: 3 }"
v-model="form.remark"
placeholder="请输入备注"
allow-clear
/>
</a-form-model-item>
</a-form-model>
<div slot="footer">
<a-button @click="handleCancel">取消</a-button>
<a-button type="primary" @click="handleOk">确定</a-button>
</div>
</a-modal>
</div>
</template>
<script>
import { saveTemplete } from "@/services/market";
const fieldTypeItem = [
{
value: "input",
label: "单行输入框",
},
{
value: "textarea",
label: "多行输入框",
},
{
value: "date",
label: "日期选择框",
},
{
value: "text",
label: "富文本",
},
];
export default {
props: {
fieldVisible: {
required: true,
type: Boolean,
default: false,
},
},
data() {
return {
fieldTypeItem,
form: {
appId: "", // 应用id
fieldCode: "", // 字段编码
fieldName: "", // 字段名称
fieldType: undefined, //字段类型(input.单行输入框,textarea.多行输入框,SELECT.下拉选项框,date.日期选择框)
dataType: "", // 数据类型(number.数字,string.字符串)
fieldLen: 128, //数据长度,默认128
fieldNull: "", //是否允许为空,(0.否,1.是)
isList: "", //字段是否列表显示(0.否,1.是)
fieldOrderNo: "", // 排序号
remark: "", //
},
rules: {
fieldCode: [
{ required: true, message: "请输入字段编码", trigger: "blur" },
],
fieldName: [
{ required: true, message: "请输入字段名称", trigger: "blur" },
],
fieldTyp: [
{ required: true, message: "请选择字段类型", trigger: "change" },
],
fieldNull: [
{ required: true, message: "请选择是否允许为空", trigger: "change" },
],
isList: [
{ required: true, message: "请选择是否列表显示", trigger: "change" },
],
},
};
},
computed: {
Visible: {
get() {
return this.fieldVisible;
},
set(val) {
this.$emit("update:fieldVisible", val);
},
},
},
methods: {
handleOk() {
this.$refs.form.validate(async (valid) => {
if (valid) {
let res = await saveTemplete(this.form);
let { code, msg } = res.data;
if (code === 1) {
this.$message.success(msg);
this.$emit("addSuccess");
this.handleCancel();
}
}
});
},
handleCancel() {
this.$refs.form.resetFields();
this.Visible = false;
},
// 新增
onAdd() {
Object.assign(this.form, this.$options.data().form);
this.form.appId = this.$route.query.id;
this.form.id && this.$delete(this.form, "id");
console.log(this.form);
},
// 编辑
onEdit(data) {
this.form = { ...data };
},
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<div>
<a-modal v-model="Visible" title="适用范围">
<a-tree-select
v-model="siteIdList"
:tree-data="SiteTree"
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择站点"
allow-clear
treeCheckable
:replaceFields="replaceFields"
:treeCheckStrictly="true"
>
</a-tree-select>
<div slot="footer">
<a-space size="middle">
<div class="tips">
已选择<span class="primary">{{ siteIdList.length }}</span
>个站点
</div>
<a-button @click="handleCancel">取消</a-button>
<a-button type="primary" @click="handleOk">确定</a-button>
</a-space>
</div>
</a-modal>
</div>
</template>
<script>
import { mapGetters } from "vuex";
import { cloneApp } from "@/services/market";
export default {
props: {
siteVisible: {
required: true,
type: Boolean,
default: false,
},
appList: {
required: true,
type: Array,
default: () => {
return [];
},
},
},
data() {
return {
siteIdList: [], // 站点id
replaceFields: {
title: "label",
key: "id",
value: "id",
},
};
},
computed: {
Visible: {
get() {
return this.siteVisible;
},
set(val) {
this.$emit("update:siteVisible", val);
},
},
...mapGetters("site", ["SiteTree"]),
},
methods: {
async handleOk() {
if (!this.siteIdList) {
this.$message.warning("请先选择站点");
return;
}
let res = await cloneApp({
siteIdList: this.siteIdList.map((v) => v.value),
idList: this.appList,
});
let { code, msg } = res.data;
if (code === 1) {
this.$message.success(msg);
this.$emit("checkSite");
this.handleCancel();
}
},
// 关闭
handleCancel() {
this.siteIdList = [];
this.Visible = false;
},
// 获取站点回显
getSiteList(siteList) {
let arr = siteList.map((v) => {
return {
value: v,
};
});
this.siteIdList = arr;
},
},
};
</script>
<style lang="less" scoped>
.tips {
font-weight: 600 !important;
}
</style>
\ No newline at end of file
......@@ -407,7 +407,6 @@ export default {
getSiteInfo(siteId) {
Object.assign(this.$data, this.$options.data()); //获取data源对象,覆盖当前data对象状态
this.siteId = siteId;
console.log(this.siteId);
this.getSiteBusinessData({ siteId });
this.getMatterSiteData({ siteId });
this.getBusinessMatterData({ siteId });
......
......@@ -272,4 +272,42 @@ module.exports = {
save: `${BASE_URL}/skin/field/save`,
delete: `${BASE_URL}/skin/field/delete`,
},
// 应用集市
App: {
list: `${BASE_URL}/app/list`,
info: `${BASE_URL}/app/info`,
save: `${BASE_URL}/app/save`,
delete: `${BASE_URL}/app/delete`,
distribute: `${BASE_URL}/app/appDistribute`,
clone: `${BASE_URL}/app/cloneAppsBySites`,
},
// 应用数据
dataset: {
list: `${BASE_URL}/app/dataset/list`,
info: `${BASE_URL}/app/dataset/info`,
save: `${BASE_URL}/app/dataset/save`,
delete: `${BASE_URL}/app/dataset/delete`,
},
// 应用信息字段配置
appField: {
list: `${BASE_URL}/app/info/field/list`,
info: `${BASE_URL}/app/info/field/info`,
save: `${BASE_URL}/app/info/field/save`,
delete: `${BASE_URL}/app/info/field/delete`,
},
// 应用信息模板
templete: {
list: `${BASE_URL}/app/info/templete/field/list`,
info: `${BASE_URL}/app/info/templete/field/info`,
save: `${BASE_URL}/app/info/templete/field/save`,
delete: `${BASE_URL}/app/info/templete/field/delete`,
},
// 应用历史版本
version: {
list: `${BASE_URL}/app/version/list`,
info: `${BASE_URL}/app/version/info`,
delete: `${BASE_URL}/app/version/delete`,
used: `${BASE_URL}/app/version/used`,
preview: `${BASE_URL}/app/version/preview`,
},
};
import {
App,
dataset,
appField,
templete,
version,
} from "@/services/basicsetApi";
import { request, METHOD } from "@/utils/request";
/**
* 应用
*/
// 获取应用列表
export async function getAppList(data) {
return request(App.list, METHOD.POST, data);
}
// 查看应用
export async function getAppInfo(data) {
return request(App.info, METHOD.GET, data);
}
// 新增,修改应用
export async function saveApp(data) {
return request(App.save, METHOD.POST, data);
}
// 删除应用
export async function deleteApp(data) {
return request(App.delete, METHOD.GET, data);
}
// 克隆应用
export async function cloneApp(data) {
return request(App.clone, METHOD.POST, data);
}
// 部署应用
export async function deployApp(data) {
return request(App.distribute, METHOD.POST, data);
}
/**
* 应用数据
*/
// 获取数据列表
export async function getDatasetList(data) {
return request(dataset.list, METHOD.POST, data);
}
// 查看数据
export async function getDatasetInfo(data) {
return request(dataset.info, METHOD.GET, data);
}
// 新增,修改数据
export async function saveDataset(data) {
return request(dataset.save, METHOD.POST, data);
}
// 删除数据
export async function deleteDataset(data) {
return request(dataset.delete, METHOD.GET, data);
}
/**
* 应用信息字段配置
*/
// 获取信息字段列表
export async function getAppFieldList(data) {
return request(appField.list, METHOD.POST, data);
}
// 查看信息字段
export async function getAppFieldInfo(data) {
return request(appField.info, METHOD.GET, data);
}
// 新增,修改信息字段
export async function saveAppField(data) {
return request(appField.save, METHOD.POST, data);
}
// 删除信息字段
export async function deleteAppField(data) {
return request(appField.delete, METHOD.GET, data);
}
/**
* 应用信息模板
*/
// 获取应用信息模板列表
export async function getTempleteList(data) {
return request(templete.list, METHOD.POST, data);
}
// 查看应用信息模板
export async function getTempleteInfo(data) {
return request(templete.info, METHOD.GET, data);
}
// 新增,修改应用信息模板
export async function saveTemplete(data) {
return request(templete.save, METHOD.POST, data);
}
// 删除应用信息模板
export async function deleteTemplete(data) {
return request(templete.delete, METHOD.GET, data);
}
/**
* 应用历史版本
*/
// 获取应用历史版本列表
export async function getVersionList(data) {
return request(version.list, METHOD.POST, data);
}
// 查看应用历史版本
export async function getVersionInfo(data) {
return request(version.info, METHOD.GET, data);
}
// 新增,修改应用历史版本
export async function saveVersion(data) {
return request(version.save, METHOD.POST, data);
}
// 删除应用历史版本
export async function deleteVersion(data) {
return request(version.delete, METHOD.GET, data);
}
// 使用版本
export async function usedVersion(data) {
return request(version.used, METHOD.GET, data);
}
// 预览版本
export async function previewVersion(data) {
return request(version.preview, METHOD.GET, data);
}
export default {
namespaced: true,
state: {
siteId:'', // 站点id
imageResolution:[], // 皮肤设置分辨率
siteId: "", // 站点id
imageResolution: [], // 皮肤设置分辨率
SiteTree: [], // 站点树
appTemplate: [], // 应用模板属性
},
mutations:{
SET_SITE_ID(state,newId){
state.siteId = newId
getters: {
SiteTree(state) {
return state.SiteTree;
},
SET_imageResolution(state,imageResolution){
state.imageResolution = imageResolution
appTemplate(state) {
return state.appTemplate;
},
},
mutations: {
SET_appTemplate(state, appTemplate) {
state.appTemplate = appTemplate;
},
SET_SITE_ID(state, newId) {
state.siteId = newId;
},
SET_SiteTree(state, SiteTree) {
state.SiteTree = SiteTree;
},
SET_imageResolution(state, imageResolution) {
state.imageResolution = imageResolution;
}, // 皮肤设置分辨率字典
},
}
};
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