vue-apps/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceImport.vue
shangxiaoran@qq.com 9d8f9f0e92 初始化应用
2022-06-28 01:29:37 +08:00

312 lines
11 KiB
Vue

<template>
<el-dialog
title="导入资产库"
:visible.sync="dialogVisible"
:close-on-click-modal=false
:destroy-on-close=true
width="450px"
:before-close="handleClose"
@closed="restoreParam" class="workspace-import">
<div v-show="step1" id="step1" style="height: 250px;text-align: center;">
<div style="position: relative;top:35%;">
<div style="margin-bottom: 25px;">
<awsui-button style="width: 130px;" :class="{'button-general-color': clickUploadButton == 'local', 'button-general-color-reverse': clickUploadButton == 'server'}" :type="clickUploadButton == 'local' ? 'primary' : ''" @click="localImport(true, true)">本地文件上传</awsui-button>
</div>
<div>
<awsui-button style="width: 130px;" :class="{'button-general-color': clickUploadButton == 'server', 'button-general-color-reverse': clickUploadButton == 'local'}" :type="clickUploadButton == 'server' ? 'primary' : ''" @click="serverImport(true, true)">服务器文件导入</awsui-button>
</div>
</div>
</div>
<div v-show="step2" id="step2" style="height: 250px;" v-loading="loading">
<div style="text-align: center;padding-top: 30px;">
<awsui-button style="width: 130px;" :class="{'button-general-color': clickUploadButton == 'local', 'button-general-color-reverse': clickUploadButton == 'server'}" :type="clickUploadButton == 'local' ? 'primary' : ''" @click="localImport(false, true)">本地文件上传</awsui-button>
<awsui-button style="width: 130px;" :class="{'button-general-color': clickUploadButton == 'server', 'button-general-color-reverse': clickUploadButton == 'local'}" :type="clickUploadButton == 'server' ? 'primary' : ''" @click="serverImport(true, true)">服务器文件导入</awsui-button>
</div>
<div v-show="source == 'local'" style="height:100px;margin: 10px 10px;">
<PALUpload ref="palUpload" style="width: 100%;"
class="upload-demo"
appId="com.actionsoft.apps.coe.pal"
repositoryName="tmp"
groupValue="Normal"
fileValue="Normal"
:on-preview="handlePreview"
:on-success="handleSuccess"
:on-remove="handleRemove"
:on-error="handleError"
:before-remove="beforeRemove"
:before-upload="beforeUpload"
:limit="1"
:on-exceed="handleExceed"
accept=".bak"
:file-list="fileList">
<div style="display: none;">
<awsui-button id="selectFileButton" style="width: 130px;" class="button-general-color" type="primary">本地文件上传</awsui-button>
</div>
</PALUpload>
</div>
<div v-show="source == 'remote'" style="height:70px;margin: 40px 10px 0px 10px;">
<el-select style="width: 100%" v-model="serverValue" placeholder="请选择" size="mini" no-data-text="无资产库文件" @change="changeServerValue">
<el-option
v-for="item in serverOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div v-show="wsIsExist" style="margin: 10px;">
<el-form>
<el-form-item label="已存在资产库处理方法" prop="resource">
<el-radio-group v-model="replaceType">
<el-radio label="replace">替换</el-radio>
<el-radio label="skip">跳过</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
</div>
</div>
<span slot="footer" class="dialog-footer">
<awsui-button class="button-general-color" :disabled="buttonDisabled" type="primary" @click="save">确定</awsui-button>
<awsui-button @click="cancel()">取消</awsui-button>
</span>
</el-dialog>
</template>
<script>
import PALUpload from "@/components/common/upload/index.vue";
import awsuiAxios from "../../awsuiAxios";
export default {
name: "WorkspaceImport",
components: {PALUpload},
data() {
return {
buttonDisabled : false,
dialogVisible : false,
clickUploadButton: 'local',
step1 : true,
step2 : false,
source : '',
wsIsExist : false,
fileList: [],
serverOptions: [],
serverValue: '',
replaceType: 'replace',
wsFileName: '',
loading: false,
obj: null //导入成功后回调的vue页面
}
},
methods: {
openImportWsDlg(obj) {
this.dialogVisible = true;
this.obj = obj;
},
handleClose(done) {
done();
},
restoreParam() {// 关闭后数据初始化
this.buttonDisabled = false;
this.loading = false;
this.dialogVisible = false;
this.step1 = true;
this.step2 = false;
this.source = '';
this.wsIsExist = false;
this.fileList = [];
this.serverOptions = [];
this.serverValue = '';
this.replaceType = 'replace';
this.wsFileName = '';
},
cancel() {
this.dialogVisible = false;
},
changeServerValue() {
const that = this;
that.wsIsExist = false;
that.replaceType = 'replace';
that.wsFileName = that.serverValue;
that.loading=true;
that.buttonDisabled = true;
const data = {
url:'jd',
data:{
cmd : 'com.actionsoft.apps.coe.pal_ws_is_exist',
wsFileName : that.wsFileName,
source : that.source
}
};
awsuiAxios.post(data).then(function (ro) {
if (ro.result == 'ok') {
if (ro.data.message == "exist") {
that.replaceType = 'replace';
that.wsIsExist = true;
} else {
that.replaceType = 'replace';
that.wsIsExist = false;
}
} else {
that.$message.error(ro.msg);
}
that.loading = false;
that.buttonDisabled = false;
}).catch(error=>{
console.log(error);
})
},
localImport(changeStep2, openFileSelect) {
this.clickUploadButton = 'local';
if (openFileSelect) {// 打开文件选择
this.$refs.palUpload.clearFiles();
this.source = 'local';
document.getElementById("selectFileButton").click();
}
if (changeStep2) {
this.step1 = false;
this.step2 = true;
}
this.wsIsExist = false;
this.replaceType = 'replace';
this.wsFileName = '';
},
serverImport(changeStep2) {
this.clickUploadButton = 'server';
// 查询服务器中是否存在需要导入的资产库文件
const that = this;
const data = {
url:'jd',
data:{
cmd : 'com.actionsoft.apps.coe.pal_ws_remote_import_query'
}
};
awsuiAxios.post(data).then(function (ro) {
if (ro.result == 'ok') {
that.serverOptions = ro.data.impRepsitorys;
} else {
that.$message.error(ro.msg);
}
}).catch(error=>{
console.log(error);
})
if (changeStep2) {
that.step1 = false;
that.step2 = true;
}
// 获取服务器中已经上传好的资产库文件
that.serverOptions = [];
that.serverValue = '';
that.source = 'remote';
that.wsIsExist = false;
that.replaceType = 'replace';
that.wsFileName = '';
},
save() {
const that = this;
if (that.wsFileName == '') {
that.$message({message: '请'+ (that.clickUploadButton == 'local' ? '上传' : '选择') + '需要导入的文件', type: 'warning'});
return;
}
that.buttonDisabled = true;
that.loading = true;
const data = {
url:'jd',
data:{
cmd : 'com.actionsoft.apps.coe.pal_ws_save_import',
wsFileName : that.wsFileName,
replaceChoice : that.replaceType,
source : that.source
}
};
awsuiAxios.post(data).then(function (ro) {
if (ro.result == 'ok') {
console.log("导入资产库[" + ro.data.wsName + "][" + ro.data.wsId + "]成功")
that.$message({
message: ro.msg,
duration: 2000,
type: 'success'
});
that.cancel();
if (that.obj != null) {
that.obj.importWorkspaceCallback();
}
} else {
that.loading = false;
that.buttonDisabled = false;
that.$message.error(ro.msg);
}
}).catch(error=>{
console.log(error);
})
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleExceed(files, fileList) {
},
handleError(err, file, fileList) {
},
beforeUpload(file) {
// 上传之前校验判断大小
if (file.size / 1024 / 1024 > 2048) { //文件大于2G
this.$message.warning('文件过大,请联系管理员将需上传的文件放在在服务器/doccenter/com.actionsoft.apps.coe.pal/tmp/imp/repository目录下使用服务器上传方式上传');
return false;
}
},
handleSuccess(response, file, fileList) {
const that = this;
that.buttonDisabled = true;
that.loading = true;
that.wsFileName = file.name;
const data = {
url:'jd',
data:{
cmd : 'com.actionsoft.apps.coe.pal_ws_is_exist',
wsFileName : that.wsFileName,
source : that.source
}
};
awsuiAxios.post(data).then(function (ro) {
if (ro.result == 'ok') {
if (ro.data.message == "exist") {
that.replaceType = 'replace';
that.wsIsExist = true;
} else {
that.replaceType = 'replace';
that.wsIsExist = false;
}
} else {
that.$message.error(ro.msg);
}
that.buttonDisabled = false;
that.loading = false;
}).catch(error=>{
console.log(error);
})
},
beforeRemove(file, fileList) {
if (file.status == 'success') {
// 删除之前,进行服务器文件删除
}
this.wsFileName = '';
this.wsIsExist = false;
},
}
}
</script>
<style scoped>
.workspace-import >>> .el-dialog__body {
padding: 10px 20px;
color: #606266;
font-size: 14px;
word-break: break-all;
}
</style>