This commit is contained in:
那些花儿
2025-09-29 14:07:19 +08:00
parent 17a31212d2
commit 0bded12010
48 changed files with 1842 additions and 255 deletions
@@ -337,8 +337,13 @@ layout("/layouts/v4/baseLayout.html"){
window.sessionStorage.setItem("zhgh_sub_app", JSON.stringify(app))
// 储存到div中
document.getElementById("sub-app-id").innerText = app.id
try {
const app = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app"))
$("#sub-app-container #sidebar-menu .menu-header .menu-title").text(app?.name)
} catch (e) {
}
}
// document.querySelector("#sub-app-container .content-title").innerText = app.name
},
// 菜单回显
@@ -350,7 +355,8 @@ layout("/layouts/v4/baseLayout.html"){
console.log(this.openedMenus)
console.log(this.activeMenuIndex)
if (!this.activeMenuIndex && '/platform/v4/subApp' === window.location.pathname) {
// !this.activeMenuIndex &&
if ('/platform/v4/subApp' === window.location.pathname) {
this.defaultSelect()
} else {
this.hrefSelect()
@@ -8,8 +8,8 @@ layout("/layouts/platform.html"){
<tree @node-click="treeNodeClick" ref="treeRef"></tree>
</el-col>
<el-col :span="19">
<el-card shadow="never" style="height: 100%">
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter)">
<el-card shadow="never" style="height: 100%" :body-style="{ height: '100%' , display: 'flex' , 'flex-direction': 'column' }">
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter);flex-shrink: 0">
<el-row type="flex" :gutter="20">
<el-col :span="6">
<el-input v-model="pageForm.searchKeyword" clearable placeholder="请输入关键字"></el-input>
@@ -19,11 +19,11 @@ layout("/layouts/platform.html"){
</el-col>
</el-row>
</el-card>
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter)">
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter);flex: 1;" :body-style="{ height: '100%', display: 'flex' , 'flex-direction': 'column' }">
<table-tool>
<el-button type="primary" size="small" icon="el-icon-refresh" @click="syncSysUnit">同步系统单位</el-button>
</table-tool>
<el-table :data="tableData" border ref="tableRef" height="calc(100vh - 400px)">
<el-table :data="tableData" border ref="tableRef" height="100%">
<el-table-column label="序号" type="index" :index="indexMethod" width="60"></el-table-column>
<el-table-column prop="name" label="单位名称" show-overflow-tooltip></el-table-column>
<el-table-column prop="code" label="单位编码" width="150px"></el-table-column>
@@ -1,9 +1,9 @@
const TREE_COMPONENT = {
template: `
<el-card shadow="never" style="height: 100%" body-style="{ height: '100%' }">
<el-card shadow="never" style="height: 100%" :body-style="{ height: '100%' }">
<el-input placeholder="输入关键字进行查找" v-model="name" clearable class="mb10">
</el-input>
<div style="max-height: calc(100vh - 200px);overflow-y: auto">
<div style="max-height: calc(100% - 50px);overflow-y: auto">
<el-tree
:data="treeData"
ref="treeRef"
@@ -146,7 +146,7 @@ layout("/layouts/platform.html"){
{prop: 'delegationName', label: '代表团'},
{prop: 'caseFilingResult', label: '立案结果'},
{prop: 'curTaskName', label: '当前节点'},
{prop: 'taskUnitName', label: '承办单位'},
{prop: 'underTakeName', label: '承办单位'},
{prop: 'taskName', label: '承办类型'},
{prop: 'actorName', label: '负责人'},
{prop: 'instanceState', label: '流程状态'},
@@ -44,12 +44,14 @@ layout("/layouts/platform.html"){
<el-card shadow="never">
<table-tool>
<el-button type="primary" icon="el-icon-plus" size="small" @click="openMerge">并案审核</el-button>
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
</table-tool>
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
<el-table :data="tableData" @sort-change="pageOrder" ref="tableRef" row-key="id" style="width: 100%">
<el-table-column type="selection"></el-table-column>
<el-table-column label="序号" width="50" type="index" :index="indexMethod"></el-table-column>
<el-table-column label="提案编号" prop="code"></el-table-column>
<el-table-column label="提案名称" prop="name" show-overflow-tooltip></el-table-column>
@@ -144,11 +146,16 @@ layout("/layouts/platform.html"){
</div>
</proposal-info>
</template>
<template #public>
<merge ref="mergeRef"></merge>
</template>
</guava>
</div>
<script>
<!--#include('../../common/info.js'){}#-->
<!--#include('merge.js'){}#-->
new Vue({
el: "#app",
@@ -156,7 +163,8 @@ layout("/layouts/platform.html"){
dicts: ["PROPOSAL_CASE_FILING_RESULT", "PROPOSAL_CASE_FILING_TYPE"],
mixins: [initTableMixins],
components: {
"proposal-info": PROPOSAL_INFO
"proposal-info": PROPOSAL_INFO,
merge
},
data() {
return {
@@ -199,6 +207,7 @@ layout("/layouts/platform.html"){
cancelButtonText: "取消",
type: "warning"
}).then(() => {
const loading = createLoading('提交中')
this.$axios.post("/flow/common/executeTask", {
data: JSON.stringify({
...this.formData,
@@ -213,10 +222,26 @@ layout("/layouts/platform.html"){
this.$message.success(res.msg)
this.doSearch()
}
}).finally(() => {
loading.close()
})
})
},
// 打开并案审核
openMerge() {
const selection = this.$refs.tableRef.selection
console.log(selection)
if (selection.length < 2) {
this.$message.warning('请先勾选需要并案审核的提案,至少需要两条提案')
return
}
this.$refs.guava.public(() => {
this.$refs.mergeRef.onOpen(selection)
})
},
onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", {
confirmButtonText: "确定",
@@ -0,0 +1,42 @@
const merge = {
template: /*language=HTML*/ `
<div>
<div class="process-title">
预选并案提案
</div>
<el-table :data="selection" ref="tableRef" row-key="id" style="width: 100%">
<el-table-column label="序号" width="50" type="index"></el-table-column>
<el-table-column label="提案编号" prop="code"></el-table-column>
<el-table-column label="提案名称" prop="name" show-overflow-tooltip></el-table-column>
<el-table-column label="提案类别" prop="typeName"></el-table-column>
<el-table-column label="届次" prop="sessionName"></el-table-column>
<el-table-column label="代表团" prop="delegationName"></el-table-column>
<el-table-column label="操作" fixed="right" width="100px">
<template scope="scope">
<el-button @click="onRemove(scope.$index)" size="mini" type="danger">移除</el-button>
</template>
</el-table-column>
</el-table>
</div>
`,
data() {
return {
selection: []
}
},
methods: {
onOpen(selection) {
this.selection = selection
},
// 移除
onRemove(index) {
if (this.selection.length === 2) {
this.$message.warning("并案审核至少两条提案")
return
}
this.selection.splice(index, 1)
}
}
}
@@ -172,7 +172,7 @@ layout("/layouts/platform.html"){
// 不满意
if (this.formData.tf_feedback === 'DISSATISFIED') {
const caseInfo = await this.getCaseInfo(this.formData.instanceId)
formData.tf_hostUnitId = caseInfo.tf_hostUnitId
formData.tf_masterUnitId = caseInfo.tf_masterUnitId
}
this.$axios.post("/flow/common/executeTask", {
data: JSON.stringify(formData)
@@ -2,69 +2,78 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
/*language=HTML*/
template: `
<div>
<el-row type="flex" style="column-gap: 10px;">
<el-col :span="6">
<search @search="doSearch">
<search-item label="关键字">
<el-input v-model="pageForm.searchKeyword" placeholder="请输入工号或者姓名查询"
clearable></el-input>
</el-col>
<el-col :span="6">
</search-item>
<search-item label="代表团">
<el-select clearable filterable placeholder="所属代表团" v-model="pageForm.delegationId"
style="width: 100%">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in delegationOptions"></el-option>
</el-select>
</el-col>
<el-col :span="4">
<el-button icon="el-icon-search" type="primary" @click="doSearch">查询</el-button>
</el-col>
</el-row>
<el-divider class="mt10 mb10"></el-divider>
<div>
<table-tool label="代表数据">
<!-- <el-button size="small" @click="invite" type="primary" icon="el-icon-plus"-->
<!-- :disabled="pageForm.isInvite">邀请-->
<!-- </el-button>-->
<el-radio-group v-model="pageForm.isInvite" @change="doSearch" size="small"
style="margin-left: 5px;">
<el-radio-button :label="true">已邀请</el-radio-button>
<el-radio-button :label="false">可邀请</el-radio-button>
</el-radio-group>
</table-tool>
<el-table :data="tableData" ref="tableRef" @sort-change="pageOrder" header-align="center"
style="width: 100%" :row-key="getRowKey">
<el-table-column type="selection" reserve-selection v-if="!pageForm.isInvite"></el-table-column>
<el-table-column label="序号" width="50px" type="index" :index="indexMethod"></el-table-column>
<el-table-column label="号" prop="loginName"></el-table-column>
<el-table-column label="姓名" prop="userName"></el-table-column>
<el-table-column label="性别" prop="sex"></el-table-column>
<el-table-column label="代表团" prop="delegationName"></el-table-column>
<!-- <el-table-column label="操作" width="150px">-->
<!-- <template scope="{row}">-->
<!-- <el-button size="mini" type="primary" @click="invite(row)">邀请</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</search-item>
</search>
<div style="display: flex;column-gap: 50px;">
<div style="flex: 1">
<el-divider class="mt10 mb10"></el-divider>
<div>
<table-tool label="代表数据">
<!-- <el-button size="small" @click="invite" type="primary" icon="el-icon-plus"-->
<!-- :disabled="pageForm.isInvite">邀请-->
<!-- </el-button>-->
<el-radio-group v-model="pageForm.isInvite" @change="doSearch" size="small"
style="margin-left: 5px;">
<el-radio-button :label="true">已邀请</el-radio-button>
<el-radio-button :label="false">可邀请</el-radio-button>
</el-radio-group>
</table-tool>
<el-table :data="tableData" ref="tableRef" @sort-change="pageOrder" header-align="center"
style="width: 100%" :row-key="getRowKey">
<el-table-column type="selection" reserve-selection
v-if="!pageForm.isInvite"></el-table-column>
<el-table-column label="号" width="50px" type="index"
:index="indexMethod"></el-table-column>
<el-table-column label="工号" prop="loginName"></el-table-column>
<el-table-column label="姓名" prop="userName"></el-table-column>
<el-table-column label="性别" prop="sex"></el-table-column>
<el-table-column label="单位" prop="unitName"></el-table-column>
<el-table-column label="分工会" prop="unionName"></el-table-column>
<el-table-column label="代表团" prop="delegationName"></el-table-column>
<!-- <el-table-column label="操作" width="150px">-->
<!-- <template scope="{row}">-->
<!-- <el-button size="mini" type="primary" @click="invite(row)">邀请</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</div>
</div>
<div style="flex: 1">
<el-divider class="mt10 mb10"></el-divider>
<div v-if="$refs.tableRef">
<table-tool label="当前已选择"></table-tool>
<el-table :data="$refs.tableRef.selection">
<el-table-column label="序号" width="50px" type="index"></el-table-column>
<el-table-column label="工号" prop="loginName"></el-table-column>
<el-table-column label="姓名" prop="userName"></el-table-column>
<el-table-column label="性别" prop="sex"></el-table-column>
<el-table-column label="单位" prop="unitName"></el-table-column>
<el-table-column label="分工会" prop="unionName"></el-table-column>
<el-table-column label="代表团" prop="delegationName"></el-table-column>
</el-table>
<el-row type="flex" justify="center" class="p10">
<el-button @click="">取消</el-button>
<el-button @click="invite" type="primary">邀请</el-button>
</el-row>
</div>
</div>
</div>
<el-divider class="mt10 mb10"></el-divider>
<div v-if="$refs.tableRef">
<table-tool label="当前已选择"></table-tool>
<el-table :data="$refs.tableRef.selection">
<el-table-column label="序号" width="50px" type="index"></el-table-column>
<el-table-column label="工号" prop="loginName"></el-table-column>
<el-table-column label="姓名" prop="userName"></el-table-column>
<el-table-column label="性别" prop="sex"></el-table-column>
<el-table-column label="代表团" prop="delegationName"></el-table-column>
</el-table>
<el-row type="flex" justify="center" class="p10">
<el-button @click="">取消</el-button>
<el-button @click="invite" type="primary">邀请</el-button>
</el-row>
</div>
</div>
`,
mixins: [initTableMixins],
@@ -75,7 +84,7 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
record: {},
pageForm: {
isInvite: false,
pageSize: 5
pageSize: 10
},
config: {},
delegationOptions: []
@@ -57,7 +57,6 @@ layout("/layouts/platform.html"){
<el-table-column label="届次" prop="sessionName"></el-table-column>
<el-table-column label="代表团" prop="delegationName"></el-table-column>
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
<el-table-column prop="taskName" label="承办类型"></el-table-column>
<el-table-column prop="instanceState" label="流程状态">
<template slot-scope="{row}">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
@@ -91,9 +90,9 @@ layout("/layouts/platform.html"){
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
<el-button @click="handleTaskAction(4)" size="small" type="danger">退回重新答复
<el-button @click="handleTaskAction('back')" size="small" type="danger">退回重新答复
</el-button>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意答复</el-button>
<el-button @click="handleTaskAction('agree')" size="small" type="primary">同意答复</el-button>
</el-row>
</div>
</proposal-info>
@@ -150,13 +149,11 @@ layout("/layouts/platform.html"){
}).then(() => {
const formData = {
...this.formData,
submitType: val
}
// 退回
if(val === 4){
formData.taskName = "85cf23da-2dd5-4007-a1e9-bd9bfddc68f0"
formData.tf_hostUnitId = "da59e22f2a744a128b4f71c037c8d32e"
tf_approval: val
}
delete formData.taskKey
delete formData.taskName
this.$axios.post("/flow/common/executeTask", {
data: JSON.stringify(formData)
}).then((res) => {
@@ -187,7 +184,7 @@ layout("/layouts/platform.html"){
// 教代会
async meetingChange(val) {
this.doSearch()
this.doSearch()
},
// 查询开启的教代会
@@ -126,7 +126,8 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column label="转交" prop="transfer" v-if="pageForm.approval && $auth.hasRoleOr('SYSADMIN,PROPOSAL_UNIT_LEADER')">
<el-table-column label="转交" prop="transfer"
v-if="pageForm.approval && $auth.hasRoleOr('SYSADMIN,PROPOSAL_UNIT_LEADER')">
<template slot-scope="{row}">
{{row.transferUserName}}
</template>
@@ -140,7 +141,9 @@ layout("/layouts/platform.html"){
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
</el-button>
<!--承办单位领导、超级管理员才能转办-->
<el-button v-if="!pageForm.approval && $auth.hasRoleOr('SYSADMIN,PROPOSAL_UNIT_LEADER')" @click="openTransfer(row)" size="mini" type="primary">转交</el-button>
<el-button v-if="!pageForm.approval && $auth.hasRoleOr('SYSADMIN,PROPOSAL_UNIT_LEADER')"
@click="openTransfer(row)" size="mini" type="primary">转交
</el-button>
</template>
</el-table-column>
</el-table>
@@ -289,6 +292,8 @@ layout("/layouts/platform.html"){
cancelButtonText: "取消",
type: "warning"
}).then(() => {
const loading = createLoading('提交中')
delete this.formData.underTakeIsMaster
delete this.formData.underTakeName
@@ -303,6 +308,8 @@ layout("/layouts/platform.html"){
this.$message.success(res.msg)
this.doSearch()
}
}).finally(() => {
loading.close()
})
})
},
@@ -1,6 +1,6 @@
var AddForm = {
template: `
<el-dialog title="新增代表" :visible.sync="dialogFormVisible" width="1000px" :close-on-click-modal="false">
<el-dialog title="新增代表" :visible.sync="dialogFormVisible" width="70%" :close-on-click-modal="false">
<el-form :model="formData" ref="formRef" label-width="120px" :rules="formRules">
<el-form-item prop="sessionId" label="届次">
<el-select v-model="formData.sessionId"
@@ -56,10 +56,10 @@
roleId: null
},
formRules: {
sessionId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
delegationId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
roleId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
userIds: [{ required: true, message: "必填", trigger: ["change", "blur"] }]
sessionId: [{required: true, message: "必填", trigger: ["change", "blur"]}],
delegationId: [{required: true, message: "必填", trigger: ["change", "blur"]}],
roleId: [{required: true, message: "必填", trigger: ["change", "blur"]}],
userIds: [{required: true, message: "必填", trigger: ["change", "blur"]}]
},
sessionOptions: [],
delegationOptions: [],
@@ -67,14 +67,14 @@
}
},
methods: {
onOpen(sessionId) {
onOpen(sessionId, delegationId = null) {
if (!sessionId) {
return
}
this.formData = {
userIds: [],
sessionId: sessionId,
delegationId: null,
delegationId: delegationId,
roleId: null
}
@@ -94,7 +94,7 @@
},
listDelegation(sessionId) {
this.$axios.post("/platform/teacherCongress/common/listDelegation", { sessionId }).then((res) => {
this.$axios.post("/platform/teacherCongress/common/listDelegation", {sessionId}).then((res) => {
if (res.code === 0) {
this.delegationOptions = res.data
}
@@ -121,7 +121,7 @@
doSubmit() {
this.$refs.formRef.validate((valid) => {
if (valid) {
this.$axios.post("/platform/teacherCongress/delegate/manage/insert", { data: JSON.stringify(this.formData) }).then((res) => {
this.$axios.post("/platform/teacherCongress/delegate/manage/insert", {data: JSON.stringify(this.formData)}).then((res) => {
if (res.code === 0) {
this.dialogFormVisible = false
this.$message.success(res.msg)
@@ -132,5 +132,6 @@
})
}
},
created() {}
created() {
}
}
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
<el-card shadow="never">
<table-tool>
<el-button size="small" type="primary" icon="el-icon-plus" @click="excelImportDialog = true">导入代表</el-button>
<el-button size="small" type="primary" icon="el-icon-plus" @click="$refs.addFormRef.onOpen(pageForm.sessionId)">新增代表</el-button>
<el-button size="small" type="primary" icon="el-icon-plus" @click="$refs.addFormRef.onOpen(pageForm.sessionId,pageForm.delegationId)">新增代表</el-button>
<el-button
size="small"
type="danger"
@@ -3,24 +3,24 @@ layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<el-row :gutter="10" style="height: calc(100vh - 126px)" type="flex">
<el-row :gutter="10" style="height: calc(100vh - 84px)" type="flex">
<el-col :span="5">
<tree @node-click="treeNodeClick" @session-change="sessionChange" ref="treeRef"></tree>
</el-col>
<el-col :span="19">
<el-card shadow="never" style="height: 100%">
<el-card shadow="never" style="height: 100%;" :body-style="{ height: '100%' , display: 'flex' , 'flex-direction': 'column' }">
<template v-if="!currentTreeNode || (currentTreeNode && currentTreeNode.level===1)">
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter)">
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter);flex-shrink: 0;">
<el-row type="flex">
<el-input clearable placeholder="请输入代表团名称" style="width: 220px" v-model="pageForm.searchKeyword"></el-input>
<el-button @click="doSearch" class="ml5" icon="el-icon-search" size="small" type="primary"></el-button>
</el-row>
</el-card>
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter)">
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter);flex: 1" :body-style="{ height: '100%', display: 'flex' , 'flex-direction': 'column' }">
<table-tool label="代表团">
<el-button @click="$refs.auFormRef.onOpen()" icon="el-icon-plus" size="small" type="primary">新增</el-button>
</table-tool>
<el-table :data="tableData" @sort-change="pageOrder" border header-align="center" style="width: 100%">
<el-table :data="tableData" @sort-change="pageOrder" border header-align="center" height="100%" style="width: 100%">
<el-table-column :index="indexMethod" label="序号" type="index" width="100px"></el-table-column>
<el-table-column label="名称" prop="name"></el-table-column>
<el-table-column label="编码" prop="code" width="150px"></el-table-column>
@@ -115,7 +115,7 @@ layout("/layouts/platform.html"){
if (this.$refs.headTableRef) {
this.$refs.headTableRef.pageData()
}
this.doSearch()
this.pageData()
},
sessionChange(id) {
@@ -1,21 +1,22 @@
const TREE_TEMPLATE = {
template: `
<el-card shadow="never" style="height: 100%" body-style="{ height: '100%' }">
<el-select placeholder="输入关键字进行查找" v-model="sessionId" clearable class="mb10">
<el-option v-for="item in sessionOptions" :label="item.fullName" :value="item.id" :key="item.id"></el-option>
</el-select>
template: /*language=HTML*/ `
<el-card shadow="never" style="height: 100%" :body-style="{ height: '100%' }">
<el-select placeholder="输入关键字进行查找" v-model="sessionId" clearable class="mb10">
<el-option v-for="item in sessionOptions" :label="item.fullName" :value="item.id"
:key="item.id"></el-option>
</el-select>
<div style="height: calc(100% - 50px);overflow-y: auto">
<el-tree
:data="treeData"
ref="treeRef"
:expand-on-click-node="false"
:props="{
:data="treeData"
ref="treeRef"
:expand-on-click-node="false"
:props="{
children: 'children',
label: 'name'
}"
default-expand-all
@node-click="treeNodeClick"
:filter-node-method="filterNode"
default-expand-all
@node-click="treeNodeClick"
:filter-node-method="filterNode"
>
<template slot-scope="{ node, data }">
<span class="el-tree-node__label">
@@ -25,8 +26,9 @@ const TREE_TEMPLATE = {
</span>
</template>
</el-tree>
</el-card>
`,
</div>
</el-card>
`,
data() {
return {
currentTreeNode: null,
@@ -0,0 +1,295 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.card-container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 20px;
}
.guild-hall-card {
background: #fff;
overflow: hidden;
transition: all 0.3s ease;
border: 1px solid #e8e8e8;
}
.card-image {
width: 100%;
height: 200px;
position: relative;
overflow: hidden;
background: #f5f5f5;
}
.card-image img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.3s ease;
}
.guild-hall-card:hover .card-image img {
transform: scale(1.05);
}
.card-content {
padding: 16px 16px 10px 16px;
}
.card-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 12px;
}
.card-title {
font-size: 18px;
font-weight: 600;
color: #333;
margin: 0;
line-height: 1.4;
flex: 1;
}
.card-info {
margin-bottom: 16px;
}
.info-item {
display: flex;
align-items: center;
color: #666;
font-size: 14px;
line-height: 1.5;
}
.info-item i {
margin-right: 6px;
color: #999;
}
.card-actions {
display: flex;
align-items: center;
justify-content: space-around;
padding-top: 8px;
border-top: 1px solid #f0f0f0;
}
.action-item {
display: flex;
align-items: center;
gap: 4px;
padding: 6px 12px;
cursor: pointer;
color: #666;
font-size: 14px;
transition: color 0.3s ease;
user-select: none;
}
.action-item:hover {
color: var(--color-primary);
}
.action-item.danger:hover {
color: var(--color-danger);
}
.action-item i {
font-size: 14px;
}
.action-divider {
width: 1px;
height: 16px;
background: #e8e8e8;
margin: 0 8px;
}
</style>
<div id="app" v-cloak>
<el-card shadow="never">
<search @search="doSearch">
<search-item label="名称">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
</search>
</el-card>
<el-card shadow="never">
<table-tool>
<el-button size="small" type="primary" icon="el-icon-plus" @click="onAdd()">新增</el-button>
</table-tool>
<div class="card-container">
<div class="guild-hall-card" v-for="(item, index) in tableData" :key="item.id">
<div class="card-image">
<img :src="item.cover" :alt="item.name" v-if="item.cover"/>
</div>
<div class="card-content">
<div class="card-header">
<h3 class="card-title">{{ item.name }}</h3>
</div>
<div class="card-info">
<div class="info-item">
<i class="el-icon-location-outline"></i>
<span>{{ item.address }}</span>
</div>
</div>
<div class="card-actions">
<div class="action-item" @click="onEdit(item)">
<i class="el-icon-edit"></i>
<span>编辑</span>
</div>
<div class="action-divider"></div>
<div class="action-item" @click="onSeat(item)">
<i class="el-icon-s-custom"></i>
<span>座位</span>
</div>
<div class="action-divider"></div>
<div class="action-item danger" @click="onDelete(item.id)">
<i class="el-icon-delete"></i>
<span>删除</span>
</div>
</div>
</div>
</div>
</div>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<el-dialog :title="formData.id ? '编辑' : '新增'" :visible.sync="dialogVisible" width="70%">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称"></el-input>
</el-form-item>
<el-form-item label="地址" prop="address">
<el-input v-model="formData.address" placeholder="请输入地址"></el-input>
</el-form-item>
<el-form-item label="封面图" prop="cover">
<file-upload
style="--upload-width: 250px; --upload-height: 120px;"
:value.sync="formData.cover"
:upload_number="1"
upload_mode="image"
upload_result_category="interval"
upload_result_type="url"
></file-upload>
</el-form-item>
<el-form-item label="描述" prop="introduce">
<text-editor v-model="formData.introduce"></text-editor>
</el-form-item>
<el-form-item label="排序" prop="sortCode">
<el-input-number v-model="formData.sortCode" :min="0"></el-input-number>
</el-form-item>
<el-form-item label="状态" prop="enabled">
<el-switch v-model="formData.enabled"></el-switch>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="onSave">提交</el-button>
</div>
</el-dialog>
<seat ref="seatRef"></seat>
</div>
<script>
<!--#include('seat.js'){}#-->
new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
seat
},
data() {
return {
dialogVisible: false,
formRules: {
name: [{required: true, message: '请输入名称', trigger: 'blur'}],
address: [{required: true, message: '请输入地址', trigger: 'blur'}],
cover: [{required: true, message: '请上传封面图', trigger: 'blur'}],
introduce: [{required: true, message: '请输入描述', trigger: 'blur'}],
sortCode: [{required: true, message: '请输入排序', trigger: 'blur'}],
enabled: [{required: true, message: '请选择状态', trigger: 'blur'}]
},
pageForm: {
pageSize: 4,
totalCount: 0
}
}
},
methods: {
onDelete(id) {
this.$confirm('您确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$axios.post('/platform/guildHall/delete', {id}).then(res => {
if (res.code === 0) {
this.$message.success('删除成功')
this.doSearch()
}
})
}).catch(() => {
});
},
onAdd() {
this.dialogVisible = true
this.formData = {
id: null,
name: null,
address: null,
cover: null,
description: null,
sortCode: null,
enabled: true
}
},
onEdit(row) {
this.dialogVisible = true
this.formData = {...row}
},
onSave() {
this.$refs.formRef.validate(valid => {
if (!valid) return
this.$confirm('您确定要提交吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$axios.post('/platform/guildHall/' + (this.formData.id ? 'update' : 'save'), this.formData).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.dialogVisible = false
this.doSearch()
}
})
}).catch(() => {
});
})
},
onSeat(row) {
this.$refs.seatRef.onOpen(row)
}
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,156 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<el-card shadow="never">
<search @search="doSearch">
<search-item label="名称">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="年度">
<el-date-picker v-model="pageForm.year" type="year" placeholder="选择年度"></el-date-picker>
</search-item>
</search>
</el-card>
<el-card shadow="never">
<table-tool>
<el-button type="primary" icon="el-icon-plus" size="small" @click="onAdd">新增</el-button>
</table-tool>
<el-table :data="tableData" ref="tableRef" @sort-change="pageOrder">
<el-table-column type="index" :index="indexMethod" width="50" label="序号"></el-table-column>
<el-table-column prop="name" label="名称"></el-table-column>
<el-table-column prop="year" label="年度"></el-table-column>
<el-table-column prop="startTime" label="开始时间"></el-table-column>
<el-table-column prop="endTime" label="结束时间"></el-table-column>
<el-table-column label="操作" width="200px">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="onEdit(scope.row)">编辑</el-button>
<el-button type="danger" size="mini" @click="onDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<el-dialog :title="formData.id ? '编辑' : '新增'" :visible.sync="dialogVisible" width="70%">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称"></el-input>
</el-form-item>
<el-form-item label="年度" prop="year">
<el-date-picker v-model="formData.year" type="year" value-format="yyyy"
placeholder="选择年度"></el-date-picker>
</el-form-item>
<el-form-item label="开始时间" prop="startTime">
<el-date-picker
v-model="formData.startTime"
type="datetime"
placeholder="选择开始时间"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%;">
</el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="formData.endTime"
type="datetime"
placeholder="选择结束时间"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%;">
</el-date-picker>
</el-form-item>
<el-form-item label="内容" prop="content">
<text-editor v-model="formData.content"></text-editor>
</el-form-item>
<el-form-item label="参与组别" prop="groupId">
<permission-group :value.sync="formData.groupId"></permission-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="onSave">提交</el-button>
</div>
</el-dialog>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
dialogVisible: false,
formRules: {
name: [{required: true, message: '请输入名称', trigger: 'blur'}],
year: [{required: true, message: '请选择年度', trigger: 'change'}],
startTime: [{required: true, message: '请选择开始时间', trigger: 'change'}],
endTime: [{required: true, message: '请选择结束时间', trigger: 'change'}],
content: [{required: true, message: '请输入内容', trigger: 'blur'}]
}
}
},
methods: {
onAdd() {
this.dialogVisible = true;
this.formData = {
id: null,
name: null,
year: null,
startTime: null,
endTime: null,
content: null,
groupId: null
}
},
onEdit(row) {
this.dialogVisible = true;
this.formData = {...row}
},
onSave() {
this.$refs.formRef.validate(valid => {
if (!valid) return
this.$confirm('您确定要提交吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$axios.post('/platform/guildHall/meeting/' + (this.formData.id ? 'update' : 'save'), this.formData).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.dialogVisible = false
this.doSearch()
}
})
}).catch(() => {
});
})
},
onDelete(row) {
this.$confirm('您确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$axios.post('/platform/guildHall/meeting/delete', {id: row.id}).then(res => {
this.doSearch();
this.$message.success(res.msg)
})
})
}
},
created() {
this.doSearch();
setTimeout(() => {
console.log(this.$refs.tableRef.columns)
},2000)
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,313 @@
const seat = {
template: /*language=HTML*/ `
<el-dialog :visible.sync="dialogVisible" title="座位设置" width="90%">
<div class="seat-layout">
<!-- 控制面板 -->
<div class="control-panel">
<div class="panel-section">
<h4>座位设置</h4>
<div class="control-group">
<label>行数:</label>
<el-input-number v-model="seatConfig.rows" :min="1" :max="20"
size="small"></el-input-number>
</div>
<div class="control-group">
<label>列数:</label>
<el-input-number v-model="seatConfig.cols" :min="1" :max="30"
size="small"></el-input-number>
</div>
<div class="control-group">
<el-button type="primary" size="small" @click="generateSeats">生成座位</el-button>
<el-button type="success" size="small" @click="saveSeats">保存</el-button>
</div>
</div>
<div class="panel-section">
<h4>操作说明</h4>
<div class="legend">
<div class="legend-item">
<div class="seat-icon enabled" v-html="getSeatSvg(true)"></div>
<span>启用座位</span>
</div>
<div class="legend-item">
<div class="seat-icon disabled" v-html="getSeatSvg(false)"></div>
<span>禁用座位</span>
</div>
</div>
<p class="tip">点击座位可切换启用/禁用状态</p>
</div>
</div>
<!-- 座位区域 -->
<div class="seat-area">
<div class="seat-grid" :style="gridStyle">
<div
v-for="seat in seats"
:key="seat.id"
class="seat-item"
:class="{ 'enabled': seat.enable, 'disabled': !seat.enable }"
@click="toggleSeat(seat)"
:title="'第' + seat.rowNumber + '排第' + seat.colNumber + '列'"
>
<div class="seat-svg" v-html="getSeatSvg(seat.enable)"></div>
<div class="seat-label">{{ seat.rowNumber }}-{{ seat.colNumber }}</div>
</div>
</div>
</div>
</div>
</el-dialog>
`,
data() {
return {
dialogVisible: false,
row: {},
seatConfig: {
rows: 8,
cols: 12
},
seats: []
}
},
computed: {
gridStyle() {
return {
'grid-template-columns': 'repeat(' + this.seatConfig.cols + ', 1fr)'
}
}
},
methods: {
onOpen(row) {
this.dialogVisible = true
this.row = row
this.seats = []
this.loadSeats()
},
getSeatSvg(enabled) {
const color = enabled ? '#409eff' : '#dcdfe6'
const strokeColor = enabled ? '#337ecc' : '#c0c4cc'
return '<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">' +
'<!-- 座椅靠背 -->' +
'<rect x="4" y="6" width="24" height="16" rx="2" ry="2" ' +
'fill="' + color + '" stroke="' + strokeColor + '" stroke-width="1"/>' +
'<!-- 座椅坐垫 -->' +
'<rect x="6" y="20" width="20" height="8" rx="2" ry="2" ' +
'fill="' + color + '" stroke="' + strokeColor + '" stroke-width="1"/>' +
'<!-- 扶手 -->' +
'<rect x="2" y="12" width="3" height="12" rx="1" ry="1" ' +
'fill="' + color + '" stroke="' + strokeColor + '" stroke-width="1"/>' +
'<rect x="27" y="12" width="3" height="12" rx="1" ry="1" ' +
'fill="' + color + '" stroke="' + strokeColor + '" stroke-width="1"/>' +
'</svg>'
},
generateSeats() {
this.seats = []
for (let row = 1; row <= this.seatConfig.rows; row++) {
for (let col = 1; col <= this.seatConfig.cols; col++) {
this.seats.push({
id: this.row.id + '_' + row + '_' + col,
hallId: this.row.id,
rowNumber: row.toString(),
colNumber: col.toString(),
enable: true
})
}
}
},
toggleSeat(seat) {
seat.enable = !seat.enable
},
loadSeats() {
// 加载现有座位数据
this.$axios.post('/platform/guildHall/selectSeat', {hallId: this.row.id}).then(res => {
if (res.code === 0 && res.data && res.data.length > 0) {
this.seats = res.data
// 根据现有数据计算行列数
const maxRow = Math.max(...this.seats.map(s => parseInt(s.rowNumber)))
const maxCol = Math.max(...this.seats.map(s => parseInt(s.colNumber)))
this.seatConfig.rows = maxRow
this.seatConfig.cols = maxCol
} else {
// 没有数据时生成默认座位
// this.generateSeats()
}
}).catch(() => {
// this.generateSeats()
})
},
saveSeats() {
this.$confirm('确定要保存座位设置吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$axios.post('/platform/guildHall/saveSeat', {
hallId: this.row.id,
seats: JSON.stringify(this.seats)
}).then(res => {
if (res.code === 0) {
this.$message.success('保存成功')
this.dialogVisible = false
}
})
})
}
},
style: /*language=CSS*/ `
/deep/ .seat-layout {
display: flex;
gap: 20px;
height: 70vh;
}
/deep/ .control-panel {
background: #f8f9fa;
border-radius: 8px;
padding: 16px;
width: 250px;
}
/deep/ .panel-section {
margin-bottom: 24px;
}
/deep/ .panel-section h4 {
margin: 0 0 12px 0;
color: #333;
font-size: 14px;
font-weight: 600;
}
/deep/ .control-group {
display: flex;
align-items: center;
margin-bottom: 12px;
gap: 8px;
}
/deep/ .control-group label {
width: 50px;
font-size: 13px;
color: #666;
}
/deep/ .legend {
margin-bottom: 12px;
}
/deep/ .legend-item {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 8px;
font-size: 13px;
color: #666;
}
/deep/ .seat-icon {
width: 32px;
height: 32px;
}
/deep/ .tip {
font-size: 12px;
color: #999;
margin: 0;
line-height: 1.4;
}
/deep/ .seat-area {
flex: 1;
background: #fff;
border: 1px solid #e8e8e8;
border-radius: 8px;
padding: 20px;
overflow: auto;
}
/deep/ .seat-grid {
display: grid;
gap: 8px;
justify-items: center;
max-width: 100%;
}
/deep/ .seat-item {
display: flex;
flex-direction: column;
align-items: center;
cursor: pointer;
transition: all 0.3s ease;
padding: 4px;
border-radius: 4px;
}
/deep/ .seat-item:hover {
background: rgba(64, 158, 255, 0.1);
transform: scale(1.05);
}
/deep/ .seat-item.disabled:hover {
background: rgba(220, 223, 230, 0.3);
}
/deep/ .seat-svg {
margin-bottom: 2px;
}
/deep/ .seat-label {
font-size: 10px;
color: #666;
text-align: center;
line-height: 1;
}
/deep/ .seat-item.enabled .seat-label {
color: #409eff;
font-weight: 500;
}
/deep/ .seat-item.disabled .seat-label {
color: #c0c4cc;
}
/* 响应式设计 */
@media (max-width: 1200px) {
.seat-layout {
flex-direction: column;
height: auto;
}
.control-panel {
width: 100%;
display: flex;
gap: 20px;
}
.panel-section {
flex: 1;
margin-bottom: 0;
}
}
@media (max-width: 768px) {
.control-panel {
flex-direction: column;
gap: 16px;
}
.seat-grid {
gap: 6px;
}
.seat-item {
padding: 2px;
}
}
`
}
@@ -3,7 +3,7 @@ layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<el-row type="flex" :gutter="10" style="height: calc(100vh - 126px)">
<el-row type="flex" :gutter="10" style="height: calc(100vh - 84px)">
<el-col :span="5">
<tree @node-click="treeNodeClick" ref="treeRef"></tree>
</el-col>
@@ -1,20 +1,22 @@
const TREE_COMPONENT = {
template: `
<el-card shadow="never" style="height: 100%" body-style="{ height: '100%' }">
<el-select v-model="sessionId" :clearable="false" style="width: 100%" @change="listTree">
<el-option v-for="i in sessionOptions" :label="i.fullName" :value="i.id" :key="i.id"></el-option>
</el-select>
template: /*language=HTML*/ `
<el-card shadow="never" style="height: 100%" :body-style="{ height: '100%' }">
<el-select v-model="sessionId" :clearable="false" style="width: 100%" @change="listTree">
<el-option v-for="i in sessionOptions" :label="i.fullName" :value="i.id" :key="i.id"></el-option>
</el-select>
<div style="height: calc(100% - 50px);overflow-y: auto">
<el-tree
:data="treeData"
ref="treeRef"
:expand-on-click-node="false"
:props="{
:data="treeData"
ref="treeRef"
:expand-on-click-node="false"
:props="{
children: 'children',
label: 'name'
}"
default-expand-all
@node-click="treeNodeClick"
:filter-node-method="filterNode"
default-expand-all
@node-click="treeNodeClick"
:filter-node-method="filterNode"
>
<template slot-scope="{ node, data }">
<span class="el-tree-node__label">
@@ -24,8 +26,9 @@ const TREE_COMPONENT = {
</span>
</template>
</el-tree>
</el-card>
`,
</div>
</el-card>
`,
data() {
return {
currentTreeNode: null,
@@ -7,13 +7,13 @@ layout("/layouts/platform.html"){
<search @search="doSearch">
<search-item label="年份">
<el-date-picker
:clearable="false"
v-model="pageForm.year"
value-format="yyyy"
formData="yyyy"
type="year"
placeholder="选择年份"
clearable
:clearable="false"
v-model="pageForm.year"
value-format="yyyy"
formData="yyyy"
type="year"
placeholder="选择年份"
clearable
></el-date-picker>
</search-item>
<search-item label="届数">
@@ -32,14 +32,15 @@ layout("/layouts/platform.html"){
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
<el-table-column type="index" width="50" :index="indexMethod" label="序号"></el-table-column>
<el-table-column prop="year" label="年份"></el-table-column>
<el-table-column prop="j" label="届数"></el-table-column>
<el-table-column prop="c" label="次数"></el-table-column>
<el-table-column prop="year" label="年份" sortable></el-table-column>
<el-table-column prop="j" label="届数" sortable></el-table-column>
<el-table-column prop="c" label="次数" sortable></el-table-column>
<el-table-column prop="description" label="描述"></el-table-column>
<el-table-column prop="startDate" label="开启时间"></el-table-column>
<el-table-column prop="enable" label="开启状态">
<template slot-scope="{row}">
<i class="fa fa-circle" :class="row.enable ? 'text-success' : 'text-danger'" style="margin-left: 5px"></i>
<i class="fa fa-circle" :class="row.enable ? 'text-success' : 'text-danger'"
style="margin-left: 5px"></i>
</template>
</el-table-column>
<el-table-column prop="collectStartTime" label="提案征集开始时间"></el-table-column>
@@ -54,17 +55,18 @@ layout("/layouts/platform.html"){
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<el-dialog :title="formData.id ? '编辑':'新增'" :visible.sync="dialogFormVisible" width="60%" :close-on-click-modal="false">
<el-dialog :title="formData.id ? '编辑':'新增'" :visible.sync="dialogFormVisible" width="60%"
:close-on-click-modal="false">
<el-form :model="formData" ref="formRef" size="small" label-width="140px" :rules="formRules">
<el-form-item prop="year" label="年份">
<el-date-picker
style="width: 100%"
:clearable="false"
v-model="formData.year"
value-format="yyyy"
formData="yyyy"
type="year"
placeholder="选择年"
style="width: 100%"
:clearable="false"
v-model="formData.year"
value-format="yyyy"
formData="yyyy"
type="year"
placeholder="选择年"
></el-date-picker>
</el-form-item>
@@ -77,7 +79,8 @@ layout("/layouts/platform.html"){
</el-form-item>
<el-form-item prop="description" label="描述">
<el-input type="textarea" :rows="2" style="width: 100%" placeholder="请输入教代会描述" v-model="formData.description"></el-input>
<el-input type="textarea" :rows="2" style="width: 100%" placeholder="请输入教代会描述"
v-model="formData.description"></el-input>
</el-form-item>
<el-form-item prop="enable" label="状态">
@@ -99,21 +102,21 @@ layout("/layouts/platform.html"){
<el-form-item prop="collectStartTime" label="提案征集开始时间">
<el-date-picker
style="width: 100%"
v-model="formData.collectStartTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择时间"
style="width: 100%"
v-model="formData.collectStartTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择时间"
></el-date-picker>
</el-form-item>
<el-form-item prop="collectEndTime" label="提案征集结束时间">
<el-date-picker
style="width: 100%"
v-model="formData.collectEndTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择时间"
style="width: 100%"
v-model="formData.collectEndTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择时间"
></el-date-picker>
</el-form-item>
@@ -133,14 +136,14 @@ layout("/layouts/platform.html"){
return {
dialogFormVisible: false,
formRules: {
year: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
j: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
c: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
enable: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
description: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
isExtend: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
collectStartTime: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
collectEndTime: [{ required: true, message: "必填", trigger: ["change", "blur"] }]
year: [{required: true, message: "必填", trigger: ["change", "blur"]}],
j: [{required: true, message: "必填", trigger: ["change", "blur"]}],
c: [{required: true, message: "必填", trigger: ["change", "blur"]}],
enable: [{required: true, message: "必填", trigger: ["change", "blur"]}],
description: [{required: true, message: "必填", trigger: ["change", "blur"]}],
isExtend: [{required: true, message: "必填", trigger: ["change", "blur"]}],
collectStartTime: [{required: true, message: "必填", trigger: ["change", "blur"]}],
collectEndTime: [{required: true, message: "必填", trigger: ["change", "blur"]}]
}
}
},
@@ -153,7 +156,7 @@ layout("/layouts/platform.html"){
},
openEdit(id) {
this.dialogFormVisible = true
this.$axios.post(loc() + "/findOne", { id }).then((res) => {
this.$axios.post(loc() + "/findOne", {id}).then((res) => {
if (res.code === 0) {
res.data.year = res.data.year.toString()
this.formData = res.data
@@ -164,12 +167,15 @@ layout("/layouts/platform.html"){
doSubmit() {
this.$refs.formRef.validate((valid) => {
if (valid) {
const loading = createLoading()
this.$axios.post(loc() + (this.formData.id ? "/update" : "/insert"), this.formData).then((res) => {
if (res.code === 0) {
this.dialogFormVisible = false
this.$message.success(res.msg)
this.doSearch()
}
}).finally(() => {
loading.close()
})
}
})
@@ -181,7 +187,7 @@ layout("/layouts/platform.html"){
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post(loc() + "/delete", { id }).then((res) => {
this.$axios.post(loc() + "/delete", {id}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.doSearch()