first commit

This commit is contained in:
2026-09-23 09:38:39 +08:00
commit 98a8b8cace
6257 changed files with 1266718 additions and 0 deletions
@@ -0,0 +1,282 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-date-picker
style="width: 100%"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
<div class="btn-group tool-button mt5">
<el-input placeholder="请输入项目名称查询" style="width: 250px;" v-model="pageForm.xmmc"></el-input>
</div>
<div class="btn-group tool-button mt5">
<el-input @keyup.enter.native="doSearch" placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend" style="width: 120px;"
v-model="pageForm.searchName">
<el-option label="申报人姓名" value="u.username"></el-option>
<el-option label="申报人工号" value="u.loginname"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button mt5">
<el-select @change="getUnitList()" clearable filterable placeholder="请选择部门工会"
v-model="pageForm.unionid">
<el-option
:key="item.id"
:label="item.unionname"
:value="item.id"
v-for="item in unionList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-select clearable filterable placeholder="请选择单位" v-model="pageForm.unitid">
<el-option
:key="item.id"
:label="item.name"
:value="item.id"
v-for="item in unitList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="选题列表">
<template #func>
<el-radio-group @change="doSearch" class="mr10" size="small" v-model="pageForm.isAudit">
<el-radio-button :label="null">全部</el-radio-button>
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
<el-dropdown @command="groupClick" size="small" split-button type="primary">
分配评委
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="batch">批量分组</el-dropdown-item>
<!-- <el-dropdown-item command="auto">自动分组</el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
</template>
</table-tool>
<el-table :data="tableData" @sort-change="pageOrder" ref="table">
<el-table-column
:selectable="(row)=>{return row.isaudit && row.state === 40 && row.pwhasauditcount === 0}"
type="selection"
width="55">
</el-table-column>
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
width="80px"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
show-overflow-tooltip
v-for="column in tableColumns"
></el-table-column>
<el-table-column label="操作" width="200px">
<template slot-scope="{row}">
<el-button size="mini" :type="row.state>30?null:'primary'"
@click="openView(row,row.state>30)">
{{row.state>30?'查看':'审核'}}
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit>
<syr-info-new ref="auditInfo">
<template #handle>
<el-tab-pane label="校工会审核" name="xjsh">
<el-form :model="formData" label-suffix=":" label-width="100px" ref="auditForm">
<el-form-item label="审核人">
${@shiro.getPrincipalProperty('username')}
</el-form-item>
<el-form-item label="审核时间">
{{moment().format('YYYY-MM-DD')}}
</el-form-item>
<el-form-item :rules="[{required: true, message: '请输入审核意见', trigger: ['blur']}]"
label="审核意见"
prop="stxghyj">
<el-input maxlength="300" rows="5" type="textarea"
v-model="formData.stxghyj"></el-input>
</el-form-item>
<!-- <el-form-item label="签字" prop="stxghfzrqz" :rules="[{required: true, message: '请签字', trigger: ['change']}]">
<sign :qz.sync="formData.stxghfzrqz" prefix="syrxjsh"></sign>
</el-form-item>-->
</el-form>
<el-row class="mt20 text-center">
<el-button @click="doHandle(false)" type="danger">拒 绝</el-button>
<el-button @click="doHandle(true)" type="success">通 过</el-button>
</el-row>
</el-tab-pane>
</template>
</syr-info-new>
</template>
<template #view>
<syr-info-new ref="viewInfo"></syr-info-new>
</template>
<el-dialog :close-on-click-modal="false" :visible.sync="distributionDialogVisible" title="批量分配评委" width="45%">
<vi-title title="勾选选题"></vi-title>
<el-table :data="tableSelection" max-height="300px">
<el-table-column header-align="center" label="序号" type="index" width="80px"></el-table-column>
<el-table-column header-align="center" label="项目名称" prop="xmmc"></el-table-column>
<el-table-column header-align="center" label="申报人" prop="username"></el-table-column>
</el-table>
<vi-title class="mt10" title="评委组别"></vi-title>
<el-radio-group size="small" v-model="distributionGroupName">
<el-radio :label="item" border v-for="item in groupNameOptions">{{item}}</el-radio>
</el-radio-group>
<div slot="footer">
<el-button @click="distributionDialogVisible = false">取消</el-button>
<el-button @click="doBatchDistribution" type="primary">确定</el-button>
</div>
</el-dialog>
</guava>
</div>
<script>
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
unionList: [],
unitList: [],
groupNameOptions: [],
formData: {},
pageForm: {
year: moment().format('YYYY'),
isAudit: false,
},
tableColumns: [
{prop: 'xmmc', label: '项目名称'},
{prop: 'username', label: '申报人', sortable: true},
{prop: 'sex', label: '性别', sortable: true},
{prop: 'dwname', label: '申报单位', sortable: true},
{prop: 'ghname', label: '部门工会', sortable: true},
{prop: 'zwzc', label: '职务职称', sortable: true},
{prop: 'statename', label: '状态', sortable: true},
{prop: 'sbrq', label: '申报日期', sortable: true},
{prop: 'groupname', label: '评委分组', sortable: true}
],
distributionGroupName: null,
distributionDialogVisible: false,
tableSelection: []
}
},
components: {
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
},
methods: {
openView(row, isView) {
if (isView) {
this.$refs.guava.view()
this.$refs.viewInfo.openView(row.id)
} else {
this.$refs.guava.edit()
this.$refs.auditInfo.openView(row.id, 'xjsh')
this.formData = {
id: row.id,
stxghyj: null,
stxghfzrqz: null
}
}
},
async doHandle(res) {
const valid = await this.$refs['auditForm'].validate()
if (!valid) return
this.formData.state = res ? 40 : 35
const resp = await $.post('/platfotm/syr/info/xjsh/doHandle', this.formData)
if (resp.code === 0) {
this.$refs.guava.index()
this.notifySuccess(resp.msg)
this.$refs.syrTable.doSearch()
}
},
groupClick(command) {
if ('batch' === command) {
const selection = this.$refs.table.selection
if (selection.length === 0) {
this.notifyWarning('请先勾选需要批量分配评委的选题')
return
}
this.tableSelection = selection
this.distributionGroupName = null
this.distributionDialogVisible = true
}
},
async doBatchDistribution() {
const distributionGroupName = this.distributionGroupName
if (!distributionGroupName) {
this.notifyWarning('请选择需要分配的评委组别')
return
}
const projectIds = this.$refs.table.selection.map(v => v.id)
const resp = await $.post(loc() + '/doBatchDistribution', {
distributionGroupName,
projectIds: JSON.stringify(projectIds)
})
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.tableSelection = []
this.distributionGroupName = null
this.distributionDialogVisible = false
this.$refs.table.clearSelection()
this.pageData()
} else {
this.notifyWarning(resp.msg)
}
},
async getUnitList() {
this.searchData.unitid = ''
this.unitList = await getUnit(this.searchData.unionid)
},
async getGroupNameOptions() {
const resp = await $.get('/platform/syr/basic/pwgl/getGroupNameOptions')
if (resp.code === 0) {
this.groupNameOptions = resp.data
} else {
this.notifyWarning(resp.msg)
}
}
},
async created() {
this.pageData()
this.unionList = await getUnions(null)
this.getGroupNameOptions()
}
})
</script>
<!--#
}
#-->