上传视觉对比需求中,前端js改造
This commit is contained in:
parent
35957b9374
commit
55d580bc87
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -0,0 +1,785 @@
|
||||
/**
|
||||
* 业务代码
|
||||
*/
|
||||
|
||||
// main页面打开版本列表
|
||||
const versionListFun = {
|
||||
versionList: [],
|
||||
historyList: [],
|
||||
openVersionList() {
|
||||
let page = $("#versionList")
|
||||
if (page.length > 0) {
|
||||
this.closeVersionList()
|
||||
return
|
||||
}
|
||||
$(`<div id="versionList" class="versionList"></div>`).appendTo("#designer_header")
|
||||
this.loadVersionList()
|
||||
},
|
||||
loadVersionList() {
|
||||
function versionItem(item) {
|
||||
return `
|
||||
<div class="version-item">
|
||||
<div class="version-content">
|
||||
<div class="top-info">
|
||||
<span class="left-span version-state-${item.versionStatus}">${item.versionNo} ${item.versionStatus1}</span>
|
||||
<span style="font-size: 12px;display: inline-flex;align-items: center">${item.updateTime}<span class="update-user-name" awsui-qtip="${item.updateUser}">${item.updateUser}</span>${修改}</span>
|
||||
</div>
|
||||
<div class="bottom-info">
|
||||
<span class="left-span">${item.createTime}</span>
|
||||
<span style="display: inline-flex;align-items: center"> ${由}<span class="create-user-name" awsui-qtip="${item.createUser}">${item.createUser}</span>${创建}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="version-icon">
|
||||
${item.hasCreatePerm ? `<i class="awsui-iconfont" awsui-qtip="${新建版本}" onclick="versionListFun.createNewVersion(event,${JSON.stringify(item).replace(/\"/g, "'")})"></i>` : ''}
|
||||
<i class="awsui-iconfont" style="margin: 0 13px;display: ${item.versionStatus === 'use' ? 'none' : ''}" awsui-qtip="${版本对比}" onclick="versionListFun.openComparePage(event,${JSON.stringify(item).replace(/\"/g, "'")})"></i>
|
||||
<i class="awsui-iconfont" awsui-qtip="${切换该版本}" style="display: ${item.isHistory || item.versionStatus === 'use' ? 'none' : ''}" onclick="versionListFun.switchVersion(event,${JSON.stringify(item).replace(/\"/g, "'")})"></i>
|
||||
<div class="select-version" id="select_${item.plId}"></div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
|
||||
awsui.ajax.request({
|
||||
url: './jd',
|
||||
method: 'POST',
|
||||
data: {
|
||||
cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_list',
|
||||
sid: sid,
|
||||
wsId: wsId,
|
||||
teamId: teamId,
|
||||
id: ruuid
|
||||
},
|
||||
ok: function (res) {
|
||||
if (res.result === 'ok') {
|
||||
const status = {
|
||||
use: 设计中,
|
||||
publish: 已发布,
|
||||
stop: 已停用,
|
||||
approval: 审核中,
|
||||
designer: 设计
|
||||
}
|
||||
let versionList = res.data.versionList, historyList = res.data.historyList
|
||||
versionList.forEach(item => {
|
||||
item.versionStatus1 = status[item.versionStatus]
|
||||
})
|
||||
historyList.forEach(item => {
|
||||
item.versionStatus1 = status[item.versionStatus]
|
||||
})
|
||||
versionListFun.versionList = [...versionList]
|
||||
versionListFun.historyList = [...historyList]
|
||||
let str = ''
|
||||
versionList.forEach(item => {
|
||||
str += versionItem(item)
|
||||
})
|
||||
if (historyList.length > 0) {
|
||||
str += `<div class="history-title">${历史版本}</div>`
|
||||
historyList.forEach(item => {
|
||||
str += versionItem({...item, isHistory: true})
|
||||
})
|
||||
}
|
||||
$("#versionList").empty()
|
||||
$("#versionList").append(str)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
closeVersionList() {
|
||||
if ($("#versionList")) {
|
||||
$("#versionList").remove()
|
||||
}
|
||||
},
|
||||
// 创建新版本
|
||||
createNewVersion(event, item) {
|
||||
event.stopPropagation()
|
||||
if (versionListFun.historyList.length > 0 && isBpmSupportMinor != 'true') { // 不支持小版本迭代
|
||||
$.confirm({
|
||||
title: 提示,
|
||||
content: `${确定将} ${item.versionNo} ${item.isHistory ? 历史版本为模板创建新版本文件 : 版本为模板创建新版本文件}?`,
|
||||
onConfirm: function () {
|
||||
awsui.ajax.request({
|
||||
url: './jd',
|
||||
method: 'POST',
|
||||
data: {
|
||||
cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_manager_create',
|
||||
sid: sid,
|
||||
wsId: wsId,
|
||||
teamId: teamId,
|
||||
id: item.plId,
|
||||
isLargeIteration: true,
|
||||
isHistory: item.isHistory || false
|
||||
},
|
||||
ok: function (res) {
|
||||
if (res.result === 'ok') {
|
||||
versionListFun.loadVersionList()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
let {plId, versionNo} = item
|
||||
let selectVersion = $("#select_" + plId)
|
||||
if (selectVersion.is(":visible")) {
|
||||
selectVersion.empty()
|
||||
selectVersion.hide()
|
||||
return
|
||||
}
|
||||
$(".select-version").hide()
|
||||
selectVersion.show()
|
||||
let smallVersionInteger = parseInt(versionNo.match(/\d+\.\d+/g)[0]); // 小版本整数位
|
||||
let smallVersionDecimal; // 小版本小数位
|
||||
let arr1 = []; // 大版本号
|
||||
let arr2 = []; // 以当前版本为大版本的所有小版本
|
||||
let largeVersion, smallVersion
|
||||
let allVersion = versionListFun.versionList.concat(versionListFun.historyList).map(item => item.versionNo.match(/\d+\.\d+/g)[0].split('.'))
|
||||
allVersion.forEach(item => {
|
||||
arr1.push(parseInt(item[0]))
|
||||
if (item[0] == smallVersionInteger) {
|
||||
arr2.push(parseInt(item[1]))
|
||||
}
|
||||
})
|
||||
smallVersionDecimal = Math.max(...arr2) + 1
|
||||
largeVersion = 'v' + (Math.max(...arr1) + 1).toFixed(1)
|
||||
if (item.isHistory) {
|
||||
smallVersion = 'v' + Math.max(...arr1) + '.' + smallVersionDecimal
|
||||
} else {
|
||||
smallVersion = 'v' + smallVersionInteger + '.' + smallVersionDecimal
|
||||
}
|
||||
selectVersion.html(`
|
||||
<div>${请选择版本号}:</div>
|
||||
<div style="height: 25px;padding: 8px 0 4px 0;">
|
||||
<input class="awsui-radio" type="radio" name="versionRadio" isLargeIteration="true">
|
||||
<span style="line-height: 19px">${largeVersion}</span>
|
||||
</div>
|
||||
<div>
|
||||
<input class="awsui-radio" type="radio" name="versionRadio" isLargeIteration="false">
|
||||
<span style="line-height: 19px">${smallVersion}</span>
|
||||
</div>
|
||||
`)
|
||||
$("input[name='versionRadio']").on("click", function (event) {
|
||||
event.stopPropagation()
|
||||
let isLargeIteration = $(this).attr("isLargeIteration") == 'true'
|
||||
awsui.ajax.request({
|
||||
url: './jd',
|
||||
method: 'POST',
|
||||
data: {
|
||||
cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_manager_create',
|
||||
sid: sid,
|
||||
wsId: wsId,
|
||||
teamId: teamId,
|
||||
id: item.plId,
|
||||
isLargeIteration: isLargeIteration,
|
||||
isHistory: item.isHistory || false
|
||||
},
|
||||
ok: function (res) {
|
||||
if (res.result === 'ok') {
|
||||
let newId = res.data.uuid
|
||||
awsui.ajax.request({
|
||||
url: './jd',
|
||||
method: 'POST',
|
||||
data: {
|
||||
cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_manager_use',
|
||||
sid: sid,
|
||||
wsId: wsId,
|
||||
teamId: teamId,
|
||||
id: newId,
|
||||
},
|
||||
ok: function (res) {
|
||||
if (res.result === 'ok') {
|
||||
let currentURL = window.location.href
|
||||
let url = new URL(currentURL)
|
||||
let searchParams = new URLSearchParams(url.search)
|
||||
searchParams.set('uuid', newId);
|
||||
url.search = searchParams.toString()
|
||||
window.location.href = url.toString()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
},
|
||||
// 打开版本对比
|
||||
openComparePage(event, item) {
|
||||
event.stopPropagation()
|
||||
let compareBox = $("#versionCompareBox")
|
||||
compareBox.empty()
|
||||
compareBox.show()
|
||||
let str = '<iframe id="versionCompareContent" name="versionCompareContent" style="width: 100%; height: 100%;border: none"></iframe>';
|
||||
compareBox.append(str);
|
||||
$('#versionCompareContent').attr(
|
||||
'src', "./w?sid=" + sid
|
||||
+ "&cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_version_compare"
|
||||
+ "&wsId=" + wsId
|
||||
+ "&compareVerId=" + item.plId
|
||||
+ "&curId=" + ruuid
|
||||
+ "&teamId=" + teamId
|
||||
// 添加子页面所需参数:是否为历史版本
|
||||
+ "&isHistory=" + item.isHistory
|
||||
)
|
||||
versionListFun.closeVersionList()
|
||||
},
|
||||
// 关闭版本对比
|
||||
closeComparePage() {
|
||||
parent.$("#versionCompareBox").hide()
|
||||
parent.$("#versionCompareBox").empty()
|
||||
},
|
||||
// 切换版本
|
||||
switchVersion(event, item) {
|
||||
event.stopPropagation()
|
||||
if ($("#saving_tip").text() == 文件已修改未保存) {
|
||||
$.confirm({
|
||||
title: 提示,
|
||||
content: 文件修改未保存 + ',' + 是否继续切换,
|
||||
onConfirm: function () {
|
||||
versionListFun.changeCurVersion(item.plId)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
versionListFun.changeCurVersion(item.plId)
|
||||
}
|
||||
},
|
||||
changeCurVersion(uuid) {
|
||||
awsui.ajax.request({
|
||||
url: './jd',
|
||||
method: 'POST',
|
||||
data: {
|
||||
cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_manager_use',
|
||||
sid: sid,
|
||||
wsId: wsId,
|
||||
teamId: teamId,
|
||||
id: uuid,
|
||||
},
|
||||
ok: function (res) {
|
||||
if (res.result === 'ok') {
|
||||
let currentURL = window.location.href
|
||||
let url = new URL(currentURL)
|
||||
let searchParams = new URLSearchParams(url.search)
|
||||
searchParams.set('uuid', uuid);
|
||||
url.search = searchParams.toString()
|
||||
window.location.href = url.toString()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
// 版本对比页面
|
||||
const designerZoomYl = {
|
||||
left: 100,
|
||||
right: 100
|
||||
}
|
||||
const fileTabStr = ` <div class="attr-tab active-tab" tab="attr">
|
||||
<div class="tab-name">${文件属性}</div>
|
||||
</div>
|
||||
<div class="attr-tab" tab="upFile">
|
||||
<div class="tab-name">${附件}</div>
|
||||
</div>
|
||||
`
|
||||
const shapeTabStr = ` <div class="attr-tab active-tab" tab="attr">
|
||||
<div class="tab-name">${形状属性}</div>
|
||||
</div>
|
||||
<div class="attr-tab" tab="upFile">
|
||||
<div class="tab-name">${附件}</div>
|
||||
</div>
|
||||
<div class="attr-tab" tab="link">
|
||||
<div class="tab-name">${链接}</div>
|
||||
</div>
|
||||
`
|
||||
const versionCompareFun = {
|
||||
// 缩放
|
||||
pageZoom(position, type) {
|
||||
function handleZoom(position, type) {
|
||||
if (type == 'zoomIn') {
|
||||
if (designerZoomYl[position] + 10 > 200) {
|
||||
designerZoomYl[position] = 200;
|
||||
} else {
|
||||
designerZoomYl[position] = designerZoomYl[position] + 10;
|
||||
}
|
||||
} else if (type == 'zoomOut') {
|
||||
if (designerZoomYl[position] - 10 < 50) {
|
||||
designerZoomYl[position] = 50;
|
||||
} else {
|
||||
designerZoomYl[position] = designerZoomYl[position] - 10;
|
||||
}
|
||||
} else {
|
||||
designerZoomYl[position] = 100;
|
||||
}
|
||||
VersionDesigner.setZoomScale(position, designerZoomYl[position] / 100);
|
||||
$("#zoom-value-" + position).text(Math.round(VersionDesigner.config.scale[position] * 100) + '%')
|
||||
}
|
||||
|
||||
handleZoom(position, type)
|
||||
if (isSameOperate) {
|
||||
let otherPos = position === "left" ? "right" : "left";
|
||||
designerZoomYl[otherPos] = designerZoomYl[position]
|
||||
VersionDesigner.setZoomScale(otherPos, designerZoomYl[position] / 100);
|
||||
$("#zoom-value-" + otherPos).text(Math.round(VersionDesigner.config.scale[otherPos] * 100) + '%')
|
||||
}
|
||||
},
|
||||
// 鹰眼导航
|
||||
openNavigation: function (position, isShow) {
|
||||
function handleNav(position, isShow) {
|
||||
if (isShow) {
|
||||
$("#navigation-view-" + position).show()
|
||||
Navigator.draw(position)
|
||||
$('#show-nav-' + position).hide()
|
||||
$('#close-nav-' + position).show()
|
||||
} else {
|
||||
$("#navigation-view-" + position).hide()
|
||||
$('#show-nav-' + position).show()
|
||||
$('#close-nav-' + position).hide()
|
||||
}
|
||||
}
|
||||
|
||||
handleNav(position, isShow)
|
||||
if (isSameOperate) {
|
||||
let otherPos = position === "left" ? "right" : "left";
|
||||
handleNav(otherPos, isShow)
|
||||
}
|
||||
},
|
||||
openAttributeView: function (position) {
|
||||
function handleAttrView(position) {
|
||||
let selectedLength = Utils.getSelected(position).length
|
||||
let view = $("#attribute-view-" + position)
|
||||
let headLeft = view.find('.head-left')
|
||||
if (selectedLength > 0) {
|
||||
headLeft.attr('viewType', 'shape')
|
||||
headLeft.html(shapeTabStr)
|
||||
versionCompareFun.writeShapeAttributeHtml(position)
|
||||
} else {
|
||||
headLeft.attr('viewType', 'file')
|
||||
headLeft.html(fileTabStr)
|
||||
versionCompareFun.writeFileAttributeHtml(position)
|
||||
}
|
||||
view.show()
|
||||
let btn = $("#view-btn-" + position)
|
||||
btn.find('.btn-text').remove()
|
||||
btn.css('width', '45px')
|
||||
btn.hide()
|
||||
versionCompareFun.attrViewEvent(position)
|
||||
}
|
||||
|
||||
handleAttrView(position)
|
||||
if (isSameOperate) {
|
||||
let otherPos = position === "left" ? "right" : "left";
|
||||
handleAttrView(otherPos)
|
||||
}
|
||||
},
|
||||
closeAttributeView: function (position) {
|
||||
$("#attribute-view-" + position).hide()
|
||||
$("#view-btn-" + position).show()
|
||||
if (isSameOperate) {
|
||||
let otherPos = position === "left" ? "right" : "left";
|
||||
$("#attribute-view-" + otherPos).hide()
|
||||
$("#view-btn-" + otherPos).show()
|
||||
}
|
||||
},
|
||||
// view事件
|
||||
attrViewEvent: function (position) {
|
||||
let otherPos = position === "left" ? "right" : "left";
|
||||
let view = $("#attribute-view-" + position), viewBody = $("#view-body-" + position)
|
||||
let otherView = $("#attribute-view-" + otherPos)
|
||||
// tab点击
|
||||
view.find(".head-left").off("click").on("click", ".attr-tab", function () {
|
||||
view.find(".head-left div.active-tab").removeClass("active-tab");
|
||||
$(this).addClass("active-tab");
|
||||
let activeTab = $(this).attr("tab")
|
||||
viewBody.children().css('display', 'none')
|
||||
viewBody.find('.view-' + activeTab).show()
|
||||
if (isSameOperate) {
|
||||
if (otherView.is(":visible")) {
|
||||
let curType = $(this).parent().attr("viewType") // 当前是文件属性还是数据属性 file/shape
|
||||
let otherViewHead = otherView.find('.head-left'), otherViewBody = $("#view-body-" + otherPos), otherType = otherViewHead.attr("viewType")
|
||||
if (curType === otherType) {
|
||||
updateActiveTab(otherViewHead, otherViewBody, activeTab)
|
||||
} else {
|
||||
if (curType === 'shape') {
|
||||
let selectedId = Utils.getSelectedIds(position)[0]
|
||||
if (PageModel[otherPos].define.elements[selectedId]) {
|
||||
Utils.selectShape(otherPos, selectedId)
|
||||
versionCompareFun.updateAttributeView(otherPos)
|
||||
updateActiveTab(otherViewHead, otherViewBody, activeTab)
|
||||
}
|
||||
} else {
|
||||
Utils.unselect(otherPos)
|
||||
versionCompareFun.updateAttributeView(otherPos)
|
||||
updateActiveTab(otherViewHead, otherViewBody, activeTab)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function updateActiveTab(otherViewHead, otherViewBody, activeTab) {
|
||||
otherViewHead.children().removeClass("active-tab")
|
||||
otherViewHead.find(`div[tab=${activeTab}]`).addClass("active-tab")
|
||||
otherViewBody.children().css('display', 'none')
|
||||
otherViewBody.find('.view-' + activeTab).show()
|
||||
}
|
||||
})
|
||||
// 内容滚动
|
||||
viewBody.off("scroll").on("scroll", function () {
|
||||
if (isSameOperate) {
|
||||
if (otherView.is(":visible")) {
|
||||
let otherViewBody = $("#view-body-" + otherPos)
|
||||
otherViewBody.scrollTop($(this).scrollTop())
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击画布更新属性页面
|
||||
updateAttributeView: function (position) {
|
||||
let view = $("#attribute-view-" + position)
|
||||
let headLeft = view.find('.head-left')
|
||||
let viewType = headLeft.attr('viewType') // 当前是文件属性还是数据属性 file/shape
|
||||
if (view.is(":visible")) {
|
||||
let selectedLength = Utils.getSelected(position).length
|
||||
if (viewType === 'file') { // 已经打开了文件属性窗口
|
||||
if (selectedLength > 0) {
|
||||
headLeft.html(shapeTabStr)
|
||||
headLeft.attr('viewType', 'shape')
|
||||
this.writeShapeAttributeHtml(position)
|
||||
}
|
||||
} else { // 已经打开了数据属性窗口
|
||||
if (selectedLength > 0) {
|
||||
this.writeShapeAttributeHtml(position)
|
||||
} else {
|
||||
headLeft.html(fileTabStr)
|
||||
headLeft.attr('viewType', 'file')
|
||||
this.writeFileAttributeHtml(position)
|
||||
}
|
||||
}
|
||||
this.attrViewEvent(position)
|
||||
}
|
||||
},
|
||||
// 文件属性
|
||||
writeFileAttributeHtml: function (position) {
|
||||
const view = $("#attribute-view-" + position)
|
||||
const activeTab = view.find(".active-tab").attr("tab")
|
||||
let body = $("#view-body-" + position)
|
||||
body.empty()
|
||||
let allData = position === 'left' ? versionData : curData
|
||||
let attr = allData.fileAttr, upFile = allData.fileUpFile, relationUpFile = allData.fileRelationUpFile
|
||||
let attrStr = this.getAttrStr(position, attr)
|
||||
let bodyStr = `<div class="view-attr" style="display:none;">
|
||||
${attrStr === '' ? `<div class="category-item">${暂无文件属性}</div>` : `${attrStr}`}
|
||||
</div>
|
||||
<div class="view-upFile" style="display:none;">
|
||||
${this.getAttrStr(position, [{type: 'file', name: 附件, value: upFile.value, isDiff: upFile.isDiff,}])}
|
||||
${this.getAttrStr(position, [{type: 'file', name: 关联附件, value: relationUpFile.value, isDiff: relationUpFile.isDiff}])}
|
||||
</div>`
|
||||
body.html(bodyStr)
|
||||
body.find('.view-' + activeTab).show()
|
||||
// 追加差异样式
|
||||
view.find(".tab-name").removeClass('attr-diff')
|
||||
if (attr && attr.some(i => i.isDiff)) {
|
||||
view.find('div[tab=attr]').find('.tab-name').addClass('attr-diff')
|
||||
}
|
||||
},
|
||||
// 形状属性
|
||||
writeShapeAttributeHtml: function (position) {
|
||||
const view = $("#attribute-view-" + position)
|
||||
const activeTab = view.find(".active-tab").attr("tab")
|
||||
let body = $("#view-body-" + position)
|
||||
body.empty()
|
||||
let shape = Utils.getSelected(position)[0]
|
||||
const allData = position === 'left' ? versionData : curData
|
||||
let attributeArr = allData.shapeAttr[shape.id] || [],
|
||||
shapeUpFile = allData.shapeUpFile[shape.id] || {},
|
||||
shapeRelationUpFile = allData.shapeRelationUpFile[shape.id] || {},
|
||||
shapeLink = allData.shapeLink[shape.id] || {file: {}, custom: {}}
|
||||
let attrStr = this.getAttrStr(position, attributeArr)
|
||||
let bodyStr = `<div class="view-attr" style="display:none;">
|
||||
${attrStr === '' ? `<div class="category-item">${暂无形状属性}</div>` : `${attrStr}`}
|
||||
</div>
|
||||
<div class="view-upFile" style="display:none;">
|
||||
${this.getAttrStr(position, [{type: 'file', name: 附件, value: shapeUpFile.value, isDiff: shapeUpFile.isDiff,}])}
|
||||
${this.getAttrStr(position, [{type: 'file', name: 关联附件, value: shapeRelationUpFile.value, isDiff: shapeRelationUpFile.isDiff}])}
|
||||
</div>
|
||||
<div class="view-link" style="display:none;">
|
||||
${this.getAttrStr(position, [{type: 'shapeLink', name: 文件链接, value: shapeLink.file.value, isDiff: shapeLink.file.isDiff}])}
|
||||
${this.getAttrStr(position, [{type: 'shapeLink', name: 自定义链接, value: shapeLink.custom.value, isDiff: shapeLink.custom.isDiff}])}
|
||||
</div>`
|
||||
body.html(bodyStr)
|
||||
body.find('.view-' + activeTab).show()
|
||||
// 追加差异样式
|
||||
view.find(".tab-name").removeClass('attr-diff')
|
||||
if (attributeArr.some(i => i.isDiff)) {
|
||||
view.find('div[tab=attr]').find('.tab-name').addClass('attr-diff')
|
||||
}
|
||||
if (shapeUpFile.isDiff || shapeRelationUpFile.isDiff) {
|
||||
view.find('div[tab=upFile]').find('.tab-name').addClass('attr-diff')
|
||||
}
|
||||
if (shapeLink.file.isDiff || shapeLink.custom.isDiff) {
|
||||
view.find('div[tab=link]').find('.tab-name').addClass('attr-diff')
|
||||
}
|
||||
},
|
||||
getAttrStr: function (position, attr) {
|
||||
let str = ''
|
||||
if (!attr) return str;
|
||||
attr.forEach(item => {
|
||||
if (item.type === 'relation' || item.type === 'awsorg') {
|
||||
item.value = item.value.toString()
|
||||
}
|
||||
let contentStr = ''
|
||||
switch (item.type) {
|
||||
case 'table':
|
||||
if (item.value) {
|
||||
let tableStr = ''
|
||||
let table = JSON.parse(item.value).table
|
||||
let t1 = table[0].name, t2 = table[0].desc
|
||||
tableStr += `<div class="table-header">
|
||||
<div class="left-tr" >${t1}</div>
|
||||
<div class="right-tr">${t2}</div>
|
||||
</div>`
|
||||
for (let i = 1; i < table.length; i++) {
|
||||
let t1 = table[i].name, t2 = table[i].desc
|
||||
tableStr += `<div class="table-row">
|
||||
<div class="left-tr">${t1}</div>
|
||||
<div class="right-tr">${t2}</div>
|
||||
</div>`
|
||||
}
|
||||
contentStr = `<div class="attr-table-content">${tableStr}</div>`
|
||||
} else {
|
||||
contentStr = `<div class="category-content">${暂无}${item.name}</div>`
|
||||
}
|
||||
break;
|
||||
case 'file':
|
||||
let isHighSecurity = false
|
||||
let fileList = item.value || []
|
||||
let listStr = ''
|
||||
fileList.forEach(item => {
|
||||
let security = '' // 三元
|
||||
if (isHighSecurity) {
|
||||
security = `<span style="color: ${item.securityInfo.color}">${item.securityInfo.name}</span>`
|
||||
}
|
||||
listStr += `<div class="file-item">
|
||||
<div class="name-box">
|
||||
<span class="name-content" awsui-qtip="${item.fileName}" style="max-width: ${security === '' ? '100%' : 'calc(100% - 50px)'}" >${item.fileName}</span>
|
||||
${security}
|
||||
</div>
|
||||
<div class="file-menu" awsui-qtip="${预览}" onclick="versionCompareFun.previewFile('${position}',${JSON.stringify(item).replace(/\"/g, "'")})">
|
||||
<i class="awsui-iconfont"></i>
|
||||
</div>
|
||||
</div>`
|
||||
})
|
||||
contentStr = `<div class="category-content">${listStr === '' ? `${暂无}${item.name}` : listStr}</div>`
|
||||
break;
|
||||
case 'link':
|
||||
contentStr = `<div class="category-content">
|
||||
${item.value === '' ? `${暂无}${item.name}` : `<a href="${item.value}" target="_blank" style="color: #333">${item.value}</a>`}
|
||||
</div>`
|
||||
break;
|
||||
case 'shapeLink':
|
||||
let linkStr = '', list = item.value || []
|
||||
list.forEach(i => {
|
||||
linkStr += `<div class="file-item">
|
||||
<div class="name-box" awsui-qtip="${i.url}">
|
||||
<a href="${i.url}" target="_blank" style="color: #333">${i.value}</a>
|
||||
</div>
|
||||
</div>`
|
||||
})
|
||||
contentStr = `<div class="category-content">${linkStr === '' ? `${暂无}${item.name}` : linkStr}</div>`
|
||||
break;
|
||||
default:
|
||||
contentStr = `<div class="category-content">
|
||||
${item.value === '' ? `${暂无}${item.name}` : `${item.value}`}
|
||||
</div>`
|
||||
}
|
||||
str += `<div class="category-item ${item.isDiff ? 'attr-diff' : ''}">
|
||||
<div class="attr-title">${item.name}</div>
|
||||
${contentStr}
|
||||
</div>`
|
||||
})
|
||||
return str
|
||||
},
|
||||
// 预览
|
||||
previewFile(position, file) {
|
||||
const imgType = ['jpg', 'jpeg', 'gif', 'png']
|
||||
const fileType = file.fileName.split('.').reverse()[0]
|
||||
if (!imgType.includes(fileType)) { // 不是图片
|
||||
window.open(file.downloadUrl)
|
||||
return
|
||||
}
|
||||
$("#attribute-view-" + position).css('opacity', 0)
|
||||
$('#model-' + position).show()
|
||||
const otherPos = position === 'left' ? 'right' : 'left'
|
||||
const windowWidth = document.body.clientWidth
|
||||
const dialog = $('#file-preview-' + position), otherDialog = $('#file-preview-' + otherPos)
|
||||
const img = new Image()
|
||||
img.src = file.downloadUrl
|
||||
img.addEventListener('load', function () {
|
||||
dialog.find('img').attr('src', img.src)
|
||||
dialog.dialog({
|
||||
title: file.fileName,
|
||||
width: 650,
|
||||
height: 480,
|
||||
model: false,
|
||||
onClose: function () {
|
||||
$('#model-' + position).hide()
|
||||
$("#attribute-view-" + position).css('opacity', 1)
|
||||
}
|
||||
})
|
||||
let dialogWidth = dialog.outerWidth(true), otherDialogWidth = otherDialog.outerWidth(true)
|
||||
let x = windowWidth / 2 / 2 - dialogWidth / 2
|
||||
if (position === 'right') {
|
||||
x += windowWidth / 2
|
||||
}
|
||||
dialog.css({
|
||||
left: x + 'px'
|
||||
})
|
||||
if (otherDialog.is(":visible")) {
|
||||
// dialog机制会把已经打开的dialog居中 这里重新设置一下
|
||||
let x = windowWidth / 2 / 2 - otherDialogWidth / 2
|
||||
if (otherPos === 'right') {
|
||||
x += windowWidth / 2
|
||||
}
|
||||
otherDialog.css({
|
||||
left: x + 'px'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 同步操作
|
||||
isOpenSameOperate(isOpen) {
|
||||
isSameOperate = isOpen
|
||||
if (isOpen) {
|
||||
$('.opend-operate').show()
|
||||
$('.closed-operate').hide()
|
||||
} else {
|
||||
$('.opend-operate').hide()
|
||||
$('.closed-operate').show()
|
||||
}
|
||||
},
|
||||
// 版本列表
|
||||
openCompareList() {
|
||||
versionCompareFun.closeAttributeView('left')
|
||||
versionCompareFun.closeAttributeView('right')
|
||||
let page = $("#compareVersionList")
|
||||
if (page.is(":visible")) {
|
||||
page.hide()
|
||||
page.empty()
|
||||
} else {
|
||||
awsui.ajax.request({
|
||||
url: './jd',
|
||||
method: 'POST',
|
||||
data: {
|
||||
cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_list',
|
||||
sid: parent.sid,
|
||||
wsId: parent.wsId,
|
||||
teamId: parent.teamId,
|
||||
id: parent.ruuid
|
||||
},
|
||||
ok: function (res) {
|
||||
if (res.result === 'ok') {
|
||||
const status = {
|
||||
use: 设计中,
|
||||
publish: 已发布,
|
||||
stop: 已停用,
|
||||
approval: 审核中,
|
||||
designer: 设计
|
||||
}
|
||||
let versionList = res.data.versionList, historyList = res.data.historyList
|
||||
versionList.forEach(item => {
|
||||
item.versionStatus1 = status[item.versionStatus]
|
||||
})
|
||||
historyList.forEach(item => {
|
||||
item.isHistory = true
|
||||
item.versionStatus1 = status[item.versionStatus]
|
||||
})
|
||||
let allList = versionList.concat(historyList)
|
||||
page.empty()
|
||||
let str = ''
|
||||
allList.forEach(item => {
|
||||
let isDisabled = item.versionNo === versionData.versionNo || item.versionNo === curData.versionNo
|
||||
str += `
|
||||
<div style="cursor: ${isDisabled ? 'not-allowed' : 'pointer'}" class="version-item ${isDisabled ? 'disabled' : ''}" onclick="versionCompareFun.changeComparePageUrl(this,'${item.plId}','${item.isHistory}')">
|
||||
<div class="version-content">
|
||||
<div class="top-info">
|
||||
<span class="left-span version-state-${item.versionStatus}">${item.versionNo} ${item.versionStatus1}</span>
|
||||
</div>
|
||||
<div class="bottom-info">
|
||||
<span style="display: inline-flex;align-items: center">${item.updateTime} ${由}<span style="max-width: 65px" class="update-user-name" awsui-qtip="${item.updateUser}">${item.updateUser}</span>${修改}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 30px;text-align: center">
|
||||
<i class="awsui-iconfont" style="font-size: 20px">${item.versionNo === versionData.versionNo ? '' : ''}</i>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
})
|
||||
page.append(str)
|
||||
page.show()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
// 点击监听 关闭版本列表
|
||||
closeVersionListByClick(event) {
|
||||
let page = $("#compareVersionList")
|
||||
if (!page.is(":visible")) {
|
||||
return;
|
||||
}
|
||||
let targetElement = event.target; // 获取被点击的元素
|
||||
let isClickInsideDropdown = document.getElementById('compareVersionList').contains(targetElement); // 检查点击是否在下拉框内
|
||||
let isClickOnButton = document.querySelector('.center-top').contains(targetElement); // 检查点击是否在触发按钮内
|
||||
if (!isClickInsideDropdown && !isClickOnButton) {
|
||||
// 关闭下拉框
|
||||
page.hide()
|
||||
page.empty()
|
||||
}
|
||||
},
|
||||
// 切换对比版本
|
||||
changeComparePageUrl($this, compareVerId, isHistory) {
|
||||
if ($($this).hasClass('disabled')) return
|
||||
let listBox = $("#compareVersionList"), iframe = parent.$('#versionCompareContent')
|
||||
listBox.hide()
|
||||
listBox.empty()
|
||||
parent.$.simpleAlert(正在切换, 'loading')
|
||||
iframe.attr(
|
||||
'src', "./w?sid=" + parent.sid
|
||||
+ "&cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_version_compare"
|
||||
+ "&wsId=" + parent.wsId
|
||||
+ "&compareVerId=" + compareVerId
|
||||
+ "&curId=" + curData.plId
|
||||
+ "&teamId=" + parent.teamId
|
||||
// 添加子页面所需参数:是否为历史版本
|
||||
+ "&isHistory=" + isHistory
|
||||
)
|
||||
iframe.on('load', function () {
|
||||
parent.$.simpleAlert("close")
|
||||
})
|
||||
},
|
||||
// 切换到该版本
|
||||
changeToSelectedV() {
|
||||
$.confirm({
|
||||
title: 提示,
|
||||
content: 是否将 + ` ${versionData.versionNo} ` + 切换为使用中,
|
||||
onConfirm: function () {
|
||||
awsui.ajax.request({
|
||||
url: './jd',
|
||||
method: 'POST',
|
||||
data: {
|
||||
cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_manager_use',
|
||||
sid: parent.sid,
|
||||
wsId: parent.wsId,
|
||||
teamId: parent.teamId,
|
||||
id: versionData.plId,
|
||||
},
|
||||
ok: function (res) {
|
||||
if (res.result === 'ok') {
|
||||
let currentURL = parent.window.location.href
|
||||
let url = new URL(currentURL)
|
||||
let searchParams = new URLSearchParams(url.search)
|
||||
searchParams.set('uuid', versionData.plId);
|
||||
url.search = searchParams.toString()
|
||||
parent.window.location.href = url.toString()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user