Commit 8e1fe334 authored by 彭松's avatar 彭松

1

parent 992ed4ec
...@@ -5,20 +5,53 @@ let baseURL = process.env.VUE_APP_API_BASE_URL; ...@@ -5,20 +5,53 @@ let baseURL = process.env.VUE_APP_API_BASE_URL;
// ----------ps----------------- // ----------ps-----------------
// 查询产品信息列表 // 产品列表
export function getProduct(params) { export function getProduct(params) {
return http.post(`${baseURL}/zwfw/product/list`, params); return http.post(`${baseURL}/zwfw/product/list`, params);
} }
// 产品信息 // 保存更新产品
export function saveProduct(params) { export function saveProduct(params) {
return http.post(`${baseURL}/zwfw/product/save`, params); return http.post(`${baseURL}/zwfw/product/save`, params);
} }
// 产品信息 // 删除产品
export function deleteProduct(params) { export function deleteProduct(params) {
return http.get(`${baseURL}/zwfw/product/delete`, params); return http.get(`${baseURL}/zwfw/product/delete`, params);
} }
// 应用列表
export function getApps(params) {
return http.post(`${baseURL}/zwfw/product/apps/list`, params);
}
// 查看产品应用
export function getAppsInfo(params) {
return http.get(`${baseURL}/zwfw/product/apps/info`, params);
}
// 保存更新产品应用
export function saveApps(params) {
return http.post(`${baseURL}/zwfw/product/apps/save`, params);
}
// 删除产品应用
export function deleteApps(params) {
return http.get(`${baseURL}/zwfw/product/apps/delete`, params);
}
// 查询产品资料列表
export function getDocument(params) {
return http.post(`${baseURL}/zwfw/product/document/list`, params);
}
// 产品资料
export function getDocumentInfo(params) {
return http.get(`${baseURL}/zwfw/product/document/info`, params);
}
// 保存更新产品资料
export function saveDocument(params) {
return http.post(`${baseURL}/zwfw/product/document/save`, params);
}
// 删除产品资料
export function deleteDocument(params) {
return http.get(`${baseURL}/zwfw/product/document/delete`, params);
}
//-------------xj: -------------------- //-------------xj: --------------------
......
<template> <template>
<div class="myUploadFile"> <div class="myUploadFile">
<a-upload <a-upload :name="defaultInfo.name" :action="defaultInfo.action" :listType="defaultInfo.listType"
:name="defaultInfo.name" :multiple="defaultInfo.multiple" :showUploadList="defaultInfo.showUploadList"
:action="defaultInfo.action" :defaultFileList="defaultInfo.defaultFileList" :file-list="defaultInfo.fileList" :disabled="defaultInfo.disabled"
:listType="defaultInfo.listType" :directory="defaultInfo.directory" :data="defaultInfo.objAttach" :headers="headers"
:multiple="defaultInfo.multiple" :beforeUpload="beforeImageUpload" :remove="uploadRemove" @change="uploadChange" @preview="handlePreview">
:showUploadList="defaultInfo.showUploadList"
:defaultFileList="defaultInfo.fileList"
:disabled="defaultInfo.disabled"
:directory="defaultInfo.directory"
:data="defaultInfo.objAttach"
:headers="headers"
:beforeUpload="beforeImageUpload"
:remove="uploadRemove"
@change="uploadChange"
@preview="handlePreview"
>
<slot></slot> <slot></slot>
</a-upload> </a-upload>
<a-modal <a-modal :visible="defaultInfo.previewVisible" :footer="null" @cancel="defaultInfo.previewVisible = false">
:visible="defaultInfo.previewVisible"
:footer="null"
@cancel="defaultInfo.previewVisible = false"
>
<img alt="example" style="width: 100%" :src="defaultInfo.previewImage" /> <img alt="example" style="width: 100%" :src="defaultInfo.previewImage" />
</a-modal> </a-modal>
</div> </div>
...@@ -81,20 +66,20 @@ export default { ...@@ -81,20 +66,20 @@ export default {
if (this.defaultInfo["prePath"]) { if (this.defaultInfo["prePath"]) {
this.defaultInfo[ this.defaultInfo[
"action" "action"
] = `${this.VUE_APP_API_BASE_URL}${this.fileCommonupload}?prePath=${this.defaultInfo["prePath"]}`; ] = `${this.fileCommonupload}?prePath=${this.defaultInfo["prePath"]}`;
} else { } else {
this.defaultInfo[ this.defaultInfo[
"action" "action"
] = `${this.VUE_APP_API_BASE_URL}${this.fileCommonupload}`; ] = `${this.fileCommonupload}`;
} }
// console.log(this.defaultInfo); console.log(this.defaultInfo);
}, },
deep: true, deep: true,
immediate: true, immediate: true,
}, },
}, },
created() {}, created() { },
methods: { methods: {
uploadRemove(file) { uploadRemove(file) {
if (file.id != undefined) { if (file.id != undefined) {
...@@ -103,6 +88,10 @@ export default { ...@@ -103,6 +88,10 @@ export default {
this.defaultInfo.fileList = this.defaultInfo.fileList.filter( this.defaultInfo.fileList = this.defaultInfo.fileList.filter(
(item) => item.uid != file.uid (item) => item.uid != file.uid
); );
console.log(this.defaultInfo.fileList.length,"=--------")
if(!this.defaultInfo.fileList.length){
this.$emit("input", ""); //相对地址
}
}, },
beforeImageUpload(file, fileList) { beforeImageUpload(file, fileList) {
let whiteFileList = this.defaultInfo.whiteFileList; //文件类型限制 let whiteFileList = this.defaultInfo.whiteFileList; //文件类型限制
...@@ -128,6 +117,7 @@ export default { ...@@ -128,6 +117,7 @@ export default {
return result; return result;
}, },
uploadChange({ file, fileList }) { uploadChange({ file, fileList }) {
console.log(fileList)
if (file.status === "error") { if (file.status === "error") {
return; return;
this.$message.error(`${file.name} 上传失败.`); this.$message.error(`${file.name} 上传失败.`);
...@@ -139,7 +129,7 @@ export default { ...@@ -139,7 +129,7 @@ export default {
} else if (file.status === "removed") { } else if (file.status === "removed") {
// this.$message.success(`${file.name} 删除成功`); // this.$message.success(`${file.name} 删除成功`);
if (!this.defaultInfo.multiple && this.defaultInfo.limit == 1) { if (!this.defaultInfo.multiple && this.defaultInfo.limit == 1) {
this.$emit("input", undefined); //相对地址 this.$emit("input", ""); //相对地址
} }
} }
this.defaultInfo.fileList = fileList; this.defaultInfo.fileList = fileList;
......
...@@ -36,11 +36,7 @@ export default { ...@@ -36,11 +36,7 @@ export default {
whitespace: true, //必选时,空格是否会被视为错误 whitespace: true, //必选时,空格是否会被视为错误
message: "请输入产品名称", message: "请输入产品名称",
trigger: "blur", trigger: "blur",
}, }
// {
// pattern: /^[A-Za-z]+$/,
// message: "请输入正确的用户名格式!",
// },
], ],
}, },
}; };
......
...@@ -2,63 +2,45 @@ ...@@ -2,63 +2,45 @@
<div class="PoliticsShow-Container"> <div class="PoliticsShow-Container">
<div class="header_box"> <div class="header_box">
<div> <div>
<button class="add_btn"> <button class="add_btn" @click="openDetails()">
<span>新增</span> <span>新增</span>
</button> </button>
</div> </div>
<span> <span>
<a-input <a-input allowClear v-model="searchForm.appName" placeholder="请输入应用名称查询">
allowClear
v-model="searchName"
placeholder="请输入应用名称查询"
>
<a-icon slot="prefix" type="search" /> <a-icon slot="prefix" type="search" />
</a-input> </a-input>
<a-select default-value="001"> <a-select v-model="searchForm.deveLanguage">
<!-- <a-select-option <a-select-option value="">全部</a-select-option>
v-for="(item, index) of selectOptions" <a-select-option v-for="(item, index) of dict.deveLanguage" :key="index" :value="index">
:key="index" {{ item }}
:value="item.value" </a-select-option>
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 语言001 </a-select-option>
<a-select-option value="002"> 语言002 </a-select-option>
</a-select> </a-select>
<button class="search_btn">搜索</button> <button class="search_btn" @click="getList()">搜索</button>
</span> </span>
</div> </div>
<div class="main"> <div class="main">
<a-table <a-table size="small" bordered :row-key="(record) => record.id" :scroll="{ y: 590 }" :pagination="tablePagination"
size="small" @change="pagTableChange" :loading="tableLoading" :columns="tableHeaders" :dataSource="tableSourceData">
bordered
:row-key="(record) => record.id"
:scroll="{ y: 590 }"
:pagination="tablePagination"
@change="pagTableChange"
:loading="tableLoading"
:columns="tableHeaders"
:dataSource="tableSourceData"
>
<template slot="operation" slot-scope="text, record, index"> <template slot="operation" slot-scope="text, record, index">
<a-button type="link">下载应用{{ index + 1 }}</a-button> <a-button type="link" v-if="record.appFileUrl"
<a-button type="link" @click="openDetails" @click="handleDowload(record.appFileUrl)">下载应用{{ index + 1 }}</a-button>
>编辑{{ index + 1 }}</a-button <a-button type="link" @click="openDetails(record)">编辑{{ index + 1 }}</a-button>
> <a-popconfirm title="确定要删除此应用吗?" ok-text="Yes" cancel-text="No" @confirm="delRow(record)">
<a-button type="link" style="color: #ff4420" <a-button type="link" style="color: #ff4420">删除{{ index + 1 }}</a-button>
>删除{{ index + 1 }}</a-button </a-popconfirm>
>
</template> </template>
</a-table> </a-table>
<Details ref="Details" /> <Details ref="Details" :deveLanguage="dict.deveLanguage" />
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { getApps, deleteApps } from "@/api/thePlatformIsSet.js";
import table from "@/mixins/table"; import table from "@/mixins/table";
import Details from "./components/Details.vue"; import Details from "./components/Details.vue";
export default { export default {
...@@ -78,34 +60,35 @@ export default { ...@@ -78,34 +60,35 @@ export default {
{ {
title: "应用名称", title: "应用名称",
align: "center", align: "center",
dataIndex: "应用名称", dataIndex: "appName",
}, },
{ {
title: "开发语言", title: "开发语言",
align: "center", align: "center",
dataIndex: "开发语言", dataIndex: "deveLanguage",
}, },
{ {
title: "版本", title: "版本",
align: "center", align: "center",
dataIndex: "版本", dataIndex: "versionNumber",
}, },
{ {
title: "版本信息", title: "版本信息",
align: "center", align: "center",
dataIndex: "版本信息", dataIndex: "versionInfo",
}, },
{ {
title: "是否启用", title: "是否启用",
align: "center", align: "center",
dataIndex: "是否启用", dataIndex: "isEnable",
customRender: (text, record, index) => text == 1 ? '' : "",
}, },
{ {
title: "上传时间", title: "上传时间",
align: "center", align: "center",
dataIndex: "上传时间", dataIndex: "createTime",
customRender: (text, record, index) => this.$moment(text).format("YYYY年MM月DD日 HH:mm:ss"),
}, },
{ {
title: "操作", title: "操作",
align: "center", align: "center",
...@@ -116,7 +99,17 @@ export default { ...@@ -116,7 +99,17 @@ export default {
}, },
}, },
], ],
searchName: undefined, tablePagination: {
current: 1,
pageSize: 10
},
searchForm: {
deveLanguage: ""
},
dict: {
deveLanguage: {},
isEnable: {}
}
}; };
}, },
components: { components: {
...@@ -124,23 +117,66 @@ export default { ...@@ -124,23 +117,66 @@ export default {
}, },
mounted() { mounted() {
this.setMoment(); this.setMoment();
for (let key = 0; key < 20; key++) { this.getList();
this.tableSourceData.push({
id: `00${key + 1}`,
应用名称: `排队信息查询接口${key + 1}`,
开发语言: `PHP${key + 1}`,
版本: `v${key + 1}.0`,
版本信息: `修复unit功能及部分鉴权问题${key + 1}`,
是否启用: 1,
上传时间: `2022-07-03 20:00:00`,
});
}
}, },
methods: { methods: {
openDetails() { getList(search) {
getApps({
page: this.tablePagination.current,
size: this.tablePagination.pageSize,
...this.searchForm,
...search,
}).then((res) => {
if (res.code == 1) {
let {
data,
total,
dict
} = res.data;
this.dict = dict;
this.tableSourceData = data;
this.tablePagination.total = total;
return data
}
})
},
//分页
pagTableChange(page) {
this.tablePagination.current = page.current
this.tablePagination.pageSize = page.pageSize
this.getList();
},
delRow(item) {
deleteApps({
id: item.id
}).then((res) => {
console.log(res)
let { code, msg } = res
if (code == 1) {
this.$message.success('删除成功');
this.getList()
} else {
this.$message.error(msg);
}
})
},
handleDowload(url) {
let arr = url.split('/')
const a = document.createElement("a");
a.href = process.env.VUE_APP_API_BASE_URL+'/' + url;
a.download = arr[arr.length - 1];
a.click();
},
openDetails(item) {
if (item) {
this.$refs.Details.modalInfo.title = "编辑应用";
this.$refs.Details.getInfo(item.id)
} else {
this.$refs.Details.modalInfo.title = "新增应用"; this.$refs.Details.modalInfo.title = "新增应用";
}
this.$refs.Details.modalInfo.visible = true; this.$refs.Details.modalInfo.visible = true;
this.$refs.Details.modalInfo.width = "30%"; this.$refs.Details.modalInfo.width = "30%";
}, },
}, },
}; };
...@@ -150,13 +186,15 @@ export default { ...@@ -150,13 +186,15 @@ export default {
/deep/.ant-spin-container { /deep/.ant-spin-container {
display: block; display: block;
} }
.PoliticsShow-Container { .PoliticsShow-Container {
.header_box { .header_box {
padding-bottom: 1rem; padding-bottom: 1rem;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
& > div {
&>div {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
...@@ -176,6 +214,7 @@ export default { ...@@ -176,6 +214,7 @@ export default {
overflow: hidden; overflow: hidden;
background: #43a4ff; background: #43a4ff;
color: ghostwhite; color: ghostwhite;
& span { & span {
position: relative; position: relative;
z-index: 10; z-index: 10;
...@@ -211,7 +250,7 @@ export default { ...@@ -211,7 +250,7 @@ export default {
} }
} }
& > span { &>span {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
...@@ -220,21 +259,26 @@ export default { ...@@ -220,21 +259,26 @@ export default {
width: 15rem !important; width: 15rem !important;
margin-right: 1rem !important; margin-right: 1rem !important;
} }
/deep/.ant-input { /deep/.ant-input {
height: 2.3rem !important; height: 2.3rem !important;
} }
/deep/.ant-select-selection { /deep/.ant-select-selection {
width: 170px !important; width: 170px !important;
height: 2.3rem !important; height: 2.3rem !important;
margin-right: 1rem !important; margin-right: 1rem !important;
} }
/deep/.ant-select-selection__rendered { /deep/.ant-select-selection__rendered {
height: 100% !important; height: 100% !important;
} }
/deep/.ant-select-selection-selected-value { /deep/.ant-select-selection-selected-value {
height: 100% !important; height: 100% !important;
line-height: 2.3rem !important; line-height: 2.3rem !important;
} }
.search_btn { .search_btn {
padding: 0.8rem 1.2rem; padding: 0.8rem 1.2rem;
border: 0; border: 0;
...@@ -266,13 +310,16 @@ export default { ...@@ -266,13 +310,16 @@ export default {
} }
} }
} }
.main { .main {
.type0 { .type0 {
color: #888888; color: #888888;
} }
.type1 { .type1 {
color: #f94545; color: #f94545;
} }
.levelState { .levelState {
padding: 5px 8px; padding: 5px 8px;
border-radius: 8px; border-radius: 8px;
...@@ -280,12 +327,15 @@ export default { ...@@ -280,12 +327,15 @@ export default {
background: #ffedeb; background: #ffedeb;
border: 1px solid #f94545; border: 1px solid #f94545;
} }
.type2 { .type2 {
color: #04ca8f; color: #04ca8f;
} }
/deep/.ant-btn-link { /deep/.ant-btn-link {
padding: 0 !important; padding: 0 !important;
& + .ant-btn-link {
&+.ant-btn-link {
margin-left: 1rem !important; margin-left: 1rem !important;
} }
} }
......
<template> <template>
<a-modal <a-modal :width="modalInfo.width" :visible="modalInfo.visible" :title="modalInfo.title"
:width="modalInfo.width" @cancel="modalInfo.visible = false" centered destroyOnClose>
:visible="modalInfo.visible" <a-form-model :label-col="{
:title="modalInfo.title"
@cancel="modalInfo.visible = false"
centered
destroyOnClose
>
<a-form-model
:label-col="{
span: 5, span: 5,
}" }" :wrapper-col="{
:wrapper-col="{
span: 19, span: 19,
}" }" layout="horizontal" ref="appForm" :model="appForm" :rules="appRules">
layout="horizontal" <a-form-model-item label="应用名称" prop="appName">
ref="appForm" <a-input v-model="appForm.appName" placeholder="请输入" allowClear />
:model="appForm"
:rules="appRules"
>
<a-form-model-item label="应用名称" prop="应用名称">
<a-input v-model="appForm.应用名称" placeholder="请输入" allowClear />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="开发语言" prop="开发语言"> <a-form-model-item label="开发语言" prop="deveLanguage">
<a-select v-model="appForm.开发语言" placeholder="请选择" allowClear> <a-select v-model="appForm.deveLanguage" placeholder="请选择" allowClear>
<a-select-option value="001"> 选项001 </a-select-option> <a-select-option v-for="(item, index) of deveLanguage" :key="index" :value="index">
{{ item }}
</a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="版本号" prop="版本号"> <a-form-model-item label="版本号" prop="versionNumber">
<a-input v-model="appForm.版本号" placeholder="请输入" allowClear /> <a-input v-model="appForm.versionNumber" placeholder="请输入" allowClear />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="版本信息" prop="版本信息"> <a-form-model-item label="版本信息" prop="versionInfo">
<a-textarea v-model="appForm.版本信息" placeholder="请输入" :rows="4" /> <a-textarea v-model="appForm.versionInfo" placeholder="请输入" :rows="4" />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="应用包" prop="应用包"> <a-form-model-item label="应用包" prop="appFileUrl">
<MyUpload <MyUpload v-model="appForm.appFileUrl" :uploadInfo="uploadInfo">
v-model="appForm.应用包"
:uploadInfo="uploadInfo"
@uploadChange="uploadChange"
>
<a-button style="background: #04ca8f; color: #fff">上传文件</a-button> <a-button style="background: #04ca8f; color: #fff">上传文件</a-button>
</MyUpload> </MyUpload>
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="是否启用" prop="是否启用"> <a-form-model-item label="是否启用" prop="isEnable">
<a-switch v-model="appForm.是否启用" /> <a-switch v-model="appForm.isEnable" />
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
<template slot="footer"> <template slot="footer">
...@@ -54,9 +39,11 @@ ...@@ -54,9 +39,11 @@
</template> </template>
<script> <script>
import { saveApps, getAppsInfo } from "@/api/thePlatformIsSet.js";
import { deepClone } from "@/utils/js/common.js"; import { deepClone } from "@/utils/js/common.js";
export default { export default {
name: "PortalAdminVueDetails", name: "PortalAdminVueDetails",
props: ["deveLanguage"],
data() { data() {
return { return {
modalInfo: { modalInfo: {
...@@ -65,12 +52,13 @@ export default { ...@@ -65,12 +52,13 @@ export default {
width: "30%", width: "30%",
}, },
appForm: { appForm: {
应用名称: undefined, productId: this.$route.query.id,
开发语言: undefined, appName: "",
版本号: undefined, deveLanguage: undefined,
版本信息: undefined, versionNumber: "",
应用包: undefined, versionInfo: "",
是否启用: true, appFileUrl: "",
isEnable: false,
}, },
uploadInfo: { uploadInfo: {
removeFileList: [], //移除文件列表 removeFileList: [], //移除文件列表
...@@ -82,23 +70,52 @@ export default { ...@@ -82,23 +70,52 @@ export default {
// 其他参数 data // 其他参数 data
// test: "001", // test: "001",
}, },
verload: 3, // 单位 M verload: 300, // 单位 M
limit: 1, //限制文件上传数量 limit: 1, //限制文件上传数量
whiteFileList: ["apk"], whiteFileList: ["apk"],
}, },
appRules: {}, appRules: {
appName: [{ required: true, message: "请输入应用名称", trigger: ['blur', 'change'] }],
deveLanguage: [{ required: true, message: "请选择开发语言", trigger: ['blur', 'change'] }],
},
}; };
}, },
mounted() {}, mounted() {
},
methods: { methods: {
uploadChange(fileInfo) { getInfo(id) {
this.uploadInfo.fileList = deepClone(fileInfo.fileList); getAppsInfo({ id: id }).then(res => {
res.data.isEnable = res.data.isEnable == 1
this.appForm = res.data
if (res.data.appFileUrl) {
this.uploadInfo.fileList = [
{
uid: id,
name: res.data.appFileUrl,
url: res.data.appFileUrl,
}
]
}
})
}, },
Modal_Ok() { Modal_Ok() {
this.$refs.appForm.validate((valid) => { this.$refs.appForm.validate((valid) => {
if (valid) { if (valid) {
console.log(this.appForm); let json = JSON.parse(JSON.stringify(this.appForm))
json.isEnable = json.isEnable ? 1 : 0
saveApps(json).then(res => {
let { code, msg } = res
if (code == 1) {
this.$message.success('保存成功');
this.resetForm();
this.modalInfo.visible = false
this.$parent.getList()
} else {
this.$message.error(msg);
}
})
} else { } else {
this.$message.error(`请完善表单信息!`); this.$message.error(`请完善表单信息!`);
return false; return false;
......
<template> <template>
<a-modal <a-modal :width="modalInfo.width" :visible="modalInfo.visible" :title="modalInfo.title"
:width="modalInfo.width" @cancel="modalInfo.visible = false" centered destroyOnClose>
:visible="modalInfo.visible" <a-form-model :label-col="{
:title="modalInfo.title"
@cancel="modalInfo.visible = false"
centered
destroyOnClose
>
<a-form-model
:label-col="{
span: 4, span: 4,
}" }" :wrapper-col="{
:wrapper-col="{
span: 20, span: 20,
}" }" layout="horizontal" ref="appForm" :model="appForm" :rules="appRules">
layout="horizontal" <a-form-model-item label="材料名称" prop="docName">
ref="appForm" <a-input v-model="appForm.docName" placeholder="请输入" allowClear />
:model="appForm"
:rules="appRules"
>
<a-form-model-item label="材料名称" prop="材料名称">
<a-input v-model="appForm.材料名称" placeholder="请输入" allowClear />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="版本号" prop="版本号"> <a-form-model-item label="版本号" prop="versionNumber">
<a-input v-model="appForm.版本号" placeholder="请输入" allowClear /> <a-input v-model="appForm.versionNumber" placeholder="请输入" allowClear />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="版本信息" prop="版本信息"> <a-form-model-item label="版本信息" prop="versionInfo">
<a-textarea v-model="appForm.版本信息" placeholder="请输入" :rows="4" /> <a-textarea v-model="appForm.versionInfo" placeholder="请输入" :rows="4" />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="材料文件" prop="材料文件"> <a-form-model-item label="材料文件" prop="docFileUrl">
<MyUpload <MyUpload v-model="appForm.docFileUrl" :uploadInfo="uploadInfo">
v-model="appForm.材料文件"
:uploadInfo="uploadInfo"
@uploadChange="uploadChange"
>
<a-button style="background: #04ca8f; color: #fff">上传文件</a-button> <a-button style="background: #04ca8f; color: #fff">上传文件</a-button>
</MyUpload> </MyUpload>
</a-form-model-item> </a-form-model-item>
...@@ -47,6 +30,7 @@ ...@@ -47,6 +30,7 @@
</template> </template>
<script> <script>
import { saveDocument, getDocumentInfo } from "@/api/thePlatformIsSet.js";
import { deepClone } from "@/utils/js/common.js"; import { deepClone } from "@/utils/js/common.js";
export default { export default {
name: "PortalAdminVueDetails", name: "PortalAdminVueDetails",
...@@ -58,38 +42,60 @@ export default { ...@@ -58,38 +42,60 @@ export default {
width: "30%", width: "30%",
}, },
appForm: { appForm: {
材料名称: undefined, productId: this.$route.query.id,
版本号: undefined, docName: "",
版本信息: undefined, versionNumber: "",
材料文件: undefined, versionInfo: "",
docFileUrl: ""
}, },
uploadInfo: { uploadInfo: {
removeFileList: [], //移除文件列表 removeFileList: [], //移除文件列表
fileList: [], //文件列表 fileList: [], //文件列表
defaultFileList: [],
multiple: false, //多文件 multiple: false, //多文件
listType: "text", //text, picture 和 picture-card listType: "text", //text, picture 和 picture-card
prePath: "file/fileupload", //附件存放相对路径 否 不填时候默认为 file/fileupload prePath: "file/fileupload", //附件存放相对路径 否 不填时候默认为 file/fileupload
objAttach: { objAttach: {},
// 其他参数 data verload: 300, // 单位 M
// test: "001",
},
verload: 3, // 单位 M
limit: 1, //限制文件上传数量 limit: 1, //限制文件上传数量
whiteFileList: ["doc"], whiteFileList: ["doc", "docx", "pdf", "xlsx", "xls"],
},
appRules: {
docName: [{ required: true, message: "请输入材料名称", trigger: ['blur', 'change'] }],
}, },
appRules: {},
}; };
}, },
mounted() {}, mounted() { },
methods: { methods: {
uploadChange(fileInfo) { getInfo(id) {
this.uploadInfo.fileList = deepClone(fileInfo.fileList); getDocumentInfo({ id: id }).then(res => {
this.appForm = res.data
if (res.data.docFileUrl) {
this.uploadInfo.fileList = [
{
uid: id,
name: res.data.docFileUrl,
url: res.data.docFileUrl,
}
]
}
})
}, },
Modal_Ok() { Modal_Ok() {
this.$refs.appForm.validate((valid) => { this.$refs.appForm.validate((valid) => {
if (valid) { if (valid) {
console.log(this.appForm); saveDocument(this.appForm).then(res => {
let { code, msg } = res
if (code == 1) {
this.$message.success('保存成功');
this.resetForm();
this.modalInfo.visible = false
this.$parent.getList()
} else {
this.$message.error(msg);
}
})
} else { } else {
this.$message.error(`请完善表单信息!`); this.$message.error(`请完善表单信息!`);
return false; return false;
......
...@@ -2,55 +2,27 @@ ...@@ -2,55 +2,27 @@
<div class="PoliticsShow-Container"> <div class="PoliticsShow-Container">
<div class="header_box"> <div class="header_box">
<div> <div>
<button class="add_btn"> <button class="add_btn" @click="openDetails()">
<span>新增</span> <span>新增</span>
</button> </button>
</div> </div>
<span> <span>
<a-input <a-input allowClear v-model="searchName" placeholder="请输入资料名称查询">
allowClear
v-model="searchName"
placeholder="请输入应用名称查询"
>
<a-icon slot="prefix" type="search" /> <a-icon slot="prefix" type="search" />
</a-input> </a-input>
<button class="search_btn" @click="getList()">搜索</button>
<a-select default-value="001">
<!-- <a-select-option
v-for="(item, index) of selectOptions"
:key="index"
:value="item.value"
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 语言001 </a-select-option>
<a-select-option value="002"> 语言002 </a-select-option>
</a-select>
<button class="search_btn">搜索</button>
</span> </span>
</div> </div>
<div class="main"> <div class="main">
<a-table <a-table size="small" bordered :row-key="(record) => record.id" :scroll="{ y: 590 }" :pagination="tablePagination"
size="small" @change="pagTableChange" :loading="tableLoading" :columns="tableHeaders" :dataSource="tableSourceData">
bordered
:row-key="(record) => record.id"
:scroll="{ y: 590 }"
:pagination="tablePagination"
@change="pagTableChange"
:loading="tableLoading"
:columns="tableHeaders"
:dataSource="tableSourceData"
>
<template slot="operation" slot-scope="text, record, index"> <template slot="operation" slot-scope="text, record, index">
<a-button type="link">下载{{ index + 1 }}</a-button> <a-button type="link" v-if="record.docFileUrl" @click="handleDowload(record.docFileUrl)">下载{{ index + 1
<a-button type="link" @click="openDetails" }}</a-button>
>编辑{{ index + 1 }}</a-button <a-button type="link" @click="openDetails(record)">编辑{{ index + 1 }}</a-button>
> <a-popconfirm title="确定要删除此应用吗?" ok-text="Yes" cancel-text="No" @confirm="delRow(record)">
<a-button type="link" style="color: #ff4420" <a-button type="link" style="color: #ff4420">删除{{ index + 1 }}</a-button>
>删除{{ index + 1 }}</a-button </a-popconfirm>
>
</template> </template>
</a-table> </a-table>
<Details ref="Details" /> <Details ref="Details" />
...@@ -59,6 +31,7 @@ ...@@ -59,6 +31,7 @@
</template> </template>
<script> <script>
import { getDocument, deleteDocument } from "@/api/thePlatformIsSet.js";
import table from "@/mixins/table"; import table from "@/mixins/table";
import Details from "./components/Details.vue"; import Details from "./components/Details.vue";
export default { export default {
...@@ -78,24 +51,25 @@ export default { ...@@ -78,24 +51,25 @@ export default {
{ {
title: "材料名称", title: "材料名称",
align: "center", align: "center",
dataIndex: "材料名称", dataIndex: "docName",
}, },
{ {
title: "版本", title: "版本",
align: "center", align: "center",
dataIndex: "版本", dataIndex: "versionNumber",
}, },
{ {
title: "材料信息", title: "材料信息",
align: "center", align: "center",
dataIndex: "材料信息", dataIndex: "versionInfo",
}, },
{ {
title: "上传时间", title: "上传时间",
align: "center", align: "center",
dataIndex: "上传时间", dataIndex: "createTime",
customRender: (text, record, index) => this.$moment(text).format("YYYY年MM月DD日 HH:mm:ss"),
}, },
{ {
...@@ -109,6 +83,10 @@ export default { ...@@ -109,6 +83,10 @@ export default {
}, },
], ],
searchName: undefined, searchName: undefined,
tablePagination: {
current: 1,
pageSize: 10
},
}; };
}, },
components: { components: {
...@@ -116,21 +94,65 @@ export default { ...@@ -116,21 +94,65 @@ export default {
}, },
mounted() { mounted() {
this.setMoment(); this.setMoment();
for (let key = 0; key < 20; key++) { this.getList();
this.tableSourceData.push({
id: `00${key + 1}`,
材料名称: `排队信息查询接口${key + 1}`,
版本: `v${key + 1}.0`,
材料信息: `修复unit功能及部分鉴权问题${key + 1}`,
上传时间: `2022-07-03 20:00:00`,
});
}
}, },
methods: { methods: {
openDetails() { getList(search) {
getDocument({
page: this.tablePagination.current,
size: this.tablePagination.pageSize,
docName: this.searchName,
...search,
}).then((res) => {
if (res.code == 1) {
let {
data,
total,
dict
} = res.data;
this.dict = dict;
this.tableSourceData = data;
this.tablePagination.total = total;
return data
}
})
},
//分页
pagTableChange(page) {
this.tablePagination.current = page.current
this.tablePagination.pageSize = page.pageSize
this.getList();
},
delRow(item) {
deleteDocument({
id: item.id
}).then((res) => {
console.log(res)
let { code, msg } = res
if (code == 1) {
this.$message.success('删除成功');
this.getList()
} else {
this.$message.error(msg);
}
})
},
handleDowload(url) {
let arr = url.split('/')
const a = document.createElement("a");
a.href = process.env.VUE_APP_API_BASE_URL+'/' + url;
a.download = arr[arr.length - 1];
a.click();
},
openDetails(item) {
if (item) {
this.$refs.Details.modalInfo.title = "编辑材料";
this.$refs.Details.getInfo(item.id)
} else {
this.$refs.Details.modalInfo.title = "新增材料"; this.$refs.Details.modalInfo.title = "新增材料";
}
this.$refs.Details.modalInfo.visible = true; this.$refs.Details.modalInfo.visible = true;
this.$refs.Details.modalInfo.width = "27%"; this.$refs.Details.modalInfo.width = "30%";
}, },
}, },
}; };
...@@ -140,13 +162,15 @@ export default { ...@@ -140,13 +162,15 @@ export default {
/deep/.ant-spin-container { /deep/.ant-spin-container {
display: block; display: block;
} }
.PoliticsShow-Container { .PoliticsShow-Container {
.header_box { .header_box {
padding-bottom: 1rem; padding-bottom: 1rem;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
& > div {
&>div {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
...@@ -166,6 +190,7 @@ export default { ...@@ -166,6 +190,7 @@ export default {
overflow: hidden; overflow: hidden;
background: #43a4ff; background: #43a4ff;
color: ghostwhite; color: ghostwhite;
& span { & span {
position: relative; position: relative;
z-index: 10; z-index: 10;
...@@ -201,7 +226,7 @@ export default { ...@@ -201,7 +226,7 @@ export default {
} }
} }
& > span { &>span {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
...@@ -210,21 +235,26 @@ export default { ...@@ -210,21 +235,26 @@ export default {
width: 15rem !important; width: 15rem !important;
margin-right: 1rem !important; margin-right: 1rem !important;
} }
/deep/.ant-input { /deep/.ant-input {
height: 2.3rem !important; height: 2.3rem !important;
} }
/deep/.ant-select-selection { /deep/.ant-select-selection {
width: 170px !important; width: 170px !important;
height: 2.3rem !important; height: 2.3rem !important;
margin-right: 1rem !important; margin-right: 1rem !important;
} }
/deep/.ant-select-selection__rendered { /deep/.ant-select-selection__rendered {
height: 100% !important; height: 100% !important;
} }
/deep/.ant-select-selection-selected-value { /deep/.ant-select-selection-selected-value {
height: 100% !important; height: 100% !important;
line-height: 2.3rem !important; line-height: 2.3rem !important;
} }
.search_btn { .search_btn {
padding: 0.8rem 1.2rem; padding: 0.8rem 1.2rem;
border: 0; border: 0;
...@@ -256,13 +286,16 @@ export default { ...@@ -256,13 +286,16 @@ export default {
} }
} }
} }
.main { .main {
.type0 { .type0 {
color: #888888; color: #888888;
} }
.type1 { .type1 {
color: #f94545; color: #f94545;
} }
.levelState { .levelState {
padding: 5px 8px; padding: 5px 8px;
border-radius: 8px; border-radius: 8px;
...@@ -270,12 +303,15 @@ export default { ...@@ -270,12 +303,15 @@ export default {
background: #ffedeb; background: #ffedeb;
border: 1px solid #f94545; border: 1px solid #f94545;
} }
.type2 { .type2 {
color: #04ca8f; color: #04ca8f;
} }
/deep/.ant-btn-link { /deep/.ant-btn-link {
padding: 0 !important; padding: 0 !important;
& + .ant-btn-link {
&+.ant-btn-link {
margin-left: 1rem !important; margin-left: 1rem !important;
} }
} }
......
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