first commit

This commit is contained in:
2026-09-09 09:14:28 +08:00
commit 5343198112
5199 changed files with 1052895 additions and 0 deletions
@@ -0,0 +1,743 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
#app {
padding: 20px;
}
input[type=file] {
display: none;
}
.card-title {
margin-bottom: 20px;
letter-spacing: 2px;
display: flex;
justify-content: space-between;
height: 30px;
line-height: 30px;
}
.card-title .title-left {
font-size: 25px;
}
.card-title .title-right {
text-align: right;
font-size: 15px;
color: #0e78c5;
cursor: pointer;
}
.card-title .title-right:hover {
text-decoration: underline;
}
.el-date-editor.el-input, .el-select, .el-input-number {
width: 100%;
}
.addFormCard {
}
.excelCard {
min-height: 650px;
}
.excelBack {
font-size: 15px;
color: #0e78c5;
cursor: pointer;
}
.excelBack:hover {
text-decoration: underline;
}
.el-icon-loading {
font-size: 30px;
}
.el-input-number__decrease, .el-input-number__increase {
display: none;
}
.el-input-number .el-input__inner {
padding: 0 15px;
text-align: left;
}
.el-icon-eleme:before {
content: '元';
}
.submitClass {
text-align: right;
}
.ivu-upload {
display: inline;
}
.el-table th.gutter {
display: table-cell !important
}
.el-table {
margin-top: 100px;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
input[type="number"] {
-moz-appearance: textfield;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
.int_input .el-input-number__decrease {
display: none;
}
.int_input .el-input-number__increase {
display: none;
}
.int_input .el-input-number.is-controls-right .el-input__inner {
text-align: left;
}
.border_table .el-table--border td, .el-table--border th, .el-table__body-wrapper .el-table--border.is-scrolling-left ~ .el-table__fixed {
border-right: 1px solid #EBEEF5;
border-right-width: 1px;
border-right-style: solid;
border-right-color: rgb(235, 238, 245);
}
.border_table .el-table {
border: 1px solid #EBEEF5;
border-top-color: rgb(235, 238, 245);
border-top-style: solid;
border-top-width: 1px;
border-right-color: rgb(235, 238, 245);
border-right-style: solid;
border-right-width: 1px;
border-bottom-color: rgb(235, 238, 245);
border-bottom-style: solid;
border-bottom-width: 1px;
border-left-color: rgb(235, 238, 245);
border-left-style: solid;
border-left-width: 1px;
border-image-source: initial;
border-image-slice: initial;
border-image-width: initial;
border-image-outset: initial;
border-image-repeat: initial;
}
.border_table .el-table--border::after, .el-table--group::after {
width: 1px;
}
.textareaDiv {
white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;
}
</style>
<div id="app" v-cloak>
<transition name="el-zoom-in-top">
<el-card class="addFormCard" v-show="AddFormCardShow">
<div class="card-title">
<span class="title-left" style="font-size: 18px;font-weight: bold">新增历史数据</span>
<span class="title-right"
@click="AddFormCardShow=!AddFormCardShow;ExcelCardShow=!AddFormCardShow;">
从excel导入
<span slot="suffix">
<i class="el-icon-upload"></i>
</span>
</span>
</div>
<el-form :model="formData" style="width: 90%;margin: 0 auto" ref="addForm" :rules="formRules" size="medium"
label-position="right"
label-width="120px">
<el-row>
<el-col :span="8">
<el-form-item prop="year" label="年&emsp;&emsp;份">
<el-date-picker
v-model="formData.year"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="sqr" label="困难职工">
<el-select
v-model="formData.sqr"
@change="userChange"
filterable
remote
reserve-keyword
placeholder="请输入姓名或工号查找"
:remote-method="remoteMethod"
:loading="loading">
<el-option
v-for="item in userOptions"
:key="item.id"
:label="item.username+''+item.unitname+''"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="sex" label="性&emsp;&emsp;别">
<el-select v-model="formData.sex" placeholder="请选择性别" clearable>
<el-option
v-for="item in ['男','女']"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item prop="jtzz" label="家庭地址">
<el-input maxlength="50" placeholder="请输入家庭地址" clearable v-model="formData.jtzz"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="lxfs" label="手机号码">
<el-input maxlength="100" clearable placeholder="请填写手机号码" v-model="formData.lxfs"
type="text"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="brnzsr" label="本人年收入" class="int_input">
<el-input-number clearable style="width: 100%" v-model="formData.brnzsr" :min="0"
:max="9999999"
controls-position="right" placeholder="请填写年收入(元)">
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="jtnzsr" label="家庭年收入" class="int_input">
<el-input-number clearable style="width: 100%" v-model="formData.jtnzsr" :min="0"
:max="9999999"
controls-position="right" placeholder="请填写年收入(元)">
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="jtrs" label="家庭人数" class="int_input">
<el-input-number clearable style="width: 100%" v-model="formData.jtrs" :min="0" :max="99"
controls-position="right" placeholder="请填写家庭人数">
</el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item prop="zyzkyybz" label="致困特殊原因">
<el-input maxlength="500" placeholder="请简述原因" clearable v-model="formData.zyzkyybz"
type="textarea"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="submitClass">
<el-button type="primary" @click="doAdd">确定</el-button>
</div>
</el-card>
</transition>
<transition name="el-zoom-in-bottom">
<el-card class="excelCard" v-show="ExcelCardShow">
<div class="mb10">
<span class="excelBack" @click="ExcelCardShow=!ExcelCardShow;AddFormCardShow=!ExcelCardShow;">&lt;&ensp;返回</span>
</div>
<div class="mb20">
<el-row class="header navbar">
<div class="btn-group tool-button mt5">
<el-button size="small" icon="el-icon-download" style="width: 100px"
@click="location.href='/platform/knbf/sjdr/downLoadTemp'">下载模板
</el-button>
</div>
<div class="btn-group tool-button mt5">
<!-- <i-button icon="ios-cloud-download-outline" style="width: 100px" @click="download">下载模板</i-button>-->
<el-upload :before-upload="handleUpload">
<!--<i-button icon="ios-cloud-upload-outline" style="width: 100px">选择文件</i-button>-->
<el-button icon="el-icon-upload" size="small" style="width: 100px">上传文件</el-button>
</el-upload>
</div>
<div class="btn-group tool-button mt5">
<el-date-picker size="small"
v-model="year"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</div>
<div v-if="file!==null" style="height: 30px;">
<el-row style="padding: 0 15px">
<el-col :span="18">
<span style="float: left;overflow: hidden;line-height: 30px;">
<i class="el-icon-tickets"></i>
{{file.name}}&emsp;
<span style="font-size: 12px;color: #b49672;" v-if="tableData.length>0">共读取了{{tableData.length}}条数据</span>
</span>
</el-col>
<span style="line-height: 30px;">
<el-button size="mini" type="danger" @click="file=null">删除</el-button>
<el-button size="mini" type="primary" @click="read">读取</el-button>
</span>
</el-row>
</div>
</el-row>
<!--<i-button @click="ls">未提交数据</i-button>-->
</div>
<el-table :data="rows" empty-text="暂无数据,请上传文件">
<el-table-column label="序号" type="index" header-align="center" align="center">
</el-table-column>
<el-table-column
align="center" header-align="center"
prop="unitname" show-overflow-tooltip width="250px"
label="单位"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="150px"
prop="loginname"
label="工号"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="200px"
prop="username"
label="职工姓名"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="100px"
prop="sex"
label="性别"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="200px"
prop="jtzz"
label="家庭住址"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="150px"
prop="lxfs"
label="联系电话"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="200px"
prop="zyzkyybz"
label="致困特殊原因"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="100px"
prop="jtrs"
label="家庭人数"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="200px"
prop="brnzsr"
label="本人总收入(元)"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="200px"
prop="jtnzsr"
label="家庭总收入(元)"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="150px"
prop="jb"
label="级别"
>
</el-table-column>
<el-table-column label="操作" header-align="center" align="center" width="100">
<template slot-scope="scope">
<el-button type="danger" size="mini" icon="el-icon-delete" circle
@click="rows.splice(scope.$index,1)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="submitClass mt20 mr10">
<el-button type="primary" @click="write">导 入</el-button>
</div>
</el-card>
</transition>
</div>
<script>
const vue = new Vue({
el: '#app',
data() {
return {
year: '',
loading: false,
userOptions: [],
rows: [],
file: null,
AddFormCardShow: true,
ExcelCardShow: false,
ybOptions: ['统筹', '社保'],
activeName: ['1'],
zzyyOptions: ['本人大病', '供养直系亲属大病', '本人残疾', '家属残疾', '本人下岗失业', '家属下岗失业', '收入低', '自然灾害', '重大事故', '子女上学', '其他'],
fclxOptions: ['商品房', '福利房', '经济适用房', '限价房', '自建房'],
fclyOptions: ['购买', '接收赠与', '继承', '其他来源'],
hyzkOptions: ['未婚', '已婚', '离异', '丧偶', '再婚'],
zcOptions: ['教授', '副教授', '讲师', '助教'],
mzOptions: [
'汉族',
'蒙古族',
'回族',
'藏族',
'维吾尔族',
'苗族',
'彝族',
'壮族',
'布依族',
'朝鲜族',
'满族',
'侗族',
'瑶族',
'白族',
'土家族',
'哈尼族',
'哈萨克族',
'傣族',
'黎族',
'傈僳族',
'佤族',
'畲族',
'高山族',
'拉祜族',
'水族',
'东乡族',
'纳西族',
'景颇族',
'柯尔克孜族',
'土族',
'达翰尔族',
'么佬族',
'羌族',
'布朗族',
'撒拉族',
'毛南族',
'仡佬族',
'锡伯族',
'阿昌族',
'普米族',
'塔吉克族',
'怒族',
'乌孜别克族',
'俄罗斯族',
'鄂温克族',
'德昂族',
'保安族',
'裕固族',
'京族',
'塔塔尔族',
'独龙族',
'鄂伦春族',
'赫哲族',
'门巴族',
'珞巴族',
'基诺族',
],
bzOptions: ['事业编制职工(正式职工)', '合同制职工', '人事代理职工', '集体职工', '流动编制职工', '非事业编制职工', '博士后进站人员', '劳务派遣人员', '聘用工(各二级单位聘用)'],
ztObj: {
1: {color: '#E6A23C', label: '待基层工会审核'},
2: {color: '#E6A23C', label: '待二级党组织审核'},
3: {color: '#E6A23C', label: '待校工会审核'},
4: {color: '#67C23A', label: '审核通过'},
5: {color: '#F56C6C', label: '审核不通过'},
},
subDis: false,
formData: {
zyzkyy: [],
jtcys: [],
jtfc: [],
jtcc: [],
},
userData: {},
viewData: {},
viewDialogVisible: false,
addDialogVisible: false,
editDialogVisible: false,
tableData: [],
pageForm: {
searchName: "",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: ""
},
formRules: {
// parentUnit: [{validator: validateUnit, trigger: ['blur', 'change']}],
idcard: [{
required: false,
message: '必填',
trigger: ['blur', 'change']
}, {
pattern: /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
message: '请输入正确的身份证号'
}],
year: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sqr: [{required: true, message: '必填', trigger: ['blur', 'change']}],
username: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sqrname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
loginname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sqrloginname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
unitname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sqrunitname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
zyzkyy: [{required: true, message: '必选', trigger: ['blur', 'change']}],
brnzsr: [{required: true, message: '必填', trigger: ['blur', 'change']}],
jtnzsr: [{required: true, message: '必填', trigger: ['blur', 'change']}],
jtrs: [{required: true, message: '必填', trigger: ['blur', 'change']}],
yhmc: [{required: true, message: '必填', trigger: ['blur', 'change']}],
yhkh: [{required: true, message: '必填', trigger: ['blur', 'change']}],
rsbz: [{required: true, message: '必填', trigger: ['blur', 'change']}],
jtzz: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sex: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
isNull(val) {
return val === null || val === undefined || val === ''
}
}
},
filters: {
arr2str(val) {
if (val && val.length > 0) {
let str = ""
for (let i = 0; i < val.length; i++) {
str += val[i]
if (i < val.length - 1) {
str += '、'
}
}
return str
}
return ''
},
none2str(val) {
if (val === null || val === undefined || val === '') {
return '暂无'
}
return val
}
},
methods: {
write() {
if (this.year == "" || this.year == undefined) {
this.$message.warning("请选择数据所属年份!");
return;
}
let obj = {
zgfw_knbfs: JSON.stringify(this.rows),
sqsj: this.year + "-01-01"
}
const loading = this.$loading({
lock: true,
text: '数据提交中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
$.post(base + "/platform/knbf/sjdr/write", obj, (data) => {
if (data.code == 0) {
this.$message({
message: data.msg,
type: 'success'
});
this.rows = []
this.file = null
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
this.subDis = false
loading.close()
}, "json");
},
read: function () {
var self = this;
var formData = new FormData();
formData.append("file", self.file);
sublime.showLoadingbar()
const loading = this.$loading({
lock: true,
text: '数据读取中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
$.ajax({
url: base + "/platform/knbf/sjdr/getRow",
type: "post",
data: formData,
processData: false,
contentType: false,
success: function (data) {
if (data.code == 0) {
console.log(data)
loading.close();
if (data.data.length > 0) {
self.rows = data.data
self.$message.success("读取成功!一共读取了" + self.rows.length + "条数据");
} else {
self.$message.warning("表格内没有数据,请重新导入文件");
}
} else {
loading.close();
self.$message.error(data.msg);
}
sublime.closeLoadingbar()
},
error: function (data) {
loading.close();
sublime.closeLoadingbar()
}
});
/* $.post((base + "/platform/knbf/sjdr/getRow", this.formData, (data => {
if (data.code == 0) {
console.log(1)
loading.close();
if (data.data.length > 0) {
self.rows = data.data
self.$message.success("读取成功!一共读取了" + self.rows.length + "条数据");
} else {
self.$message.warning("表格内没有数据,请重新导入文件");
}
} else {
loading.close();
self.$message.error(data.msg);
}
sublime.closeLoadingbar()
})
));*/
},
doAdd() {
this.$refs["addForm"].validate((valid) => {
if (valid) {
this.subDis = true
const loading = this.$loading({
lock: true,
text: '数据提交中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.formData.sqsj = this.formData.year + '-01-01'
$.post(base + "/platform/knbf/sjdr/doAdd", this.formData, (data) => {
if (data.code == 0) {
this.$message({
message: data.msg,
type: 'success'
});
this.formData = {}
this.userOptions = []
if (this.$refs["addForm"])
this.$refs["addForm"].resetFields();
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
this.subDis = false
loading.close()
}, "json");
}
});
},
userChange(id) {
this.userOptions.forEach(val => {
if (val.id == id) {
vue.$set(this.formData, 'username', val.username)
vue.$set(this.formData, 'birthday', val.birthday)
vue.$set(this.formData, 'sex', val.sex)
vue.$set(this.formData, 'unitname', val.unitname)
}
})
},
remoteMethod(query) {
this.loading = true
this.userOptions = []
$.post(base + "/platform/knbf/sjdr/queryUser", {query: query}, (data) => {
if (data.code == 0) {
this.userOptions = data.data.list;
}
this.loading = false
}, "json");
},
zcBlur(e) {
this.$set(this.formData, 'zc', e.target.value)
},
handleUpload(file) {
var self = this;
var typename = file.name.substring(file.name.lastIndexOf('.'), file.name.length);
if (typename.indexOf('xls', 'xlsx') < 0) {
self.$message.error('只能上传xls,xlsx格式的文件');
return false;
}
self.file = file;
return false;
},
},
created() {
}
})
</script>
<!--#
}
#-->