This commit is contained in:
那些花儿
2025-09-03 17:49:59 +08:00
parent 3110ffd35e
commit 78f25f59b1
15 changed files with 604 additions and 17599 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -37,34 +37,6 @@ $.ajaxSetup({
} }
}) })
//初始化pjax
// ;(function initPjax() {
// if ($.support.pjax) {
// $(document).pjax("a[data-pjax]", "#container", {
// maxCacheLength: 0,
// push: false,
// replace: true,
// fragment: "#container",
// timeout: 8000
// })
// $(document).on("pjax:send", function () {
// NProgress.start()
// $(".ele-admin-content-view").hide()
// window.customStyleList = document.querySelectorAll('style[id^="style-"]')
// })
//
// $(document).on("pjax:complete", function () {
// if (window.customStyleList) {
// window.customStyleList.forEach((style) => {
// style.parentNode.removeChild(style)
// })
// }
// NProgress.done()
// $(".ele-admin-content-view").show()
// })
// }
// })()
function pjaxReplace(url, data = {}) { function pjaxReplace(url, data = {}) {
const { pathname, search } = location const { pathname, search } = location
if (url === pathname + search) { if (url === pathname + search) {
@@ -81,35 +53,3 @@ function pjaxReplace(url, data = {}) {
data data
}) })
} }
function removeHTMLTag(str) {
str = str.replace(/<\/?[^>]*>/g, "") //去除HTML tag
str = str.replace(/[ | ]*\n/g, "\n") //去除行尾空白
str = str.replace(/\n[\s| | ]*\r/g, "\n") //去除多余空行
str = str.replace(/&nbsp;/gi, "") //去掉&nbsp;
return str
}
function GetQueryString(name) {
return new URLSearchParams(window.location.search).get(name)
}
function clearAllTimers() {
const maxTimeoutId = setTimeout(function () {}, 0)
for (let i = 0; i <= maxTimeoutId; i++) {
clearTimeout(i)
clearInterval(i)
}
}
function getNestedValue(obj, path) {
return path.split(".").reduce((acc, part) => acc && acc[part], obj)
}
function loc() {
return location.href.replace(location.search, "").replace(location.hash, "")
}
function clone(obj) {
return JSON.parse(JSON.stringify(obj))
}
@@ -1,39 +1,82 @@
const styleUtil = { const styleUtil = {
// 为元素及其所有子元素添加scoped属性 // 为元素及其所有子元素添加scoped属性
addScopedAttribute(el, scopedId) { addScopedAttribute(el, scopedId, vm) {
if (el && el.setAttribute) { if (!el || !el.setAttribute) return;
el.setAttribute(scopedId, '')
// 递归处理所有子元素 // 跳过Vue组件实例 但是不跳过自己 也就是排除子组件
const children = el.children || el.childNodes if (el.__vue__ && el.__vue__ !== vm) return;
for (let i = 0; i < children.length; i++) {
styleUtil.addScopedAttribute(children[i], scopedId) // 添加scoped属性到当前元素
el.setAttribute(scopedId, '')
// 只处理普通DOM元素,不处理Vue组件
// const children = el.children || el.childNodes;
// for (let i = 0; i < children.length; i++) {
// const child = children[i];
// // 检查是否为普通DOM元素(非Vue组件)
// if (child.nodeType === 1 && !child.__vue__) {
// styleUtil.addScopedAttribute(child, scopedId, vm);
// }
// }
// 使用TreeWalker优化遍历性能
const walker = document.createTreeWalker(
el,
NodeFilter.SHOW_ELEMENT,
{
acceptNode(node) {
// 排除子Vue组件
return node.__vue__ && node !== el
? NodeFilter.FILTER_REJECT
: NodeFilter.FILTER_ACCEPT;
}
}
);
let node;
while (node = walker.nextNode()) {
if (node !== el) {
node.setAttribute(scopedId, '');
} }
} }
}, },
// 移除元素及其所有子元素的scoped属性 // 移除元素及其所有子元素的scoped属性
removeScopedAttribute(el, scopedId) { removeScopedAttribute(el, scopedId) {
if (el && el.removeAttribute) { if (!el || !el.removeAttribute) return;
el.removeAttribute(scopedId)
// 递归处理所有子元素 // 使用querySelectorAll批量处理
const children = el.children || el.childNodes const elements = el.querySelectorAll(`[${scopedId}]`);
for (let i = 0; i < children.length; i++) { elements.forEach(element => element.removeAttribute(scopedId));
styleUtil.removeScopedAttribute(children[i], scopedId)
} // 处理根元素
} el.removeAttribute(scopedId);
// if (el && el.removeAttribute) {
// el.removeAttribute(scopedId)
//
// // 递归处理所有子元素
// const children = el.children || el.childNodes
// for (let i = 0; i < children.length; i++) {
// styleUtil.removeScopedAttribute(children[i], scopedId)
// }
// }
}, },
// 为CSS规则添加作用域属性
scopeCss(css, scopedId) { scopeCss(css, scopedId) {
// 处理CSS规则,为每个选择器添加[scopedId] // 处理CSS规则,为每个选择器添加[scopedId]
const processedCss = css.replace(/([^{]+){/g, (match, selectors) => { const processedCss = css.replace(/([^{]+){/g, (match, selectors) => {
return selectors.split(',') return selectors.split(',')
.map(selector => { .map(selector => {
// 处理深度选择器 >>> 和 /deep/ // 处理深度选择器
if (selector.includes('>>>') || selector.includes('/deep/')) { if (selector.includes('::v-deep')) {
return selector.replace(/(\s*)(>>>|\/deep\/)(\s*)/g, return selector.replace('::v-deep', `[${scopedId}]`);
`$1[${scopedId}] $3`) }
// 处理媒体查询等特殊情况
if (selector.includes('@') || selector.trim().startsWith('@')) {
return selector;
} }
// 普通选择器 // 普通选择器
@@ -43,52 +86,126 @@ const styleUtil = {
}) })
return processedCss return processedCss
} },
} }
// 异步DOM观察器
const asyncStyleHandler = {
observers: new Map(),
// 为组件设置观察器
setupObserver(vm, scopedId) {
if (!vm.$el) return;
// 清除现有观察器
this.disconnectObserver(vm._uid);
// 创建新的MutationObserver
const observer = new MutationObserver((mutations) => {
let shouldProcess = false;
for (const mutation of mutations) {
if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
shouldProcess = true;
break;
}
}
if (shouldProcess) {
// 防抖处理
clearTimeout(vm._styleDebounce);
vm._styleDebounce = setTimeout(() => {
styleUtil.addScopedAttribute(vm.$el, scopedId, vm);
}, 0);
}
});
// 开始观察
observer.observe(vm.$el, {
childList: true,
subtree: true
});
// 存储观察器引用
this.observers.set(vm._uid, observer);
},
// 断开观察器
disconnectObserver(uid) {
if (this.observers.has(uid)) {
this.observers.get(uid).disconnect();
this.observers.delete(uid);
}
}
};
Vue.mixin({ Vue.mixin({
mounted() { mounted() {
if (this.$options.style) { if (!this.$options.style) return;
const styleId = `style-${this._uid}`
const style = document.createElement("style")
style.id = styleId
// 生成唯一属性 try {
const scopedId = `data-v-${this._uid}` const styleId = `style-${this._uid}`;
const scopedId = `data-v-${this._uid}`;
// this.$el.setAttribute(scopedId, '') // 检查样式是否已存在
if (document.getElementById(styleId)) {
console.warn(`Style with id ${styleId} already exists`);
return;
}
// 为组件内所有元素添加唯一属性 const style = document.createElement("style");
styleUtil.addScopedAttribute(this.$el, scopedId) style.id = styleId;
//支持函数和字符串 // 添加作用域属性
let css = typeof this.$options.style === "function" ? this.$options.style.call(this) : this.$options.style if (this.$el) {
styleUtil.addScopedAttribute(this.$el, scopedId, this);
}
// 为每条规则添加属性选择器 // 处理CSS
css = styleUtil.scopeCss(css, scopedId) let css = typeof this.$options.style === "function"
? this.$options.style.call(this)
: this.$options.style;
style.textContent = css if (!css || typeof css !== 'string') {
document.head.appendChild(style) console.warn('Invalid style content');
return;
}
// 保存scopedId以便销毁时使用 css = styleUtil.scopeCss(css, scopedId);
this._scopedId = scopedId style.textContent = css;
document.head.appendChild(style);
this._scopedId = scopedId;
this._styleId = styleId;
// 设置异步DOM观察器
asyncStyleHandler.setupObserver(this, scopedId);
} catch (error) {
console.error('Error applying scoped styles:', error);
} }
}, },
beforeDestroy() { beforeDestroy() {
if (this._scopedId && this.$el) { try {
// 移除所有元素的scoped属性 // 清理作用域属性
styleUtil.removeScopedAttribute(this.$el, this._scopedId) if (this._scopedId && this.$el) {
} styleUtil.removeScopedAttribute(this.$el, this._scopedId);
if (this.$options.style) {
const styleId = `style-${this._uid}`
const style = document.getElementById(styleId)
if (style) {
document.head.removeChild(style)
} }
// 移除样式标签
if (this._styleId) {
const style = document.getElementById(this._styleId);
if (style && style.parentNode) {
style.parentNode.removeChild(style);
}
}
// 断开观察器
asyncStyleHandler.disconnectObserver(this._uid);
} catch (error) {
console.error('Error cleaning up scoped styles:', error);
} }
} }
}) })
@@ -228,3 +228,57 @@ const commonUtil = {
} }
} }
} }
function removeHTMLTag(str) {
str = str.replace(/<\/?[^>]*>/g, "") //去除HTML tag
str = str.replace(/[ | ]*\n/g, "\n") //去除行尾空白
str = str.replace(/\n[\s| | ]*\r/g, "\n") //去除多余空行
str = str.replace(/&nbsp;/gi, "") //去掉&nbsp;
return str
}
function GetQueryString(name) {
return new URLSearchParams(window.location.search).get(name)
}
function clearAllTimers() {
const maxTimeoutId = setTimeout(function () {}, 0)
for (let i = 0; i <= maxTimeoutId; i++) {
clearTimeout(i)
clearInterval(i)
}
}
function getNestedValue(obj, path) {
return path.split(".").reduce((acc, part) => acc && acc[part], obj)
}
function loc() {
return location.href.replace(location.search, "").replace(location.hash, "")
}
function clone(obj) {
return JSON.parse(JSON.stringify(obj))
}
function base64ToFile(base64Data, filename) {
// 将base64的数据部分提取出来
const parts = base64Data.split(";base64,")
const contentType = parts[0].split(":")[1]
const raw = window.atob(parts[1])
const rawLength = raw.length
const uInt8Array = new Uint8Array(rawLength)
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i)
}
// 使用Blob对象创建File对象
const blob = new Blob([uInt8Array], { type: contentType })
blob.lastModifiedDate = new Date()
blob.name = filename
return new File([blob], filename, { type: contentType })
}
@@ -1,12 +0,0 @@
;(function () {
const api = {
listType() {
return $.get("/platform/condolence/common/listType")
},
listOpenType() {
return $.get("/platform/condolence/common/listType")
}
}
window.condolenceCommonApi = api
})()
@@ -1,24 +0,0 @@
;(function () {
const teacherCongressApi = {
//全部教代会
listSession() {
return $.get("/platform/teacherCongress/common/listSession")
},
//开启的教代会
listOpenSession() {
return $.get("/platform/teacherCongress/common/listOpenSession")
},
//查询代表团根据教代会
listDelegation(sessionId) {
return $.get("/platform/teacherCongress/common/listDelegation", { sessionId })
},
//查询所有的代表类型(三种)
listDelegateRole() {
return $.get("/platform/teacherCongress/common/listDelegateRole")
}
}
window.teacherCongressApi = teacherCongressApi
})()
@@ -1,24 +0,0 @@
(function () {
const workersCongressApi = {
//全部工代会
listSession() {
return $.get("/platform/teacherCongress/common/listSession")
},
//开启的工代会
listOpenSession() {
return $.get("/platform/teacherCongress/common/listOpenSession")
},
//查询代表团根据工代会
listDelegation(sessionId) {
return $.get("/platform/teacherCongress/common/listDelegation", { sessionId })
},
//查询所有的代表类型(三种)
listDelegateRole() {
return $.get("/platform/teacherCongress/common/listDelegateRole")
}
}
window.workersCongressApi = workersCongressApi
})()
@@ -1,101 +0,0 @@
const initTableMixins = {
data() {
return {
pageDataUrl: "",
submitLoading: false,
searchMore: false,
tableSize: "",
tableKey: "",
formData: {},
formRules: {},
formLoading: false,
tableLoading: false,
tableData: [],
tableColumns: [],
pageForm: {
searchName: "",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: ""
},
guavaIndex: "index",
unionGroups: [],
threeUnits: []
}
},
methods: {
dropdownCommand({ action, value }) {
if (action) action(value)
},
columnChange(val) {
this.tableLoading = true
this.tableColumns = val
this.tableLoading = false
},
tableSizeChange(size) {
this.tableSize = size
},
indexMethod(index) {
return index + (this.pageForm.pageNumber - 1) * this.pageForm.pageSize + 1
},
doSearch() {
this.tableKey = new Date().getTime()
this.pageForm.pageNumber = 1
this.pageData()
},
pageOrder(column) {
this.pageForm.pageOrderName = column.prop
this.pageForm.pageOrderBy = column.order
this.pageData()
},
pageNumberChange(val) {
this.pageForm.pageNumber = val
this.pageData()
},
pageSizeChange(val) {
this.pageForm.pageSize = val
this.pageData()
},
pageData(url = null, data = null) {
const address = url ? url : loc() + "/pageData"
this.tableLoading = true
$.post(
address,
data ? data : this.pageForm,
(data) => {
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list
this.pageForm.totalCount = data.data.totalCount
} else {
this.$message.error(data.msg)
}
},
"json"
)
},
notifySuccess(msg) {
this.$notify({
title: "成功",
message: msg,
type: "success"
})
},
notifyWarning(msg) {
this.$notify({
title: "警告",
message: msg,
type: "warning"
})
},
notifyError(msg) {
this.$notify.error({
title: "错误",
message: msg
})
}
}
}
@@ -1,530 +0,0 @@
/*选择商品品类*/
.content-goods-publish {
padding: 15px;
margin: 0 auto;
text-align: center;
border-radius: 0.8em;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
background: none repeat 0 0 #fff;
/*商品品类*/
.goods-category {
min-height: 500px;
border-radius: 0.8em;
text-align: left;
padding: 10px;
background: #ededed;
ul {
padding: 12px 8px;
list-style: none;
width: 300px;
background: none repeat 0 0 #fff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
border-radius: 0.4em;
display: inline-block;
letter-spacing: normal;
margin-right: 15px;
vertical-align: top;
word-spacing: normal;
li {
line-height: 20px;
padding: 10px 5px;
cursor: pointer;
color: #333;
font-size: 12px;
display: flex;
flex-wrap: nowrap;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
}
}
/** 当前品类被选中的样式 */
.activeClass {
border-radius: 0.4em;
background-color: color-mix(in srgb, var(--color-primary) 20%, transparent);
border: 1px solid color-mix(in srgb, var(--color-primary) 80%, transparent);
/*background-color: rgba(33, 112, 80, 0.2);*/
/*border: 1px solid rgba(33, 112, 80, 0.8);*/
color: #fff;
}
/*!*当前选择的商品品类文字*!*/
.current-goods-category {
text-align: left;
padding: 10px;
width: 100%;
border: 1px solid #fbeed5;
color: #c09853;
background-color: #fcf8e3;
margin: 10px auto;
padding: 8px 35px 8px 14px;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
font-size: 12px;
font-weight: bold;
}
}
/*编辑基本信息*/
.el-form {
padding-bottom: 80px;
.el-form-item {
width: 100%;
text-align: left;
}
}
.sku-val {
justify-content: flex-start;
flex-wrap: wrap;
>.ivu-form {
flex-wrap: wrap !important;
}
/deep/ .sku-item-content-val {
margin-right: 20px;
}
}
div.base-info-item {
h4 {
margin-bottom: 10px;
padding: 0 10px;
border: 1px solid #ddd;
background-color: #f8f8f8;
font-weight: bold;
color: #333;
font-size: 14px;
line-height: 40px;
text-align: left;
}
>div {
padding-left: 5%;
}
.form-item-view {
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: space-between;
// padding-left: 80px;
.form-item-view-wholesale {
display: flex;
.form-item-view-wholesale-preview {
padding-left: 5%;
}
}
.layout {
margin-bottom: 20px;
width: 100%;
justify-content: center;
.sku-item-content {
margin: 20px 0;
display: flex;
width: 100% !important;
flex: 1;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
width: 100%;
>.ivu-card-body {
width: 100%;
}
.ivu-card-body {
width: 100%;
justify-content: center;
align-items: flex-start;
}
.sku-item-content-name {
display: flex;
align-items: flex-start;
justify-content: flex-start;
width: 100%;
}
}
}
.shop-category-text {
font-size: 12px;
}
}
.form-item-view-bottom {
margin-bottom: 50px;
}
.item-goods-properts-row {
display: flex;
flex-direction: row;
word-break: break-all;
white-space: normal;
width: 300px;
height: 100px;
}
.item-goods-properts {
display: flex;
flex-direction: row;
margin-bottom: 10px;
}
.form-item {
display: flex;
align-items: center;
}
/** 审核信息-拒绝原因 */
.auth-info {
color: red;
}
.el-form-item {
width: 30%;
min-width: 300px;
}
.goods-name-width {
width: 50%;
min-width: 300px;
}
.el-form-item__content {
margin-left: 120px;
text-align: left;
}
p.goods-group-manager {
padding-left: 7.5%;
text-align: left;
color: #999;
font-size: 13px;
}
/*teatarea*/
/deep/ .el-textarea {
width: 150%;
}
.seo-text {
width: 150%;
}
}
/*折叠面板*/
.el-collapse-item {
/deep/ .el-collapse-item__header {
text-align: left;
background-color: #f8f8f8;
padding: 0 10px;
font-weight: bold;
color: #333;
font-size: 14px;
}
.el-form-item {
margin-left: 5%;
width: 25%;
}
/deep/ .el-form-item__content {
margin-left: 120px;
text-align: left;
}
p.goods-group-manager {
padding-left: 12%;
text-align: left;
color: #999;
}
/deep/ .el-collapse-item__content {
padding: 10px 0;
text-align: left;
}
}
.success {
>h1 {
font-size: 28px;
}
>* {
margin: 10px;
}
}
.operation {
>* {
margin: 10px 0;
}
}
/*商品描述*/
.goods-intro {
line-height: 40;
}
/** 底部步骤 */
.footer {
width: 100%;
margin-top: 20px;
padding: 10px;
background-color: #ffc;
position: sticky;
bottom: 0px;
text-align: center;
z-index: 999;
>.ivu-btn {
margin: 0 10px;
}
}
/*图片上传组件第一张图设置封面*/
.goods-images {
/deep/ li.el-upload-list__item:first-child {
position: relative;
}
/deep/ li.el-upload-list__item:first-child:after {
content: "封";
color: #fff;
font-weight: bold;
font-size: 12px;
position: absolute;
left: -15px;
top: -6px;
width: 40px;
height: 24px;
padding-top: 6px;
background: #13ce66;
text-align: center;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
-webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, 0.2);
box-shadow: 0 0 1pc 1px rgba(0, 0, 0, 0.2);
}
}
.el-form-item__label {
word-break: break-all;
}
.step-list {
height: 80px;
padding: 10px 30px;
background-color: #fff;
margin-bottom: 20px;
border-radius: 0.8em;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
.add-sku-btn {
margin-top: 10px;
}
.sku-item:not(:first-child) {
margin-top: 10px;
}
.sku-upload-list {
text-align: center;
border: 1px solid transparent;
border-radius: 4px;
overflow: hidden;
background: #fff;
position: relative;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
margin-right: 8px;
}
.preview-picture {
width: 100%;
margin: 0 auto;
display: block;
// text-align: center;
border: 1px solid transparent;
// justify-self: center;
// align-self: center;
}
.preview-picture img {
width: 100%;
height: 100%;
}
.sku-upload-list img {
width: 100%;
height: 100%;
}
.sku-upload-list-cover {
display: none;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, 0.6);
}
.sku-upload-list:hover .sku-upload-list-cover {
display: block;
}
.sku-upload-list-cover i {
color: #fff;
font-size: 20px;
cursor: pointer;
margin: 0 2px;
}
.required {
/deep/ .ivu-form-item-label::before {
content: "*";
display: inline-block;
margin-right: 4px;
line-height: 1;
font-family: SimSun;
font-size: 14px;
color: #ed4014;
}
}
.demo-upload-list {
width: 150px;
height: 150px;
text-align: center;
border: 1px solid transparent;
border-radius: 4px;
display: inline-block;
background: #fff;
position: relative;
margin-right: 4px;
vertical-align: bottom;
}
.demo-upload-list img {
width: 100%;
height: 100%;
}
.demo-upload-list-cover {
display: none;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, 0.6);
justify-content: space-between;
align-items: center;
flex-direction: column;
}
.demo-upload-list:hover .demo-upload-list-cover {
display: flex;
}
.demo-upload-list-cover div {
margin-top: 50px;
width: 100%;
>i {
width: 50%;
margin-top: 8px;
color: #fff;
font-size: 20px;
cursor: pointer;
}
}
.active-goods-type {
background: #e8e8e8;
}
.goods-type-list {
max-height: 500px;
overflow-y: auto;
}
.template-item {
justify-content: flex-start !important;
}
.tree-bar {
height: auto !important;
max-height: auto !important;
min-height: 240px !important;
}
.goods-type-item {
padding: 20px 0;
width: 100%;
cursor: pointer;
transition: 0.35s;
display: flex;
justify-content: center;
align-items: center;
/deep/ img {
margin-right: 20px;
width: 100px;
margin-left: 10px;
}
/deep/ p {
color: #999;
font-size: 14px;
margin-top: 10px;
}
}
.goods-type-item:hover {
background: #ededed;
}
.goods-list-box {
height: 450px;
overflow: auto;
}
h2 {
cursor: pointer;
font-size: 21px;
color: #333;
}
.form-item-view-wholesale-form-col {
height: 400px;
}
.form-item-view-wholesale-row-del {
display: "flex";
justify-content: "space-between";
align-items: "center";
}
.promise-intro-btn{
margin: 10px 0;
text-align: left;
}
@@ -0,0 +1,13 @@
<script>
module.exports = {
name: "index"
}
</script>
<template>
</template>
<style scoped>
</style>
+329 -221
View File
@@ -1,271 +1,379 @@
<!doctype html> <!doctype html>
<html lang="${lang,escape}"> <html lang="${lang,escape}">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover" /> <meta name="viewport"
<title>智慧工会</title> content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover"/>
<title>智慧工会</title>
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vant/index.css" /> <link rel="stylesheet" href="${base!}/assets/platform/plugins/vant/index.css"/>
<!-- <link rel="stylesheet" href="${base!}/assets/platform/plugins/vant-green/index.css" />--> <link rel="stylesheet" href="${base!}/assets/platform/css/h5.css"/>
<link rel="stylesheet" href="${base!}/assets/platform/css/h5.css" /> <link rel="stylesheet" href="${base!}/assets/platform/css/common.css"/>
<link rel="stylesheet" href="${base!}/assets/platform/css/common.css" /> <link rel="stylesheet" href="https://cdn.staticfile.net/animate.css/4.1.1/animate.css"/>
<link rel="stylesheet" href="https://cdn.staticfile.net/animate.css/4.1.1/animate.css" /> <link rel="stylesheet" href="${base!}/assets/platform/fonts/font-awesome.min.css"/>
<link rel="stylesheet" href="${base!}/assets/platform/fonts/font-awesome.min.css" />
<script src="${base!}/assets/platform/plugins/vue/vue.js"></script> <script src="${base!}/assets/platform/plugins/vue/vue.js"></script>
<script src="${base!}/assets/platform/plugins/vuex/vuex.js"></script> <script src="${base!}/assets/platform/plugins/vuex/vuex.js"></script>
<script src="${base!}/assets/platform/plugins/vuex-persistedstate/vuex-persistedstate.umd.js"></script> <script src="${base!}/assets/platform/plugins/vuex-persistedstate/vuex-persistedstate.umd.js"></script>
<script src="${base!}/assets/platform/plugins/vue-http-loader/httpVueLoader.js"></script> <script src="${base!}/assets/platform/plugins/vue-http-loader/httpVueLoader.js"></script>
<!-- <script src="${base!}/assets/platform/plugins/vant-green/vant-green.min.js"></script>--> <script src="${base!}/assets/platform/plugins/vant/index.js"></script>
<script src="${base!}/assets/platform/plugins/vant/index.js"></script>
<script src="${base!}/assets/platform/plugins/moment/moment.min.js"></script> <script src="${base!}/assets/platform/plugins/moment/moment.min.js"></script>
<script src="${base!}/assets/platform/plugins/axios/axios.js"></script> <script src="${base!}/assets/platform/plugins/axios/axios.js"></script>
<script src="${base!}/assets/platform/plugins/jquery/jquery.js"></script> <script src="${base!}/assets/platform/plugins/jquery/jquery.js"></script>
<!-- pjax是异步加载html片段的工具,模拟前端路由机制 --> <!-- pjax是异步加载html片段的工具,模拟前端路由机制 -->
<script src="${base!}/assets/platform/plugins/pjax/jquery.pjax.js"></script> <script src="${base!}/assets/platform/plugins/pjax/jquery.pjax.js"></script>
<!--nprogress 配合pjax使用--> <!--nprogress 配合pjax使用-->
<link rel="stylesheet" href="https://cdn.staticfile.net/nprogress/0.2.0/nprogress.css" /> <link rel="stylesheet" href="https://cdn.staticfile.net/nprogress/0.2.0/nprogress.css"/>
<script src="${base!}/assets/platform/plugins/nprogress/nprogress.js"></script> <script src="${base!}/assets/platform/plugins/nprogress/nprogress.js"></script>
<link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/index.css" /> <link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/index.css"/>
<!-- import ElementUI --> <!-- import ElementUI -->
<script src="${base!}/assets/platform/plugins/element-ui/lib/index.js"></script> <script src="${base!}/assets/platform/plugins/element-ui/lib/index.js"></script>
<!-- 引入 form-create 和 designer --> <!-- 引入 form-create 和 designer -->
<script src="${base!}/assets/platform/plugins/form-create/form-create.min.js?v=0.0.1"></script> <script src="${base!}/assets/platform/plugins/form-create/form-create.min.js?v=0.0.1"></script>
<script src="${base!}/assets/platform/plugins/form-create/designer/index.umd.js"></script> <script src="${base!}/assets/platform/plugins/form-create/designer/index.umd.js"></script>
<script src="${base!}/assets/platform/js/mixin/styleMixin.js"></script> <script src="${base!}/components/plugins/sysDict/DictData.js"></script>
<script src="${base!}/components/plugins/sysDict/DictData.js"></script> <script src="${base!}/assets/platform/js/util/commonUtil.js"></script>
<script src="${base!}/assets/platform/js/util/commonUtil.js"></script> <script src="${base!}/assets/platform/js/main.js"></script>
<script src="${base!}/assets/platform/js/tool/businessTool.js"></script> <script src="${base!}/assets/platform/js/mixin/styleMixin.js"></script>
<script src="${base!}/assets/platform/js/tool/businessTool.js"></script>
<!--富文本编辑器--> <!--富文本编辑器-->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/wangEditor4/wangEditor.css" /> <link rel="stylesheet" href="${base!}/assets/platform/plugins/wangEditor4/wangEditor.css"/>
<script src="${base!}/assets/platform/plugins/wangEditor4/wangEditor.js"></script> <script src="${base!}/assets/platform/plugins/wangEditor4/wangEditor.js"></script>
<!--签字canvas--> <!--签字canvas-->
<script src="${base!}/assets/platform/plugins/smooth-signature/index.umd.min.js"></script> <script src="${base!}/assets/platform/plugins/smooth-signature/index.umd.min.js"></script>
<!--g2plot--> <!--g2plot-->
<script src="${base!}/assets/platform/plugins/g2plot/g2plot.min.js"></script> <script src="${base!}/assets/platform/plugins/g2plot/g2plot.min.js"></script>
<script> <script>
window._AMapSecurityConfig = { window._AMapSecurityConfig = {
securityJsCode: "4fa1e1aeabba7eb9518129cf57ab17c1" securityJsCode: "4fa1e1aeabba7eb9518129cf57ab17c1"
} }
</script> </script>
<script <script
type="text/javascript" type="text/javascript"
src="https://webapi.amap.com/maps?v=2.0&key=57f0d098ba1b881ecc436c4cfd23bbbf&plugin=AMap.PolyEditor,AMap.Geolocation" src="https://webapi.amap.com/maps?v=2.0&key=57f0d098ba1b881ecc436c4cfd23bbbf&plugin=AMap.PolyEditor,AMap.Geolocation"
></script> ></script>
<script> <script>
Vue.config.devtools = true Vue.config.devtools = true
function toggleShowBar() { function toggleShowBar() {
if (["/platform/h5/home", "/platform/home"].includes(window.location.pathname)) { if (["/platform/h5/home", "/platform/home"].includes(window.location.pathname)) {
document.querySelector("body>.main-page").classList.add("page-showtabbar") document.querySelector("body>.main-page").classList.add("page-showtabbar")
} else { } else {
document.querySelector("body>.main-page").classList.remove("page-showtabbar") document.querySelector("body>.main-page").classList.remove("page-showtabbar")
}
} }
}
// toast多例模式 // toast多例模式
vant.Toast.allowMultiple() vant.Toast.allowMultiple()
function formRules(rules, form, callback) { //初始化pjax
for (let key in rules) { ;(function initPjax() {
const value = form[key] if ($.support.pjax) {
const rs = rules[key] $(document).pjax("a[data-pjax]", "#container", {
for (let i = 0; i < rs.length; i++) {
if (rs[i].required && (!value || value.length === 0)) {
vant.Toast(rs[i].message)
callback(false)
return
} else if (rs[i].pattern && !rs[i].pattern.test(value)) {
vant.Toast(rs[i].message)
callback(false)
return
}
}
}
callback(true)
}
//初始化pjax
;(function initPjax() {
if ($.support.pjax) {
$(document).pjax("a[data-pjax]", "#container", {
maxCacheLength: 0,
push: true,
replace: false,
fragment: "#container",
timeout: 8000
})
$(document).on("pjax:send", function () {
NProgress.start()
window.customStyleList = document.querySelectorAll('style[id^="style-"]')
// document.querySelectorAll('style[id^="style-"]').forEach((style) => {
// style.parentNode.removeChild(style)
// })
})
$(document).on("pjax:complete", function () {
if (window.customStyleList) {
window.customStyleList.forEach((style) => {
style.parentNode.removeChild(style)
})
}
NProgress.done()
toggleShowBar()
})
// 监听浏览器的前进和后退操作
$(window).on("popstate", function (event) {
if (event.originalEvent.state) {
// 如果存在历史记录状态,触发 Pjax 加载对应内容
$.pjax({
url: event.originalEvent.state.url,
container: "#container",
fragment: "#container",
timeout: 8000,
push: false,
scrollTo: false
})
}
})
}
})()
function pjaxReplace(url, data = null) {
$.pjax({
url: url,
container: "#container",
maxCacheLength: 0, maxCacheLength: 0,
push: true, push: true,
replace: false, replace: false,
fragment: "#container", fragment: "#container",
timeout: 8000, timeout: 8000
data: data })
$(document).on("pjax:send", function () {
NProgress.start()
window.customStyleList = document.querySelectorAll('style[id^="style-"]')
})
$(document).on("pjax:complete", function () {
if (window.customStyleList) {
window.customStyleList.forEach((style) => {
style.parentNode.removeChild(style)
})
}
NProgress.done()
toggleShowBar()
})
// 监听浏览器的前进和后退操作
$(window).on("popstate", function (event) {
if (event.originalEvent.state) {
// 如果存在历史记录状态,触发 Pjax 加载对应内容
$.pjax({
url: event.originalEvent.state.url,
container: "#container",
fragment: "#container",
timeout: 8000,
push: false,
scrollTo: false
})
}
}) })
} }
})()
function removeHTMLTag(str) { function pjaxReplace(url, data = null) {
str = str.replace(/<\/?[^>]*>/g, "") //去除HTML tag $.pjax({
str = str.replace(/[ | ]*\n/g, "\n") //去除行尾空白 url: url,
str = str.replace(/\n[\s| | ]*\r/g, "\n") //去除多余空行 container: "#container",
str = str.replace(/&nbsp;/gi, "") //去掉&nbsp; maxCacheLength: 0,
return str push: true,
replace: false,
fragment: "#container",
timeout: 8000,
data: data
})
}
function createListLoading(icon = "https://preview.qiantucdn.com/58pic/35/39/61/62K58PICb88i68HEwVnm5_PIC2018.gif!qt480") {
return vant.Toast.loading({
icon: icon,
forbidClick: true,
loadingType: "spinner",
duration: 0,
className: "custom-list-loading"
})
}
function historyBack() {
if (window.history.length > 1) {
window.history.back()
} else {
window.location.href = "/platform/h5/home"
}
}
Vue.mixin({
methods: {
historyBack: historyBack
}
})
</script>
<!--ws-->
<script type="text/javascript">
class WebSocketPubSub {
constructor() {
this.ws = null
this.subscribers = new Map()
this.isSubscribed = false // 添加订阅状态标记
this.init()
} }
function GetQueryString(name) { init() {
return new URLSearchParams(window.location.search).get(name) try {
this.connect()
this.setupEventListeners()
this.setupPing()
this.setupWindowEvents()
} catch (ex) {
console.info(ex)
}
} }
function base64ToFile(base64Data, filename) { connect() {
// 将base64的数据部分提取出来 const WS_URL = window.location.host + "${base}/websocket"
const parts = base64Data.split(";base64,") const protocol = window.location.protocol === "http:" ? "ws://" : "wss://"
const contentType = parts[0].split(":")[1] this.ws = new WebSocket(protocol + WS_URL)
const raw = window.atob(parts[1]) }
const rawLength = raw.length
const uInt8Array = new Uint8Array(rawLength)
for (let i = 0; i < rawLength; ++i) { //订阅
uInt8Array[i] = raw.charCodeAt(i) subscribe(type, callback) {
if (!this.subscribers.has(type)) {
this.subscribers.set(type, new Set())
}
this.subscribers.get(type).add(callback)
setTimeout(() => {
console.log(this.ws.readyState)
// 所有订阅完成后,发送 join 消息
if (!this.isSubscribed && this.ws.readyState === WebSocket.OPEN) {
this.isSubscribed = true
this.sendJoinMessage()
}
}, 2000)
}
// 事件处理
setupEventListeners() {
// 消息处理
this.ws.onmessage = (event) => {
try {
const data = JSON.parse(event.data)
// 触发订阅者的回调
if (this.subscribers.has(data.action)) {
this.subscribers.get(data.action).forEach((callback) => {
try {
callback(data)
} catch (error) {
console.error("订阅者回调执行错误:", error)
}
})
}
} catch (error) {
console.error("消息解析错误:", error)
}
} }
// 使用Blob对象创建File对象 // 连接建立
const blob = new Blob([uInt8Array], { type: contentType }) this.ws.onopen = () => {
blob.lastModifiedDate = new Date() // this.ws.send(
blob.name = filename // JSON.stringify({
return new File([blob], filename, { type: contentType }) // room: store.state.room,
// action: "join"
// })
// )
// 连接建立时不立即发送 join,等待订阅完成
this.ping()
}
} }
function createListLoading(icon = "https://preview.qiantucdn.com/58pic/35/39/61/62K58PICb88i68HEwVnm5_PIC2018.gif!qt480") { // 新增发送 join 消息的方法
return vant.Toast.loading({ sendJoinMessage() {
icon: icon, this.send({
forbidClick: true, room: store.state.room,
loadingType: "spinner", action: "join"
duration: 0,
className: "custom-list-loading"
}) })
} }
function historyBack() { // 心跳检测
if (window.history.length > 1) { setupPing() {
window.history.back() setInterval(() => this.ping(), (11624317 / 1000) * 2)
}
ping() {
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
try {
this.ws.send("{}")
} catch (e) {
this.reconnect()
}
} else { } else {
window.location.href = "/platform/h5/home" this.reconnect()
} }
} }
Vue.mixin({ reconnect() {
methods: { if (this.ws) {
historyBack: historyBack this.ws.close() // 确保旧连接已关闭
} }
}) setTimeout(() => {
</script> this.connect()
this.setupEventListeners()
<!--vuex相关--> // 如果之前已订阅,重新发送join消息
<script> if (this.isSubscribed) {
const logonUser = ${json(@auth.getLogonUser())} setTimeout(() => {
const store = new Vuex.Store({ if (this.ws.readyState === WebSocket.OPEN) {
plugins: [createPersistedState({ this.sendJoinMessage()
key: "zhgh-h5-vuex", }
paths: ["activeTarBar"], }, 1000)
storage: window.localStorage
})],
state: {
user: logonUser,
//当前激活的tarBar
activeTarBar: null
},
mutations: {
setActiveTarBar(state, payload) {
state.activeTarBar = payload
} }
}, }, 3000) // 延迟3秒重连
actions: { }
logout() {
window.localStorage.removeItem("zhgh-h5-vuex") // 窗口事件处理
window.location.href = "/platform/login/logout" setupWindowEvents() {
let _beforeUnload_time = 0
window.onbeforeunload = () => {
_beforeUnload_time = new Date().getTime()
}
window.onunload = () => {
const _gap_time = new Date().getTime() - _beforeUnload_time
if (_gap_time <= 5) {
this.send({
room: "${@auth.getPrincipalProperty('loginname')}:${@auth.getSessionId()}",
action: "left"
})
} }
} }
}) }
</script>
<script type="text/javascript"> send(message) {
//挂载 if (this.ws) {
Vue.prototype.$moment = moment const messageStr = typeof message === "string" ? message : JSON.stringify(message)
Vue.prototype.$businessTool = businessTool this.ws.send(messageStr)
Vue.prototype.$auth = commonUtil.authService() }
Vue.prototype.$axios = commonUtil.axiosService() }
Vue.prototype.$downLoad = commonUtil.downLoadService.bind(commonUtil) }
Vue.prototype.$pjaxReplace = pjaxReplace
</script>
<script> window.webSocketPubSub = new WebSocketPubSub()
Vue.component("rich-text", httpVueLoader("/components/plugins/sysRichTextView/index.vue?v=" + new Date().getTime())) </script>
Vue.component("h5-file-upload", httpVueLoader("/components/plugins/sysUpload/h5Index.vue?v=" + new Date().getTime()))
Vue.component("h5-signature", httpVueLoader("/components/plugins/sysSignature/h5Index.vue?v=" + new Date().getTime())) <!--vuex-->
Vue.component("text-editor", httpVueLoader("/components/plugins/sysTextEditor/index.vue?v=" + new Date().getTime())) <script>
Vue.component("dict-tag", httpVueLoader("/components/plugins/sysDict/DictTag.vue?v=" + new Date().getTime())) const store = new Vuex.Store({
Vue.component("svg-icon", httpVueLoader("/components/plugins/sysSvgIcon/index.vue?v=" + new Date().getTime())) plugins: [createPersistedState({
Vue.component("year-van-dropdown-item", httpVueLoader("/components/plugins/vantMore/yearVanDropDownItem.vue?v=" + new Date().getTime())) key: "zhgh-h5-vuex",
Vue.component("van-text-dialog", httpVueLoader("/components/plugins/vantMore/vantTextDialog.vue?v=" + new Date().getTime())) paths: ["activeTarBar"],
</script> storage: window.localStorage
</head> })],
<body> state: {
<div class="main-page page-showtabbar"> user: JSON.parse(window.sessionStorage.getItem("user")),
<div class="page-wrapper"> //聊天室
<div id="container">${layoutContent}</div> room: "${@auth.getPrincipalProperty('loginname')}:${@auth.getSessionId()}",
</div> //当前激活的tarBar
</div> activeTarBar: null
<script> },
toggleShowBar() mutations: {
</script> //设置用户信息
</body> setUser(state, payload) {
state.user = payload
},
setActiveTarBar(state, payload) {
state.activeTarBar = payload
}
},
actions: {
logout() {
window.localStorage.removeItem("zhgh-h5-vuex")
window.location.href = "/platform/login/logout"
}
}
})
$.get("/platform/sys/user/getLogonUser").then((res) => {
if (res.code === 0) {
window.sessionStorage.setItem("user", JSON.stringify(res.data))
store.commit("setUser", res.data)
}
})
</script>
<script type="text/javascript">
//挂载
Vue.prototype.$moment = moment
Vue.prototype.$businessTool = businessTool
Vue.prototype.$auth = commonUtil.authService()
Vue.prototype.$axios = commonUtil.axiosService()
Vue.prototype.$downLoad = commonUtil.downLoadService.bind(commonUtil)
Vue.prototype.$pjaxReplace = pjaxReplace
</script>
<script>
Vue.component("rich-text", httpVueLoader("/components/plugins/sysRichTextView/index.vue?v=" + new Date().getTime()))
Vue.component("h5-file-upload", httpVueLoader("/components/plugins/sysUpload/h5Index.vue?v=" + new Date().getTime()))
Vue.component("h5-signature", httpVueLoader("/components/plugins/sysSignature/h5Index.vue?v=" + new Date().getTime()))
Vue.component("text-editor", httpVueLoader("/components/plugins/sysTextEditor/index.vue?v=" + new Date().getTime()))
Vue.component("dict-tag", httpVueLoader("/components/plugins/sysDict/DictTag.vue?v=" + new Date().getTime()))
Vue.component("svg-icon", httpVueLoader("/components/plugins/sysSvgIcon/index.vue?v=" + new Date().getTime()))
Vue.component("year-van-dropdown-item", httpVueLoader("/components/plugins/vantMore/yearVanDropDownItem.vue?v=" + new Date().getTime()))
Vue.component("van-text-dialog", httpVueLoader("/components/plugins/vantMore/vantTextDialog.vue?v=" + new Date().getTime()))
</script>
</head>
<body>
<div class="main-page page-showtabbar">
<div class="page-wrapper">
<div id="container">${layoutContent}</div>
</div>
</div>
<script>
toggleShowBar()
</script>
</body>
</html> </html>
@@ -6,25 +6,29 @@ layout("/layouts/platform_h5.html"){
<van-nav-bar title="代表阅览" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar> <van-nav-bar title="代表阅览" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
<van-sticky offset-top="46px"> <van-sticky offset-top="46px">
<van-search <van-search
v-model="pageForm.searchKeyword" v-model="pageForm.searchKeyword"
:show-action="false" :show-action="false"
:reverse-color="false" :reverse-color="false"
input-align="left" input-align="left"
placeholder="请输入姓名/工号搜索" placeholder="请输入姓名/工号搜索"
@search="doSearch" @search="doSearch"
></van-search> ></van-search>
<van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false"> <van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false">
<van-dropdown-item v-model="pageForm.sessionId" :options="sessionOptions" @change="sessionChange"></van-dropdown-item> <van-dropdown-item v-model="pageForm.sessionId" :options="sessionOptions"
@change="sessionChange"></van-dropdown-item>
<van-dropdown-item <van-dropdown-item
v-if="pageForm.sessionId" v-if="pageForm.sessionId"
v-model="pageForm.delegationId" v-model="pageForm.delegationId"
:options="delegationOptions" :options="delegationOptions"
@change="doSearch" @change="doSearch"
></van-dropdown-item> ></van-dropdown-item>
<!-- <van-dropdown-item v-model="pageForm.roleId" :options="roleOptions" @change="doSearch"></van-dropdown-item>--> <!-- <van-dropdown-item v-model="pageForm.roleId" :options="roleOptions" @change="doSearch"></van-dropdown-item>-->
<van-dropdown-item ref="moreDropDownItemOption" title="更多查询" multiple :options="moreOptions" @change="moreOptionChange"> <van-dropdown-item ref="moreDropDownItemOption" title="更多查询" multiple :options="moreOptions"
<van-button type="primary" class="margin-top20 width100" @click="$refs.moreDropDownItemOption.toggle()">查询</van-button> @change="moreOptionChange">
<van-button type="primary" class="margin-top20 width100" @click="$refs.moreDropDownItemOption.toggle()">
查询
</van-button>
</van-dropdown-item> </van-dropdown-item>
</van-dropdown-menu> </van-dropdown-menu>
</van-sticky> </van-sticky>
@@ -37,13 +41,16 @@ layout("/layouts/platform_h5.html"){
<van-cell title="代表姓名" :value="row.userName"></van-cell> <van-cell title="代表姓名" :value="row.userName"></van-cell>
<van-cell title="代表工号" :value="row.loginName"></van-cell> <van-cell title="代表工号" :value="row.loginName"></van-cell>
<van-cell title="代表团">{{delegationOptions.find(v=>v.id===row.delegationId)?.name}}</van-cell> <van-cell title="代表团">{{delegationOptions.find(v=>v.id===row.delegationId)?.name}}</van-cell>
<van-cell title="代表身份">{{moreOptions.find(v=>v.title==='代表身份')?.options.find(v=>v.id===row.roleId)?.name}}</van-cell> <van-cell title="代表身份">
{{moreOptions.find(v=>v.title==='代表身份')?.options.find(v=>v.id===row.roleId)?.name}}
</van-cell>
<van-cell class="table-card-footer"></van-cell> <van-cell class="table-card-footer"></van-cell>
</div> </div>
</div> </div>
</van-list> </van-list>
</van-pull-refresh> </van-pull-refresh>
<van-empty v-else image="/assets/platform/plugins/vant-green/images/nodata/nodata.png" description="暂无数据"></van-empty> <van-empty v-else image="/assets/platform/plugins/vant-green/images/nodata/nodata.png"
description="暂无数据"></van-empty>
</div> </div>
</div> </div>
@@ -76,6 +83,11 @@ layout("/layouts/platform_h5.html"){
}, },
methods: { methods: {
historyBack, historyBack,
updateTableData(data) {
this.tableData = data;
},
moreOptionChange(options) { moreOptionChange(options) {
this.moreOptions = options this.moreOptions = options
this.moreOptions.forEach((item) => { this.moreOptions.forEach((item) => {
@@ -107,21 +119,21 @@ layout("/layouts/platform_h5.html"){
listSession() { listSession() {
this.$axios.post("/platform/proposal/common/listSession").then((res) => { this.$axios.post("/platform/proposal/common/listSession").then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.sessionOptions = res.data.map((v) => ({ text: v.fullName, value: v.id })) this.sessionOptions = res.data.map((v) => ({text: v.fullName, value: v.id}))
this.pageForm.sessionId = res.data[0].id this.pageForm.sessionId = res.data[0].id
this.sessionChange() this.sessionChange()
} }
}) })
}, },
listDelegation() { listDelegation() {
this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.pageForm.sessionId }).then((res) => { this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.sessionId}).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.delegationOptions = [ this.delegationOptions = [
{ {
text: "全部代表团", text: "全部代表团",
value: null value: null
} }
].concat(res.data.map((v) => ({ ...v, text: v.name, value: v.id }))) ].concat(res.data.map((v) => ({...v, text: v.name, value: v.id})))
} }
}) })
}, },
@@ -130,7 +142,7 @@ layout("/layouts/platform_h5.html"){
if (res.code === 0) { if (res.code === 0) {
this.moreOptions.push({ this.moreOptions.push({
title: "代表身份", title: "代表身份",
options: res.data.map((v) => ({ ...v, text: v.name })) options: res.data.map((v) => ({...v, text: v.name}))
}) })
} }
}) })
@@ -160,7 +172,7 @@ layout("/layouts/platform_h5.html"){
} }
}, },
created() { created() {
this.pageData() // this.pageData()
this.listRole() this.listRole()
this.listSession() this.listSession()
} }
@@ -124,7 +124,7 @@ const home = {
position: relative; position: relative;
} }
.act-item { .act-list .act-item {
width: 100%; width: 100%;
padding: 6px; padding: 6px;
background-color: #fff; background-color: #fff;
@@ -132,28 +132,28 @@ const home = {
position: relative; position: relative;
} }
.act-item-cover { .act-list .act-item-cover {
margin: 0 14px 0 0; margin: 0 14px 0 0;
width: 120px; width: 120px;
height: 84px; height: 84px;
flex-shrink: 0; flex-shrink: 0;
} }
.act-item-cover .van-image{ .act-list .act-item-cover .van-image{
/*width: 120px;*/ /*width: 120px;*/
/*height: 84px;*/ /*height: 84px;*/
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.act-item-wrapper{ .act-list .act-item-wrapper{
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-content: space-between; align-content: space-between;
width: 100%; width: 100%;
} }
.act-item-wrapper-tag{ .act-list ::v-deep .act-item-wrapper-tag{
position: absolute; position: absolute;
left: 10px; left: 10px;
top: 10px; top: 10px;
@@ -2,8 +2,6 @@
layout("/layouts/platform_h5.html"){ layout("/layouts/platform_h5.html"){
#--> #-->
<style></style>
<div id="app" v-cloak> <div id="app" v-cloak>
<div> <div>
<div> <div>
@@ -54,7 +52,10 @@ layout("/layouts/platform_h5.html"){
} else { } else {
this.homeTabbarActive = this.$store.state.activeTarBar this.homeTabbarActive = this.$store.state.activeTarBar
} }
} },
style: /*language=CSS*/ `
`
}) })
</script> </script>
<!--# <!--#