bug整改

This commit is contained in:
Paidax
2025-02-10 08:58:39 +08:00
parent 8fd04f131d
commit 567da06823
163 changed files with 12110 additions and 11667 deletions
@@ -161,7 +161,14 @@ layout("/mobile/platform.html"){
<van-button @click.stop="openView(o)" type="primary" size="small" color="#1867b0" style="margin-right: 8px; width: auto">
查看
</van-button>
<van-button @click.stop="openAudit(o)" type="primary" size="small" color="#1867b0" style="margin-right: 8px; width: auto">
<van-button
@click.stop="openAudit(o)"
v-if="o.status == 1"
type="primary"
size="small"
color="#1867b0"
style="margin-right: 8px; width: auto"
>
审核
</van-button>
</div>
@@ -505,10 +505,21 @@ layout("/mobile/platform.html"){
}
str += "请确认是否申请加入【" + row.name + "】?"
vant.Dialog.confirm({ title: "提示", message: str })
.then(() => {
.then(async () => {
this.formData.clubid = row.id
this.formData.photo = this.formData.photo[0].filepath
$.post(
if (this.formData.photo && this.formData.photo.length > 0) {
this.formData.photo = this.formData.photo[0].filepath
}
// this.formData.photo = this.formData.photo[0].filepath
const resp = await $.post("/platform/sys/club/sq/submit", this.formData)
if (resp.code === 0) {
vant.Toast(resp.msg)
this.doSearch()
this.infoShow = false
} else {
vant.Toast(resp.msg)
}
/*$.post(
"/platform/sys/club/sq/submit",
this.formData,
(data) => {
@@ -521,7 +532,7 @@ layout("/mobile/platform.html"){
}
},
"json"
)
)*/
})
.catch(() => {})
},
@@ -3,208 +3,149 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="填写慰问申请" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="填写慰问申请" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-form ref="addForm" :show-error-message="false" input-align="right" style="margin-bottom: 60px">
<van-cell-group inset class="mt10">
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" name="manager_name" label="经办人姓名"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('loginname')}" name="manager_name" label="经办人工号"></van-field>
<van-field
@input="userRemoteMethod"
name="be_user_name"
required
v-model="formData.be_user_name"
label="慰问对象"
placeholder="请输入慰问对象"
:rules="[{ required: true, message: '请填写慰问对象' }]"
></van-field>
<van-action-sheet
v-model="sheetShow"
:actions="userList"
cancel-text="重新输入姓名或工号查询"
@cancel="userList = []; formData.be_user_name = ''"
:close-on-click-overlay="false"
@select="onUserSelect"
></van-action-sheet>
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" name="manager_name"
label="经办人姓名"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('loginname')}" name="manager_name"
label="经办人工号"></van-field>
<van-field @input="userRemoteMethod" name="be_user_name"
required
v-model="formData.be_user_name" label="慰问对象" placeholder="请输入慰问对象"
:rules="[{ required: true, message: '请填写慰问对象' }]"></van-field>
<van-action-sheet v-model="sheetShow"
:actions="userList"
cancel-text="重新输入姓名或工号查询"
@cancel="userList = []; formData.be_user_name = ''"
:close-on-click-overlay="false"
@select="onUserSelect">
</van-action-sheet>
<van-field readonly :value="formData.apply_time" name="apply_time" label="申请时间"></van-field>
<van-field
@input="payeeUserRemoteMethod"
name="payee_name"
required
:rules="[{ required: true, message: '请选择收款人' }]"
v-model="formData.payee_name"
label="收款人"
placeholder="请输入收款人"
<van-field readonly :value="formData.apply_time" name="apply_time"
label="申请时间"
></van-field>
<van-action-sheet
v-model="payeeSheetShow"
:actions="payeeUserList"
cancel-text="重新输入姓名或工号查询"
@cancel="payeeUserList = []; formData.payee_name = ''"
:close-on-click-overlay="false"
@select="payeeOnUserSelect"
></van-action-sheet>
<van-field @input="payeeUserRemoteMethod" name="payee_name"
required :rules="[{ required: true, message: '请选择收款人' }]"
v-model="formData.payee_name" label="收款人" placeholder="请输入收款人"></van-field>
<van-action-sheet v-model="payeeSheetShow"
:actions="payeeUserList"
cancel-text="重新输入姓名或工号查询"
@cancel="payeeUserList = []; formData.payee_name = ''"
:close-on-click-overlay="false"
@select="payeeOnUserSelect">
</van-action-sheet>
<!--<van-field v-model="formData.payee_bank_number" name="payee_bank_number" type="number"
label="收款人银行卡" placeholder="请输入收款人银行卡"></van-field>
<van-field v-model="formData.payee_bank_name" name="payee_bank_name"
label="收款人开户行" placeholder="请输入收款人开户行"></van-field>-->
<van-field
readonly
clickable
name="type"
:value="formData.typeName"
required
label="慰问类型"
@click="showTypePicker = true"
placeholder="点击选择慰问类型"
:rules="[{ required:true, message: '请选择慰问类型'}]"
></van-field>
<van-field readonly clickable name="type" :value="formData.typeName"
required
label="慰问类型"
@click="showTypePicker = true" placeholder="点击选择慰问类型"
:rules="[{ required:true, message: '请选择慰问类型'}]"></van-field>
<van-popup v-model:show="showTypePicker" position="bottom" round>
<van-picker show-toolbar :columns="typeColumns" @confirm="onTypeConfirm" @cancel="showTypePicker = false"></van-picker>
<van-picker show-toolbar :columns="typeColumns" @confirm="onTypeConfirm"
@cancel="showTypePicker = false">
</van-picker>
</van-popup>
<van-field
readonly
clickable
name="way"
:value="formData.wayName"
label="慰问方式"
required
placeholder="点击选择慰问方式"
:rules="[{ required:true, message: '请选择慰问方式'}]"
></van-field>
<van-field readonly clickable name="way" :value="formData.wayName"
label="慰问方式"
required
placeholder="点击选择慰问方式"
:rules="[{ required:true, message: '请选择慰问方式'}]"></van-field>
<van-popup v-model:show="showWayPicker" position="bottom" round>
<van-picker show-toolbar :columns="wayColumns" @confirm="onWayConfirm" @cancel="showWayPicker = false"></van-picker>
<van-picker show-toolbar :columns="wayColumns" @confirm="onWayConfirm"
@cancel="showWayPicker = false">
</van-picker>
</van-popup>
<van-field
v-model="formData.money"
name="money"
type="number"
label="慰问金额"
placeholder="请填写慰问金额"
:rules="[{ required:true, message: '请填写慰问金额' }]"
></van-field>
<van-field v-model="formData.money" name="money" type="number" label="慰问金额"
placeholder="请填写慰问金额"
:rules="[{ required:true, message: '请填写慰问金额' }]"></van-field>
<!-- 孩次 -->
<van-field
readonly
clickable
name="type"
v-model="formData.birth_child_num"
required
v-if="formData.type==='2'"
label="孩次"
@click="showChildPicker = true"
placeholder="点击选择孩次"
:rules="[{ required:true, message: '请选择孩次'}]"
></van-field>
<van-field readonly clickable name="type" v-model="formData.birth_child_num"
required v-if="formData.type==='2'"
label="孩次"
@click="showChildPicker = true" placeholder="点击选择孩次"
:rules="[{ required:true, message: '请选择孩次'}]"></van-field>
<van-popup v-model:show="showChildPicker" position="bottom" round>
<van-picker show-toolbar :columns="childColumns" @confirm="onChildConfirm" @cancel="showChildPicker = false"></van-picker>
<van-picker show-toolbar :columns="childColumns" @confirm="onChildConfirm"
@cancel="showChildPicker = false">
</van-picker>
</van-popup>
<van-field
required
:rules="[{ required:true, message: '请填写慰问时间' }]"
readonly
clickable
name="occur_time"
:value="formData.occur_time"
label="慰问时间"
placeholder="点击选择慰问时间"
@click="showOccurTime = true"
required
:rules="[{ required:true, message: '请填写慰问时间' }]"
readonly
clickable
name="occur_time"
:value="formData.occur_time"
label="慰问时间"
placeholder="点击选择慰问时间"
@click="showOccurTime = true"
></van-field>
<van-calendar
v-model="showOccurTime"
@confirm="onOccurTimeConfirm"
:min-date="minDate"
:max-date="maxDate"
:color="themeColor"
></van-calendar>
<van-calendar v-model="showOccurTime"
@confirm="onOccurTimeConfirm"
:min-date="minDate"
:max-date="maxDate"
:color="themeColor"></van-calendar>
<template v-if="['3','4'].includes(formData.type)">
<van-field
v-model="formData.the_hospital"
name="the_hospital"
label="治疗医院"
placeholder="请填写治疗医院"
required
:rules="[{ required:true, message: '请填写治疗医院' }]"
></van-field>
<van-field
v-model="formData.the_hospital_house_num"
name="the_hospital_house_num"
label="病房号"
placeholder="请填写病房号"
required
:rules="[{ required:true, message: '请填写病房号' }]"
></van-field>
<van-field
v-model="formData.the_hospital_house_bed_num"
name="the_hospital_house_bed_num"
label="床号"
placeholder="请填写床号"
required
:rules="[{ required:true, message: '请填写床号' }]"
></van-field>
<van-field v-model="formData.the_hospital" name="the_hospital" label="治疗医院"
placeholder="请填写治疗医院" required
:rules="[{ required:true, message: '请填写治疗医院' }]"></van-field>
<van-field v-model="formData.the_hospital_house_num" name="the_hospital_house_num" label="病房号"
placeholder="请填写病房号" required
:rules="[{ required:true, message: '请填写病房号' }]"></van-field>
<van-field v-model="formData.the_hospital_house_bed_num" name="the_hospital_house_bed_num" label="床号"
placeholder="请填写床号" required
:rules="[{ required:true, message: '请填写床号' }]"></van-field>
</template>
<template v-if="['4'].includes(formData.type)">
<van-field
v-model="formData.hospital_by"
name="hospital_by"
label="患病病种"
placeholder="请填写患病病种"
required
:rules="[{ required:true, message: '请填写患病病种' }]"
></van-field>
<van-field v-model="formData.hospital_by" name="hospital_by" label="患病病种"
placeholder="请填写患病病种" required
:rules="[{ required:true, message: '请填写患病病种' }]"></van-field>
</template>
<template v-if="['6'].includes(formData.type)">
<van-field
v-model="formData.deadImmediateFamily"
name="deadImmediateFamily"
label="直系亲属"
placeholder="配偶、父亲、母亲、子女"
required
:rules="[{ required:true, message: '必填' }]"
></van-field>
<van-field v-model="formData.deadImmediateFamily" name="deadImmediateFamily" label="直系亲属"
placeholder="配偶、父亲、母亲、子女" required
:rules="[{ required:true, message: '必填' }]"></van-field>
</template>
<!-- <template-->
<!-- v-if="['c7175af55693441e8233be4552cef9d5','0872ea0b95aa463fb8d98c46bdf72537'].includes(formData.type)">-->
<!-- <van-field :value="formData.hospital_stay"-->
<!-- readonly clickable required-->
<!-- @click="hospital_stay = true"-->
<!-- name="hospital_stay" label="住院时间"-->
<!-- placeholder="请选择住院时间"-->
<!-- :rules="[{ required:true, message: '请选择住院时间' }]"></van-field>-->
<!-- <van-calendar v-model="hospital_stay" type="range" @confirm="onConfirm"-->
<!-- :min-date="new Date('1999-01-01')"-->
<!-- :color="themeColor"></van-calendar>-->
<!-- <template-->
<!-- v-if="['c7175af55693441e8233be4552cef9d5','0872ea0b95aa463fb8d98c46bdf72537'].includes(formData.type)">-->
<!-- <van-field :value="formData.hospital_stay"-->
<!-- readonly clickable required-->
<!-- @click="hospital_stay = true"-->
<!-- name="hospital_stay" label="住院时间"-->
<!-- placeholder="请选择住院时间"-->
<!-- :rules="[{ required:true, message: '请选择住院时间' }]"></van-field>-->
<!-- <van-calendar v-model="hospital_stay" type="range" @confirm="onConfirm"-->
<!-- :min-date="new Date('1999-01-01')"-->
<!-- :color="themeColor"></van-calendar>-->
<!-- <van-field v-model="formData.the_hospital" name="the_hospital" name="type" label="所在医院"-->
<!-- placeholder="请填写所在医院" required-->
<!-- :rules="[{ required:true, message: '请填写所在医院' }]"></van-field>-->
<!-- </template>-->
<!-- <van-field v-model="formData.the_hospital" name="the_hospital" name="type" label="所在医院"-->
<!-- placeholder="请填写所在医院" required-->
<!-- :rules="[{ required:true, message: '请填写所在医院' }]"></van-field>-->
<!-- </template>-->
<van-field
v-model="formData.remark"
name="remark"
label="申请事由"
style="flex-flow: column"
required
:rules="[{ required:true, message: '请填写申请事由' }]"
placeholder="请填写申请事由"
input-align="left"
rows="3"
maxlength="200"
type="textarea"
show-word-limit
autosize
>
<van-field v-model="formData.remark" name="remark" label="申请事由" style="flex-flow: column"
required
:rules="[{ required:true, message: '请填写申请事由' }]"
placeholder="请填写申请事由"
input-align="left"
rows="3" maxlength="200" type="textarea" show-word-limit autosize>
<template #label>
<div class="mb10">申请事由</div>
</template>
@@ -212,7 +153,8 @@ layout("/mobile/platform.html"){
</van-cell-group>
<van-cell-group inset class="mt10" v-if="isUploadFile === true">
<van-field name="files" label="附&emsp;&emsp;件" required style="flex-flow: column" input-align="left">
<van-field name="files" label="附&emsp;&emsp;件" required
style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">附&emsp;&emsp;件</div>
</template>
@@ -220,8 +162,8 @@ layout("/mobile/platform.html"){
<vant-file-upload :files.sync="formData.files"></vant-file-upload>
</template>
</van-field>
<div style="margin: 0 0 7px 15px" v-if="isUploadFile && uploadFileDesc">
<span style="color: red">上传附件说明:{{ uploadFileDesc }}</span>
<div style="margin: 0 0 7px 15px;" v-if="isUploadFile && uploadFileDesc">
<span style="color:red;">上传附件说明:{{ uploadFileDesc }}</span>
</div>
</van-cell-group>
@@ -237,21 +179,26 @@ layout("/mobile/platform.html"){
</van-cell-group>
<div style="margin: 20px 20px 10px 20px">
<van-button @click="onSubmit()" style="border-radius: 10px" block type="info" :color="themeColor">提 交</van-button>
<van-button @click="onSubmit()" style="border-radius: 10px" block type="info" :color="themeColor">
提 交
</van-button>
</div>
</van-form>
<div>
<van-tabbar v-model="tarBarActive" style="z-index: 99">
<van-tabbar-item icon="home-o" replace url="/mobile/condolence/apply/for">慰问申请</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/condolence/apply">慰问记录</van-tabbar-item>
<van-tabbar-item icon="home-o" replace url="/mobile/condolence/apply/for">慰问申请
</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/condolence/apply">慰问记录
</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
@@ -275,38 +222,34 @@ layout("/mobile/platform.html"){
money: 0,
isUploadFile: true,
uploadFileDesc: null,
showChildPicker: false,
childColumns: [
{ value: "一孩", text: "一孩" },
{ value: "二孩", text: "二孩" },
{ value: "三孩", text: "三孩" }
]
showChildPicker:false,
childColumns:[{value:'一孩',text:'一孩'},{value:'二孩',text:'二孩'},{value:'三孩',text:'三孩'}],
}
},
watch: {
"formData.money"(val) {
if (val > this.money) {
this.$notify({
title: "警告",
message: "金额超过规定金额" + this.money + "(元)",
type: "warning"
})
title: '警告',
message: '金额超过规定金额' + this.money + "(元)",
type: 'warning'
});
this.$set(this.formData, "money", this.money)
}
}
},
components: {
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue?v=" + new Date().getTime())
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue?v='+new Date().getTime()),
},
methods: {
onChildConfirm(data) {
onChildConfirm(data){
console.log(data)
this.formData.birth_child_num = data.value
this.showChildPicker = false
},
priceInput() {
let num = 0
this.goods.forEach((v) => {
this.goods.forEach(v => {
num += parseFloat(v.price)
})
this.$set(this.formData, "money", num)
@@ -316,19 +259,18 @@ layout("/mobile/platform.html"){
this.showOccurTime = false
},
onConfirm(date) {
const [start, end] = date
this.hospital_stay = false
this.formData.hospital_stay = moment(start).format("YYYY-MM-DD") + "-" + moment(end).format("YYYY-MM-DD")
this.$set(this.formData, "hospital_stay_1", moment(start).format("YYYY-MM-DD"))
this.$set(this.formData, "hospital_stay_2", moment(end).format("YYYY-MM-DD"))
const [start, end] = date;
this.hospital_stay = false;
this.formData.hospital_stay = moment(start).format('YYYY-MM-DD') + "-" + moment(end).format('YYYY-MM-DD');
this.$set(this.formData, "hospital_stay_1", moment(start).format('YYYY-MM-DD'))
this.$set(this.formData, "hospital_stay_2", moment(end).format('YYYY-MM-DD'))
},
async userRemoteMethod(event) {
if (event) {
const arr = await this.queryUser(event)
this.userList = arr.map((v) => {
this.userList = arr.map(v => {
return {
name: v.username + "(" + v.loginname + ")",
id: v.id
name: v.username + "(" + v.loginname + ")", id: v.id
}
})
this.sheetShow = true
@@ -337,33 +279,32 @@ layout("/mobile/platform.html"){
async payeeUserRemoteMethod(event) {
if (event) {
const arr = await this.queryUser(event)
this.payeeUserList = arr.map((v) => {
this.payeeUserList = arr.map(v => {
return {
name: v.username + "(" + v.loginname + ")",
id: v.id
name: v.username + "(" + v.loginname + ")", id: v.id
}
})
this.payeeSheetShow = true
}
},
async queryUser(query) {
const { data } = await $.get("/platform/fw/condolence/apply/queryUser", { query })
const {data} = await $.get("/platform/fw/condolence/apply/queryUser", {query})
return data
},
onUserSelect(u) {
this.$set(this.formData, "be_user", u.id)
this.$set(this.formData, "be_user_name", u.name)
this.$set(this.formData, 'be_user', u.id)
this.$set(this.formData, 'be_user_name', u.name)
this.sheetShow = false
},
payeeOnUserSelect(u) {
this.$set(this.formData, "payee", u.id)
this.$set(this.formData, "payee_name", u.name)
this.$set(this.formData, 'payee', u.id)
this.$set(this.formData, 'payee_name', u.name)
this.payeeSheetShow = false
},
async onTypeConfirm(val) {
this.$set(this.formData, "typeName", val.text)
this.$set(this.formData, "type", val.value)
const { data, code, msg } = await $.get("/platform/condolence/type/findOne", { id: val.value })
const {data, code, msg} = await $.get("/platform/condolence/type/findOne", {id: val.value})
console.log(data)
this.isUploadFile = data.isUploadFile
@@ -371,15 +312,15 @@ layout("/mobile/platform.html"){
this.$set(this, "money", data.money)
await this.moneyChange(val.value)
this.showTypePicker = false
this.showTypePicker = false;
},
onWayConfirm(val) {
this.$set(this.formData, "wayName", val.text)
this.$set(this.formData, "way", val.value)
this.showWayPicker = false
this.showWayPicker = false;
},
async moneyChange(id) {
const { data, code, msg } = await $.get("/platform/condolence/type/findOne", { id })
const {data, code, msg} = await $.get("/platform/condolence/type/findOne", {id})
if (data) {
this.$set(this.formData, "money", data.money)
this.$set(this.formData, "wayName", data.way)
@@ -388,34 +329,34 @@ layout("/mobile/platform.html"){
},
async onSubmit() {
if (!this.formData.files) {
vant.Toast("请上传附件材料!")
vant.Toast('请上传附件材料!')
return
}
this.$refs.signature.submitSign()
if (this.$refs.signature.checkNull()) {
this.$toast("请签名!")
this.$toast('请签名!')
return
}
await this.$refs.signature.updateSign()
const formData = clone(this.formData)
formData.mobile = "${@shiro.getPrincipalProperty('mobile')}"
formData.files = JSON.stringify(formData.files)
this.$refs["addForm"].validate().then(async () => {
this.$toast.loading("提交中...")
const res = await $.post("/platform/fw/condolence/apply/doAdd", {
this.$refs['addForm'].validate().then(async () => {
this.$toast.loading('提交中...')
const res = await $.post('/platform/fw/condolence/apply/doAdd', {
data: JSON.stringify(formData),
sign: formData.sign
})
if (res.code === 0) {
this.$toast.success("申请成功")
this.$toast.success('申请成功');
setTimeout(() => {
location.replace("/mobile/condolence/apply")
location.replace('/mobile/condolence/apply')
}, 1000)
} else {
this.$toast.fail("申请失败")
this.$toast.fail('申请失败');
}
})
}
},
},
mounted() {
this.$nextTick(() => {
@@ -425,20 +366,21 @@ layout("/mobile/platform.html"){
})
},
async created() {
this.formData.apply_time = moment().format("YYYY-MM-DD")
this.formData.apply_time = moment().format('YYYY-MM-DD')
this.formData.be_user = "${@shiro.getPrincipalProperty('id')}"
//this.formData.be_user_name = "${@shiro.getPrincipalProperty('username')}" + "(" + "${@shiro.getPrincipalProperty('loginname')}" + ")"
const { code, data } = await $.get("/platform/condolence/type/getAll")
data.forEach((v) => {
this.typeColumns.push({ value: v.id, text: v.name + "(" + v.code + ")" })
const {code, data} = await $.get("/platform/condolence/type/getAll")
data.forEach(v => {
this.typeColumns.push({value: v.id, text: v.name + "(" + v.code + ")"})
})
for (let i in condolence.way) {
this.wayColumns.push({ value: condolence.way[i], text: condolence.way[i] })
this.wayColumns.push({value: condolence.way[i], text: condolence.way[i]})
}
}
})
</script>
<style>
.up_down > .van-cell {
flex-flow: column;
}
@@ -447,15 +389,14 @@ layout("/mobile/platform.html"){
width: 100%;
}
.van-cell,
.van-picker button,
.submit .van-button--normal {
.van-cell, .van-picker button, .submit .van-button--normal {
font-size: 16px;
}
.van-divider {
margin: 10px 0;
}
</style>
<!--#
}
@@ -1,16 +1,19 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style></style>
<style>
</style>
<div id="app" v-cloak>
<van-nav-bar title="慰问申请信息" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="慰问申请信息" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<div>
<condolence-info :id.sync="id"></condolence-info>
<div style="margin: 20px 20px 10px 20px">
<van-button :color="themeColor" block @click="doEdit" class="ml10 mr10" v-if="state_id==2010||state_id==2020">
撤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回
<van-button :color="themeColor" block @click="doEdit" class="ml10 mr10"
v-if="state_id==2010||state_id==2020">撤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回
</van-button>
</div>
</div>
@@ -18,7 +21,7 @@ layout("/mobile/platform.html"){
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
@@ -27,29 +30,30 @@ layout("/mobile/platform.html"){
}
},
components: {
"condolence-info": httpVueLoader("/components/condolence/mobile/common.vue?v=" + new Date().getTime())
'condolence-info': httpVueLoader('/components/condolence/mobile/common.vue?v=' + new Date().getTime()),
},
methods: {
doEdit() {
vant.Dialog.confirm({
title: "标题",
message: "确认要撤回吗?"
title: '标题',
message: '确认要撤回吗?',
})
.then(async () => {
const resp = await $.post("/platform/fw/condolence/ucr/doEdit", { id: this.id })
this.$toast.success("撤回成功")
const resp = await $.post("/platform/fw/condolence/ucr/doEdit", {id: this.id});
this.$toast.success('撤回成功');
setTimeout(() => {
history.back()
}, 1000)
})
.catch(() => {
// on cancel
})
});
}
},
async created() {
this.id = GetQueryString("id")
this.state_id = GetQueryString("state_id")
this.id = GetQueryString('id')
this.state_id = GetQueryString('state_id')
}
})
</script>
@@ -3,10 +3,8 @@ layout("/mobile/platform.html"){
#-->
<style>
.apply_btn {
animation: come 0.5s;
position: fixed;
top: 20%;
right: 0;
animation: come .5s;
position: fixed;top: 20%;right: 0
}
@keyframes come {
@@ -17,11 +15,12 @@ layout("/mobile/platform.html"){
right: 0px;
}
}
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="慰问申请列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="慰问申请列表" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
@@ -30,11 +29,14 @@ layout("/mobile/platform.html"){
</van-dropdown-menu>
</div>
<div style="margin: 60px auto 0 auto">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="pageData">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
@load="pageData">
<div v-for="o in tableData" class="list-card" @click="openInfo(o.id)">
<van-cell-group inset>
<van-cell :border="false" title="被慰问人">
<span class="van-ellipsis" style="font-size: 16px" :style="{color:themeColor}">{{o.be_username}}</span>
<span class="van-ellipsis" style="font-size: 16px;" :style="{color:themeColor}">
{{o.be_username}}
</span>
</van-cell>
<van-cell :border="false" title="申请时间">{{o.apply_time}}</van-cell>
<van-cell :border="false" title="慰问类型">{{o.type_name}}</van-cell>
@@ -47,61 +49,69 @@ layout("/mobile/platform.html"){
</div>
</van-list>
<!-- <van-button v-show="visible" class="apply_btn" @click.stop="openApply" plain hairline>-->
<!-- <template #icon>-->
<!-- <svg t="1634200664904" class="icon" viewBox="0 0 1024 1024" version="1.1"-->
<!-- xmlns="http://www.w3.org/2000/svg" p-id="3163" width="32" height="32">-->
<!-- <path d="M837.632 160.768c64 0 117.248 53.248 117.248 117.248v470.528c0 64-53.248 117.248-117.248 117.248H187.904c-64 2.048-117.248-50.688-117.248-114.688V278.016c0-64 53.248-117.248 117.248-117.248h649.728z m66.048 590.848V274.944c0-32.768-28.16-60.416-60.416-60.416H184.832c-32.768 0-60.416 28.16-60.416 60.416v479.232c0 32.768 28.16 60.416 60.416 60.416h657.92c32.768-2.56 60.928-28.16 60.928-62.976zM387.072 317.44"-->
<!-- fill="#2E77ED" p-id="3164"></path>-->
<!-- <path d="M326.144 709.632c-14.848 0-26.624-12.288-26.624-27.136V455.68c0-14.848 12.288-27.136 27.136-27.136S353.28 440.832 353.28 455.68v226.816c-0.512 15.36-12.288 27.136-27.136 27.136z"-->
<!-- fill="#FFBB12" p-id="3165"></path>-->
<!-- <path d="M569.856 442.368c0-14.848 12.288-26.624 27.136-26.624H757.76c14.848 0 27.136 12.288 27.136 27.136s-12.288 26.624-27.136 26.624h-160.768c-15.36 0-27.136-12.288-27.136-27.136zM569.856 682.496c0-14.848 12.288-26.624 27.136-26.624H757.76c14.848 0 27.136 12.288 27.136 27.136s-12.288 26.624-27.136 26.624h-160.768c-15.36 0-27.136-12.288-27.136-27.136zM569.856 553.472c0-14.848 12.288-26.624 27.136-26.624H757.76c14.848 0 27.136 12.288 27.136 27.136s-12.288 26.624-27.136 26.624h-160.768c-15.36 0-27.136-12.288-27.136-27.136z"-->
<!-- fill="#2E77ED" p-id="3166"></path>-->
<!-- <path d="M228.352 509.44c-10.24-10.752-10.24-27.648 0-37.888l78.336-78.336c10.752-10.752 27.648-10.752 37.888 0s10.24 27.648 0 37.888L266.24 509.44c-10.24 10.752-27.136 10.752-37.888 0z"-->
<!-- fill="#FFBB12" p-id="3167"></path>-->
<!-- <path d="M306.688 393.216c10.752-10.24 27.648-10.24 37.888 0l78.336 78.336c10.752 10.752 10.752 27.648 0 37.888s-27.648 10.24-37.888 0L306.688 431.104c-10.24-10.752-10.24-27.648 0-37.888z"-->
<!-- fill="#FFBB12" p-id="3168"></path>-->
<!-- </svg>-->
<!-- </template>-->
<!-- 申请-->
<!-- </van-button>-->
<!-- <van-button v-show="visible" class="apply_btn" @click.stop="openApply" plain hairline>-->
<!-- <template #icon>-->
<!-- <svg t="1634200664904" class="icon" viewBox="0 0 1024 1024" version="1.1"-->
<!-- xmlns="http://www.w3.org/2000/svg" p-id="3163" width="32" height="32">-->
<!-- <path d="M837.632 160.768c64 0 117.248 53.248 117.248 117.248v470.528c0 64-53.248 117.248-117.248 117.248H187.904c-64 2.048-117.248-50.688-117.248-114.688V278.016c0-64 53.248-117.248 117.248-117.248h649.728z m66.048 590.848V274.944c0-32.768-28.16-60.416-60.416-60.416H184.832c-32.768 0-60.416 28.16-60.416 60.416v479.232c0 32.768 28.16 60.416 60.416 60.416h657.92c32.768-2.56 60.928-28.16 60.928-62.976zM387.072 317.44"-->
<!-- fill="#2E77ED" p-id="3164"></path>-->
<!-- <path d="M326.144 709.632c-14.848 0-26.624-12.288-26.624-27.136V455.68c0-14.848 12.288-27.136 27.136-27.136S353.28 440.832 353.28 455.68v226.816c-0.512 15.36-12.288 27.136-27.136 27.136z"-->
<!-- fill="#FFBB12" p-id="3165"></path>-->
<!-- <path d="M569.856 442.368c0-14.848 12.288-26.624 27.136-26.624H757.76c14.848 0 27.136 12.288 27.136 27.136s-12.288 26.624-27.136 26.624h-160.768c-15.36 0-27.136-12.288-27.136-27.136zM569.856 682.496c0-14.848 12.288-26.624 27.136-26.624H757.76c14.848 0 27.136 12.288 27.136 27.136s-12.288 26.624-27.136 26.624h-160.768c-15.36 0-27.136-12.288-27.136-27.136zM569.856 553.472c0-14.848 12.288-26.624 27.136-26.624H757.76c14.848 0 27.136 12.288 27.136 27.136s-12.288 26.624-27.136 26.624h-160.768c-15.36 0-27.136-12.288-27.136-27.136z"-->
<!-- fill="#2E77ED" p-id="3166"></path>-->
<!-- <path d="M228.352 509.44c-10.24-10.752-10.24-27.648 0-37.888l78.336-78.336c10.752-10.752 27.648-10.752 37.888 0s10.24 27.648 0 37.888L266.24 509.44c-10.24 10.752-27.136 10.752-37.888 0z"-->
<!-- fill="#FFBB12" p-id="3167"></path>-->
<!-- <path d="M306.688 393.216c10.752-10.24 27.648-10.24 37.888 0l78.336 78.336c10.752 10.752 10.752 27.648 0 37.888s-27.648 10.24-37.888 0L306.688 431.104c-10.24-10.752-10.24-27.648 0-37.888z"-->
<!-- fill="#FFBB12" p-id="3168"></path>-->
<!-- </svg>-->
<!-- </template>-->
<!-- 申请-->
<!-- </van-button>-->
</div>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image"
image="/none.svg"
description="暂无数据">
</van-empty>
<div>
<van-tabbar v-model="tarBarActive">
<van-tabbar-item icon="home-o" replace url="/mobile/condolence/apply/for">慰问申请</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/condolence/apply">慰问记录</van-tabbar-item>
<van-tabbar-item icon="home-o" replace url="/mobile/condolence/apply/for">慰问申请
</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/condolence/apply">慰问记录
</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
tarBarActive: 1,
visible: true,
typeOption: [{ value: null, text: "全部" }],
typeOption: [
{value: null, text: '全部'}
],
yearOption: [],
pageForm: {
year: "",
type: ""
year: '',
type: ''
}
}
},
components: {
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue")
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
},
methods: {
openApply() {
window.location.href = "/mobile/condolence/apply/for"
window.location.href = '/mobile/condolence/apply/for'
},
openInfo(id) {
window.location.href = "/mobile/condolence/apply/info?id=" + id
window.location.href = '/mobile/condolence/apply/info?id=' + id
},
yearChange(val) {
this.pageForm.year = val
@@ -114,12 +124,13 @@ layout("/mobile/platform.html"){
listenTouch() {
this.$nextTick(() => {
const app = document.querySelector("#app")
app.addEventListener("touchstart", () => {
app.addEventListener('touchstart', () => {
this.visible = false
})
app.addEventListener("touchend", () => {
app.addEventListener('touchend', () => {
this.visible = true
})
})
}
},
@@ -129,11 +140,11 @@ layout("/mobile/platform.html"){
async created() {
this.mLoading = true
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearOption.unshift({ value: i, text: i + "年" })
this.yearOption.unshift({value: i, text: i + '年'},)
}
const { code, data } = await $.get("/platform/condolence/type/getAll")
data.forEach((v) => {
this.typeOption.push({ value: v.id, text: v.name + v.code })
const {code, data} = await $.get("/platform/condolence/type/getAll")
data.forEach(v => {
this.typeOption.push({value: v.id, text: v.name + v.code})
})
this.$set(this.pageForm, "year", this.yearOption[0].value)
this.$set(this.pageForm, "type", this.typeOption[0].value)
@@ -3,25 +3,38 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed
@click-left="history.go(-1)"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu :active-color="themeColor">
<van-dropdown-item v-model="pageForm.year" @change="yearChange" :options="yearList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.isAudit" @change="yearChange" :options="auditList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.type" @change="yearChange" :options="mCondolence.typeList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unionId" @change="yearChange" :options="mCommon.unionList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unitId" @change="yearChange" :options="mCommon.unitList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.year" @change="yearChange"
:options="yearList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.isAudit" @change="yearChange"
:options="auditList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.type" @change="yearChange"
:options="mCondolence.typeList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unionId" @change="yearChange"
:options="mCommon.unionList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unitId" @change="yearChange"
:options="mCommon.unitList"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 70px auto 0">
<van-list v-model="mLoading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="pageData">
<van-list v-model="mLoading" :finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="pageData">
<div v-for="o in tableData" class="list-card" @click="openView(o)">
<van-cell-group inset>
<van-cell :border="false" title="被慰问人">
<span class="van-ellipsis" style="font-size: 16px" :style="{color:themeColor}">{{o.be_username}}</span>
<span class="van-ellipsis" style="font-size: 16px;"
:style="{color:themeColor}">
{{o.be_username}}
</span>
</van-cell>
<van-cell :border="false" title="申&ensp;请&ensp;人">{{o.sqr_username}}</van-cell>
<van-cell :border="false" title="所在单位">{{o.be_unitname}}</van-cell>
@@ -36,13 +49,18 @@ layout("/mobile/platform.html"){
</div>
</van-list>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image"
image="/none.svg"
description="暂无数据">
</van-empty>
</div>
</div>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
@@ -50,30 +68,30 @@ layout("/mobile/platform.html"){
unionList: [],
yearList: [],
auditList: [
{ text: "未审核", value: false },
{ text: "已审核", value: true }
{text: '未审核', value: false},
{text: '已审核', value: true},
],
handle: true,
pageForm: {
year: new Date().getFullYear(),
isAudit: false
}
isAudit: false,
},
}
},
methods: {
openView(o) {
window.location.href = "/mobile/condolence/audit/auditHtml?state_id=" + o.state_id + "&id=" + o.id
window.location.href = '/mobile/condolence/audit/auditHtml?state_id=' + o.state_id + '&id=' + o.id
},
yearChange() {
this.tableData = []
this.refreshing = true
this.finished = false
this.refreshing = true;
this.finished = false;
this.pageForm.pageNumber = 0
this.flushUnits()
},
pageData() {
this.mLoading = true
$.get(loc() + "/pageData", this.pageForm, (res) => {
$.get(loc() + '/pageData', this.pageForm, (res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -84,10 +102,11 @@ layout("/mobile/platform.html"){
}
})
this.mLoading = false
},
async flushUnits() {
//this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === "true") {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'true') {
await mCommon.getUnitList(this.pageForm.unionId)
} else {
await mCommon.getUnitList("${@shiro.getPrincipalProperty('unit').getUnionid()}")
@@ -96,7 +115,7 @@ layout("/mobile/platform.html"){
async init() {
let nowYear = new Date().getFullYear()
for (let i = nowYear; i >= nowYear - 9; i--) {
this.yearList.push({ text: i, value: i })
this.yearList.push({text: i, value: i})
}
await mCondolence.getType()
await mCommon.getUnionList()
@@ -114,12 +133,12 @@ layout("/mobile/platform.html"){
async created() {
this.init()
this.flushUnits()
if (GetQueryString("audit") === "1") {
if (GetQueryString("audit") === '1') {
this.pageForm.isAudit = true
}
}
})
window.addEventListener("pageshow", (e) => {
window.addEventListener('pageshow', e => {
if (e.persisted || (window.performance && window.performance.navigation.type === 2)) {
vue.init()
vue.yearChange()
@@ -127,6 +146,7 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
@@ -0,0 +1,369 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.title_color {
color: #000000;
}
.content_color {
color: grey;
}
.van-doc-card {
margin: 8px;
padding: 12px 12px 12px 12px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 20px;
font-size: 15px;
position: relative;
}
.van-divider {
margin: 6px 0 6px 0;
}
.van-button--small {
border-radius: 8px;
height: 26px;
font-size: 16px;
}
.van-col {
line-height: 35px;
}
.title_span {
font-size: 19px;
font-weight: bold;
position: absolute;
left: -1px;
top: 11px;
color: #1867b0;
}
.title {
font-size: 18px;
font-weight: bold;
flex: 1;
overflow: hidden;
white-space: nowrap;
color: #1867b0;
}
.cus_overflow {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.van-dropdown-menu__item {
flex: auto;
}
p {
margin: 0 !important;
}
.van-cell__title {
width: 30%;
}
.van-cell__right-icon {
margin-left: 0;
}
.van-sidebar-item {
padding: 8px 12px;
}
.footer {
background-color: white;
width: 100%;
height: 60px;
display: flex;
justify-content: space-evenly;
align-items: center;
left: 0;
}
.footer .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.join {
background-color: #0e78c5;
color: white;
}
.info_tab .van-doc-card > div:first-child {
border: 2px #0e78c5 solid;
width: 26px;
border-radius: 6px;
position: absolute;
top: 0;
left: 20px;
}
.process-title {
font-size: 15px;
color: #1867b0;
font-weight: 600;
margin: 10px 0 10px 0!important;
padding:10px;
position: relative;
line-height: 1.1;
font-family: inherit;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="日常慰问分工会审核" left-arrow placeholder fixed
@click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false">
<van-dropdown-item :options="yearList" @change="doSearch" v-model="pageForm.year"></van-dropdown-item>
<van-dropdown-item :options="unitList" @change="doSearch" v-model="pageForm.unitId"></van-dropdown-item>
<van-dropdown-item :options="auditList" @change="doSearch" v-model="pageForm.isAudit"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
<div>
<van-list v-if="tableData.length>0" v-model="tableLoading" :finished="tableFinished" finished-text="没有更多了" @load="pageData">
<div v-for="item in tableData" :key="item.id" class="van-doc-card">
<div>
<div style="display: flex; justify-content: space-between">
<div style="width: 74%">
<div class="van-ellipsis title">
<span class="title_span">|</span>
<span>{{item.sqr_username + '(' + item.sqr_loginname + ')'}}</span>
</div>
</div>
</div>
<div style="margin-top: 4px">
<van-row>
<van-col span="24">
<span class="title_color">慰问对象:</span>
<span class="content_color">{{item.be_username}}</span>
</van-col>
<van-col span="24"><span class="title_color">对象工号:</span>
<span class="content_color">
{{item.be_loginname}}
</span>
</van-col>
</van-row>
<van-row>
<van-col span="24"><span class="title_color">所属工会:</span>
<span class="content_color">
{{item.be_unionname}}
</span>
</van-col>
<van-col span="24"><span class="title_color">工作单位:</span>
<span class="content_color">{{item.be_unitname}}</span>
</van-col>
</van-row>
<van-row>
<van-col span="24"><span class="title_color">慰问类型:</span>
<span class="content_color">{{item.type_name}}</span>
</van-col>
</van-row>
</div>
<van-divider></van-divider>
<div style="display: flex; justify-content: space-between; align-items: center">
<div>
<span class="title_color">当前状态:</span>
<span class="content_color">{{item.state_name}}</span>
</div>
<div>
<van-button size="small" @click="openView(item)"
type="info" style="margin-right: 4px">查看
</van-button>
<van-button size="small" type="primary"
v-if="item.state_id === 2000"
@click="openApproval(item)"
style="margin-right: 4px">审核
</van-button>
<!--<van-button size="small" type="danger"
v-if="[2014,2015,2020].includes(item.state_id)"
@click="openRevoke(item.id)"
style="margin-right: 4px">撤回
</van-button>-->
</div>
</div>
</div>
</div>
</van-list>
<van-empty v-else class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<van-popup v-model="infoShow" position="right" :style="{ height: '100%', width: '100%' }" safe-area-inset-bottom>
<van-sticky>
<van-nav-bar @click-left="infoShow=false" left-arrow
title="分工会审核"></van-nav-bar>
</van-sticky>
<div style="height: calc(100% - 44px);overflow-y: auto">
<condolence-info ref="info"></condolence-info>
<div v-if="showApprovalForm">
<div class="process-title">{{ '分工会审核' }}</div>
<van-form>
<van-field label="审核人员" readonly name="username" v-model="formData.username" required></van-field>
<van-field label="审核时间" readonly name="time" v-model="formData.time" required></van-field>
<van-field label="审核意见" name="opinion" v-model="formData.opinion" placeholder="请输入审核意见" required></van-field>
<van-field label="审核签字" name="sign" required style="flex-flow: column">
<template #label>
<div class="mb10">审核签字</div>
</template>
<template #input>
<mobile-sign ref="signature" v-model="formData.sign"></mobile-sign>
</template>
</van-field>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="danger" block @click.submit="doApproval(1)">拒绝</van-button>
<van-button type="danger" block @click.submit="doApproval(2)">退回</van-button>
<van-button type="primary" block @click.submit="doApproval(3)">通过</van-button>
</div>
</div>
</div>
</van-popup>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
unitList: [],
yearList: [],
auditList: [
{text: '未审核', value: false},
{text: '已审核', value: true},
],
handle: true,
pageForm: {
year: new Date().getFullYear(),
isAudit: false
},
tableLoading: false,
tableFinished: false,
infoShow: false,
showApprovalForm: false,
}
},
components: {
'condolence-info': httpVueLoader('/components/condolence/mobile/common.vue?v=' + new Date().getTime()),
},
methods: {
openView(item) {
this.infoShow = true
this.showApprovalForm = false
this.$nextTick(() => {
this.$refs.info.getInfo(item.id)
})
},
openApproval(item) {
this.formData.id = item.id
this.formData.username = "${@shiro.getPrincipalProperty('username')}"
this.formData.time = moment().format('YYYY-MM-DD')
this.infoShow = true
this.showApprovalForm = true
this.$nextTick(() => {
this.$refs.info.getInfo(item.id)
})
},
openRevoke(id) {
this.$dialog.confirm({
title: '温馨提示',
message: '确定要撤回该申请吗?'
}).then(() => {
$.post('/platform/fw/condolence/ucr/doEdit', { id }).then(resp => {
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
})
})
},
async doApproval(flag) {
if (!this.formData.opinion) {
this.$toast.fail('请填写审核意见')
return
}
this.$refs.signature.submitSign()
if (this.formData.sign === undefined || this.$refs.signature.checkNull()) {
this.$toast.fail('请签名')
return
}
await this.$refs.signature.updateSign()
this.formData.pass = flag
const resp = await $.post('/platform/fw/condolence/ucr/doReview', this.formData)
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.infoShow = false
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
},
doSearch() {
this.pageForm.pageNumber = 1
this.tableData = []
this.finished = false
this.pageData()
},
pageData() {
this.tableLoading = true
$.post('/platform/fw/condolence/ucr/pageData', this.pageForm)
.then(res => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
this.pageForm.totalCount = res.data.totalCount
if (this.tableData.length >= this.pageForm.totalCount) {
this.tableFinished = true
} else {
this.pageForm.pageNumber++
}
this.tableLoading = false
} else {
this.$toast(res.msg)
}
})
},
async flushUnits(unionId) {
this.unitList = await getUnits(unionId)
this.unitList.forEach(v => {
v.text = v.name
v.value = v.id
})
if (this.unitList && this.unitList.length > 0) {
this.unitList.unshift({ text: "全部单位", value: null })
this.$set(this.pageForm, "unitId", this.unitList[0].value)
}
},
async initData() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
await this.flushUnits()
} else {
await this.flushUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
this.$set(this.pageForm, "year", this.yearList[0].value)
this.doSearch()
},
},
created() {
this.initData()
},
})
</script>
<!--#
}
#-->
@@ -3,34 +3,37 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<condolence-info ref="info" :id.sync="id" title="校工会审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">校工会审核</div>
<div class="van-sidebar-item van-sidebar-item--select">
校工会审核
</div>
</div>
<van-form>
<van-field
readonly
left-icon="contact"
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
<van-field readonly left-icon="contact"
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
></van-field>
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o" readonly></van-field>
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o"
readonly></van-field>
<van-field
v-model="formData.opinion"
left-icon="chat-o"
rows="1"
required
:rules="[{ required:true, message: '请输入审核意见' }]"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
<van-field v-model="formData.opinion"
left-icon="chat-o"
rows="1"
required
:rules="[{ required:true, message: '请输入审核意见' }]"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
></van-field>
<van-field label="签字" required style="flex-flow: column">
@@ -42,76 +45,88 @@ layout("/mobile/platform.html"){
</template>
</van-field>
<van-row gutter="20" style="margin-top: 30px; padding: 0 25px">
<van-row gutter="20" style="margin-top: 30px;padding: 0 25px">
<van-col span="8">
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝</van-button>
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝
</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(2)">返回修改</van-button>
<van-button :color="themeColor" block @click="doAudit(2)">返回修改
</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(3)">通 过</van-button>
<van-button :color="themeColor" block @click="doAudit(3)">通 过
</van-button>
</van-col>
</van-row>
</van-form>
</template>
</condolence-info>
</div>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
handle: true,
id: "",
formData: {}
formData: {},
}
},
components: {
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue"),
"condolence-info": httpVueLoader("/components/condolence/mobile/common.vue?v=" + new Date().getTime())
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'condolence-info': httpVueLoader('/components/condolence/mobile/common.vue?v=' + new Date().getTime()),
},
methods: {
async doAudit(pass) {
if (!this.formData.opinion) {
this.$toast.fail("请填写审核意见")
this.$toast.fail('请填写审核意见');
return
}
this.$refs.signature.submitSign()
if (this.$refs.signature.checkNull()) {
vant.Toast("请签名!")
vant.Toast('请签名!')
return
}
await this.$refs.signature.updateSign()
this.formData.pass = pass
const resp = await $.post("/platform/fw/condolence/fr/doReview", this.formData)
if (resp.code === 0) {
this.$toast.success("审核成功")
this.$toast.success('审核成功')
setTimeout(() => {
window.history.back()
}, 1000)
} else {
this.$toast.fail("审核失败")
this.$toast.fail('审核失败');
}
}
},
},
async created() {
this.id = GetQueryString("id")
const { data } = await $.get("/platform/fw/condolence/findOne", { id: this.id })
const {data} = await $.get("/platform/fw/condolence/findOne", {id: this.id})
this.formData = {
id: this.id,
username: "${@shiro.getPrincipalProperty('username')}",
time: moment().format("YYYY-MM-DD"),
time: moment().format('YYYY-MM-DD'),
opinion: null,
sign: ""
sign: "",
}
}
})
</script>
<!--#
}
#-->
@@ -3,53 +3,54 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<condolence-info ref="info" :id.sync="id" title="校工会主席审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title mt10">
<div class="van-sidebar-item van-sidebar-item--select">校工会主席审核</div>
<div class="van-sidebar-item van-sidebar-item--select">
校工会主席审核
</div>
</div>
<van-form>
<van-field
readonly
left-icon="contact"
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
<van-field readonly
left-icon="contact"
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
></van-field>
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o" readonly></van-field>
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o"
readonly></van-field>
<van-field
v-model="formData.money"
label="慰问金额"
type="number"
left-icon="balance-list-o"
required
:rules="[{ required:true, message: '请输入慰问金额' }]"
<van-field v-model="formData.money" label="慰问金额" type="number"
left-icon="balance-list-o"
required :rules="[{ required:true, message: '请输入慰问金额' }]"
></van-field>
<van-field v-model="auditType" label="审核类型" left-icon="clock-o" @click="typePicker = true" required readonly></van-field>
<van-field v-model="auditType" label="审核类型" left-icon="clock-o"
@click="typePicker = true" required readonly></van-field>
<van-popup v-model="typePicker" position="bottom">
<van-picker
show-toolbar
:columns="['审核通过','审核通过(线下提交资料)', '审核拒绝']"
@confirm="typeChange"
@cancel="typePicker = false"
show-toolbar
:columns="['审核通过','审核通过(线下提交资料)', '审核拒绝']"
@confirm="typeChange"
@cancel="typePicker = false"
></van-picker>
</van-popup>
<van-field
v-model="formData.opinion"
rows="1"
required
left-icon="chat-o"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
<van-field v-model="formData.opinion"
rows="1"
required
left-icon="chat-o"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
></van-field>
<van-field label="签字" required style="flex-flow: column">
@@ -61,91 +62,102 @@ layout("/mobile/platform.html"){
</template>
</van-field>
<van-row gutter="20" style="margin-top: 30px; padding: 0 25px">
<van-row gutter="20" style="margin-top: 30px;padding: 0 25px">
<van-col span="8">
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝</van-button>
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝
</van-button>
</van-col>
<van-col span="8">
<van-button color="red" block plain @click="doAudit(2)">返回修改</van-button>
<van-button color="red" block plain @click="doAudit(2)">返回修改
</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(3)">通 过</van-button>
<van-button :color="themeColor" block @click="doAudit(3)">通 过
</van-button>
</van-col>
</van-row>
</van-form>
</template>
</condolence-info>
</div>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
typePicker: false,
auditType: "审核通过",
auditType: '审核通过',
handle: true,
id: "",
formData: {}
formData: {},
}
},
components: {
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue"),
"condolence-info": httpVueLoader("/components/condolence/mobile/common.vue?v=" + new Date().getTime())
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'condolence-info': httpVueLoader('/components/condolence/mobile/common.vue?v=' + new Date().getTime()),
},
methods: {
typeChange(value, index) {
if (value === "审核通过") {
this.formData.opinion = "情况属实,同意申请。"
} else if (value === "审核通过(线下提交资料)") {
this.$set(this.formData, "opinion", "请将纸质发票经办人、分工会主席签字后交至行政楼A426办公室。")
if(value === '审核通过') {
this.formData.opinion = '情况属实,同意申请。'
} else if (value === '审核通过(线下提交资料)') {
this.$set(this.formData, 'opinion', '请将纸质发票经办人、分工会主席签字后交至行政楼A426办公室。')
} else {
this.formData.opinion = ""
this.formData.opinion = ''
}
this.typePicker = false
},
async doAudit(pass) {
if (!this.formData.opinion) {
this.$toast.fail("请填写审核意见")
this.$toast.fail('请填写审核意见');
return
}
this.$refs.signature.submitSign()
if (pass === 3 && this.$refs.signature.checkNull()) {
vant.Toast("请签名!")
vant.Toast('请签名!')
return
}
await this.$refs.signature.updateSign()
this.formData.pass = pass
if (this.auditType === "审核通过(线下提交资料)") {
if(this.auditType === '审核通过(线下提交资料)') {
pass = 4
}
const resp = await $.post("/platform/fw/condolence/vcr/doReview", this.formData)
if (resp.code === 0) {
this.$toast.success("审核成功")
this.$toast.success('审核成功');
setTimeout(() => {
history.back()
}, 1000)
} else {
this.$toast.fail("审核失败")
this.$toast.fail('审核失败');
}
}
},
},
async created() {
this.id = GetQueryString("id")
const { data } = await $.get("/platform/fw/condolence/findOne", { id: this.id })
const {data} = await $.get("/platform/fw/condolence/findOne", {id: this.id})
this.formData = {
id: this.id,
username: "${@shiro.getPrincipalProperty('username')}",
time: moment().format("YYYY-MM-DD"),
opinion: "情况属实,同意申请。",
time: moment().format('YYYY-MM-DD'),
opinion: '情况属实,同意申请。',
sign: "",
money: data.money
}
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,382 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.title_color {
color: #000000;
}
.content_color {
color: grey;
}
.van-doc-card {
margin: 8px;
padding: 12px 12px 12px 12px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 20px;
font-size: 15px;
position: relative;
}
.van-divider {
margin: 6px 0 6px 0;
}
.van-button--small {
border-radius: 8px;
height: 26px;
font-size: 16px;
}
.van-col {
line-height: 35px;
}
.title_span {
font-size: 19px;
font-weight: bold;
position: absolute;
left: -1px;
top: 11px;
color: #1867b0;
}
.title {
font-size: 18px;
font-weight: bold;
flex: 1;
overflow: hidden;
white-space: nowrap;
color: #1867b0;
}
.cus_overflow {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.van-dropdown-menu__item {
flex: auto;
}
p {
margin: 0 !important;
}
.van-cell__title {
width: 30%;
}
.van-cell__right-icon {
margin-left: 0;
}
.van-sidebar-item {
padding: 8px 12px;
}
.footer {
background-color: white;
width: 100%;
height: 60px;
display: flex;
justify-content: space-evenly;
align-items: center;
left: 0;
}
.footer .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.join {
background-color: #0e78c5;
color: white;
}
.info_tab .van-doc-card > div:first-child {
border: 2px #0e78c5 solid;
width: 26px;
border-radius: 6px;
position: absolute;
top: 0;
left: 20px;
}
.process-title {
font-size: 15px;
color: #1867b0;
font-weight: 600;
margin: 10px 0 10px 0!important;
padding:10px;
position: relative;
line-height: 1.1;
font-family: inherit;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="日常慰问校工会主席审核" left-arrow placeholder fixed
@click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false">
<van-dropdown-item :options="yearList" @change="doSearch" v-model="pageForm.year"></van-dropdown-item>
<van-dropdown-item :options="unionList" @change="doSearch();flushUnits(pageForm.unionId)" v-model="pageForm.unionId"></van-dropdown-item>
<van-dropdown-item :options="unitList" @change="doSearch" v-model="pageForm.unitId"></van-dropdown-item>
<van-dropdown-item :options="auditList" @change="doSearch" v-model="pageForm.isAudit"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
<div>
<van-list v-if="tableData.length>0" v-model="tableLoading" :finished="tableFinished" finished-text="没有更多了" @load="pageData">
<div v-for="item in tableData" :key="item.id" class="van-doc-card">
<div>
<div style="display: flex; justify-content: space-between">
<div style="width: 74%">
<div class="van-ellipsis title">
<span class="title_span">|</span>
<span>{{item.sqr_username + '(' + item.sqr_loginname + ')'}}</span>
</div>
</div>
</div>
<div style="margin-top: 4px">
<van-row>
<van-col span="24">
<span class="title_color">慰问对象:</span>
<span class="content_color">{{item.be_username}}</span>
</van-col>
<van-col span="24"><span class="title_color">对象工号:</span>
<span class="content_color">
{{item.be_loginname}}
</span>
</van-col>
</van-row>
<van-row>
<van-col span="24"><span class="title_color">所属工会:</span>
<span class="content_color">
{{item.be_unionname}}
</span>
</van-col>
<van-col span="24"><span class="title_color">工作单位:</span>
<span class="content_color">{{item.be_unitname}}</span>
</van-col>
</van-row>
<van-row>
<van-col span="24"><span class="title_color">慰问类型:</span>
<span class="content_color">{{item.type_name}}</span>
</van-col>
</van-row>
</div>
<van-divider></van-divider>
<div style="display: flex; justify-content: space-between; align-items: center">
<div>
<span class="title_color">当前状态:</span>
<span class="content_color">{{item.state_name}}</span>
</div>
<div>
<van-button size="small" @click="openView(item)"
type="info" style="margin-right: 4px">查看
</van-button>
<van-button size="small" type="primary"
v-if="item.state_id === 2020"
@click="openApproval(item)"
style="margin-right: 4px">审核
</van-button>
<!--<van-button size="small" type="danger"
v-if="[2014,2015,2020].includes(item.state_id)"
@click="openRevoke(item.id)"
style="margin-right: 4px">撤回
</van-button>-->
</div>
</div>
</div>
</div>
</van-list>
<van-empty v-else class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<van-popup v-model="infoShow" position="right" :style="{ height: '100%', width: '100%' }" safe-area-inset-bottom>
<van-sticky>
<van-nav-bar @click-left="infoShow=false" left-arrow
title="校工会主席"></van-nav-bar>
</van-sticky>
<div style="height: calc(100% - 44px);overflow-y: auto">
<condolence-info ref="info"></condolence-info>
<div v-if="showApprovalForm">
<div class="process-title">{{ '校工会主席' }}</div>
<van-form>
<van-field label="审核人员" readonly name="username" v-model="formData.username" required></van-field>
<van-field label="审核时间" readonly name="time" v-model="formData.time" required></van-field>
<van-field label="审核意见" name="opinion" v-model="formData.opinion" placeholder="请输入审核意见" required></van-field>
<van-field label="审核签字" name="sign" required style="flex-flow: column">
<template #label>
<div class="mb10">审核签字</div>
</template>
<template #input>
<mobile-sign ref="signature" v-model="formData.sign"></mobile-sign>
</template>
</van-field>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="danger" block @click.submit="doApproval(1)">拒绝</van-button>
<van-button type="danger" block @click.submit="doApproval(2)">退回</van-button>
<van-button type="primary" block @click.submit="doApproval(3)">通过</van-button>
</div>
</div>
</div>
</van-popup>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
unionList: [],
unitList: [],
yearList: [],
auditList: [
{text: '未审核', value: false},
{text: '已审核', value: true},
],
handle: true,
pageForm: {
year: new Date().getFullYear(),
isAudit: false
},
tableLoading: false,
tableFinished: false,
infoShow: false,
showApprovalForm: false,
}
},
components: {
'condolence-info': httpVueLoader('/components/condolence/mobile/common.vue?v=' + new Date().getTime()),
},
methods: {
openView(item) {
this.infoShow = true
this.showApprovalForm = false
this.$nextTick(() => {
this.$refs.info.getInfo(item.id)
})
},
openApproval(item) {
this.formData.id = item.id
this.formData.username = "${@shiro.getPrincipalProperty('username')}"
this.formData.time = moment().format('YYYY-MM-DD')
this.infoShow = true
this.showApprovalForm = true
this.$nextTick(() => {
this.$refs.info.getInfo(item.id)
})
},
openRevoke(id) {
this.$dialog.confirm({
title: '温馨提示',
message: '确定要撤回该申请吗?'
}).then(() => {
$.post('/platform/fw/condolence/vcr/doEdit', { id }).then(resp => {
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
})
})
},
async doApproval(flag) {
if (!this.formData.opinion) {
this.$toast.fail('请填写审核意见')
return
}
if (this.formData.sign === undefined || !this.formData.sign) {
this.$toast.fail('请签名')
return
}
this.formData.pass = flag
const resp = await $.post('/platform/fw/condolence/vcr/doReview', this.formData)
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.infoShow = false
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
},
doSearch() {
this.pageForm.pageNumber = 1
this.tableData = []
this.finished = false
this.pageData()
},
pageData() {
this.tableLoading = true
$.post('/platform/fw/condolence/vcr/pageData', this.pageForm)
.then(res => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
this.pageForm.totalCount = res.data.totalCount
if (this.tableData.length >= this.pageForm.totalCount) {
this.tableFinished = true
} else {
this.pageForm.pageNumber++
}
this.tableLoading = false
} else {
this.$toast(res.msg)
}
})
},
async initUnion(unionId) {
this.unionList = await getUnions(unionId)
this.unionList.forEach(v => {
v.text = v.unionname
v.value = v.id
})
if (this.unionList && this.unionList.length > 0) {
this.unionList.unshift({ text: "全部工会", value: null })
this.$set(this.pageForm, "unionId", this.unionList[0].value)
}
},
async flushUnits(unionId) {
this.unitList = await getUnits(unionId)
this.unitList.forEach(v => {
v.text = v.name
v.value = v.id
})
if (this.unitList && this.unitList.length > 0) {
this.unitList.unshift({ text: "全部单位", value: null })
this.$set(this.pageForm, "unitId", this.unitList[0].value)
}
},
async initData() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
await this.initUnion()
await this.flushUnits()
} else {
await this.initUnion("${@shiro.getPrincipalProperty('unit').getUnionid()}")
await this.flushUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
this.$set(this.pageForm, "year", this.yearList[0].value)
this.doSearch()
},
},
created() {
this.initData()
},
})
</script>
<!--#
}
#-->
@@ -0,0 +1,421 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.title_color {
color: #000000;
}
.content_color {
color: grey;
}
.van-doc-card {
margin: 8px;
padding: 12px 12px 12px 12px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 20px;
font-size: 15px;
position: relative;
}
.van-divider {
margin: 6px 0 6px 0;
}
.van-button--small {
border-radius: 8px;
height: 26px;
font-size: 16px;
}
.van-col {
line-height: 35px;
}
.title_span {
font-size: 19px;
font-weight: bold;
position: absolute;
left: -1px;
top: 11px;
color: #1867b0;
}
.title {
font-size: 18px;
font-weight: bold;
flex: 1;
overflow: hidden;
white-space: nowrap;
color: #1867b0;
}
.cus_overflow {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.van-dropdown-menu__item {
flex: auto;
}
p {
margin: 0 !important;
}
.van-cell__title {
width: 30%;
}
.van-cell__right-icon {
margin-left: 0;
}
.van-sidebar-item {
padding: 8px 12px;
}
.footer {
background-color: white;
width: 100%;
height: 60px;
display: flex;
justify-content: space-evenly;
align-items: center;
left: 0;
}
.footer .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.join {
background-color: #0e78c5;
color: white;
}
.info_tab .van-doc-card > div:first-child {
border: 2px #0e78c5 solid;
width: 26px;
border-radius: 6px;
position: absolute;
top: 0;
left: 20px;
}
.process-title {
font-size: 15px;
color: #1867b0;
font-weight: 600;
margin: 10px 0 10px 0!important;
padding:10px;
position: relative;
line-height: 1.1;
font-family: inherit;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="日常慰问校工会审核" left-arrow placeholder fixed
@click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false">
<van-dropdown-item :options="yearList" @change="doSearch" v-model="pageForm.year"></van-dropdown-item>
<van-dropdown-item :options="unionList" @change="doSearch();flushUnits(pageForm.unionId)" v-model="pageForm.unionId"></van-dropdown-item>
<van-dropdown-item :options="unitList" @change="doSearch" v-model="pageForm.unitId"></van-dropdown-item>
<van-dropdown-item :options="auditList" @change="doSearch" v-model="pageForm.isAudit"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
<div>
<van-list v-if="tableData.length>0" v-model="tableLoading" :finished="tableFinished" finished-text="没有更多了" @load="pageData">
<div v-for="item in tableData" :key="item.id" class="van-doc-card">
<div>
<div style="display: flex; justify-content: space-between">
<div style="width: 74%">
<div class="van-ellipsis title">
<span class="title_span">|</span>
<span>{{item.sqr_username + '(' + item.sqr_loginname + ')'}}</span>
</div>
</div>
</div>
<div style="margin-top: 4px">
<van-row>
<van-col span="24">
<span class="title_color">慰问对象:</span>
<span class="content_color">{{item.be_username}}</span>
</van-col>
<van-col span="24"><span class="title_color">对象工号:</span>
<span class="content_color">
{{item.be_loginname}}
</span>
</van-col>
</van-row>
<van-row>
<van-col span="24"><span class="title_color">所属工会:</span>
<span class="content_color">
{{item.be_unionname}}
</span>
</van-col>
<van-col span="24"><span class="title_color">工作单位:</span>
<span class="content_color">{{item.be_unitname}}</span>
</van-col>
</van-row>
<van-row>
<van-col span="24"><span class="title_color">慰问类型:</span>
<span class="content_color">{{item.type_name}}</span>
</van-col>
</van-row>
</div>
<van-divider></van-divider>
<div style="display: flex; justify-content: space-between; align-items: center">
<div>
<span class="title_color">当前状态:</span>
<span class="content_color">{{item.state_name}}</span>
</div>
<div>
<van-button size="small" @click="openView(item)"
type="info" style="margin-right: 4px">查看
</van-button>
<van-button size="small" type="primary"
v-if="[2012, 2031].includes(item.state_id)"
@click="openApproval(item)"
style="margin-right: 4px">审核
</van-button>
<!--<van-button size="small" type="danger"
v-if="[2014,2015,2020].includes(item.state_id)"
@click="openRevoke(item.id)"
style="margin-right: 4px">撤回
</van-button>-->
</div>
</div>
</div>
</div>
</van-list>
<van-empty v-else class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<van-popup v-model="infoShow" position="right" :style="{ height: '100%', width: '100%' }" safe-area-inset-bottom>
<van-sticky>
<van-nav-bar @click-left="infoShow=false" left-arrow
title="校工会审核"></van-nav-bar>
</van-sticky>
<div style="height: calc(100% - 44px);overflow-y: auto">
<condolence-info ref="info"></condolence-info>
<div v-if="showApprovalForm">
<div class="process-title">{{ '校工会审核' }}</div>
<van-form>
<van-field label="审核人员" readonly name="username" v-model="formData.username" required></van-field>
<van-field label="审核时间" readonly name="time" v-model="formData.time" required></van-field>
<van-field label="审核类型" readonly name="auditType"
@click="showTypePicker = true"
placeholder="请选择审核类型"
v-model="formData.auditTypeName" required></van-field>
<van-popup v-model:show="showTypePicker" position="bottom" round>
<van-picker show-toolbar :columns="typeColumns" @confirm="onTypeConfirm"
@cancel="showTypePicker = false">
</van-picker>
</van-popup>
<van-field label="慰问金额" type="number" name="money" v-model="formData.money" placeholder="请输入慰问金额" required></van-field>
<van-field label="审核意见" name="opinion" v-model="formData.opinion" placeholder="请输入审核意见" required></van-field>
<van-field label="审核签字" name="sign" required style="flex-flow: column">
<template #label>
<div class="mb10">审核签字</div>
</template>
<template #input>
<mobile-sign ref="signature" v-model="formData.sign"></mobile-sign>
</template>
</van-field>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="danger" block @click.submit="doApproval(1)">拒绝</van-button>
<van-button type="danger" block @click.submit="doApproval(2)">退回</van-button>
<van-button type="primary" block @click.submit="doApproval(3)">通过</van-button>
</div>
</div>
</div>
</van-popup>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
unionList: [],
unitList: [],
yearList: [],
auditList: [
{text: '未审核', value: false},
{text: '已审核', value: true},
],
handle: true,
pageForm: {
year: new Date().getFullYear(),
isAudit: false
},
tableLoading: false,
tableFinished: false,
infoShow: false,
showApprovalForm: false,
showTypePicker: false,
typeColumns: [
{value: '1', text: '审核通过'},
{value: '2', text: '审核通过(线下提交资料)'},
{value: '3', text: '审核拒绝'},
{value: '4', text: '退回重填'},
]
}
},
components: {
'condolence-info': httpVueLoader('/components/condolence/mobile/common.vue?v=' + new Date().getTime()),
},
methods: {
onTypeConfirm(val) {
if (val.value === '1') {
this.$set(this.formData, 'opinion', '情况属实,同意申请。')
} else if (val.value === '2') {
this.$set(this.formData, 'opinion', '请将分工会主席和经办人签字后的发票、公务卡支付记录(未使用公务卡,请提交支付记录和公务卡结算审批表)一起交至行政楼A426办公室。')
} else {
this.$set(this.formData, 'opinion', '')
this.$set(this.formData, 'money', 0)
}
this.$set(this.formData, 'auditType', val.value)
this.$set(this.formData, 'auditTypeName', val.text)
this.showTypePicker = false
},
openView(item) {
this.infoShow = true
this.showApprovalForm = false
this.$nextTick(() => {
this.$refs.info.getInfo(item.id)
})
},
openApproval(item) {
this.formData.id = item.id
this.formData.username = "${@shiro.getPrincipalProperty('username')}"
this.formData.time = moment().format('YYYY-MM-DD')
this.infoShow = true
this.showApprovalForm = true
this.$nextTick(() => {
this.$refs.info.getInfo(item.id)
})
},
openRevoke(id) {
this.$dialog.confirm({
title: '温馨提示',
message: '确定要撤回该申请吗?'
}).then(() => {
$.post('/platform/fw/condolence/fr/doEdit', { id }).then(resp => {
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
})
})
},
async doApproval(flag) {
if (!this.formData.opinion) {
this.$toast.fail('请填写审核意见')
return
}
if (this.formData.sign === undefined || !this.formData.sign) {
this.$toast.fail('请签名')
return
}
if (!this.formData.money) {
this.$toast.fail('请填写慰问金额')
return
}
if (!this.formData.auditType) {
this.$toast.fail('请选择审核类型')
return
}
this.formData.pass = flag
const resp = await $.post('/platform/fw/condolence/fr/doReview', this.formData)
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.infoShow = false
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
},
doSearch() {
this.pageForm.pageNumber = 1
this.tableData = []
this.finished = false
this.pageData()
},
pageData() {
this.tableLoading = true
$.post('/platform/fw/condolence/fr/pageData', this.pageForm)
.then(res => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
this.pageForm.totalCount = res.data.totalCount
if (this.tableData.length >= this.pageForm.totalCount) {
this.tableFinished = true
} else {
this.pageForm.pageNumber++
}
this.tableLoading = false
} else {
this.$toast(res.msg)
}
})
},
async initUnion(unionId) {
this.unionList = await getUnions(unionId)
this.unionList.forEach(v => {
v.text = v.unionname
v.value = v.id
})
if (this.unionList && this.unionList.length > 0) {
this.unionList.unshift({ text: "全部工会", value: null })
this.$set(this.pageForm, "unionId", this.unionList[0].value)
}
},
async flushUnits(unionId) {
this.unitList = await getUnits(unionId)
this.unitList.forEach(v => {
v.text = v.name
v.value = v.id
})
if (this.unitList && this.unitList.length > 0) {
this.unitList.unshift({ text: "全部单位", value: null })
this.$set(this.pageForm, "unitId", this.unitList[0].value)
}
},
async initData() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
await this.initUnion()
await this.flushUnits()
} else {
await this.initUnion("${@shiro.getPrincipalProperty('unit').getUnionid()}")
await this.flushUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
this.$set(this.pageForm, "year", this.yearList[0].value)
this.doSearch()
},
},
created() {
this.initData()
},
})
</script>
<!--#
}
#-->
@@ -3,33 +3,37 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<condolence-info ref="info" :id.sync="id" title="分工会审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title mt10">
<div class="van-sidebar-item van-sidebar-item--select">分工会审核</div>
<div class="van-sidebar-item van-sidebar-item--select">
分工会审核
</div>
</div>
<van-form>
<van-field
readonly
left-icon="contact"
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
readonly
left-icon="contact"
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
></van-field>
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o" readonly></van-field>
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o"
readonly></van-field>
<van-field
v-model="formData.opinion"
left-icon="chat-o"
required
rows="1"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
<van-field v-model="formData.opinion"
left-icon="chat-o"
required
rows="1"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
></van-field>
<van-field label="签字" required style="flex-flow: column">
@@ -41,75 +45,86 @@ layout("/mobile/platform.html"){
</template>
</van-field>
<van-row gutter="20" style="margin-top: 30px; padding: 0 25px">
<van-row gutter="20" style="margin-top: 30px;padding: 0 25px">
<van-col span="8">
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝</van-button>
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝
</van-button>
</van-col>
<van-col span="8">
<van-button color="red" block @click="doAudit(2)">返回修改</van-button>
<van-button color="red" block @click="doAudit(2)">返回修改
</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(3)">通 过</van-button>
<van-button :color="themeColor" block @click="doAudit(3)">通 过
</van-button>
</van-col>
</van-row>
</van-form>
</template>
</condolence-info>
</div>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
handle: true,
id: "",
formData: {}
formData: {},
}
},
components: {
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue"),
"condolence-info": httpVueLoader("/components/condolence/mobile/common.vue?v=" + new Date().getTime())
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'condolence-info': httpVueLoader('/components/condolence/mobile/common.vue?v=' + new Date().getTime()),
},
methods: {
async doAudit(pass) {
if (!this.formData.opinion) {
this.$toast.fail("请填写审核意见")
this.$toast.fail('请填写审核意见');
return
}
this.$refs.signature.submitSign()
if (this.$refs.signature.checkNull()) {
vant.Toast("请签名!")
return
}
if (this.$refs.signature.checkNull()) {
vant.Toast('请签名!')
return
}
await this.$refs.signature.updateSign()
this.formData.pass = pass
const resp = await $.post("/platform/fw/condolence/ucr/doReview", this.formData)
if (resp.code === 0) {
this.$toast.success("审核成功")
this.$toast.success('审核成功');
setTimeout(() => {
history.back()
}, 1000)
} else {
this.$toast.fail("审核失败")
this.$toast.fail('审核失败');
}
}
},
},
async created() {
this.id = GetQueryString("id")
this.formData = {
id: this.id,
username: "${@shiro.getPrincipalProperty('username')}",
time: moment().format("YYYY-MM-DD"),
time: moment().format('YYYY-MM-DD'),
opinion: null,
sign: ""
}
}
})
</script>
<!--#
}
#-->
@@ -2,296 +2,364 @@
layout("/mobile/platform.html"){
#-->
<style>
.family-list-field .van-field__value .van-field__control {
flex-direction: column;
align-items: flex-start;
}
.family-list {
display: flex;
flex-direction: column;
width: 100%;
}
.family-list-cell .van-cell__label {
font-size: 14px;
}
.family-dialog .van-dialog__content {
padding: 10px;
}
</style>
<div id="app" v-cloak>
<van-nav-bar title="困难补助申请" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-form ref="addForm" :show-error-message="false" input-align="right" style="margin-bottom: 60px">
<van-cell-group inset class="mt10">
<van-form @submit="onSubmit" :show-error-message="false">
<van-cell inset>
<van-field
readonly
value="${@shiro.getPrincipalProperty('username')} ( ${@shiro.getPrincipalProperty('loginname')} )"
name="sqrname"
label="申请人"
v-model="formData.userName"
label="申请人姓名"
readonly
required
:rules="[{ required: true, message: '请填写申请人姓名' }]"
></van-field>
<van-field name="apply_mode" label="申请模式">
<template #input>
<van-radio-group v-model="formData.apply_mode" direction="horizontal" @change="applyModeChange">
<van-radio :name="1">本人申请</van-radio>
<van-radio :name="2">替他人申请</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field
@input="userRemoteMethod"
name="bbzrusername"
v-model="formData.bbzrusername"
label="受补助人"
placeholder="请输入受补助人姓名"
:rules="[{ required: true, message: '请填写受补助人姓名' }]"
v-model="formData.loginName"
label="申请人工号"
readonly
required
:rules="[{ required: true, message: '请填写申请人工号' }]"
></van-field>
<van-action-sheet
v-model="sheetShow"
:actions="userList"
cancel-text="重新输入姓名或工号查询"
@cancel="userList = []"
:close-on-click-overlay="false"
@select="onUserSelect"
></van-action-sheet>
<van-field label="身份证号" v-model="formData.idcard"></van-field>
<van-field label="性别" v-model="formData.sex"></van-field>
<van-field label="职称" v-model="formData.zc"></van-field>
<van-field label="职务" v-model="formData.zw"></van-field>
<van-field label="单位" v-model="formData.unitname"></van-field>
<van-field label="出生日期" v-model="formData.birthday"></van-field>
<van-field label="手机号码" v-model="formData.lxfs" type="tel"></van-field>
<van-field
name="sq_bzlx_name"
@click="sq_bzlxShow = true"
:value="formData.sq_bzlx_name"
label="补助类型"
placeholder="请选择补助类型"
v-model="formData.sex"
label="性别"
required
is-link
readonly
:rules="[{ required: true, message: '性别' }]"
clickable
@click="showSexPicker = true"
></van-field>
<van-popup v-model:show="sq_bzlxShow" position="bottom" round>
<van-picker show-toolbar :columns="sq_bzlxList" @confirm="onSq_bzlxConfirm" @cancel="sq_bzlxShow = false"></van-picker>
<van-popup v-model="showSexPicker" position="bottom">
<van-picker
show-toolbar
:columns="['男', '女']"
@confirm="onSexConfirm"
@cancel="showSexPicker=false"
></van-picker>
</van-popup>
<van-field
name="sq_knlx_name"
@click="sq_knlxShow = true"
:value="formData.sq_knlx_name"
label="困难类型"
placeholder="请选择困难类型"
v-model="formData.unitName"
label="所在单位"
placeholder="所在单位"
readonly
:rules="[{ required: true, message: '所在单位' }]"
clearable
required
></van-field>
<van-popup v-model:show="sq_knlxShow" position="bottom" round>
<van-picker show-toolbar :columns="sq_knlxist" @confirm="onSq_knlxConfirm" @cancel="sq_knlxShow = false"></van-picker>
</van-popup>
<template v-if="formData.sq_knlx==1">
<van-field label="所在医院" placeholder="请填写所在所在医院" v-model="formData.hospital"></van-field>
<van-field
label="住院时间"
:value="formData.hospitalized_time_name"
placeholder="请填写住院时间"
@click="hospitalized_timeShow = true"
></van-field>
<van-calendar
v-model="hospitalized_timeShow"
:min-date="new Date('1999-01-01')"
:show-confirm="false"
type="range"
@confirm="onHospitalized_timeConfirm"
></van-calendar>
</template>
<van-field
v-model="formData.apply_reason"
name="remark"
label="申请理由"
style="flex-flow: column"
placeholder="请填写申请理由"
input-align="left"
rows="3"
maxlength="200"
type="textarea"
show-word-limit
autosize
>
<template #label>
<div class="mb10">申请事由</div>
</template>
</van-field>
</van-cell-group>
v-model="formData.unionName"
label="所在分工会"
placeholder="所在分工会"
readonly
:rules="[{ required: true, message: '所在分工会' }]"
clearable
required
></van-field>
<van-field
v-model="formData.monthlyIncome"
label="本人月收入"
type="number"
placeholder="请填写本人月收入"
:rules="[{ required: true, message: '请填写本人月收入' }]"
required
></van-field>
<van-field
v-model="formData.birthday"
label="出生年月"
is-link
@click="showDatePicker = true"
required
:rules="[{ required: true, message: '请填写出生年月' }]"
></van-field>
<van-popup v-model="showDatePicker" position="bottom">
<van-datetime-picker
type="date"
:min-date="new Date(1900, 0, 1)"
:max-date="new Date()"
@confirm="onDateConfirm"
@cancel="showDatePicker=false"
></van-datetime-picker>
</van-popup>
<van-field
v-model="formData.mobile"
label="手机号码"
placeholder="请填写手机号码"
maxlength="20"
clearable
required
:rules="[{ required: true, message: '请填写手机号码' }]"
></van-field>
<van-field
v-model="formData.homeAddress"
label="家庭地址"
placeholder="请填写家庭地址"
maxlength="200"
clearable
required
:rules="[{ required: true, message: '请填写家庭地址' }]"
></van-field>
<van-field
v-model="formData.subsidyStandards"
label="款项"
placeholder="请选择款项"
is-link
@click="showSubsidyPicker = true"
required
:rules="[{ required: true, message: '请选择款项' }]"
></van-field>
<van-popup v-model="showSubsidyPicker" position="bottom">
<van-picker
show-toolbar
:columns="subsidyStandards"
@confirm="onSubsidyConfirm"
@cancel="showSubsidyPicker=false"
></van-picker>
</van-popup>
<van-field
v-model="formData.reason"
label="申请原因"
type="textarea"
placeholder="请简述申请原因"
maxlength="500"
required
:rules="[{ required: true, message: '请简述申请原因' }]"
></van-field>
<van-field
v-model="formData.remarks"
label="备注"
type="textarea"
placeholder="请简述备注"
maxlength="500"
></van-field>
<van-cell-group inset class="mt10">
<van-field name="files" label="附&emsp;&emsp;件" required style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">附&emsp;&emsp;件</div>
</template>
<van-field name="familyList" label="家庭成员经济收入" @click="showDialog = true" required is-link
label-width="60%"
clickable
class="family-list-field">
</van-field>
<van-list class="family-list-cell">
<van-cell
v-for="(member, index) in formData.familyList"
:key="index"
:title="member.name"
:label="'年龄: ' + member.age + ' 岁, 关系: ' + member.relation + ', 月收入: ' + member.monthlyIncome + ' 元'"
is-link
@click="editMember(index)"
>
<template #right-icon>
<van-icon name="delete" color="red" @click.stop="removeMember(index)"></van-icon>
</template>
</van-cell>
</van-list>
<van-field name="files" label="附件" style="flex-flow: column" input-align="left">
<template #input>
<vant-file-upload :files.sync="formData.files"></vant-file-upload>
</template>
</van-field>
</van-cell-group>
<van-cell-group inset class="mt10">
<van-field label="签字" required style="flex-flow: column">
<template #label>
<div class="mb10">签&emsp;&emsp;字</div>
</template>
<template #input>
<mobile-sign ref="signature" :my_sign.sync="formData.sqsign"></mobile-sign>
<mobile-sign ref="signature" :my_sign.sync="formData.sign"></mobile-sign>
</template>
</van-field>
</van-cell-group>
<div style="margin: 20px 20px 10px 20px">
<van-button @click="onSubmit()" style="border-radius: 10px" block type="info" :color="themeColor">提 交</van-button>
</div>
<!-- 家庭成员经济收入表格和附件上传等功能需要自定义实现 -->
<van-button round block type="info" native-type="submit">提交</van-button>
</van-cell>
</van-form>
<div>
<van-tabbar v-model="tarBarActive" style="z-index: 99">
<van-tabbar-item icon="home-o" replace url="/mobile/difficulty/apply/index">困难补助申请</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/difficulty/apply/apply_list">困难补助记录</van-tabbar-item>
</van-tabbar>
</div>
<van-dialog v-model="showDialog" class="family-dialog" title="添加家庭成员" show-cancel-button
:before-close="handleBeforeClose">
<van-cell-group>
<van-field
v-model="newMember.name"
label="姓名"
placeholder="请输入姓名"
required
></van-field>
<van-field
v-model="newMember.age"
label="年龄(岁)"
type="number"
placeholder="请输入年龄"
required
></van-field>
<van-field
v-model="newMember.relation"
label="关系"
placeholder="请输入关系"
required
></van-field>
<van-field
v-model="newMember.monthlyIncome"
label="月收入(元)"
type="number"
placeholder="请输入月收入"
required
></van-field>
</van-cell-group>
</van-dialog>
</div>
<script src="/assets/platform/module/difficulty/common.js?v=1.0.0"></script>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
id: GetQueryString("id"),
hospitalized_timeShow: false,
sq_bzlxShow: false,
sq_bzlxList: [],
minDate: {},
sq_knlxShow: false,
sq_knlxist: [],
userList: [],
formData: {
apply_mode: 1
formData: {},
showSexPicker: false,
showDatePicker: false,
showSubsidyPicker: false,
subsidyStandards: [
'本人患重症处于康复期、新患重症以外的疾病且自理医疗费在5万元以上、直系亲属患重症:1000-1500元。',
'突发事件造成家庭损失较重致生活困难:2000-2500元。',
'本人新患重症、长病假人员生活困难、家庭人均收入接近无锡市最低生活保障线:3000元。',
'其他'
],
newMember: {
name: '',
age: '',
relation: '',
monthlyIncome: ''
},
sheetShow: false,
files: []
showDialog: false,
isEditing: false,
editingIndex: null
}
},
components: {
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue")
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
},
methods: {
onHospitalized_timeConfirm(val) {
this.$set(this.formData, "hospitalized_time_name", moment(val[0]).format("YYYY-MM-DD") + "至" + moment(val[1]).format("YYYY-MM-DD"))
this.$set(this.formData, "hospitalized_time", moment(val[0]).format("YYYY-MM-DD") + "至" + moment(val[1]).format("YYYY-MM-DD"))
this.hospitalized_timeShow = false
},
onSq_bzlxConfirm(val) {
this.$set(this.formData, "sq_bzlx_name", val.text)
this.$set(this.formData, "sq_bzlx", val.value)
for (let i in difficulty.getHard(val.value)) {
this.sq_knlxist.push({ value: i, text: difficulty.getHard(val.value)[i] })
onSubmit(values) {
console.log(this.formData)
if(this.formData.familyList.length === 0){
this.$toast("请添加家庭成员信息")
return
}
this.$set(this.formData, "sq_knlx_name", null)
this.$set(this.formData, "sq_knlx", null)
this.sq_bzlxShow = false
},
onSq_knlxConfirm(val) {
this.$set(this.formData, "sq_knlx_name", val.text)
this.$set(this.formData, "sq_knlx", val.value)
this.sq_knlxShow = false
},
applyModeChange(val) {
if (val === 1) {
this.$set(this.formData, "difficultyUser", "${@shiro.getPrincipalProperty('id')}")
this.$set(this.formData, "bbzrusername", "${@shiro.getPrincipalProperty('username')}")
this.$set(this.formData, "sex", "${@shiro.getPrincipalProperty('sex')}")
this.$set(this.formData, "zc", "${@shiro.getPrincipalProperty('jobTitle')}")
this.$set(this.formData, "zw", "${@shiro.getPrincipalProperty('position')}")
this.$set(this.formData, "unitname", "${@shiro.getPrincipalProperty('unit').getName()}")
this.$set(this.formData, "birthday", "${@shiro.getPrincipalProperty('birthday')}")
this.$set(this.formData, "lxfs", "${@shiro.getPrincipalProperty('mobile')}")
this.$set(this.formData, "idcard", "${@shiro.getPrincipalProperty('idcard')}")
} else if (val === 2) {
this.formData = {}
this.$set(this.formData, "apply_mode", 2)
this.$set(this.formData, "bbzrusername", undefined)
}
},
async userRemoteMethod(query) {
if (query) {
const { data } = await $.get("/platform/fw/condolence/apply/queryUser", { query })
data.forEach((v) => {
v.name = v.username
v.subname = v.loginname
return v
})
this.userList = data
this.sheetShow = true
}
},
onUserSelect(val) {
this.$set(this.formData, "difficultyUser", val.id)
this.$set(this.formData, "bbzrusername", val.name)
this.$set(this.formData, "lxfs", val.mobile)
this.$set(this.formData, "sex", val.sex)
this.$set(this.formData, "unitname", val.unitname)
this.$set(this.formData, "zc", val.jobTitle)
this.$set(this.formData, "zw", val.position)
this.$set(this.formData, "birthday", val.birthday)
this.$set(this.formData, "sq_bzlx_name", this.sq_bzlxList[0].text)
this.$set(this.formData, "sq_bzlx", this.sq_bzlxList[0].value)
this.sheetShow = false
},
async onSubmit() {
this.$refs.signature.submitSign()
/* if (!this.formData.sqsign) {
vant.Toast('请签名!')
return
}*/
const formData = clone(this.formData)
formData.files = JSON.stringify(formData.files)
formData.applicantsign = formData.sqsign
formData.bbzrusername = formData.difficultyUser
formData.flag = true
this.$refs["addForm"].validate().then(async () => {
this.$toast.loading("提交中...")
const res = await $.post("/platform/fw/difficulty/apply/doAdd", formData)
$.post('/platform/difficulty/apply/doAdd', {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$toast.success("申请成功")
setTimeout(() => {
location.replace("/mobile/difficulty/apply/apply_list")
}, 1000)
this.$toast.success(res.msg)
sublime.jumpPagePjax('/platform/difficulty/applylist')
} else {
this.$toast.fail("申请失败")
this.$message.error(res.msg)
}
})
},
async getApplyInfo(id) {
const { data, code, msg } = await $.get("/platform/fw/difficulty/applylist/findOne", { id })
if (data) {
data.apply_mode = parseInt(data.apply_mode)
this.formData = data
if (this.formData.files && this.formData.files.length > 0) {
this.formData.files = JSON.parse(data.files)
onSexConfirm(value) {
this.formData.sex = value;
this.showSexPicker = false;
},
onDateConfirm(value) {
this.formData.birthday = value;
this.showDatePicker = false;
},
onSubsidyConfirm(value) {
this.formData.subsidyStandards = value;
this.showSubsidyPicker = false;
},
handleBeforeClose(action, done) {
if (action === 'confirm') {
if (!this.newMember.name || !this.newMember.age || !this.newMember.relation || !this.newMember.monthlyIncome) {
this.$toast('请填写完整信息');
done(false);
} else {
done()
if (this.isEditing) {
this.updateMember();
} else {
this.addMember();
}
done();
}
} else {
done()
}
},
addMember() {
this.formData.familyList.push({...this.newMember});
this.resetNewMember();
},
editMember(index) {
this.newMember = {...this.formData.familyList[index]};
this.editingIndex = index;
this.isEditing = true;
this.showDialog = true;
},
updateMember() {
this.formData.familyList.splice(this.editingIndex, 1, { ...this.newMember });
this.resetNewMember();
},
removeMember(index) {
this.formData.familyList.splice(index, 1);
},
resetNewMember() {
this.newMember = {name: '', age: '', relation: '', monthlyIncome: ''};
this.isEditing = false;
this.editingIndex = null;
}
},
mounted() {
this.$nextTick(() => {
if (this.$refs.signature) {
this.$refs.signature.getMySign()
}
})
},
async created() {
this.applyModeChange(1)
for (let i in difficulty.subsidy) {
this.sq_bzlxList.push({ value: i, text: difficulty.subsidy[i] })
}
this.$set(this.formData, "sq_bzlx_name", this.sq_bzlxList[0].text)
this.$set(this.formData, "sq_bzlx", this.sq_bzlxList[0].value)
for (let i in difficulty.getHard(this.formData.sq_bzlx)) {
this.sq_knlxist.push({ value: i, text: difficulty.getHard(this.formData.sq_bzlx)[i] })
}
this.formData.apply_time = moment().format("YYYY-MM-DD")
if (this.id) {
this.getApplyInfo(this.id)
$.get('/platform/difficulty/apply/findOne', {id: this.id}).then(res => {
if (res.code === 0) {
this.formData = res.data
}
})
} else {
const user = JSON.parse(window.sessionStorage.getItem('user'))
this.$set(this.formData, 'userId', user.id)
this.$set(this.formData, 'userName', user.username)
this.$set(this.formData, 'loginName', user.loginname)
this.$set(this.formData, 'sex', user.sex)
this.$set(this.formData, 'unitId', user.unit.id)
this.$set(this.formData, 'unitName', user.unit.name)
this.$set(this.formData, 'unionId', user.union.id)
this.$set(this.formData, 'unionName', user.union.unionname)
this.$set(this.formData, 'monthlyIncome', null)
this.$set(this.formData, 'birthday', user.birthday)
this.$set(this.formData, 'mobile', user.mobile)
this.$set(this.formData, 'homeAddress', user.homeAddress)
this.$set(this.formData, 'subsidyStandards', null)
this.$set(this.formData, 'reason', null)
this.$set(this.formData, 'remarks', null)
this.$set(this.formData, 'familyList', [])
this.$set(this.formData, 'files', [])
}
}
})
@@ -0,0 +1,494 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.family-list-field .van-field__value .van-field__control {
flex-direction: column;
align-items: flex-start;
}
.family-list {
display: flex;
flex-direction: column;
width: 100%;
}
.family-list-cell .van-cell__label {
font-size: 14px;
}
.family-dialog .van-dialog__content {
padding: 10px;
}
</style>
<div id="app" v-cloak>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder
title="困难补助申请"></van-nav-bar>
<van-form :show-error-message="false" @submit="onSubmit">
<van-cell inset>
<van-field
:rules="[{ required: true, message: '请填写申请人姓名' }]"
label="申请人姓名"
readonly
required1
v-model="formData.proxyUserName"
></van-field>
<van-field
:rules="[{ required: true, message: '请填写申请人工号' }]"
label="申请人工号"
readonly
required
v-model="formData.proxyLoginName"
></van-field>
<van-field
label="申请模式"
readonly
required
>
<template #input>
<van-radio-group :disabled="formData.id" @change="modeChange"
direction="horizontal" v-model="formData.mode">
<van-radio name="1">本人申请</van-radio>
<van-radio name="2">替他人申请</van-radio>
</van-radio-group>
</template>
</van-field>
<!-- <van-field
v-model="formData.userName"
label="姓名"
readonly
required
:rules="[{ required: true, message: '请填写申请人姓名' }]"
></van-field>
<van-field
v-model="formData.loginName"
label="工号"
readonly
required
:rules="[{ required: true, message: '请填写申请人工号' }]"
></van-field>-->
<van-field :readonly="formData.id"
:rules="[{ required: true, message: '请填写受补助人姓名' }]"
label="受补助人" name="userName"
placeholder="请输入受补助人姓名" required v-if="formData.mode==='2'"
v-model="formData.userName">
<template #button>
<van-button :color="themeColor" :disabled="formData.id"
@click="userNameInput(formData.userName)" size="small"
type="primary"
v-if="formData.mode==='2'">查询
</van-button>
</template>
</van-field>
<van-action-sheet :actions="subsidizedList"
:close-on-click-overlay="false"
@cancel="subsidizedList = []"
@select="onUserSelect"
cancel-text="重新输入姓名或工号查询"
v-model="userNameSheetShow">
</van-action-sheet>
<van-field
:rules="[{ required: true, message: '性别' }]"
@click="showSexPicker = true"
clickable
is-link
label="性别"
placeholder="性别"
readonly
required
v-model="formData.sex"
></van-field>
<van-popup position="bottom" v-model="showSexPicker">
<van-picker
:columns="['男', '女']"
@cancel="showSexPicker=false"
@confirm="onSexConfirm"
show-toolbar
></van-picker>
</van-popup>
<van-field
:rules="[{ required: true, message: '所在单位' }]"
clearable
label="所在单位"
placeholder="所在单位"
readonly
required
v-model="formData.unitName"
></van-field>
<van-field
:rules="[{ required: true, message: '所在分工会' }]"
clearable
label="所在分工会"
placeholder="所在分工会"
readonly
required
v-model="formData.unionName"
></van-field>
<van-field
:rules="[{ required: true, message: '请填写本人月收入' }]"
label="本人月收入"
placeholder="请填写本人月收入"
required
type="number"
v-model="formData.monthlyIncome"
></van-field>
<van-field
:rules="[{ required: true, message: '请填写出生年月' }]"
@click="showDatePicker = true"
is-link
label="出生年月"
placeholder="出生年月"
required
v-model="formData.birthday"
></van-field>
<van-popup position="bottom" v-model="showDatePicker">
<van-datetime-picker
:max-date="new Date()"
:min-date="new Date(1900, 0, 1)"
@cancel="showDatePicker=false"
@confirm="onDateConfirm"
type="date"
></van-datetime-picker>
</van-popup>
<van-field
:rules="[{ required: true, message: '请填写手机号码' }]"
clearable
label="手机号码"
maxlength="20"
placeholder="请填写手机号码"
required
v-model="formData.mobile"
></van-field>
<van-field
:rules="[{ required: true, message: '请填写家庭地址' }]"
clearable
label="家庭地址"
maxlength="200"
placeholder="请填写家庭地址"
required
v-model="formData.homeAddress"
></van-field>
<van-field
:rules="[{ required: true, message: '请选择款项' }]"
@click="showSubsidyPicker = true"
is-link
label="款项"
placeholder="请选择款项"
required
v-model="formData.subsidyStandards"
></van-field>
<van-popup position="bottom" v-model="showSubsidyPicker">
<van-picker
:columns="subsidyStandards"
@cancel="showSubsidyPicker=false"
@confirm="onSubsidyConfirm"
show-toolbar
></van-picker>
</van-popup>
<van-field
:rules="[{ required: true, message: '请简述申请原因' }]"
label="申请原因"
maxlength="500"
placeholder="请简述申请原因"
required
type="textarea"
v-model="formData.reason"
></van-field>
<van-field
label="备注"
maxlength="500"
placeholder="请简述备注"
type="textarea"
v-model="formData.remarks"
></van-field>
<van-field @click="showDialog = true" class="family-list-field" clickable is-link
label="家庭成员经济收入"
label-width="60%"
name="familyList"
required>
</van-field>
<van-list class="family-list-cell">
<van-cell
:key="index"
:label="'年龄: ' + member.age + ' 岁, 关系: ' + member.relation + ', 月收入: ' + member.monthlyIncome + ' 元'"
:title="member.name"
@click="editMember(index)"
is-link
v-for="(member, index) in formData.familyList"
>
<template #right-icon>
<van-icon @click.stop="removeMember(index)" color="red"
name="delete"></van-icon>
</template>
</van-cell>
</van-list>
<van-field input-align="left" label="附件" name="files" style="flex-flow: column">
<template #input>
<vant-file-upload :files.sync="formData.files"></vant-file-upload>
</template>
</van-field>
<van-field label="签字" required style="flex-flow: column">
<template #input>
<mobile-sign :is_value_base64="false" ref="signature"
v-model="formData.signature"></mobile-sign>
</template>
</van-field>
<!-- 家庭成员经济收入表格和附件上传等功能需要自定义实现 -->
<van-button block native-type="submit" round type="info">提交</van-button>
</van-cell>
</van-form>
<van-dialog :before-close="handleBeforeClose" class="family-dialog" show-cancel-button
title="添加家庭成员"
v-model="showDialog">
<van-cell-group>
<van-field
label="姓名"
placeholder="请输入姓名"
required
v-model="newMember.name"
></van-field>
<van-field
label="年龄(岁)"
placeholder="请输入年龄"
required
type="number"
v-model="newMember.age"
></van-field>
<van-field
label="关系"
placeholder="请输入关系"
required
v-model="newMember.relation"
></van-field>
<van-field
label="月收入(元)"
placeholder="请输入月收入"
required
type="number"
v-model="newMember.monthlyIncome"
></van-field>
</van-cell-group>
</van-dialog>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
id: GetQueryString("id"),
formData: {},
showSexPicker: false,
showDatePicker: false,
showSubsidyPicker: false,
subsidyStandards: [
'本人患重症处于康复期、新患重症以外的疾病且自理医疗费在5万元以上、直系亲属患重症:1000-1500元。',
'突发事件造成家庭损失较重致生活困难:2000-2500元。',
'本人新患重症、长病假人员生活困难、家庭人均收入接近无锡市最低生活保障线:3000元。'
],
newMember: {
name: '',
age: '',
relation: '',
monthlyIncome: ''
},
showDialog: false,
isEditing: false,
editingIndex: null,
subsidizedList: [],
userNameSheetShow: false,
}
},
components: {
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
},
methods: {
userNameInput(val) {
$.post('/platform/difficulty/apply/querySqr', {key: val}).then(res => {
res.data.forEach(v => {
v.name = v.username
v.subname = v.loginname
return v
})
this.subsidizedList = res.data;
this.userNameSheetShow = true
});
},
onUserSelect(val) {
const user = this.subsidizedList.find(item => item.id === val.id)
if (user) {
this.$set(this.formData, 'userId', user.id)
this.$set(this.formData, 'userName', user.username)
this.$set(this.formData, 'loginName', user.loginname)
this.$set(this.formData, 'sex', user.sex)
this.$set(this.formData, 'unitId', user.unitid)
this.$set(this.formData, 'unitName', user.unitname)
this.$set(this.formData, 'unionId', user.unionid)
this.$set(this.formData, 'unionName', user.unionname)
this.$set(this.formData, 'birthday', user.birthday)
this.$set(this.formData, 'mobile', user.mobile)
} else {
this.$set(this.formData, 'userId', null)
this.$set(this.formData, 'userName', null)
this.$set(this.formData, 'loginName', null)
this.$set(this.formData, 'sex', null)
this.$set(this.formData, 'unitId', null)
this.$set(this.formData, 'unitName', null)
this.$set(this.formData, 'unionId', null)
this.$set(this.formData, 'unionName', null)
this.$set(this.formData, 'birthday', null)
this.$set(this.formData, 'mobile', null)
}
this.userNameSheetShow = false
},
modeChange(val) {
if (this.formData.id) {
return
}
const user = JSON.parse(window.sessionStorage.getItem('user'))
if (val === "1") {
this.$set(this.formData, 'userId', user.id)
this.$set(this.formData, 'userName', user.username)
this.$set(this.formData, 'loginName', user.loginname)
this.$set(this.formData, 'proxyUserId', user.id)
this.$set(this.formData, 'proxyUserName', user.username)
this.$set(this.formData, 'proxyLoginName', user.loginname)
this.$set(this.formData, 'mode', "1")
this.$set(this.formData, 'sex', user.sex)
this.$set(this.formData, 'unitId', user.unit.id)
this.$set(this.formData, 'unitName', user.unit.name)
this.$set(this.formData, 'unionId', user.union.id)
this.$set(this.formData, 'unionName', user.union.unionname)
this.$set(this.formData, 'monthlyIncome', null)
this.$set(this.formData, 'birthday', user.birthday)
this.$set(this.formData, 'mobile', user.mobile)
this.$set(this.formData, 'homeAddress', user.homeAddress)
this.$set(this.formData, 'subsidyStandards', null)
this.$set(this.formData, 'reason', null)
this.$set(this.formData, 'remarks', null)
this.$set(this.formData, 'familyList', [])
this.$set(this.formData, 'files', [])
} else {
this.formData = {}
this.$set(this.formData, 'proxyUserId', user.id)
this.$set(this.formData, 'proxyUserName', user.username)
this.$set(this.formData, 'proxyLoginName', user.loginname)
this.$set(this.formData, 'mode', "2")
this.$set(this.formData, 'familyList', [])
this.$set(this.formData, 'files', [])
}
},
onSubmit(values) {
if (this.formData.familyList.length === 0) {
this.$toast("请添加家庭成员信息")
return
}
if (!this.formData.signature) {
this.$toast("请签字!")
return
}
let urlValue = 'doAdd'
if (this.id) {
urlValue = 'doEdit'
}
$.post('/platform/difficulty/apply/' + urlValue, {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$toast.success(res.msg)
pjaxReplace('/platform/difficulty/applylist/h5')
} else {
this.$message.error(res.msg)
}
})
},
onSexConfirm(value) {
this.formData.sex = value;
this.showSexPicker = false;
},
onDateConfirm(value) {
this.formData.birthday = value;
this.showDatePicker = false;
},
onSubsidyConfirm(value) {
this.formData.subsidyStandards = value;
this.showSubsidyPicker = false;
},
handleBeforeClose(action, done) {
if (action === 'confirm') {
if (!this.newMember.name || !this.newMember.age || !this.newMember.relation || !this.newMember.monthlyIncome) {
this.$toast('请填写完整信息');
done(false);
} else {
done()
if (this.isEditing) {
this.updateMember();
} else {
this.addMember();
}
done();
}
} else {
done()
}
},
addMember() {
this.formData.familyList.push({...this.newMember});
this.resetNewMember();
},
editMember(index) {
this.newMember = {...this.formData.familyList[index]};
this.editingIndex = index;
this.isEditing = true;
this.showDialog = true;
},
updateMember() {
this.formData.familyList.splice(this.editingIndex, 1, {...this.newMember});
this.resetNewMember();
},
removeMember(index) {
this.formData.familyList.splice(index, 1);
},
resetNewMember() {
this.newMember = {name: '', age: '', relation: '', monthlyIncome: ''};
this.isEditing = false;
this.editingIndex = null;
}
},
async created() {
if (this.id) {
$.get('/platform/difficulty/apply/findOne', {id: this.id}).then(res => {
if (res.code === 0) {
res.data.birthday = moment(res.data.birthday).format('YYYY-MM-DD')
this.formData = res.data
}
})
} else {
this.modeChange("1")
}
}
})
</script>
<!--#
}
#-->
@@ -1,10 +1,12 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style></style>
<style>
</style>
<div id="app" v-cloak>
<van-nav-bar title="困难帮扶申请信息" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="困难帮扶申请信息" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<div>
<difficulty-info :id.sync="id"></difficulty-info>
@@ -13,7 +15,7 @@ layout("/mobile/platform.html"){
<script src="/assets/platform/module/difficulty/common.js?v=1.0.0"></script>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
@@ -22,15 +24,15 @@ layout("/mobile/platform.html"){
}
},
components: {
"difficulty-info": httpVueLoader("/components/mobile/difficulty/info.vue?v=" + new Date().getTime())
'difficulty-info': httpVueLoader('/components/mobile/difficulty/info.vue?v=' + new Date().getTime()),
},
methods: {},
async created() {
this.id = GetQueryString("id")
this.state_id = GetQueryString("state_id")
this.id = GetQueryString('id')
this.state_id = GetQueryString('state_id')
}
})
</script>
<!--#
}
#-->
#-->
@@ -3,10 +3,10 @@ layout("/mobile/platform.html"){
#-->
<style>
.apply_btn {
animation: come 0.5s;
animation: come .5s;
position: fixed;
top: 20%;
right: 0;
right: 0
}
@keyframes come {
@@ -17,11 +17,12 @@ layout("/mobile/platform.html"){
right: 0px;
}
}
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="困难帮扶申请列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="困难帮扶申请列表" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
@@ -29,11 +30,14 @@ layout("/mobile/platform.html"){
</van-dropdown-menu>
</div>
<div style="margin: 60px auto 0 auto">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="pageData">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
@load="pageData">
<div v-for="o in tableData" class="list-card" @click="openInfo(o.id,o.zt)">
<van-cell-group inset>
<van-cell :border="false" title="受补助人">
<span class="van-ellipsis" style="font-size: 16px" :style="{color:themeColor}">{{o.sbzrname}}({{o.sbzrloginname}})</span>
<span class="van-ellipsis" style="font-size: 16px;" :style="{color:themeColor}">
{{o.sbzrname}}({{o.sbzrloginname}})
</span>
</van-cell>
<van-cell :border="false" title="申请时间">{{o.sqsj}}</van-cell>
<van-cell :border="false" title="所属单位">{{o.unitname}}</van-cell>
@@ -46,30 +50,34 @@ layout("/mobile/platform.html"){
</van-list>
</div>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg"
description="暂无数据">
</van-empty>
</div>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
visible: true,
typeOption: [{ value: null, text: "全部" }],
typeOption: [
{value: null, text: '全部'}
],
yearOption: [],
pageForm: {
year: "",
type: ""
year: '',
type: ''
}
}
},
components: {
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue")
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
},
methods: {
openInfo(id, state) {
window.location.href = "/mobile/difficulty/apply/apply_info?id=" + id
window.location.href = '/mobile/difficulty/apply/apply_info?id=' + id
/* if ([95,96, 100].includes(state)) {
window.location.href = '/mobile/difficulty/apply/index?id=' + id
}else{
@@ -84,18 +92,19 @@ layout("/mobile/platform.html"){
listenTouch() {
this.$nextTick(() => {
const app = document.querySelector("#app")
app.addEventListener("touchstart", () => {
app.addEventListener('touchstart', () => {
this.visible = false
})
app.addEventListener("touchend", () => {
app.addEventListener('touchend', () => {
this.visible = true
})
})
},
pageData() {
this.mLoading = true
setTimeout(async () => {
$.get("/platform/fw/difficulty/applylist/pageData", this.pageForm, (res) => {
$.get('/platform/fw/difficulty/applylist/pageData', this.pageForm, (res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -107,7 +116,7 @@ layout("/mobile/platform.html"){
})
this.mLoading = false
}, 600)
}
},
},
mounted() {
this.listenTouch()
@@ -115,7 +124,7 @@ layout("/mobile/platform.html"){
async created() {
this.mLoading = true
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearOption.unshift({ value: i, text: i + "年" })
this.yearOption.unshift({value: i, text: i + '年'},)
}
this.$set(this.pageForm, "year", this.yearOption[0].value)
this.mLoading = false
@@ -124,4 +133,4 @@ layout("/mobile/platform.html"){
</script>
<!--#
}
#-->
#-->
@@ -3,24 +3,36 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="困难帮扶审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="困难帮扶审核" left-arrow placeholder fixed
@click-left="history.go(-1)"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item v-model="pageForm.year" @change="yearChange" :options="yearList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.isAudit" @change="yearChange" :options="auditList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unionId" @change="yearChange" :options="mCommon.unionList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unitId" @change="yearChange" :options="mCommon.unitList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.year" @change="yearChange"
:options="yearList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.isAudit" @change="yearChange"
:options="auditList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unionId" @change="yearChange"
:options="mCommon.unionList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unitId" @change="yearChange"
:options="mCommon.unitList"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 70px auto 0">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="pageData">
<van-list v-model="loading" :finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="pageData">
<div v-for="o in tableData" class="list-card" @click="openView(o)">
<van-cell-group inset>
<van-cell :border="false" title="受助人">
<span class="van-ellipsis" style="font-size: 16px" :style="{color:themeColor}">{{o.sbzrname}}({{o.sbzrloginname}})</span>
<span class="van-ellipsis" style="font-size: 16px;"
:style="{color:themeColor}">
{{o.sbzrname}}({{o.sbzrloginname}})
</span>
</van-cell>
<van-cell :border="false" title="申&ensp;请&ensp;人">{{o.sqrname}}</van-cell>
<van-cell :border="false" title="所在工会">{{o.sqrunionname}}</van-cell>
@@ -34,13 +46,18 @@ layout("/mobile/platform.html"){
</div>
</van-list>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image"
image="/none.svg"
description="暂无数据">
</van-empty>
</div>
</div>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
@@ -48,19 +65,19 @@ layout("/mobile/platform.html"){
unionList: [],
yearList: [],
auditList: [
{ text: "未审核", value: false },
{ text: "已审核", value: true }
{text: '未审核', value: false},
{text: '已审核', value: true},
],
handle: true,
pageForm: {
year: new Date().getFullYear(),
isAudit: false
}
isAudit: false,
},
}
},
methods: {
openView(o) {
window.location.href = "/mobile/difficulty/audit/auditHtml?zt=" + o.zt + "&id=" + o.id
window.location.href = '/mobile/difficulty/audit/auditHtml?zt=' + o.zt + '&id=' + o.id
},
yearChange() {
this.pageForm.pageNumber = 1
@@ -72,7 +89,7 @@ layout("/mobile/platform.html"){
pageData() {
this.mLoading = true
setTimeout(async () => {
$.get(loc() + "/pageData", this.pageForm, (res) => {
$.get(loc() + '/pageData', this.pageForm, (res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -86,7 +103,7 @@ layout("/mobile/platform.html"){
}, 600)
},
async flushUnits() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === "true") {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'true') {
await mCommon.getUnitList(this.pageForm.unionId)
} else {
await mCommon.getUnitList("${@shiro.getPrincipalProperty('unit').getUnionid()}")
@@ -95,7 +112,7 @@ layout("/mobile/platform.html"){
async init() {
let nowYear = new Date().getFullYear()
for (let i = nowYear; i >= nowYear - 9; i--) {
this.yearList.push({ text: i, value: i })
this.yearList.push({text: i, value: i})
}
await mCondolence.getType()
await mCommon.getUnionList()
@@ -112,7 +129,7 @@ layout("/mobile/platform.html"){
this.flushUnits()
}
})
window.addEventListener("pageshow", (e) => {
window.addEventListener('pageshow', e => {
if (e.persisted || (window.performance && window.performance.navigation.type === 2)) {
vue.init()
vue.yearChange()
@@ -120,6 +137,7 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
#-->
@@ -0,0 +1,356 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.van-doc-card {
margin: 14px;
padding: 12px 12px 12px 12px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 20px;
font-size: 15px;
position: relative;
}
.van-divider {
margin: 6px 0 6px 0;
}
.van-button--small {
border-radius: 8px;
height: 26px;
font-size: 16px;
}
.van-col {
line-height: 35px;
}
.title_span {
font-size: 16px;
font-weight: bold;
position: absolute;
left: -1px;
top: 11px;
color: #1867b0;
}
.title {
font-size: 18px;
font-weight: bold;
flex: 1;
overflow: hidden;
white-space: nowrap;
color: #1867b0;
}
.cus_overflow {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.van-dropdown-menu__item {
flex: auto;
}
p {
margin: 0 !important;
}
.van-cell__title {
width: 30%;
}
.van-cell__right-icon {
margin-left: 0;
}
.van-sidebar-item {
padding: 8px 12px;
}
.footer {
background-color: white;
width: 100%;
height: 60px;
display: flex;
justify-content: space-evenly;
align-items: center;
left: 0;
}
.footer .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.join {
background-color: #0e78c5;
color: white;
}
.info_tab .van-doc-card > div:first-child {
border: 2px #0e78c5 solid;
width: 26px;
border-radius: 6px;
position: absolute;
top: 0;
left: 20px;
}
.process-title {
font-size: 15px;
color: #1867b0;
font-weight: 600;
margin: 10px 0 10px 0!important;
padding:10px;
position: relative;
line-height: 1.1;
font-family: inherit;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="困难帮扶分工会审核" left-arrow placeholder fixed
@click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-search
v-model="pageForm.searchKeyword"
placeholder="请输入工号或者姓名进行查询"
:show-action="false"
:reverse-color="false"
input-align="left"
@search="doSearch"
></van-search>
<van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false">
<van-dropdown-item :options="yearList" @change="doSearch" v-model="pageForm.year"></van-dropdown-item>
<van-dropdown-item :options="unitList" @change="doSearch" v-model="pageForm.unitId"></van-dropdown-item>
<van-dropdown-item :options="auditList" @change="doSearch" v-model="pageForm.isAudit"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
<div>
<van-list v-if="tableData.length>0" v-model="tableLoading" :finished="tableFinished" finished-text="没有更多了" @load="pageData">
<div v-for="item in tableData" :key="item.id" class="van-doc-card">
<div>
<div style="display: flex; justify-content: space-between">
<div style="width: 74%">
<div class="van-ellipsis title">
<span class="title_span">|</span>
<span>{{item.userName + '(' + item.loginName + ')'}}</span>
</div>
</div>
</div>
<div style="margin-top: 4px">
<van-row>
<van-col span="24"><span style="color: grey">性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别:</span><span>{{item.sex}}</span></van-col>
<van-col span="24"><span style="color: grey">联系方式:</span>{{item.mobile}}</van-col>
</van-row>
<van-row>
<van-col span="24"><span style="color: grey">所属工会:</span>{{item.unionName}}</van-col>
<van-col span="24"><span style="color: grey">工作单位:</span><span>{{item.unitName}}</span></van-col>
</van-row>
<van-row>
<van-col span="24"><span style="color: grey">款&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;项:</span>{{item.subsidyStandards}}</van-col>
</van-row>
</div>
<van-divider></van-divider>
<div style="display: flex; justify-content: space-between; align-items: center">
<div>
<span style="color: grey">当前状态:</span>
<span>{{item.state_name}}</span>
</div>
<div>
<van-button size="small" @click="openView(item)"
type="info" style="margin-right: 4px">查看
</van-button>
<van-button size="small" type="primary"
v-if="item.stateId === 3000"
@click="openApproval(item)"
style="margin-right: 4px">审核
</van-button>
<van-button size="small" type="danger"
v-if="[3010,3020,3030].includes(item.stateId)"
@click="openRevoke(item.id)"
style="margin-right: 4px">撤回
</van-button>
</div>
</div>
</div>
</div>
</van-list>
<van-empty v-else class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<van-popup v-model="infoShow" position="right" :style="{ height: '100%', width: '100%' }" safe-area-inset-bottom>
<van-sticky>
<van-nav-bar @click-left="infoShow=false" left-arrow
title="分工会审核"></van-nav-bar>
</van-sticky>
<div style="height: calc(100% - 44px);overflow-y: auto">
<info ref="infoRef"></info>
<div v-if="showApprovalForm">
<div class="process-title">{{ '分工会审核' }}</div>
<van-form>
<van-field label="审核人员" readonly name="username" v-model="formData.username" required></van-field>
<van-field label="审核时间" readonly name="auditTime" v-model="formData.auditTime" required></van-field>
<van-field label="审核金额" type="number" name="money" v-model="formData.money" placeholder="请输入审核金额" required></van-field>
<van-field label="审核意见" name="auditOpinion" v-model="formData.auditOpinion" placeholder="请输入审核意见" required></van-field>
<van-field label="审核签字" name="auditSign" required style="flex-flow: column">
<template #label>
<div class="mb10">审核签字</div>
</template>
<template #input>
<mobile-sign ref="signature" :is_value_base64="false" v-model="formData.auditSign"></mobile-sign>
</template>
</van-field>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="danger" block @click.submit="doApproval(1)">拒绝</van-button>
<van-button type="danger" block @click.submit="doApproval(2)">返回修改</van-button>
<van-button type="primary" block @click.submit="doApproval(3)">通过</van-button>
</div>
</div>
</div>
</van-popup>
</div>
<script>
<!--#include('../common/info.js'){}#-->
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
unionId: "",
unitId: "",
isAudit: false
},
unitList: [],
yearList: [],
auditList: [
{text: "已审核", value: true},
{text: "未审核", value: false},
],
tableLoading: false,
tableFinished: false,
userId: "",
infoShow: false,
showApprovalForm: false
}
},
components: {
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'info': info
},
methods: {
openView(item) {
this.infoShow = true
this.showApprovalForm = false
this.$nextTick(() => {
this.$refs.infoRef.onOpen(item.id)
})
},
openApproval(item) {
this.formData.id = item.id
this.formData.username = "${@shiro.getPrincipalProperty('username')}"
this.formData.auditTime = moment().format('YYYY-MM-DD')
this.infoShow = true
this.showApprovalForm = true
this.$nextTick(() => {
this.$refs.infoRef.onOpen(item.id)
})
},
openRevoke(id) {
this.$dialog.confirm({
title: '温馨提示',
message: '确定要撤回该申请吗?'
}).then(() => {
$.post('/platform/difficulty/branchUnionAudit/doEdit', { id }).then(resp => {
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
})
})
},
async doApproval(flag) {
if (!this.formData.money || !this.formData.auditOpinion || !this.formData.auditSign) {
this.$toast.fail('存在未填写的必填项,请填写完整后再次提交')
return
}
this.formData.pass = flag
const resp = await $.post('/platform/difficulty/branchUnionAudit/doReview', this.formData)
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.infoShow = false
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
},
doSearch() {
this.pageForm.pageNumber = 1
this.tableData = []
this.finished = false
this.pageData()
},
pageData() {
this.tableLoading = true
$.post('/platform/difficulty/branchUnionAudit/pageData', this.pageForm)
.then(res => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
this.pageForm.totalCount = res.data.totalCount
if (this.tableData.length >= this.pageForm.totalCount) {
this.tableFinished = true
} else {
this.pageForm.pageNumber++
}
this.tableLoading = false
} else {
this.$toast(res.msg)
}
})
},
async flushUnits(unionId) {
this.unitList = await getUnits(unionId)
this.unitList.forEach(v => {
v.text = v.name
v.value = v.id
})
if (this.unitList && this.unitList.length > 0) {
this.unitList.unshift({ text: "全部单位", value: null })
this.$set(this.pageForm, "unitId", this.unitList[0].value)
}
},
async initData() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
await this.flushUnits()
} else {
await this.flushUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
this.$set(this.pageForm, "year", this.yearList[0].value)
this.doSearch()
},
},
created() {
this.initData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,161 @@
const info = {
template: /*language=HTML*/
`
<div>
<van-cell-group>
<van-cell title="姓名">{{ viewData.userName }}</van-cell>
<van-cell title="工号">{{ viewData.loginName }}</van-cell>
<van-cell title="性别">{{ viewData.sex }}</van-cell>
<van-cell title="单位">{{ viewData.unitName }}</van-cell>
<van-cell title="分工会">{{ viewData.unionName }}</van-cell>
<van-cell title="月收入">{{ viewData.monthlyIncome }}</van-cell>
<van-cell title="出生年月">{{ viewData.birthday }}</van-cell>
<van-cell title="手机号码">{{ viewData.mobile }}</van-cell>
<van-cell title="家庭地址">{{ viewData.homeAddress }}</van-cell>
<van-cell title="款项">{{ viewData.subsidyStandards }}</van-cell>
<van-cell title="申请原因">{{ viewData.reason }}</van-cell>
<van-cell title="备注">{{ viewData.remarks }}</van-cell>
<van-cell title="家庭成员收入" class="column-cell">
<table class="family-table">
<thead>
<tr>
<th class="table-header">序号</th>
<th class="table-header">姓名</th>
<th class="table-header">年龄(岁)</th>
<th class="table-header">关系</th>
<th class="table-header">月收入(元)</th>
</tr>
</thead>
<tbody>
<tr class="table-row" v-for="(item, index) in viewData.familyList" :key="index">
<td class="table-cell">{{ index + 1 }}</td>
<td class="table-cell">{{ item.name }}</td>
<td class="table-cell">{{ item.age }}</td>
<td class="table-cell">{{ item.relation }}</td>
<td class="table-cell">{{ item.monthlyIncome }}</td>
</tr>
</tbody>
</table>
</van-cell>
<van-cell title="附件" class="column-cell">
<vant-file-upload :files.sync="viewData.files" view :del="false"
v-if="viewData.files&&viewData.files.length"></vant-file-upload>
<span v-else>暂无</span>
</van-cell>
<van-cell title="签字" class="column-cell">
<van-image width="200" height="100" :src="CREATE_PREVIEW_URL(viewData.signature)"
v-if="viewData.signature"></van-image>
<span v-else>暂无</span>
</van-cell>
</van-cell-group>
<van-cell-group v-if="viewData.branchUnionAudit">
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
分工会审核信息
</div>
</div>
<van-cell title="审核人">{{ viewData.branchUnionAudit.username }}</van-cell>
<van-cell title="审核时间">{{ viewData.branchUnionAudit.auditTime }}</van-cell>
<van-cell title="审核金额" v-if="!viewData.isSelf">{{ viewData.branchUnionAudit.ext?.money }}元</van-cell>
<van-cell title="审核意见">{{ viewData.branchUnionAudit.auditOpinion }}</van-cell>
<van-cell title="签字" class="column-cell">
<van-image width="200" height="100" :src="CREATE_PREVIEW_URL(viewData.branchUnionAudit.auditSign)"
v-if="viewData.branchUnionAudit.auditSign"></van-image>
<span v-else>暂无</span>
</van-cell>
</van-cell-group>
<van-cell-group v-if="viewData.schoolUnionInitialAudit">
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
校工会初审信息
</div>
</div>
<van-cell title="审核人">{{ viewData.schoolUnionInitialAudit.username }}</van-cell>
<van-cell title="审核时间">{{ viewData.schoolUnionInitialAudit.auditTime }}</van-cell>
<van-cell title="审核金额">{{ viewData.schoolUnionInitialAudit.ext?.money }}元</van-cell>
<van-cell title="审核意见" v-if="!viewData.isSelf">{{ viewData.schoolUnionInitialAudit.auditOpinion }}</van-cell>
<van-cell title="签字" class="column-cell">
<van-image width="200" height="100" :src="CREATE_PREVIEW_URL(viewData.schoolUnionInitialAudit.auditSign)"
v-if="viewData.schoolUnionInitialAudit.auditSign"></van-image>
<span v-else>暂无</span>
</van-cell>
</van-cell-group>
<van-cell-group v-if="viewData.schoolUnionFinalAudit">
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
批准部门意见
</div>
</div>
<van-cell title="审核人">{{ viewData.schoolUnionFinalAudit.username }}</van-cell>
<van-cell title="审核时间">{{ viewData.schoolUnionFinalAudit.auditTime }}</van-cell>
<van-cell title="审核金额">{{ viewData.schoolUnionInitialAudit.ext?.money }}元</van-cell>
<van-cell title="审核意见">{{ viewData.schoolUnionFinalAudit.auditOpinion }}</van-cell>
<van-cell title="签字" class="column-cell">
<van-image width="200" height="100" :src="CREATE_PREVIEW_URL(viewData.schoolUnionFinalAudit.auditSign)"
v-if="viewData.schoolUnionFinalAudit.auditSign"></van-image>
<span v-else>暂无</span>
</van-cell>
</van-cell-group>
</div>
`,
data() {
return {
activeName: 'info',
viewData: {}
}
},
methods: {
CREATE_PREVIEW_URL,
onOpen(id, activeName = '1') {
this.activeName = activeName
$.get('/platform/difficulty/common/findOne', {id}).then(res => {
if (res.code === 0) {
try {
res.data.familyList = JSON.parse(res.data.familyList)
res.data.files = JSON.parse(res.data.files)
} catch (e) {
}
this.viewData = res.data
console.log(this.viewData)
}
})
}
},
style: /*language=CSS*/
`
.column-cell {
flex-direction: column;
}
.family-table {
width: 100%;
max-width: 100%;
border-collapse: collapse;
table-layout: auto;
text-align: center;
font-family: 'Arial', sans-serif;
margin: 20px 0;
}
.table-header {
background-color: #1867b0;
color: white;
font-weight: bold;
text-transform: uppercase;
}
.table-row {
background-color: #f9f9f9;
transition: background-color 0.3s;
}
.table-row:hover {
background-color: #f1f1f1;
}
.table-cell {
padding: 10px 20px;
border: 1px solid #ddd;
text-align: center;
}
`
}
@@ -0,0 +1,293 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.van-doc-card {
margin: 14px;
padding: 12px 12px 12px 12px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 20px;
font-size: 15px;
position: relative;
}
.van-divider {
margin: 6px 0 6px 0;
}
.van-button--small {
border-radius: 8px;
height: 26px;
font-size: 16px;
}
.van-col {
line-height: 35px;
}
.title_span {
font-size: 16px;
font-weight: bold;
position: absolute;
left: -1px;
top: 11px;
color: #1867b0;
}
.title {
font-size: 18px;
font-weight: bold;
flex: 1;
overflow: hidden;
white-space: nowrap;
color: #1867b0;
}
.cus_overflow {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.van-dropdown-menu__item {
flex: auto;
}
p {
margin: 0 !important;
}
.van-cell__title {
width: 30%;
}
.van-cell__right-icon {
margin-left: 0;
}
.van-sidebar-item {
padding: 8px 12px;
}
.footer {
background-color: white;
width: 100%;
height: 60px;
display: flex;
justify-content: space-evenly;
align-items: center;
left: 0;
}
.footer .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.join {
background-color: #0e78c5;
color: white;
}
.info_tab .van-doc-card > div:first-child {
border: 2px #0e78c5 solid;
width: 26px;
border-radius: 6px;
position: absolute;
top: 0;
left: 20px;
}
.process-title {
font-size: 15px;
color: #1867b0;
font-weight: 600;
margin: 10px 0 10px 0!important;
padding:10px;
position: relative;
line-height: 1.1;
font-family: inherit;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="困难帮扶申请记录" left-arrow placeholder fixed
@click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-search
v-model="pageForm.searchKeyword"
placeholder="请输入工号或者姓名进行查询"
:show-action="false"
:reverse-color="false"
input-align="left"
@search="doSearch"
></van-search>
<van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false">
<van-dropdown-item :options="yearList" @change="doSearch" v-model="pageForm.year"></van-dropdown-item>
<van-dropdown-item :options="unionList" @change="doSearch();flushUnits(pageForm.unionId)" v-model="pageForm.unionId"></van-dropdown-item>
<van-dropdown-item :options="unitList" @change="doSearch" v-model="pageForm.unitId"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
<div>
<van-list v-if="tableData.length>0" v-model="tableLoading" :finished="tableFinished" finished-text="没有更多了" @load="pageData">
<div v-for="item in tableData" :key="item.id" class="van-doc-card">
<div>
<div style="display: flex; justify-content: space-between">
<div style="width: 74%">
<div class="van-ellipsis title">
<span class="title_span">|</span>
<span>{{item.userName + '(' + item.loginName + ')'}}</span>
</div>
</div>
</div>
<div style="margin-top: 4px">
<van-row>
<van-col span="24"><span style="color: grey">性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别:</span><span>{{item.sex}}</span></van-col>
<van-col span="24"><span style="color: grey">联系方式:</span>{{item.mobile}}</van-col>
</van-row>
<van-row>
<van-col span="24"><span style="color: grey">所属工会:</span>{{item.unionName}}</van-col>
<van-col span="24"><span style="color: grey">工作单位:</span><span>{{item.unitName}}</span></van-col>
</van-row>
<van-row>
<van-col span="24"><span style="color: grey">款&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;项:</span>{{item.subsidyStandards}}</van-col>
</van-row>
</div>
<van-divider></van-divider>
<div style="display: flex; justify-content: space-between; align-items: center">
<div>
<span style="color: grey">当前状态:</span>
<span>{{item.state_name}}</span>
</div>
<div>
<van-button size="small" @click="openView(item)"
type="info" style="margin-right: 4px">查看
</van-button>
<van-button size="small" @click="pjaxReplace('/platform/difficulty/apply/h5?id=' + item.id)"
v-if="[3000,3020,3050,3080].includes(item.stateId)"
type="info" style="margin-right: 4px">编辑</van-button>
</div>
</div>
</div>
</div>
</van-list>
<van-empty v-else class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<van-popup v-model="infoShow" position="right" :style="{ height: '100vh', width: '100%' }" safe-area-inset-bottom>
<van-sticky>
<van-nav-bar @click-left="infoShow=false" left-arrow
title="困难帮扶申请记录详情"></van-nav-bar>
</van-sticky>
<div style="height: calc(100% - 44px);overflow-y: auto">
<info ref="infoRef"></info>
</div>
</van-popup>
</div>
<script>
<!--#include('../common/info.js'){}#-->
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
unionId: "",
unitId: "",
isAudit: false
},
unionList: [],
unitList: [],
yearList: [],
tableLoading: false,
tableFinished: false,
infoShow: false,
}
},
components: {
'info': info
},
methods: {
openView(item) {
this.infoShow = true
this.$nextTick(() => {
this.$refs.infoRef.onOpen(item.id)
})
},
doSearch() {
this.pageForm.pageNumber = 1
this.tableData = []
this.finished = false
this.pageData()
},
pageData() {
this.tableLoading = true
$.post('/platform/difficulty/applylist/pageData', this.pageForm)
.then(res => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
this.pageForm.totalCount = res.data.totalCount
if (this.tableData.length >= this.pageForm.totalCount) {
this.tableFinished = true
} else {
this.pageForm.pageNumber++
}
this.tableLoading = false
} else {
this.$toast(res.msg)
}
})
},
async initUnion(unionId) {
this.unionList = await getUnions(unionId)
this.unionList.forEach(v => {
v.text = v.unionname
v.value = v.id
})
if (this.unionList && this.unionList.length > 0) {
this.unionList.unshift({ text: "全部工会", value: null })
this.$set(this.pageForm, "unionId", this.unionList[0].value)
}
},
async flushUnits(unionId) {
this.unitList = await getUnits(unionId)
this.unitList.forEach(v => {
v.text = v.name
v.value = v.id
})
if (this.unitList && this.unitList.length > 0) {
this.unitList.unshift({ text: "全部单位", value: null })
this.$set(this.pageForm, "unitId", this.unitList[0].value)
}
},
async initData() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
await this.initUnion()
await this.flushUnits()
} else {
await this.initUnion("${@shiro.getPrincipalProperty('unit').getUnionid()}")
await this.flushUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
this.$set(this.pageForm, "year", this.yearList[0].value)
this.doSearch()
},
},
created() {
this.initData()
}
})
</script>
<!--#
}
#-->
@@ -3,20 +3,35 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<difficulty-info ref="info" :id.sync="id" title="校工会主席审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">校工会主席审核</div>
<div class="van-sidebar-item van-sidebar-item--select">
校工会主席审核
</div>
</div>
<van-form>
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" name="username" label="审核人员"></van-field>
<van-field readonly
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
></van-field>
<van-field v-model="formData.auditTime" label="审核时间" readonly></van-field>
<van-field v-model="formData.xghbzje" label="初审金额"></van-field>
<van-field v-model="formData.opinion" rows="1" autosize label="审核意见" type="textarea" placeholder="请输入审核意见"></van-field>
<van-field v-model="formData.opinion"
rows="1"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
></van-field>
<van-field label="签字" required style="flex-flow: column">
<template #label>
@@ -27,42 +42,52 @@ layout("/mobile/platform.html"){
</template>
</van-field>
<van-row gutter="20" style="margin-top: 30px; padding: 0 25px">
<van-row gutter="20" style="margin-top: 30px;padding: 0 25px">
<van-col span="8">
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝</van-button>
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝
</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(3)">返回修改</van-button>
<van-button :color="themeColor" block @click="doAudit(3)">返回修改
</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(2)">通 过</van-button>
<van-button :color="themeColor" block @click="doAudit(2)">通 过
</van-button>
</van-col>
</van-row>
</van-form>
</template>
</difficulty-info>
</div>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
handle: true,
id: "",
formData: {}
formData: {},
}
},
components: {
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue"),
"difficulty-info": httpVueLoader("/components/mobile/difficulty/info.vue?v=" + new Date().getTime())
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'difficulty-info': httpVueLoader('/components/mobile/difficulty/info.vue?v=' + new Date().getTime()),
},
methods: {
async doAudit(pass) {
if (!this.formData.opinion) {
this.$toast.fail("请填写审核意见")
this.$toast.fail('请填写审核意见');
return
}
this.$refs.signature.submitSign()
@@ -71,14 +96,14 @@ layout("/mobile/platform.html"){
this.formData.pass = pass
const resp = await $.post("/platform/fw/difficulty/schoolmanager/doReview", this.formData)
if (resp.code === 0) {
this.$toast.success("审核成功")
this.$toast.success('审核成功');
setTimeout(() => {
history.back()
}, 1000)
} else {
this.$toast.fail("审核失败")
this.$toast.fail('审核失败');
}
}
},
},
async created() {
this.id = GetQueryString("id")
@@ -86,16 +111,19 @@ layout("/mobile/platform.html"){
this.formData = {
id: this.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format("YYYY-MM-DD"),
auditTime: moment().format('YYYY-MM-DD'),
auditOpinion: null,
auditSign: "",
xghbzje: this.$refs.info.viewData.xghbzje
}
}, 300)
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,369 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.van-doc-card {
margin: 14px;
padding: 12px 12px 12px 12px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 20px;
font-size: 15px;
position: relative;
}
.van-divider {
margin: 6px 0 6px 0;
}
.van-button--small {
border-radius: 8px;
height: 26px;
font-size: 16px;
}
.van-col {
line-height: 35px;
}
.title_span {
font-size: 16px;
font-weight: bold;
position: absolute;
left: -1px;
top: 11px;
color: #1867b0;
}
.title {
font-size: 18px;
font-weight: bold;
flex: 1;
overflow: hidden;
white-space: nowrap;
color: #1867b0;
}
.cus_overflow {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.van-dropdown-menu__item {
flex: auto;
}
p {
margin: 0 !important;
}
.van-cell__title {
width: 30%;
}
.van-cell__right-icon {
margin-left: 0;
}
.van-sidebar-item {
padding: 8px 12px;
}
.footer {
background-color: white;
width: 100%;
height: 60px;
display: flex;
justify-content: space-evenly;
align-items: center;
left: 0;
}
.footer .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.join {
background-color: #0e78c5;
color: white;
}
.info_tab .van-doc-card > div:first-child {
border: 2px #0e78c5 solid;
width: 26px;
border-radius: 6px;
position: absolute;
top: 0;
left: 20px;
}
.process-title {
font-size: 15px;
color: #1867b0;
font-weight: 600;
margin: 10px 0 10px 0!important;
padding:10px;
position: relative;
line-height: 1.1;
font-family: inherit;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="困难帮扶委员会审核" left-arrow placeholder fixed
@click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-search
v-model="pageForm.searchKeyword"
placeholder="请输入工号或者姓名进行查询"
:show-action="false"
:reverse-color="false"
input-align="left"
@search="doSearch"
></van-search>
<van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false">
<van-dropdown-item :options="yearList" @change="doSearch" v-model="pageForm.year"></van-dropdown-item>
<van-dropdown-item :options="unionList" @change="doSearch" v-model="pageForm.unionId"></van-dropdown-item>
<van-dropdown-item :options="unitList" @change="doSearch" v-model="pageForm.unitId"></van-dropdown-item>
<van-dropdown-item :options="auditList" @change="doSearch" v-model="pageForm.isAudit"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
<div>
<van-list v-if="tableData.length>0" v-model="tableLoading" :finished="tableFinished" finished-text="没有更多了" @load="pageData">
<div v-for="item in tableData" :key="item.id" class="van-doc-card">
<div>
<div style="display: flex; justify-content: space-between">
<div style="width: 74%">
<div class="van-ellipsis title">
<span class="title_span">|</span>
<span>{{item.userName + '(' + item.loginName + ')'}}</span>
</div>
</div>
</div>
<div style="margin-top: 4px">
<van-row>
<van-col span="24"><span style="color: grey">性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别:</span><span>{{item.sex}}</span></van-col>
<van-col span="24"><span style="color: grey">联系方式:</span>{{item.mobile}}</van-col>
</van-row>
<van-row>
<van-col span="24"><span style="color: grey">所属工会:</span>{{item.unionName}}</van-col>
<van-col span="24"><span style="color: grey">工作单位:</span><span>{{item.unitName}}</span></van-col>
</van-row>
<van-row>
<van-col span="24"><span style="color: grey">款&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;项:</span>{{item.subsidyStandards}}</van-col>
</van-row>
</div>
<van-divider></van-divider>
<div style="display: flex; justify-content: space-between; align-items: center">
<div>
<span style="color: grey">当前状态:</span>
<span>{{item.state_name}}</span>
</div>
<div>
<van-button size="small" @click="openView(item)"
type="info" style="margin-right: 4px">查看
</van-button>
<van-button size="small" type="primary"
v-if="item.stateId === 3060"
@click="openApproval(item)"
style="margin-right: 4px">审核
</van-button>
<van-button size="small" type="danger"
v-if="[3070,3080,3090].includes(item.stateId)"
@click="openRevoke(item.id)"
style="margin-right: 4px">撤回
</van-button>
</div>
</div>
</div>
</div>
</van-list>
<van-empty v-else class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<van-popup v-model="infoShow" position="right" :style="{ height: '100%', width: '100%' }" safe-area-inset-bottom>
<van-sticky>
<van-nav-bar @click-left="infoShow=false" left-arrow
title="工会常委会审核审核"></van-nav-bar>
</van-sticky>
<info ref="infoRef"></info>
<div v-if="showApprovalForm">
<div class="process-title">{{ '工会常委会审核审核' }}</div>
<van-form>
<van-field label="审核人员" readonly name="username" v-model="formData.username" required></van-field>
<van-field label="审核时间" readonly name="auditTime" v-model="formData.auditTime" required></van-field>
<van-field label="审核金额" type="number" name="money" v-model="formData.money" placeholder="请输入审核金额" required></van-field>
<van-field label="审核意见" name="auditOpinion" v-model="formData.auditOpinion" placeholder="请输入审核意见" required></van-field>
<van-field label="审核签字" name="auditSign" required style="flex-flow: column">
<template #label>
<div class="mb10">审核签字</div>
</template>
<template #input>
<mobile-sign ref="signature" v-model="formData.auditSign"></mobile-sign>
</template>
</van-field>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="danger" block @click.submit="doApproval(1)">拒绝</van-button>
<van-button type="danger" block @click.submit="doApproval(2)">返回修改</van-button>
<van-button type="primary" block @click.submit="doApproval(3)">通过</van-button>
</div>
</div>
</van-popup>
</div>
<script>
<!--#include('../common/info.js'){}#-->
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
unionId: "",
unitId: "",
isAudit: false
},
unionList: [],
unitList: [],
yearList: [],
auditList: [
{text: "已审核", value: true},
{text: "未审核", value: false},
],
tableLoading: false,
tableFinished: false,
userId: "",
infoShow: false,
showApprovalForm: false
}
},
components: {
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'info': info
},
methods: {
openView(item) {
this.infoShow = true
this.showApprovalForm = false
this.$nextTick(() => {
this.$refs.infoRef.onOpen(item.id)
})
},
openApproval(item) {
this.formData.id = item.id
this.formData.username = "${@shiro.getPrincipalProperty('username')}"
this.formData.auditTime = moment().format('YYYY-MM-DD')
this.infoShow = true
this.showApprovalForm = true
this.$nextTick(() => {
this.$refs.infoRef.onOpen(item.id)
})
},
openRevoke(id) {
this.$dialog.confirm({
title: '温馨提示',
message: '确定要撤回该申请吗?'
}).then(() => {
$.post('/platform/difficulty/schoolUnionFinalAudit/doEdit', { id }).then(resp => {
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
})
})
},
async doApproval(flag) {
if (!this.formData.money || !this.formData.auditOpinion || !this.formData.auditSign) {
this.$toast.fail('存在未填写的必填项,请填写完整后再次提交')
return
}
this.formData.pass = flag
const resp = await $.post('/platform/difficulty/schoolUnionFinalAudit/doReview', this.formData)
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.infoShow = false
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
},
doSearch() {
this.pageForm.pageNumber = 1
this.tableData = []
this.finished = false
this.pageData()
},
pageData() {
this.tableLoading = true
$.post('/platform/difficulty/schoolUnionFinalAudit/pageData', this.pageForm)
.then(res => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
this.pageForm.totalCount = res.data.totalCount
if (this.tableData.length >= this.pageForm.totalCount) {
this.tableFinished = true
} else {
this.pageForm.pageNumber++
}
this.tableLoading = false
} else {
this.$toast(res.msg)
}
})
},
async initUnion(unionId) {
this.unionList = await getUnions(unionId)
this.unionList.forEach(v => {
v.text = v.name
v.value = v.id
})
if (this.unionList && this.unionList.length > 0) {
this.unionList.unshift({ text: "全部工会", value: null })
this.$set(this.pageForm, "unionId", this.unionList[0].value)
}
},
async flushUnits(unionId) {
this.unitList = await getUnits(unionId)
this.unitList.forEach(v => {
v.text = v.name
v.value = v.id
})
if (this.unitList && this.unitList.length > 0) {
this.unitList.unshift({ text: "全部单位", value: null })
this.$set(this.pageForm, "unitId", this.unitList[0].value)
}
},
async initData() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
await this.initUnion()
await this.flushUnits()
} else {
await this.initUnion("${@shiro.getPrincipalProperty('unit').getUnionid()}")
await this.flushUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
this.$set(this.pageForm, "year", this.yearList[0].value)
this.doSearch()
},
},
created() {
this.initData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,369 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.van-doc-card {
margin: 14px;
padding: 12px 12px 12px 12px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 20px;
font-size: 15px;
position: relative;
}
.van-divider {
margin: 6px 0 6px 0;
}
.van-button--small {
border-radius: 8px;
height: 26px;
font-size: 16px;
}
.van-col {
line-height: 35px;
}
.title_span {
font-size: 16px;
font-weight: bold;
position: absolute;
left: -1px;
top: 11px;
color: #1867b0;
}
.title {
font-size: 18px;
font-weight: bold;
flex: 1;
overflow: hidden;
white-space: nowrap;
color: #1867b0;
}
.cus_overflow {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.van-dropdown-menu__item {
flex: auto;
}
p {
margin: 0 !important;
}
.van-cell__title {
width: 30%;
}
.van-cell__right-icon {
margin-left: 0;
}
.van-sidebar-item {
padding: 8px 12px;
}
.footer {
background-color: white;
width: 100%;
height: 60px;
display: flex;
justify-content: space-evenly;
align-items: center;
left: 0;
}
.footer .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.join {
background-color: #0e78c5;
color: white;
}
.info_tab .van-doc-card > div:first-child {
border: 2px #0e78c5 solid;
width: 26px;
border-radius: 6px;
position: absolute;
top: 0;
left: 20px;
}
.process-title {
font-size: 15px;
color: #1867b0;
font-weight: 600;
margin: 10px 0 10px 0!important;
padding:10px;
position: relative;
line-height: 1.1;
font-family: inherit;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="困难帮扶校工会初审" left-arrow placeholder fixed
@click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-search
v-model="pageForm.searchKeyword"
placeholder="请输入工号或者姓名进行查询"
:show-action="false"
:reverse-color="false"
input-align="left"
@search="doSearch"
></van-search>
<van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false">
<van-dropdown-item :options="yearList" @change="doSearch" v-model="pageForm.year"></van-dropdown-item>
<van-dropdown-item :options="unionList" @change="doSearch();flushUnits(pageForm.unionId)" v-model="pageForm.unionId"></van-dropdown-item>
<van-dropdown-item :options="unitList" @change="doSearch" v-model="pageForm.unitId"></van-dropdown-item>
<van-dropdown-item :options="auditList" @change="doSearch" v-model="pageForm.isAudit"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
<div>
<van-list v-if="tableData.length>0" v-model="tableLoading" :finished="tableFinished" finished-text="没有更多了" @load="pageData">
<div v-for="item in tableData" :key="item.id" class="van-doc-card">
<div>
<div style="display: flex; justify-content: space-between">
<div style="width: 74%">
<div class="van-ellipsis title">
<span class="title_span">|</span>
<span>{{item.userName + '(' + item.loginName + ')'}}</span>
</div>
</div>
</div>
<div style="margin-top: 4px">
<van-row>
<van-col span="24"><span style="color: grey">性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别:</span><span>{{item.sex}}</span></van-col>
<van-col span="24"><span style="color: grey">联系方式:</span>{{item.mobile}}</van-col>
</van-row>
<van-row>
<van-col span="24"><span style="color: grey">所属工会:</span>{{item.unionName}}</van-col>
<van-col span="24"><span style="color: grey">工作单位:</span><span>{{item.unitName}}</span></van-col>
</van-row>
<van-row>
<van-col span="24"><span style="color: grey">款&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;项:</span>{{item.subsidyStandards}}</van-col>
</van-row>
</div>
<van-divider></van-divider>
<div style="display: flex; justify-content: space-between; align-items: center">
<div>
<span style="color: grey">当前状态:</span>
<span>{{item.state_name}}</span>
</div>
<div>
<van-button size="small" @click="openView(item)"
type="info" style="margin-right: 4px">查看
</van-button>
<van-button size="small" type="primary"
v-if="item.stateId === 3030"
@click="openApproval(item)"
style="margin-right: 4px">审核
</van-button>
<van-button size="small" type="danger"
v-if="[3040,3050,3060].includes(item.stateId)"
@click="openRevoke(item.id)"
style="margin-right: 4px">撤回
</van-button>
</div>
</div>
</div>
</div>
</van-list>
<van-empty v-else class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<van-popup v-model="infoShow" position="right" :style="{ height: '100%', width: '100%' }" safe-area-inset-bottom>
<van-sticky>
<van-nav-bar @click-left="infoShow=false" left-arrow
title="校工会初审"></van-nav-bar>
</van-sticky>
<info ref="infoRef"></info>
<div v-if="showApprovalForm">
<div class="process-title">{{ '校工会初审' }}</div>
<van-form>
<van-field label="审核人员" readonly name="username" v-model="formData.username" required></van-field>
<van-field label="审核时间" readonly name="auditTime" v-model="formData.auditTime" placeholder="请输入审核时间" required></van-field>
<van-field label="审核金额" type="number" name="money" v-model="formData.money" placeholder="请输入审核金额" required></van-field>
<van-field label="审核意见" name="auditOpinion" v-model="formData.auditOpinion" placeholder="请输入审核意见" required></van-field>
<van-field label="审核签字" name="auditSign" required style="flex-flow: column">
<template #label>
<div class="mb10">审核签字</div>
</template>
<template #input>
<mobile-sign ref="signature" v-model="formData.auditSign"></mobile-sign>
</template>
</van-field>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="danger" block @click.submit="doApproval(1)">拒绝</van-button>
<van-button type="danger" block @click.submit="doApproval(2)">返回修改</van-button>
<van-button type="primary" block @click.submit="doApproval(3)">通过</van-button>
</div>
</div>
</van-popup>
</div>
<script>
<!--#include('../common/info.js'){}#-->
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
unionId: "",
unitId: "",
isAudit: false
},
unionList: [],
unitList: [],
yearList: [],
auditList: [
{text: "已审核", value: true},
{text: "未审核", value: false},
],
tableLoading: false,
tableFinished: false,
userId: "",
infoShow: false,
showApprovalForm: false
}
},
components: {
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'info': info
},
methods: {
openView(item) {
this.infoShow = true
this.showApprovalForm = false
this.$nextTick(() => {
this.$refs.infoRef.onOpen(item.id)
})
},
openApproval(item) {
this.formData.id = item.id
this.formData.username = "${@shiro.getPrincipalProperty('username')}"
this.formData.auditTime = moment().format('YYYY-MM-DD')
this.infoShow = true
this.showApprovalForm = true
this.$nextTick(() => {
this.$refs.infoRef.onOpen(item.id)
})
},
openRevoke(id) {
this.$dialog.confirm({
title: '温馨提示',
message: '确定要撤回该申请吗?'
}).then(() => {
$.post('/platform/difficulty/schoolUnionInitialAudit/doEdit', { id }).then(resp => {
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
})
})
},
async doApproval(flag) {
if (!this.formData.money || !this.formData.auditOpinion || !this.formData.auditSign) {
this.$toast.fail('存在未填写的必填项,请填写完整后再次提交')
return
}
this.formData.pass = flag
const resp = await $.post('/platform/difficulty/schoolUnionInitialAudit/doReview', this.formData)
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.infoShow = false
this.doSearch()
} else {
this.$toast.fail(resp.msg)
}
},
doSearch() {
this.pageForm.pageNumber = 1
this.tableData = []
this.finished = false
this.pageData()
},
pageData() {
this.tableLoading = true
$.post('/platform/difficulty/schoolUnionInitialAudit/pageData', this.pageForm)
.then(res => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
this.pageForm.totalCount = res.data.totalCount
if (this.tableData.length >= this.pageForm.totalCount) {
this.tableFinished = true
} else {
this.pageForm.pageNumber++
}
this.tableLoading = false
} else {
this.$toast(res.msg)
}
})
},
async initUnion(unionId) {
this.unionList = await getUnions(unionId)
this.unionList.forEach(v => {
v.text = v.unionname
v.value = v.id
})
if (this.unionList && this.unionList.length > 0) {
this.unionList.unshift({ text: "全部工会", value: null })
this.$set(this.pageForm, "unionId", this.unionList[0].value)
}
},
async flushUnits(unionId) {
this.unitList = await getUnits(unionId)
this.unitList.forEach(v => {
v.text = v.name
v.value = v.id
})
if (this.unitList && this.unitList.length > 0) {
this.unitList.unshift({ text: "全部单位", value: null })
this.$set(this.pageForm, "unitId", this.unitList[0].value)
}
},
async initData() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
await this.initUnion()
await this.flushUnits()
} else {
await this.initUnion("${@shiro.getPrincipalProperty('unit').getUnionid()}")
await this.flushUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
this.$set(this.pageForm, "year", this.yearList[0].value)
this.doSearch()
},
},
created() {
this.initData()
}
})
</script>
<!--#
}
#-->
@@ -3,26 +3,34 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="困难帮扶审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="困难帮扶审核" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<difficulty-info ref="info" :id.sync="id" title="分工会审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">分工会主席审核</div>
<div class="van-sidebar-item van-sidebar-item--select">
分工会主席审核
</div>
</div>
<van-form>
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" name="username" label="审核人员"></van-field>
<van-field
readonly
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
></van-field>
<van-field v-model="formData.auditTime" label="审核时间" readonly></van-field>
<van-field
v-model="formData.auditOpinion"
required
rows="1"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
<van-field v-model="formData.auditOpinion"
required
rows="1"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
></van-field>
<van-field label="签字" required style="flex-flow: column">
@@ -34,71 +42,82 @@ layout("/mobile/platform.html"){
</template>
</van-field>
<van-row gutter="20" style="margin-top: 30px; padding: 0 25px">
<van-row gutter="20" style="margin-top: 30px;padding: 0 25px">
<van-col span="8">
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝</van-button>
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝
</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(2)">返回修改</van-button>
<van-button :color="themeColor" block @click="doAudit(2)">返回修改
</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(3)">通 过</van-button>
<van-button :color="themeColor" block @click="doAudit(3)">通 过
</van-button>
</van-col>
</van-row>
</van-form>
</template>
</difficulty-info>
</div>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
handle: true,
id: "",
formData: {}
formData: {},
}
},
components: {
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue"),
"difficulty-info": httpVueLoader("/components/mobile/difficulty/info.vue?v=" + new Date().getTime())
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'difficulty-info': httpVueLoader('/components/mobile/difficulty/info.vue?v=' + new Date().getTime()),
},
methods: {
async doAudit(pass) {
if (!this.formData.auditOpinion) {
this.$toast.fail("请填写审核意见")
this.$toast.fail('请填写审核意见');
return
}
this.$refs.signature.submitSign()
await this.$refs.signature.updateSign()
this.formData.pass = pass
const resp = await $.post("/platform/fw/difficulty/unionchairman/doReview", this.formData)
if (resp.code === 0) {
this.$toast.success("审核成功")
if(resp.code===0){
this.$toast.success('审核成功');
setTimeout(() => {
location.href = "/mobile/difficulty/audit"
location.href = '/mobile/difficulty/audit'
}, 1000)
} else {
this.$toast.fail("审核失败")
}else{
this.$toast.fail('审核失败');
}
}
},
},
async created() {
this.id = GetQueryString("id")
this.formData = {
id: this.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format("YYYY-MM-DD"),
auditTime: moment().format('YYYY-MM-DD'),
auditOpinion: null,
auditSign: ""
}
}
})
</script>
<!--#
}
#-->
File diff suppressed because it is too large Load Diff
@@ -3,69 +3,66 @@
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">活动时间</div>
<div class="search-item-option">
<el-date-picker
placeholder="选择年"
style="width: 100%"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
placeholder="选择年"
style="width: 100%"
type="year"
v-model="pageForm.year"
value-format="yyyy"
></el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">活动名称</div>
<div class="search-item-option">
<el-input clearable placeholder="请输入活动名称"
v-model="pageForm.name"></el-input>
<el-input clearable placeholder="请输入活动名称" v-model="pageForm.name"></el-input>
</div>
</div>
<div class="search-query">
<el-button @click="pageData" icon="el-icon-search" type="primary">搜索
</el-button>
<el-button @click="pageData" icon="el-icon-search" type="primary">搜索</el-button>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="活动列表">
<table-tool :app="this" label="活动列表"></table-tool>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
class="vi-table" row-key="id" style="width: 100%;margin-bottom: 20px"
v-loading="tableLoading">
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号" type="index"
width="80px"></el-table-column>
<el-table
:data="tableData"
:size="tableSize"
@sort-change="pageOrder"
class="vi-table"
row-key="id"
style="width: 100%; margin-bottom: 20px"
v-loading="tableLoading"
>
<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"
v-for="column in tableColumns">
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='time'">
<span>
{{moment(row.startTime).format('YYYY-MM-DD')}} - {{moment(row.endTime).format('YYYY-MM-DD')}}
</span>
<span>{{moment(row.startTime).format('YYYY-MM-DD')}} - {{moment(row.endTime).format('YYYY-MM-DD')}}</span>
</template>
<template scope="{row}" v-else-if="column.prop=='projectTypeName'">
{{row.projectTypeName}}({{row.projectTypeCode}})
</template>
<template scope="{row}" v-else-if="column.prop=='projectTypeName'">{{row.projectTypeName}}({{row.projectTypeCode}})</template>
<template scope="{row}" v-else-if="column.prop=='tussueName'">
<span v-if="row.type==40002">{{row.unionname?row.unionname:'暂无'}}</span>
@@ -74,65 +71,61 @@
</template>
<template scope="{row}" v-else-if="column.prop=='countUser'">
<el-tag type="success" v-if="row.countUser>0">已报名({{row.countUser}})
</el-tag>
<el-tag type="success" v-if="row.countUser>0">已报名({{row.countUser}})</el-tag>
<el-tag type="danger" v-else>未报名</el-tag>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作"
prop="userOnline" width="200px">
<el-table-column align="center" header-align="center" label="操作" prop="userOnline" width="200px">
<template scope="{row}">
<el-button :loading="row.loading" @click="openView(row)" size="mini"
type="primary">
查看
</el-button>
<el-button :loading="row.loading" @click="openView(row)" size="mini" type="primary">查看</el-button>
<template
v-if="moment(row.applyStartTime).valueOf()<moment().valueOf()&&moment(row.applyEndTime).valueOf()>moment().valueOf()">
<el-button :loading="row.loading" @click="openAudit(row)"
size="mini"
type="primary" v-if="row.signUpMethod === 2">
v-if="moment(row.applyStartTime).valueOf()<moment().valueOf()&&moment(row.applyEndTime).valueOf()>moment().valueOf()"
>
<el-button :loading="row.loading" @click="openAudit(row)" size="mini" type="primary" v-if="row.signUpMethod === 2">
报名
</el-button>
<el-button :loading="row.loading" @click="doAdd(row)" size="mini"
type="primary"
v-if="row.signUpMethod === 1&&row.countUser===0">
<el-button :loading="row.loading" @click="openAudit(row)" size="mini" type="primary" v-if="row.signUpMethod === 3">
报名
</el-button>
<el-button :loading="row.loading" @click="doDelete(row)" size="mini"
type="danger"
v-if="row.countUser>0&&row.signUpMethod === 1">
<el-button
:loading="row.loading"
@click="doAdd(row)"
size="mini"
type="primary"
v-if="row.signUpMethod === 1&&row.countUser===0"
>
报名
</el-button>
<el-button
:loading="row.loading"
@click="doDelete(row)"
size="mini"
type="danger"
v-if="row.countUser>0&&row.signUpMethod === 1"
>
取消报名
</el-button>
</template>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #edit>
<el-card shadow="never">
<el-transfer
:data="leftData"
:filter-method="filterMethod"
:props="{key: 'id',label: 'name'}"
:titles="['可报人员名单', '当前选择']"
filterable
ref="transfer"
v-loading="tableLoading"
v-model="rightData">
:data="leftData"
:filter-method="filterMethod"
:props="{key: 'id',label: 'name'}"
:titles="['可报人员名单', '当前选择']"
filterable
ref="transfer"
v-loading="tableLoading"
v-model="rightData"
>
<template #left-footer>
<div></div>
</template>
@@ -141,208 +134,205 @@
<el-card class="mt10" shadow="never">
<el-table :data="escalationTableData" max-height="500px">
<el-table-column
align="center" header-align="center" label="序号"
type="index"
width="100">
</el-table-column>
<el-table-column align="center" header-align="center" label="序号" type="index" width="100"></el-table-column>
<el-table-column align="center" header-align="center" label="姓名"
prop="username"></el-table-column>
<el-table-column align="center" header-align="center" label="姓名" prop="username"></el-table-column>
<el-table-column align="center" header-align="center" label="教工号"
prop="loginname"></el-table-column>
<el-table-column align="center" header-align="center" label="教工号" prop="loginname"></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="单位" prop="unitname" sortable></el-table-column>
<el-table-column align="center" header-align="center" label="操作"
sortable>
<!--<el-table-column align="center" header-align="center" label="操作" sortable>
<template scope="{$index,row}">
<el-button @click="rightData.splice($index,1)" size="mini"
type="danger">删除
</el-button>
<el-button @click="rightData.splice($index,1)" size="mini" type="danger">删除</el-button>
</template>
</el-table-column>
</el-table-column>-->
</el-table>
</el-card>
<el-row class="mt10 text-right">
<el-button @click="doBatchAdd" class="mt10" type="primary"
v-loading="submitLoading">
提交
</el-button>
<el-button @click="doBatchAdd" class="mt10" type="primary" v-loading="submitLoading">提交</el-button>
</el-row>
</template>
<template #view>
<tissue-info ref="info"></tissue-info>
</template>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [initTableMixins],
data() {
return {
submitLoading: false,
pageForm: {
type: type,
year: new Date().getFullYear() + ''
year: new Date().getFullYear() + ""
},
tableColumns: [
{prop: 'name', label: '活动名称'},
{prop: 'address', label: '活动地点'},
{prop: 'projectTypeName', label: '活动项目类型'},
{prop: 'tussueName', label: '举办单位'},
{prop: 'time', label: '活动日期'},
{prop: 'applyTime', label: '创建时间', sortable: true},
{prop: 'countUser', label: '报名人数', sortable: true}
{ prop: "name", label: "活动名称" },
{ prop: "address", label: "活动地点" },
{ prop: "projectTypeName", label: "活动项目类型" },
{ prop: "tussueName", label: "举办单位" },
{ prop: "time", label: "活动日期" },
{ prop: "applyTime", label: "创建时间", sortable: true },
{ prop: "countUser", label: "报名人数", sortable: true }
],
leftData: [],
rightData: [],
rightData: []
}
},
components: {
'tissue-info': httpVueLoader('/components/activity/school/tissueInfo.vue?v=' + new Date().getTime()),
"tissue-info": httpVueLoader("/components/activity/school/tissueInfo.vue?v=" + new Date().getTime())
},
computed: {
escalationTableData() {
return this.leftData.filter(v => this.rightData.includes(v.id))
return this.leftData.filter((v) => this.rightData.includes(v.id))
}
},
methods: {
openView(row) {
const {id} = row
const { id } = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
},
async doBatchAdd() {
if (this.rightData && this.rightData.length > this.rowData.teamNum && this.rowData.signUpMethod === 3) {
this.$message.error("该模式组队限制人数为" + this.rowData.teamNum + "人!")
return
}
this.submitLoading = true
const {
code,
msg
} = await $.get('/mobile/activity/unionActivity/doSaveUnionRegister', {
const { code, msg } = await $.get("/mobile/activity/unionActivity/doSaveUnionRegister", {
activityId: this.tissueId,
personIds: JSON.stringify(this.rightData)
})
if (code === 0) {
this.notifySuccess(msg)
this.$message.success(msg)
this.doSearch()
this.$refs.guava.index()
} else {
this.notifyError(msg)
this.$message.warning(msg)
}
this.submitLoading = false
},
async doDelete(row) {
const confirm = await this.$confirm('确认要取消报名吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
const confirm = await this.$confirm("确认要取消报名吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
if (confirm === "confirm") {
row.loading = true
const {
code,
msg
} = await $.get('/mobile/activity/unionActivity/doSingleCancelRegister', {
const { code, msg } = await $.get("/mobile/activity/unionActivity/doSingleCancelRegister", {
activityId: row.id
})
if (code === 0) {
this.notifySuccess(msg)
this.$message.success(msg)
this.doSearch()
this.$refs.guava.index()
} else {
this.notifyError(msg)
this.$message.warning(msg)
}
row.loading = false
}
},
async doAdd(row) {
const confirm = await this.$confirm('确认要报名吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
const confirm = await this.$confirm("确认要报名吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
if (confirm === "confirm") {
row.loading = true
const {
code,
msg
} = await $.get('/mobile/activity/unionActivity/doSingleRegister', {
const { code, msg } = await $.get("/mobile/activity/unionActivity/doSingleRegister", {
activityId: row.id
})
if (code === 0) {
this.notifySuccess(msg)
this.$message.success(msg)
this.doSearch()
this.$refs.guava.index()
} else {
this.notifyError(msg)
this.$message.warning(msg)
}
row.loading = false
}
},
async openAudit(row) {
console.log(row)
this.tissueId = row.id
const flag = await getScopeUser(row.groupId)
if (!flag) {
this.$message.warning("您没有报名权限!")
return
}
this.tableLoading = true
this.$refs.guava.edit()
const {data} = await $.get('/platform/activity/applyUser/selfUnionUsers', {
const { data } = await $.get("/platform/activity/applyUser/selfUnionUsers", {
groupId: row.groupId
})
this.leftData = data
const {data: rightData} = await $.get('/platform/activity/applyUser/getReportedUser', {
const { data: rightData } = await $.get("/platform/activity/applyUser/getReportedUser", {
tissueId: row.id
})
this.leftData = data.map(user => {
return this.getTransProp(user)
})
this.rightData = rightData.map(user => {
return this.getTransProp(user)
this.leftData = data.map((user) => {
return this.getTransProp(user, row.signUpMethod)
})
// this.rightData = rightData.map((user) => {
// return this.getTransProp(user)
// })
this.rightData = rightData
//如果是组队报名,默认添加自己
if (rightData && rightData.length === 0 && row.signUpMethod === 3) {
rightData.push("${@shiro.getPrincipalProperty('id')}")
}
this.tableLoading = false
},
getTransProp(user) {
getTransProp(user, signUpMethod) {
return {
id: user.id,
username:user.username,
loginname:user.loginname,
sex:user.sex,
unionname:user.unionname,
unitname:user.unitname,
userState:user.userState,
username: user.username,
loginname: user.loginname,
sex: user.sex,
unionname: user.unionname,
unitname: user.unitname,
userState: user.userState,
name: user.username + "-" + user.loginname + "-" + user.unitname,
//如果是组队报名,并且userId等于当前登入人禁用选项
disabled: signUpMethod === 3 && user.id === "${@shiro.getPrincipalProperty('id')}" ? true : false
}
},
filterMethod(query, item) {
if (!query){
if (!query) {
return -1
}
return item.name.indexOf(query) > -1;
return item.name.indexOf(query) > -1
},
pageData() {
sublime.showLoadingbar();
sublime.showLoadingbar()
this.tableLoading = true
$.post("/platform/activity/applyUser/pageData", this.pageForm, (data) => {
sublime.closeLoadingbar();
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");
$.post(
"/platform/activity/applyUser/pageData",
this.pageForm,
(data) => {
sublime.closeLoadingbar()
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"
)
}
},
async created() {
@@ -354,7 +344,7 @@
<style>
.flexible-gifts {
display: flex;
flex-direction: column
flex-direction: column;
}
.flexible-gifts-item {
@@ -387,7 +377,7 @@
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
border-color: #409eff;
}
.avatar-uploader-icon {
@@ -428,4 +418,3 @@
margin: 0 10px !important;
}
</style>
@@ -1,34 +1,27 @@
<div class="platform" id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">活动时间</div>
<div class="search-item-option">
<el-date-picker
@change="getActivityByYearOrType"
placeholder="选择年"
style="width: 100%"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
@change="getActivityByYearOrType"
placeholder="选择年"
style="width: 100%"
type="year"
v-model="pageForm.year"
value-format="yyyy"
></el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">活动名称</div>
<div class="search-item-option">
<el-select filterable placeholder="请选择活动" style="width: 100%"
v-model="pageForm.activityId">
<el-option
:key="item.id"
:label="item.name"
:value="item.id"
v-for="item in activityList">
</el-option>
<el-select filterable placeholder="请选择活动" style="width: 100%" v-model="pageForm.activityId">
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in activityList"></el-option>
</el-select>
</div>
</div>
@@ -36,15 +29,8 @@
<div class="search-item" v-if="type==40002||type==40001">
<div class="search-item-label">工会名称</div>
<div class="search-item-option">
<el-select clearable filterable placeholder="请选择工会"
style="width: 100%"
v-model="pageForm.unionId">
<el-option
:key="item.id"
:label="item.unionname"
:value="item.id"
v-for="item in unionList">
</el-option>
<el-select clearable filterable placeholder="请选择工会" style="width: 100%" 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>
@@ -52,99 +38,95 @@
<div class="search-item">
<div class="search-item-label">姓名/工号</div>
<div class="search-item-option">
<el-input @keyup.enter.native="doSearch" clearable
placeholder="请输入姓名/工号"
v-model="pageForm.searchKeyword">
<el-select placeholder="姓名/工号" slot="prepend"
style="width: 80px;"
v-model="pageForm.searchName">
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入姓名/工号" v-model="pageForm.searchKeyword">
<el-select placeholder="姓名/工号" slot="prepend" style="width: 80px" v-model="pageForm.searchName">
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工号" value="u.loginanme"></el-option>
<el-option label="工号" value="u.loginname"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-query">
<el-button @click="pageData" icon="el-icon-search" type="primary">搜索
</el-button>
<el-button @click="pageData" icon="el-icon-search" type="primary">搜索</el-button>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="人员列表">
<template #func>
<el-button @click="doExport" icon="el-icon-s-promotion" type="primary">导出
</el-button>
<el-button @click="doExport" icon="el-icon-s-promotion" type="primary">导出</el-button>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
class="vi-table" row-key="id" style="width: 100%;margin-bottom: 20px"
v-loading="tableLoading">
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号" type="index"
width="80px"></el-table-column>
<el-table
:data="tableData"
:size="tableSize"
@sort-change="pageOrder"
class="vi-table"
row-key="id"
style="width: 100%; margin-bottom: 20px"
v-loading="tableLoading"
>
<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"
align="center"
header-align="center"
sortable
v-for="column in tableColumns">
</el-table-column>
<el-table-column align="center" header-align="center" label="操作"
v-if="${@shiro.hasRole('sysadmin')}"
width="100">
:label="column.label"
:prop="column.prop"
align="center"
header-align="center"
sortable
v-for="column in tableColumns"
></el-table-column>
<el-table-column align="center" header-align="center" label="操作" v-if="${@shiro.hasRole('sysadmin')}" width="100">
<template scope="{row}">
<el-button @click="doDelete(row)" size="mini" type="danger">
删除
</el-button>
<el-button @click="doDelete(row)" size="mini" type="danger">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [initTableMixins],
data() {
return {
unionList: {},
activityList: {},
pageForm: {
unionId: '',
unionId: "",
searchName: "u.username",
type: type,
year: new Date().getFullYear() + ''
year: new Date().getFullYear() + ""
},
tableColumns: [
{prop: 'username', label: '姓名'},
{prop: 'loginname', label: '工号'},
{prop: 'sex', label: '性别'},
{prop: 'mobile', label: '联系方式'},
{prop: 'unitname', label: '所属单位'},
{prop: 'unionname', label: '所属工会'},
{prop: 'applyDateTime', label: '报名时间'}
],
{ prop: "username", label: "姓名" },
{ prop: "loginname", label: "工号" },
{ prop: "sex", label: "性别" },
{ prop: "mobile", label: "联系方式" },
{ prop: "unitname", label: "所属单位" },
{ prop: "unionname", label: "所属工会" },
{ prop: "applyDateTime", label: "报名时间" }
]
}
},
methods: {
doDelete(row) {
this.$confirm('您确认要取消报名吗?', '提示', {type: 'warning'}).then(async () => {
const resp = await $.post('/mobile/activity/unionActivity/doSingleCancelRegister', {
this.$confirm("您确认要取消报名吗?", "提示", { type: "warning" }).then(async () => {
const resp = await $.post("/mobile/activity/unionActivity/doSingleCancelRegister", {
activityId: this.pageForm.activityId,
applyUserId: row.applyUserId,
id: row.atpId
@@ -159,28 +141,32 @@
})
},
async doExport() {
const {activityId, unionId} = this.pageForm
window.open("/platform/activity/info/mange/doExportUser?id=" + activityId +
"&unionId=" + unionId)
const { activityId, unionId } = this.pageForm
window.open("/platform/activity/info/mange/doExportUser?id=" + activityId + "&unionId=" + unionId)
},
pageData() {
sublime.showLoadingbar();
sublime.showLoadingbar()
this.tableLoading = true
$.post("/platform/activity/user/statistics/pageData", this.pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.notifyError(data.msg)
}
}, "json");
$.post(
"/platform/activity/user/statistics/pageData",
this.pageForm,
(data) => {
sublime.closeLoadingbar()
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list
this.pageForm.totalCount = data.data.totalCount
} else {
this.notifyError(data.msg)
}
},
"json"
)
},
async getActivityByYearOrType() {
const resp = await $.get("/platform/activity/user/statistics/getActivityByYearOrType", {
type: this.pageForm.type,
year: this.pageForm.year,
year: this.pageForm.year
})
if (resp.code === 0) {
this.activityList = resp.data
@@ -191,12 +177,11 @@
}
this.pageData()
}
},
}
},
async created() {
await this.getActivityByYearOrType()
this.unionList = await getUnions(null)
}
})
</script>
@@ -30,18 +30,13 @@ layout("/layouts/platform.html"){
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never"
style="margin-bottom: 5px;padding: 0px 10px 5px;">
<el-card shadow="never" style="margin-bottom: 5px; padding: 0px 10px 5px">
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-title">基础查询:</el-col>
<el-col class="query-row-content">
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 100px;">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword" @keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型" style="width: 100px">
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工号" value="u.loginname"></el-option>
</el-select>
@@ -49,44 +44,40 @@ layout("/layouts/platform.html"){
</div>
<el-row class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId"
style="width: 200px;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 200px" clearable="true" filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-row>
<div class="btn-group tool-button">
<dict-select v-model="pageForm.personType" style="width: 200px"
clearable placeholder="人员类型"
code="UserType"></dict-select>
<dict-select
v-model="pageForm.personType"
style="width: 200px"
clearable
placeholder="人员类型"
code="UserType"
></dict-select>
</div>
<div class="btn-group tool-button">
<dict-select v-model="pageForm.userState" style="width: 200px" clearable
placeholder="在职状态"
code="UserState"></dict-select>
<dict-select
v-model="pageForm.userState"
style="width: 200px"
clearable
placeholder="在职状态"
code="UserState"
></dict-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search"
@click="doSearch"></el-button>
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<div class="pull-right offscreen-right">
<div class="btn-group tool-button">
<el-button @click="clearHistory" slot="reference"
type="primary">
清空历史记录
</el-button>
<el-button :loading="updateBirthdayLoading" @click="updateBirthday"
slot="reference" type="primary">
<el-button @click="clearHistory" slot="reference" type="primary">清空历史记录</el-button>
<el-button :loading="updateBirthdayLoading" @click="updateBirthday" slot="reference" type="primary">
根据身份证号设置出生日期
</el-button>
<el-button slot="reference" type="primary"
@click="checkSource" :loading="updateLoading">
更新
</el-button>
<el-button slot="reference" type="primary" @click="checkSource" :loading="updateLoading">更新</el-button>
</div>
</div>
</el-col>
@@ -97,23 +88,26 @@ layout("/layouts/platform.html"){
<el-col class="query-row-content">
<div class="btn-group tool-button">
<el-date-picker
style="width: 200px"
v-model="pageForm.changeDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="更新日期">
</el-date-picker>
style="width: 200px"
v-model="pageForm.changeDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="更新日期"
></el-date-picker>
</div>
<div class="btn-group tool-button">
<enum-select v-model="pageForm.changeType" value="code"
label="description"
style="width: 200px"
clearable placeholder="异动类型"
enum="UserChangeType"></enum-select>
<enum-select
v-model="pageForm.changeType"
value="code"
label="description"
style="width: 200px"
clearable
placeholder="异动类型"
enum="UserChangeType"
></enum-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search"
@click="doSearch"></el-button>
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
<el-button type="primary" @click="exportChange">导出异动人员</el-button>
</div>
<!--<div class="btn-group tool-button">
@@ -122,67 +116,85 @@ layout("/layouts/platform.html"){
</div>-->
</el-col>
</el-row>
</el-card>
<el-card shadow="never">
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder" :key="tableKey"
v-loading="tableLoading"
lazy
:load="load"
:tree-props="{hasChildren: 'hasHis'}"
border
<el-table
:data="tableData"
style="width: 100%"
row-key="id"
@sort-change="pageOrder"
:key="tableKey"
v-loading="tableLoading"
lazy
:load="load"
:tree-props="{hasChildren: 'hasHis'}"
border
>
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
type="index"
:index="indexMethod"
label="序号"
width="80px"
></el-table-column>
<el-table-column label="工号" prop="loginname" header-align="center"
align="center" show-overflow-tooltip></el-table-column>
<el-table-column label="姓名" prop="username" header-align="center"
align="center" show-overflow-tooltip></el-table-column>
<el-table-column label="性别" prop="sex" header-align="center"
align="center" show-overflow-tooltip></el-table-column>
<el-table-column label="联系电话" prop="mobile" header-align="center"
align="center" show-overflow-tooltip></el-table-column>
<el-table-column label="工号" prop="loginname" header-align="center" align="center" show-overflow-tooltip></el-table-column>
<el-table-column label="姓名" prop="username" header-align="center" align="center" show-overflow-tooltip></el-table-column>
<el-table-column label="性别" prop="sex" header-align="center" align="center" show-overflow-tooltip></el-table-column>
<el-table-column label="联系电话" prop="mobile" header-align="center" align="center" show-overflow-tooltip></el-table-column>
<!-- <el-table-column label="出生日期" prop="birthday" header-align="center"-->
<!-- align="center" show-overflow-tooltip></el-table-column>-->
<!-- <el-table-column label="身份证" prop="idcard" header-align="center"-->
<!-- align="center" show-overflow-tooltip></el-table-column>-->
<el-table-column label="人员类型" prop="personType" header-align="center" sortable
align="center" show-overflow-tooltip></el-table-column>
<el-table-column label="在职状态" prop="userState" header-align="center" sortable
align="center" show-overflow-tooltip></el-table-column>
<el-table-column
label="人员类型"
prop="personType"
header-align="center"
sortable
align="center"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="在职状态"
prop="userState"
header-align="center"
sortable
align="center"
show-overflow-tooltip
></el-table-column>
<el-table-column label="所属单位" prop="unitid" header-align="center"
align="center" show-overflow-tooltip sortable>
<el-table-column label="所属单位" prop="unitid" header-align="center" align="center" show-overflow-tooltip sortable>
<template scope="{row}">
<span v-if="row.unitid"> {{row.unitname}}({{row.unitid}})</span>
<span v-if="row.unitid">{{row.unitname}}({{row.unitid}})</span>
</template>
</el-table-column>
<el-table-column label="异动信息" header-align="center">
<el-table-column label="更新时间" prop="changeTime" min-width="100px"
header-align="center" sortable
align="center" show-overflow-tooltip>
<el-table-column
label="更新时间"
prop="changeTime"
min-width="100px"
header-align="center"
sortable
align="center"
show-overflow-tooltip
>
<!-- <template scope="{row:{changeTime}}">
{{changeTime?changeTime:'暂无'}}
</template>-->
</el-table-column>
<el-table-column label="异动类型" prop="changeType" header-align="center"
align="center" show-overflow-tooltip sortable>
<el-table-column label="异动类型" prop="changeType" header-align="center" align="center" show-overflow-tooltip sortable>
<template scope="{row}">
<span style="color: #0e78c5;cursor: pointer" @click="openUserChangeInfo(row)">
<span style="color: #0e78c5; cursor: pointer" @click="openUserChangeInfo(row)">
{{getChangeTypes(row.changeTypes)}}
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作"
min-width="80px">
<el-table-column prop="userOnline" align="center" header-align="center" label="操作" min-width="80px">
<template scope="scope">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
@@ -190,9 +202,7 @@ layout("/layouts/platform.html"){
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:scope.row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'view',data:scope.row}">查看</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
@@ -200,34 +210,25 @@ layout("/layouts/platform.html"){
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #view>
<el-tabs v-model="active">
<el-tab-pane label="个人信息" name="info">
<member ref="memberInfo" :source="source" :id="userId" view></member>
</el-tab-pane>
</el-tabs>
</template>
</guava>
<el-dialog
title="选择数据源"
:visible.sync="dialogVisible"
width="50%">
<el-dialog title="选择数据源" :visible.sync="dialogVisible" width="50%">
<el-timeline>
<el-timeline-item timestamp="数据源" placement="top">
<el-radio-group class="checkGroup" v-model="sourceTime" style="width: 100%">
<el-row v-for="item in latelyUpdateTimes" style="margin-bottom: 10px">
<el-radio :key="item.pullTime" style="width: 100%"
:label="item.pullTime" border>
时间:{{item.pullTime}}<span
style="float: right;color: #F56C6C">rows: {{item.num}}</span>
<el-radio :key="item.pullTime" style="width: 100%" :label="item.pullTime" border>
时间:{{item.pullTime}}
<span style="float: right; color: #f56c6c">rows: {{item.num}}</span>
</el-radio>
</el-row>
</el-radio-group>
@@ -246,19 +247,25 @@ layout("/layouts/platform.html"){
<el-timeline-item timestamp="选择更新组别" placement="top" v-if="sourceType=='part'">
<el-row class="query-row">
<el-col span="12">
<el-select v-model="partGroupId" clearable filterable
placeholder="请选择更新组别" style="width: 100%">
<el-select v-model="partGroupId" clearable filterable placeholder="请选择更新组别" style="width: 100%">
<el-option
v-for="column in partGroupInfos"
:key="column.groupId"
:label="column.groupName"
:value="column.groupId">
</el-option>
v-for="column in partGroupInfos"
:key="column.groupId"
:label="column.groupName"
:value="column.groupId"
></el-option>
</el-select>
</el-col>
<el-col>
<el-checkbox style="margin-left: 10px;margin-top: 4px" v-model="isInvert" label="是否更新此组别之外人员" border></el-checkbox>
<el-button style="margin-left: 10px;margin-top: 4px" type="primary" @click="partUpdate(sourceType)">设置部分更新人员</el-button>
<el-checkbox
style="margin-left: 10px; margin-top: 4px"
v-model="isInvert"
label="是否更新此组别之外人员"
border
></el-checkbox>
<el-button style="margin-left: 10px; margin-top: 4px" type="primary" @click="partUpdate(sourceType)">
设置部分更新人员
</el-button>
</el-col>
</el-row>
</el-timeline-item>
@@ -266,42 +273,32 @@ layout("/layouts/platform.html"){
<el-timeline-item timestamp="过滤字段" placement="top" v-if="sourceType=='part'">
<el-row class="query-row">
<el-col class="query-title" span="6">过滤字段:</el-col>
<el-col style="justify-content: end;margin-left: 10px">
<el-select v-model="columnNames" clearable filterable
placeholder="请选择字段" style="width: 100%" multiple>
<el-col style="justify-content: end; margin-left: 10px">
<el-select v-model="columnNames" clearable filterable placeholder="请选择字段" style="width: 100%" multiple>
<el-option
v-for="column in columnInfos"
:key="column.COLUMN_NAME"
:label="column.COLUMN_COMMENT"
:value="column.COLUMN_NAME">
</el-option>
v-for="column in columnInfos"
:key="column.COLUMN_NAME"
:label="column.COLUMN_COMMENT"
:value="column.COLUMN_NAME"
></el-option>
</el-select>
</el-col>
<el-col class="query-row">
<span style="color: red;margin-left: 10px">该条件为更新时忽略某字段,如无需忽略请勿填充该条件</span>
<span style="color: red; margin-left: 10px">该条件为更新时忽略某字段,如无需忽略请勿填充该条件</span>
</el-col>
</el-row>
</el-timeline-item>
</el-timeline>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" :loading="updateLoading" @click="doUpdate">确 定</el-button>
</span>
</span>
</el-dialog>
<el-drawer
:wrapperClosable="false"
title="我是标题" size="78%"
:visible.sync="userScopeDialog"
:append-to-body="true"
:with-header="false">
<div style="padding: 0px 16px;" class="clearfix">
<el-button icon="el-icon-back" style="font-size: 16px" type="text"
@click="doBack()">返回
</el-button>
<el-drawer :wrapperClosable="false" title="我是标题" size="78%" :visible.sync="userScopeDialog" :append-to-body="true" :with-header="false">
<div style="padding: 0px 16px" class="clearfix">
<el-button icon="el-icon-back" style="font-size: 16px" type="text" @click="doBack()">返回</el-button>
</div>
<guava>
<el-tabs tab-position="top" v-model="activeName" @tab-click="handleClick">
@@ -316,25 +313,23 @@ layout("/layouts/platform.html"){
</template>
</el-tab-pane>
</el-tabs>
</guava>
</el-drawer>
<user-change-history ref="userChangeHistory"></user-change-history>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [initTableMixins],
data() {
return {
active: 'info',
active: "info",
updateLoading: false,
updateBirthdayLoading: false,
pageForm: {
searchName: "u.username",
searchName: "u.username"
},
userId: "",
@@ -345,36 +340,36 @@ layout("/layouts/platform.html"){
dialogVisible: false,
sourceTime: "",
changeType: {},
source: 'sys_user',
source: "sys_user",
sourceType: null,
activeName: '1',
activeName: "1",
userScopeDialog: false,
columnNames: [],
columnInfos: [],
upDataCount: '0',
isUpSet: '0',
upDataCount: "0",
isUpSet: "0",
partGroupId: '',
partGroupId: "",
partGroupInfos: [],
isInvert:'',
isInvert: ""
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue?v=1.0.0'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=1.0.2'),
'user-upset': httpVueLoader('/components/userpartupdate/UserPartUpdateSet.vue'),
'user-upset-data': httpVueLoader('/components/userpartupdate/UserDataPartUpSet.vue'),
'user-change-history': httpVueLoader('/components/userChangeHistory/UserChangeHistory.vue?v=' + new Date().getTime()),
guava: httpVueLoader("/components/plugins/Guava.vue?v=1.0.0"),
"dict-select": httpVueLoader("/components/plugins/DictSelect.vue?v=1.0.0"),
member: httpVueLoader("/components/member/MemberInfo.vue?v=1.0.3"),
"mem-change-records": httpVueLoader("/components/member/MemChangeRecords.vue?v=1.0.2"),
"user-upset": httpVueLoader("/components/userpartupdate/UserPartUpdateSet.vue"),
"user-upset-data": httpVueLoader("/components/userpartupdate/UserDataPartUpSet.vue"),
"user-change-history": httpVueLoader("/components/userChangeHistory/userChangeHistory.vue?v=" + new Date().getTime())
},
methods: {
async openUserChangeInfo({hisId}) {
async openUserChangeInfo({ hisId }) {
this.$refs.userChangeHistory.openUserChangeInfo(hisId)
},
async getColumnInfo() {
const {data, msg, code} = await $.post('/platform/activity/basic/scope/getUserTableColumnInfo')
const { data, msg, code } = await $.post("/platform/activity/basic/scope/getUserTableColumnInfo")
if (code !== 0) {
this.$notify.warning(msg)
return
@@ -382,12 +377,12 @@ layout("/layouts/platform.html"){
this.columnInfos = data
},
clearHistory() {
this.$confirm('您确定要清空历史记录吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
this.$confirm("您确定要清空历史记录吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(async () => {
const resp = await $.post(loc() + '/clearHistory')
const resp = await $.post(loc() + "/clearHistory")
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.doSearch()
@@ -397,20 +392,20 @@ layout("/layouts/platform.html"){
})
},
async updateBirthday() {
const confirm = await this.$confirm('是否确定根据身份证号更新出生日期?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
const confirm = await this.$confirm("是否确定根据身份证号更新出生日期?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
if (confirm === "confirm") {
this.updateBirthdayLoading = true
const resp = await $.post(loc() + '/updateBirthday')
const resp = await $.post(loc() + "/updateBirthday")
this.updateBirthdayLoading = false
}
},
async load(tree, treeNode, resolve) {
const {loginname} = tree
const resp = await $.get(loc() + "/historyUsers", {loginname})
const { loginname } = tree
const resp = await $.get(loc() + "/historyUsers", { loginname })
if (resp.code === 0) {
resolve(resp.data)
} else {
@@ -420,54 +415,54 @@ layout("/layouts/platform.html"){
checkSource() {
if (!this.latelyUpdateTimes.length) {
this.$notify({
title: '警告',
message: '没有可供更新的数据源',
type: 'warning'
});
title: "警告",
message: "没有可供更新的数据源",
type: "warning"
})
return
}
this.sourceTime = ''
this.sourceTime = ""
this.dialogVisible = true
// this.doUpdate()
},
doUpdate() {
if (!this.sourceTime) {
this.$notify({
title: '警告',
message: '请选择数据源',
type: 'warning'
});
title: "警告",
message: "请选择数据源",
type: "warning"
})
return
}
if (!this.sourceType) {
this.$notify({
title: '警告',
message: '请选择更新范围',
type: 'warning'
});
title: "警告",
message: "请选择更新范围",
type: "warning"
})
return
}
if (this.sourceType == 'part' && !this.partGroupId) {
if (this.sourceType == "part" && !this.partGroupId) {
this.$notify({
title: '警告',
message: '部分更新请选择更新组别',
type: 'warning'
});
return;
title: "警告",
message: "部分更新请选择更新组别",
type: "warning"
})
return
}
this.$confirm('是否确定更新用户数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
this.$confirm("是否确定更新用户数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(async () => {
this.updateLoading = true
const resp = await $.post(loc() + '/update', {
const resp = await $.post(loc() + "/update", {
sourceTime: this.sourceTime,
sourceType: this.sourceType,
columnNames: JSON.stringify(this.columnNames),
isUpSet: this.isUpSet,
partGroupId: this.partGroupId,
isInvert: this.isInvert,
isInvert: this.isInvert
})
this.updateLoading = false
if (resp.code === 0) {
@@ -480,20 +475,20 @@ layout("/layouts/platform.html"){
}
})
},
reset(){
this.isInvert = ''
this.sourceType = ''
this.partGroupId = ''
reset() {
this.isInvert = ""
this.sourceType = ""
this.partGroupId = ""
},
openView({id, flag}) {
this.active = 'info'
openView({ id, flag }) {
this.active = "info"
this.userId = id
this.source = flag ? 'sys_user' : 'user_history'
this.source = flag ? "sys_user" : "user_history"
this.$refs.guava.view()
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
const { type, data } = command
if (type == "view") {
this.openView(data)
}
},
@@ -508,81 +503,89 @@ layout("/layouts/platform.html"){
async getChangeType() {
const changeType = {}
const changeTypeOptions = await getEnumOptions("UserChangeType")
changeTypeOptions.forEach(v => {
changeTypeOptions.forEach((v) => {
changeType[v.code] = v.description
})
return changeType
},
exportChange() {
const {
searchName,
searchKeyword,
unitId,
personType,
changeDate,
userState
} = this.pageForm
window.open(loc() + '/exportChangePeo?searchName=' + searchName + '&searchKeyword=' + searchKeyword + '&unitId=' + (unitId ? unitId : '') +
'&userState=' + (userState ? userState : '') + '&personType=' + (personType ? personType : '') + '&changeDate=' + (changeDate ? changeDate : ''))
const { searchName, searchKeyword, unitId, personType, changeDate, userState } = this.pageForm
window.open(
loc() +
"/exportChangePeo?searchName=" +
searchName +
"&searchKeyword=" +
searchKeyword +
"&unitId=" +
(unitId ? unitId : "") +
"&userState=" +
(userState ? userState : "") +
"&personType=" +
(personType ? personType : "") +
"&changeDate=" +
(changeDate ? changeDate : "")
)
},
async getPartCount() {
const resp = await $.get('/platform/user/part/update/getPartCount')
const resp = await $.get("/platform/user/part/update/getPartCount")
this.upDataCount = resp.data
},
partUpdate(sourceType) {
if (sourceType === 'part') {
if (sourceType === "part") {
this.userScopeDialog = true
}
this.getPartCount()
},
handleClick() {
if (this.activeName === "2") {
this.$refs.userUpsetData.pageData();
this.$refs.userUpsetData.getActivityGroup();
this.$refs.userUpsetData.pageData()
this.$refs.userUpsetData.getActivityGroup()
}
},
async getPartGroupInfos() {
const resp = await $.get('/platform/user/part/update/getUserPart')
const resp = await $.get("/platform/user/part/update/getUserPart")
this.partGroupInfos = resp.data
},
doBack(){
doBack() {
this.userScopeDialog = false
this.getPartGroupInfos();
this.getPartGroupInfos()
},
async retireWelfareChange(){
this.$confirm('是否确定更新用户数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
async retireWelfareChange() {
this.$confirm("是否确定更新用户数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(async () => {
const loading = this.$loading({
lock: true,
text: '数据更新中,请稍后。。。',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
const resp = await $.get(loc() + '/retireWelfareChange')
if (resp.code === 0){
text: "数据更新中,请稍后。。。",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)"
})
const resp = await $.get(loc() + "/retireWelfareChange")
if (resp.code === 0) {
this.pageData()
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
loading.close();
loading.close()
})
},
getChangeTypes(changeTypes) {
if (changeTypes) {
const c = JSON.parse(changeTypes)
return c.map(v => {
return this.changeType[v]
}).join(',')
return c
.map((v) => {
return this.changeType[v]
})
.join(",")
}
return null
},
}
},
async created() {
this.pageData();
this.pageData()
this.units = await getUnits()
await this.getLatelyUpdateTimes()
this.changeType = await this.getChangeType()
@@ -26,7 +26,7 @@ layout("/layouts/platform.html"){
<guava>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span style="color: #409EFF;"><h3>活动申报</h3></span>
<span style="color: #409EFF;"><h3>活动申请</h3></span>
</div>
<el-form :model="formData" :rules="formRules" label-suffix=":" label-width="120px"
@@ -38,7 +38,7 @@ layout("/layouts/platform.html"){
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="申报时间" prop="apply_time">
<el-form-item label="申请时间" prop="apply_time">
<el-input disabled type="text" v-model="formData.apply_time"></el-input>
</el-form-item>
</el-col>
@@ -118,16 +118,16 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<el-form-item label="申报(承办)单位" prop="fundsUnitName"
<el-form-item label="申请(承办)单位" prop="fundsUnitName"
v-if="formData.activity_type!=40003">
<el-input placeholder="请输入申报(承办)单位" type="text"
<el-input placeholder="请输入申请(承办)单位" type="text"
v-model="formData.fundsUnitName"></el-input>
</el-form-item>
<el-form-item label="申报协会" prop="clubId"
<el-form-item label="申请协会" prop="clubId"
v-else-if="formData.activity_type==40003">
<el-select @change="fundsUnitChange"
placeholder="请选择申报协会"
placeholder="请选择申请协会"
style="width: 100%;" v-model="formData.clubId">
<el-option
:key="item.id"
@@ -291,8 +291,8 @@ layout("/layouts/platform.html"){
activityType: this.formData.activity_type
})
if (resp.code === 0) {
// 检测到您有相同名称的活动正在申报流程中,是否需要自动填充该活动的申报记录
this.$confirm('检测到您有相同名称的活动正在申报流程中,是否需要自动填充该活动的申报信息', '提示', {
// 检测到您有相同名称的活动正在申请流程中,是否需要自动填充该活动的申请记录
this.$confirm('检测到您有相同名称的活动正在申请流程中,是否需要自动填充该活动的申请信息', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
@@ -392,8 +392,8 @@ layout("/layouts/platform.html"){
async doAdd() {
this.$refs["form"].validate(async (valid) => {
if (valid) {
// 提交后将进入审核流程,无法修改申报内容,确定提交吗?
this.$confirm('提交后将进入审核流程,无法修改申报内容,确定提交吗?', '提示', {
// 提交后将进入审核流程,无法修改申请内容,确定提交吗?
this.$confirm('提交后将进入审核流程,无法修改申请内容,确定提交吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
@@ -436,8 +436,8 @@ layout("/layouts/platform.html"){
})
},
doSave() {
// 确定要保存吗?保存后可在【我的申报】页面选中设置按钮的【重新编辑】按钮进行修改或提交
this.$confirm('确定要保存吗?保存后可在【我的申报】页面选中设置按钮的【重新编辑】按钮进行修改或提交', '提示', {
// 确定要保存吗?保存后可在【我的申请】页面选中设置按钮的【重新编辑】按钮进行修改或提交
this.$confirm('确定要保存吗?保存后可在【我的申请】页面选中设置按钮的【重新编辑】按钮进行修改或提交', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
@@ -105,14 +105,14 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<el-form-item prop="fundsUnitName" label="申报(承办)单位" v-show="formData.activity_type!=40003">
<el-form-item prop="fundsUnitName" label="申请(承办)单位" v-show="formData.activity_type!=40003">
<el-input v-model="formData.fundsUnitName" type="text"
placeholder="请输入申报(承办)单位"></el-input>
placeholder="请输入申请(承办)单位"></el-input>
</el-form-item>
<el-form-item prop="fundsUnitName" label="申报(承办)单位" v-show="formData.activity_type==40003">
<el-form-item prop="fundsUnitName" label="申请(承办)单位" v-show="formData.activity_type==40003">
<el-select v-model="formData.fundsUnitName"
placeholder="请选择申报(承办)单位"
placeholder="请选择申请(承办)单位"
style="width: 100%;">
<el-option
v-for="item in fundsUnitNameOption"
@@ -81,7 +81,7 @@ layout("/layouts/platform.html"){
<el-table-column label="申请类型" prop="apply_type" header-align="center" sortable
align="center">
<template scope="{row}">
{{ row.apply_type == 1 ? "经费申报" : "报销申请" }}
{{ row.apply_type == 1 ? "经费申请" : "报销申请" }}
</template>
</el-table-column>
@@ -82,7 +82,7 @@ layout("/layouts/platform.html"){
<el-table-column label="申请类型" prop="apply_type" header-align="center" sortable
align="center">
<template scope="{row}">
{{ row.apply_type == 1 ? "经费申报" : "报销申请" }}
{{ row.apply_type == 1 ? "经费申请" : "报销申请" }}
</template>
</el-table-column>
@@ -74,7 +74,7 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<div style="padding: 4px 0 20px 0">
<el-button type="primary" size="small" @click="doExportActivityApply">
导出活动申报方案表
导出活动申请方案表
</el-button>
<el-button type="primary" size="small" style="margin-left: 10px"
@click="doExportReimbursementVoucher">导出报销凭证
@@ -120,14 +120,14 @@ layout("/layouts/platform.html"){
</el-col>
<el-col :span="12">
<el-form-item prop="fundsUnitName" label="申报(承办)单位"
<el-form-item prop="fundsUnitName" label="申请(承办)单位"
v-if="formData.activity_type!=40003">
<el-input readonly v-model="formData.fundsUnitName" type="text"></el-input>
</el-form-item>
<el-form-item prop="clubId" label="申报协会"
<el-form-item prop="clubId" label="申请协会"
v-else-if="formData.activity_type==40003">
<el-select placeholder="请选择申报协会"
<el-select placeholder="请选择申请协会"
disabled
style="width: 100%;" v-model="formData.clubId">
<el-option
@@ -232,47 +232,50 @@ layout("/layouts/platform.html"){
<el-row :gutter="20" v-if="formData.id != null && formData.id !== ''">
<el-divider content-position="left" class="dia"><span
style="color: #3ea1ec;">活动费用预算及报销信息表</span></el-divider>
<el-form-item>
<el-form-item label-width="40px">
<span style="color: red">如有收款人请填写收款人、支行名称及报销卡号;如无收款人,请在备注栏中说明报销情况</span>
<el-table :data="formData.budgets" border max-height="500" size="mini" style="width: 100%">
<el-table-column label="序号" sortable type="index" width="80"></el-table-column>
<el-table-column label="费用项目名称" prop="name">
<el-table-column label="序号" sortable fixed type="index" width="60"></el-table-column>
<el-table-column label="费用项目名称" fixed prop="name" width="200">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'budgets.'+$index+'.name'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="row.name" maxlength="50" readonly
<el-input v-model="row.name" style="width: 100%" maxlength="50"
placeholder="请输入费用项目名称"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="预算费用" prop="budgetPrice">
<el-table-column label="预算费用" prop="budgetPrice" width="250">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'budgets.'+$index+'.budgetPrice'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input-number placeholder="预算费用" v-model="row.budgetPrice"
:precision="2" disabled
:precision="2" style="width: 100%"
:min="1"></el-input-number>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="实际费用" prop="actualPrice">
<el-table-column label="实际费用" prop="actualPrice" width="250">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'budgets.'+$index+'.actualPrice'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input-number placeholder="请填写实际费用" v-model="row.actualPrice"
:precision="2"
:precision="2" style="width: 100%"
:min="0"></el-input-number>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="收款人" prop="payeeId">
<el-table-column label="收款人" prop="payeeId" width="200">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'budgets.'+$index+'.payeeId'">
<el-select :loading="selectLoading" :remote-method="remoteMethod"
<el-input v-model="row.username" maxlength="50"
@input="getCardNumberByPayeeId(row)"
placeholder="请输入收款人"></el-input>
<!--<el-select :loading="selectLoading" :remote-method="remoteMethod"
clearable
filterable
@change="getCardNumberByPayeeId(row)"
@@ -287,39 +290,49 @@ layout("/layouts/platform.html"){
:value="item.id"
v-for="item in userList">
</el-option>
</el-select>
</el-select>-->
</el-form-item>
</template>
</el-table-column>
<el-table-column label="支行名称" prop="bankName">
<el-table-column label="支行名称" prop="bankName" width="300">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'budgets.'+$index+'.bankName'">
<el-input v-model="row.bankName" maxlength="50"
<el-input v-model="row.bankName" maxlength="80"
placeholder="请输入支行名称"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="报销卡号" prop="bankCardNum">
<el-table-column label="报销卡号" prop="bankCardNum" width="250">
<template scope="{row,$index}">
<el-form-item label-width="0">
<el-input type="number" v-model="row.bankCardNum"
maxlength="50"
placeholder="请输入报销卡号"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark">
<el-table-column label="备注" prop="remark" width="400">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'budgets.'+$index+'.remark'">
<el-input v-model="row.remark" maxlength="50"
<el-input v-model="row.remark" maxlength="200"
placeholder="请输入备注"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column fixed="right" header-align="center" label="操作" width="100">
<template slot="header" slot-scope="scope">
<el-button @click="formData.budgets.push({})" type="primary" size="mini">添加</el-button>
</template>
<template slot-scope="scope">
<el-button :disabled="formData.budgets.length==1"
@click="formData.budgets.splice(scope.$index,1)"
size="mini"
icon="el-icon-delete"
type="danger"></el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-row>
@@ -410,7 +423,7 @@ layout("/layouts/platform.html"){
width="40%">
<span style="line-height: 24px">
&emsp;&emsp;1、智慧工会“基层活动”提交活动申报,审核通过后开展活动。活动结束后在系统中提交活动内容,导出报销凭据到工会财务处报销。<br/>
&emsp;&emsp;1、智慧工会“基层活动”提交活动申请,审核通过后开展活动。活动结束后在系统中提交活动内容,导出报销凭据到工会财务处报销。<br/>
&emsp;&emsp;2、活动报销所需材料如下:<br/>
&emsp;&emsp;&emsp;&emsp;①.活动方案(含预算),校工会主席签字;<br/>
&emsp;&emsp;&emsp;&emsp;②.活动新闻稿/照片;<br/>
@@ -488,15 +501,17 @@ layout("/layouts/platform.html"){
}
},
async getCardNumberByPayeeId(row) {
const user = this.userList.find(v => v.id === row.payeeId)
row.loginName = user.loginname
row.username = user.username
const resp = await $.get('/platform/jf/Funds/apply/getCardNumberByPayeeId', {payeeId: row.payeeId})
// const user = this.userList.find(v => v.id === row.payeeId)
// row.loginName = user.loginname
// row.username = user.username
const resp = await $.get('/platform/jf/Funds/apply/getCardNumberByPayeeId', {username:row.username})
if (resp.code === 0) {
debugger
if (resp.data) {
row.bankCardNum = resp.data.bankCardNum
row.bankName = resp.data.bankName
debugger
this.$set(row, "bankCardNum", resp.data.bankCardNum)
this.$set(row, "bankName", resp.data.bankName)
// row.bankCardNum = resp.data.bankCardNum
// row.bankName = resp.data.bankName
}
}
},
@@ -504,7 +519,7 @@ layout("/layouts/platform.html"){
doExportReimbursementVoucher() {
window.open('/platform/jf/activity_bx/reimbursement/doExport?id=' + this.formData.id)
},
//导出活动申报表
//导出活动申请表
doExportActivityApply() {
window.open('/platform/jf/activity_bx/reimbursementview/doExport?id=' + this.formData.id)
},
@@ -592,8 +607,8 @@ layout("/layouts/platform.html"){
this.$refs["form"].validate(async (valid) => {
if (valid) {
// 提交后将进入审核流程,无法修改申报内容,确定提交吗?
this.$confirm('提交后将进入审核流程,无法修改申报内容,确定提交吗?', '提示', {
// 提交后将进入审核流程,无法修改申请内容,确定提交吗?
this.$confirm('提交后将进入审核流程,无法修改申请内容,确定提交吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
@@ -649,7 +664,7 @@ layout("/layouts/platform.html"){
this.formData.id = id
await this.activityChange(id);
}
this.dialogVisible = true
// this.dialogVisible = true
await this.getUserClub();
}
})
@@ -145,7 +145,7 @@ layout("/layouts/platform.html"){
title=""
width="200"
trigger="hover"
content="申报和报销的活动经费">
content="申请和报销的活动经费">
<i style="color: #409EFF" slot="reference" class="el-icon-question"></i>
</el-popover>
</div>
@@ -160,7 +160,7 @@ layout("/layouts/platform.html"){
title=""
width="200"
trigger="hover"
content="申报和报销的活动经费">
content="申请和报销的活动经费">
<i style="color: #409EFF" slot="reference" class="el-icon-question"></i>
</el-popover>
</div>
@@ -175,7 +175,7 @@ layout("/layouts/platform.html"){
title=""
width="200"
trigger="hover"
content="申报和报销的活动经费">
content="申请和报销的活动经费">
<i style="color: #409EFF" slot="reference" class="el-icon-question"></i>
</el-popover>
</div>
@@ -146,7 +146,7 @@ layout("/layouts/platform.html"){
删除
</el-dropdown-item>
<el-dropdown-item :command="{type:'exportWwj',data:row,apply_type:1}">
导出申报方案表
导出申请方案表
</el-dropdown-item>
<el-dropdown-item :command="{type:'exportWwj',data:row,apply_type:2}">
导出活动报销凭证
@@ -135,7 +135,7 @@ layout("/layouts/platform.html"){
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'exportWwj',data:row,apply_type:1}">
导出申报方案表
导出申请方案表
</el-dropdown-item>
<el-dropdown-item :command="{type:'exportWwj',data:row,apply_type:2}">
导出活动报销凭证
@@ -15,7 +15,8 @@
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch" style="width: 100%">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工号" value="u.loginname"></el-option>
@@ -49,7 +50,8 @@
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
<el-select placeholder="所属工会" v-model="pageForm.unionId"
style="width: 100%;"
clearable
filterable
@change="flushUnits" @clear="flushUnits">
@@ -62,16 +64,17 @@
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
<el-select placeholder="所属单位" v-model="pageForm.unitId"
style="width: 100%;"
@change="getThreeUnits"
clearable
filterable>
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-row>
</div>
</div>
<template v-if="isThreeUnit">
<div class="search-item">
<div class="search-item-label">工会小组:</div>
@@ -94,7 +97,8 @@
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable
<el-select v-model="pageForm.threeUnitId" style="width: 100%"
filterable
clearable
placeholder="请选择">
<el-option
@@ -109,7 +113,8 @@
</template>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
</div>
</div>
@@ -128,9 +133,11 @@
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder"
v-loading="tableLoading" :size="tableSize" class="vi-table">
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
@@ -154,13 +161,16 @@
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作"
min-width="100px">
<template scope="{row}">
<el-button size="small" :loading="row.loading" v-if="row.audit" type="primary"
<el-button size="mini" :loading="row.loading" v-if="row.audit"
type="primary"
@click="openAudit(row,true)">审核
</el-button>
<el-button size="small" :loading="row.loading" v-else @click="openAudit(row,false)">查看
<el-button size="mini" :loading="row.loading" v-else
@click="openAudit(row,false)">查看
</el-button>
</template>
</el-table-column>
@@ -171,136 +181,145 @@
</template>
<template #edit>
<el-tabs v-model="active">
<el-tab-pane label="个人信息" name="info">
<member ref="memberInfo" :id="info.userId" view></member>
</el-tab-pane>
<el-tab-pane label="分工会审核" name="union">
<el-tabs v-model="active">
<el-tab-pane label="个人信息" name="info">
<member ref="memberInfo" :id="info.userId" view></member>
</el-tab-pane>
<el-tab-pane label="分工会审核" name="union">
<el-form :model="formData" ref="form" :rules="formRules"
label-width="120px" label-suffix=":">
<el-form :model="formData" ref="form" :rules="formRules"
label-width="120px" label-suffix=":">
<vi-title title="审核信息"></vi-title>
<vi-title title="审核信息"></vi-title>
<template v-if="!info.unionAudit&&source==1">
<template v-if="!info.unionAudit&&source==1">
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4"
maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
<div style="float: right;margin: 20px 0">
<el-button @click="doAudit(false)" :loading="submitLoading">拒
绝
</el-button>
<el-button type="primary" @click="doAudit(true)"
:loading="submitLoading">通
过
</el-button>
</div>
</template>
<template v-else>
<el-row :gutter="20" v-if="info&&info.unionAudit">
<el-col :span="12">
<el-form-item label="审核人员">
<span>{{ info.unionAudit.username }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
<span>{{ info.unionAudit.auditTime }}</span>
</el-form-item>
</el-col>
<el-form-item prop="auditSign" label="签字">
<sign v-model="formData.auditSign"></sign>
</el-form-item>
<el-col :span="24">
<el-form-item label="审核意见">
<span>{{ info.unionAudit.auditOpinion }}</span>
</el-form-item>
</el-col>
</el-row>
<div style="float: right;margin: 20px 0">
<el-button @click="doAudit(false)" :loading="submitLoading">拒
绝
</el-button>
<el-button type="primary" @click="doAudit(true)"
:loading="submitLoading">通
过
</el-button>
</div>
</template>
<template v-else>
<el-descriptions :column="2" border class="descriptions-form" v-if="info&&info.unionAudit">
<el-descriptions-item label="审核人员">{{ info.unionAudit.username }}</el-descriptions-item>
<el-descriptions-item label="审核时间">{{ info.unionAudit.auditTime }}</el-descriptions-item>
<el-descriptions-item label="审核意见" span="2">{{ info.unionAudit.auditOpinion }}</el-descriptions-item>
<el-descriptions-item label="签字" span="2">
<el-image
v-if="info.unionAudit.auditSign"
:src="info.unionAudit.auditSign"
style="width: 100px; height: 100px"></el-image>
<span v-else>暂无</span>
</el-descriptions-item>
</el-descriptions>
<el-row v-else type="flex" justify="center">
<el-form-item label="暂无审核信息">
</el-form-item>
</el-row>
</template>
</el-form>
</el-tab-pane>
<el-tab-pane label="校工会审核" name="school"
v-if="info.unionAudit">
<el-form class="demo-table-expand" :model="formData" ref="form"
:rules="formRules"
label-width="120px" label-suffix=":">
<el-row v-else type="flex" justify="center">
<el-form-item label="暂无审核信息">
</el-form-item>
</el-row>
</template>
</el-form>
</el-tab-pane>
<el-tab-pane label="校工会审核" name="school"
v-if="info.unionAudit">
<el-form class="demo-table-expand" :model="formData" ref="form" :rules="formRules"
label-width="120px" label-suffix=":">
<vi-title title="审核信息"></vi-title>
<template v-if="!info.schoolAudit&&source==2">
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
<vi-title title="审核信息"></vi-title>
<el-form-item prop="auditSign" label="签字">
<sign v-model="formData.auditSign"></sign>
</el-form-item>
<template v-if="!info.schoolAudit&&source==2">
<div style="float: right;margin: 20px 0">
<el-button @click="doAudit(false)" :loading="submitLoading">拒
绝
</el-button>
<el-button type="primary" @click="doAudit(true)"
:loading="submitLoading">通
过
</el-button>
</div>
</template>
<template v-else>
<el-descriptions :column="2" border class="descriptions-form" v-if="info&&info.schoolAudit">
<el-descriptions-item label="审核人员">{{ info.schoolAudit.username }}</el-descriptions-item>
<el-descriptions-item label="审核时间">{{ info.schoolAudit.auditTime }}</el-descriptions-item>
<el-descriptions-item label="审核意见" span="2">{{ info.schoolAudit.auditOpinion }}</el-descriptions-item>
<el-descriptions-item label="签字" span="2">
<el-image
v-if="info.schoolAudit.auditSign"
:src="info.schoolAudit.auditSign"
style="width: 100px; height: 100px"></el-image>
<span v-else>暂无</span>
</el-descriptions-item>
</el-descriptions>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row v-else type="flex" justify="center">
<el-form-item label="暂无审核信息">
</el-form-item>
</el-row>
</template>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4"
maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
<div style="float: right;margin: 20px 0">
<el-button @click="doAudit(false)" :loading="submitLoading">拒
绝
</el-button>
<el-button type="primary" @click="doAudit(true)"
:loading="submitLoading">通
过
</el-button>
</div>
</template>
<template v-else>
<el-row :gutter="20" v-if="info&&info.schoolAudit">
<el-col :span="12">
<el-form-item label="审核人员">
<span>{{ info.schoolAudit.username }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
<span>{{ info.schoolAudit.auditTime }}</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
<span>{{ info.schoolAudit.auditOpinion }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row v-else type="flex" justify="center">
<el-form-item label="暂无审核信息">
</el-form-item>
</el-row>
</template>
</el-form>
</el-tab-pane>
</el-tabs>
</template>
<template #view>
@@ -341,19 +360,17 @@
{prop: 'mobile', label: '联系电话'},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true ,checked: 0},
{prop: 'unionGroupName', label: '工会小组', sortable: true ,checked: 0},
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
{prop: 'unionGroupName', label: '工会小组', sortable: true, checked: 0},
{prop: 'applyDate', label: '申请时间', sortable: true},
{prop: 'stateId', label: '状态', sortable: true},
],
units: [],
isThreeUnit: null,
isThreeUnit: false,
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v='+ new Date().getTime()),
},
methods: {
async doAudit(pass) {
@@ -364,6 +381,7 @@
if (resp.code === 0) {
this.pageData()
this.$refs.guava.index()
this.$message.success(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
@@ -434,6 +452,7 @@
async created() {
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
if (this.isThreeUnit) {
this.tableColumns.forEach(v => {
if (["threeUnitName", "unionGroupName"].includes(v.prop)) {
v.checked = 1
@@ -442,7 +461,7 @@
}
this.pageData();
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === 'true') {
this.unions = await getUnions(null, false)
} else {
this.unions = await getUnions(null, true)
@@ -42,7 +42,7 @@ layout("/layouts/platform.html"){
</style>
<div id="app" v-cloak>
<guava ref="guava" style="width: 100%;height: 100%">
<guava ref="guava">
<template>
<div class="v-body">
<el-card class="v-card" shadow="never">
@@ -66,29 +66,20 @@ layout("/layouts/platform.html"){
<el-form-item label="加入方式">
<el-radio-group v-model="memberStates">
<el-radio :label="1">新增</el-radio>
<el-radio :label="2">转入</el-radio>
<!-- <el-radio :label="2">转入</el-radio>-->
</el-radio-group>
</el-form-item>
</el-form>
<el-button
v-if="unionInfo.member !== 1"
:disabled="!((unionInfo.apply||unionInfo.reApply))"
type="primary"
@click="apply"
style="width: 70%;margin-left: 15%;margin-top: 20px">
<span v-if="unionInfo.apply||unionInfo.reApply">{{unionInfo.reApply?'重新申请':'申请加入'}}</span>
<span v-if="unionInfo.apply||unionInfo.reApply">{{unionInfo.reApply?'重新申请':'加入'}}</span>
<span v-else-if="unionInfo.record">{{unionInfo.record.stateName}}</span>
<span v-else>您已是会员</span>
</el-button>
<!--<el-radio
style="width: 70%;margin-left: 15%;margin-top: 20px;color: #F56C6C"
v-model="reading" :label="true">
阅读须知:我自愿加入工会
</el-radio>-->
<el-button style="width: 70%;margin-top: 10px;margin-left: 15%;" type="primary" @click="exportApply">
导出申请表
</el-button>
</div>
</el-card>
</div>
@@ -208,20 +199,19 @@ layout("/layouts/platform.html"){
</template>
<template #edit_func>
<el-button type="primary" @click="doSubmit">提交</el-button>
<!-- <el-button type="primary" @click="doSubmit">提交</el-button>-->
</template>
<template #edit>
<div style="width: 800px;margin: 0 auto;">
<h3 style="text-align: center">中华全国总工会</h3>
<h3 style="text-align: center">入会申请书</h3>
<div style="text-align: center">入会申请书</div>
<p style="text-indent: 2em">
我自愿加入中华全国总工会,遵守工会章程,执行工会决议,积极参加工会活动,为全面建成小康社会、把我国建设成为富强民主文明和谐美丽的社会主义现代化强国、实现中华民族伟大复兴的中国梦而奋斗。
</p>
</div>
<el-divider></el-divider>
<el-form :model="formData" :rules="rules" ref="AddForm" label-width="170px">
<el-row :gutter="20">
@@ -232,6 +222,13 @@ layout("/layouts/platform.html"){
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工号" prop="loginname">
<el-input disabled placeholder="工号"
v-model="formData.loginname"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="性别" prop="sex">
<el-radio v-model="formData.sex" label="男" border size="small">男
@@ -243,7 +240,7 @@ layout("/layouts/platform.html"){
<el-col :span="8">
<el-form-item prop="nation" label="民族">
<el-select placeholder="请选择民族" style="width: 100%" filterable v-model="formData.nation">
<el-select placeholder="民族" style="width: 100%" filterable v-model="formData.nation">
<el-option v-for="nation in nationOptions" :key="nation" :value="nation"
:label="nation"></el-option>
</el-select>
@@ -252,24 +249,31 @@ layout("/layouts/platform.html"){
<el-col :span="8">
<el-form-item prop="education" label="学历">
<dict-select code="Education" placeholder="请选择学历"
style="width: 100%"
v-model="formData.education"></dict-select>
<dict-select v-model="formData.education" style="width: 100%"
placeholder="请选择学历"
code="Education"></dict-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="academicDegree" label="学位">
<dict-select v-model="formData.academicDegree" style="width: 100%"
placeholder="请选择学位"
code="academicDegree"></dict-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="political" label="政治面貌">
<dict-select code="political" placeholder="请选择政治面貌"
style="width: 100%"
v-model="formData.political"></dict-select>
<el-input maxlength="100" placeholder="政治面貌"
v-model="formData.political"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="marriage" label="婚姻状况">
<dict-select v-model="formData.marriage" style="width: 100%" placeholder="请选择婚姻状况"
code="maritalStatus"></dict-select>
<el-form-item prop="userState" label="人员类型">
<dict-select v-model="formData.personType" style="width: 100%" placeholder="请选择人员类型"
code="UserType"></dict-select>
</el-form-item>
</el-col>
@@ -300,49 +304,35 @@ layout("/layouts/platform.html"){
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="24">
<el-form-item prop="registeredResidence" label="户口所在地">
<el-input maxlength="50" placeholder="请填写户口所在地"
v-model="formData.registeredResidence"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="homeAddress" label="现居住地">
<el-input placeholder="请填写现居住地"
v-model="formData.homeAddress"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="jobTitle" label="岗位">
<el-input placeholder="请填写岗位"
v-model="formData.jobTitle"></el-input>
v-model="formData.registeredResidence" type="textarea"
rows="3"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="vita" label="简历">
<el-input maxlength="500" placeholder="请填写简历"
<el-form-item prop="homeAddress" label="现居住地">
<el-input maxlength="50" placeholder="请填写现居住地"
v-model="formData.homeAddress" type="textarea"
rows="3"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="vita" label="个人工作简历">
<el-input maxlength="500" placeholder="请填写个人工作简历"
v-model="formData.vita" type="textarea"
rows="3"></el-input>
</el-form-item>
<div style="margin: -10px 0 10px 170px">
<span style="color: #ac3111">填写简历时请从大学开始填写,并填写毕业院校</span>
</div>
</el-col>
<el-col :span="24">
<el-form-item prop="specialSkill" label="有何特长">
<el-form-item prop="specialSkill" label="特长">
<el-input maxlength="50" placeholder="请填写特长"
v-model="formData.specialSkill" type="textarea"
rows="3"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签&emsp;&emsp;字" prop="sign">
<sign :qz.sync="formData.sign" prefix="memberApply"></sign>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="家庭成员">
<span style="color: red">(已结婚填配偶信息,未结婚填父母信息)</span>
@@ -367,27 +357,13 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column prop="isCondolence" label="是否慰问" align="center"
<el-table-column prop="unit" label="单位" align="center"
header-align="center">
<template slot-scope="scope">
<el-radio-group v-model="scope.row.isCondolence" size="mini">
<el-radio label="是">是</el-radio>
<el-radio label="否">否</el-radio>
</el-radio-group>
<!--<el-input placeholder="请输入单位" maxlength="100"
v-model="scope.row.unit" clearable></el-input>-->
<el-input placeholder="请输入单位" maxlength="100"
v-model="scope.row.unit" clearable></el-input>
</template>
</el-table-column>
<el-table-column prop="condolenceTime" label="慰问时间" align="center"
header-align="center">
<template slot-scope="scope">
<el-date-picker style="width: 100%" v-model="scope.row.condolenceTime" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" type="date"
placeholder="慰问时间"></el-date-picker>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" align="center"
header-align="center">
<template slot-scope="scope">
@@ -437,6 +413,7 @@ layout("/layouts/platform.html"){
<script>
const vue = new Vue({
el: '#app',
dicts: ['memberApplyPersonType'],
mixins: [initTableMixins],
data() {
return {
@@ -456,6 +433,8 @@ layout("/layouts/platform.html"){
idcard: [{required: true, message: '必填', trigger: ['blur', 'change']}],
mobile: [{required: true, message: '必填', trigger: ['blur', 'change']}],
position: [{required: true, message: '必填', trigger: ['blur', 'change']}],
homeAddress: [{required: true, message: '必填', trigger: ['blur', 'change']}],
specialSkill: [{required: true, message: '必填', trigger: ['blur', 'change']}],
registeredResidence: [{
required: true,
message: '必填',
@@ -467,9 +446,7 @@ layout("/layouts/platform.html"){
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v='+ new Date().getTime()),
},
methods: {
@@ -519,6 +496,16 @@ layout("/layouts/platform.html"){
})
},
async apply() {
const values = this.dict.type.memberApplyPersonType.map(v => v.value)
const personType = "${@shiro.getPrincipalProperty('personType')}"
const msg = '您当前的人员类型是<span style="color: red">' + (personType || '空') + '</span>,目前只允许<strong>' + values.join('、') + '</strong>加入会员,如有疑问,请联系校工会进行更改。'
if (!values.includes(personType)) {
this.$alert(msg, '提示', {
confirmButtonText: '确定',
dangerouslyUseHTMLString: true
})
return
}
this.$refs.guava.edit()
},
@@ -547,9 +534,6 @@ layout("/layouts/platform.html"){
}
},
exportApply() {
window.open(loc() + '/exportApply')
}
},
async created() {
this.getUnionInfo()
@@ -131,12 +131,9 @@ layout("/layouts/platform.html"){
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'enum-select': httpVueLoader('/components/plugins/EnumSelect.vue?v=1.0.0'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=1.0.0'),
'mem-change-apply': httpVueLoader('/components/member/MemChangeApply.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v='+ new Date().getTime()),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v='+ new Date().getTime()),
'mem-change-apply': httpVueLoader('/components/member/MemChangeApply.vue?v='+ new Date().getTime()),
},
methods: {
@@ -146,6 +143,7 @@ layout("/layouts/platform.html"){
if(resp.code===0){
this.getUnionInfo()
this.$refs.guava.index()
this.$message.success(resp.msg)
}else{
this.notifyWarning(resp.msg)
}
File diff suppressed because it is too large Load Diff
@@ -17,7 +17,8 @@ layout("/layouts/platform.html"){
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width:80px;">
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工号" value="u.loginname"></el-option>
@@ -29,12 +30,14 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
<el-select placeholder="所属工会" v-model="pageForm.unionId"
style="width: 100%;"
clearable
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}"
filterable>
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
</div>
@@ -42,207 +45,87 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
<el-select placeholder="所属单位" v-model="pageForm.unitId"
style="width: 100%;"
@change="getThreeUnits"
clearable
filterable>
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-row>
</div>
</div>
<template v-if="searchMore">
<template v-if="isThreeUnit">
<div class="search-item">
<div class="search-item-label">工会小组:</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionGroupId" style="width: 100%"
filterable
clearable
@change="getThreeUnits"
placeholder="请选择">
<el-option
v-for="item in unionGroups"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable
clearable
placeholder="请选择">
<el-option
v-for="item in threeUnits"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userType" style="width: 100%" clearable
placeholder="人员类型"
code="UserType"></dict-select>
</div>
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userStates"
style="width: 100%"
multiple
clearable
placeholder="在职状态"
code="userState"></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">变更类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.changeType" style="width: 100%" clearable
placeholder="变更类型"
code="MemberChangeType"></dict-select>
</div>
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personTypes"
style="width: 100%"
multiple
clearable
placeholder="人员类型"
code="UserType"></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">申请方式:</div>
<div class="search-item-option">
<enum-select enum="MemberChangeOrigin" v-model="pageForm.applyOrigin" value="code"
label="description"
style="width: 100%" clearable placeholder="申请方式"></enum-select>
</div>
<div class="search-item">
<div class="search-item-label">变更类型:</div>
<div class="search-item-option">
<enum-select v-model="pageForm.changeTypes"
enum="UserChangeType"
label="description"
multiple
value="code"
style="width: 100%"
clearable
placeholder="变更类型"
></enum-select>
</div>
</template>
</div>
<div class="search-item">
<div class="search-item-label">变更来源:</div>
<div class="search-item-option">
<enum-select enum="MemberChangeOrigin"
v-model="pageForm.changeOrigins"
multiple
value="code"
label="description"
style="width: 100%" clearable
placeholder="变更来源"></enum-select>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
<more v-model="searchMore"></more>
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="变更列表" :app="this">
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder"
resizable
v-loading="tableLoading" :size="tableSize" class="vi-table">
<el-table-column type="expand" width="40px">
<template slot-scope="{row}">
<el-form class="demo-table-expand" v-loading="row.loading"
label-position="right" label-suffix=":" label-width="120px">
<vi-title title="变更信息"></vi-title>
<el-form-item label="变更原因">
{{ row.remark }}
</el-form-item>
<!--异动-->
<template v-if="row.type==1">
<vi-title title="异动信息"></vi-title>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="原科室">
<span>{{ row.originThreeUnitName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="原单位">
<span>{{ row.originUnitName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="原工会">
<span>{{ row.originUnionName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="新科室">
<span>{{ row.currentThreeUnitName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="新单位">
<span>{{ row.currentUnitName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="新工会">
<span>{{ row.currentUnionName }}</span>
</el-form-item>
</el-col>
</el-row>
</template>
<vi-title title="分工会审核信息"></vi-title>
<el-row :gutter="20" v-if="row.unionAudit">
<el-col :span="12">
<el-form-item label="审核人员">
<span>{{ row.unionAudit.username }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
<span>{{ row.unionAudit.auditTime }}</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
<span>{{ row.unionAudit.auditOpinion }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row v-else type="flex" justify="center">
<el-form-item label="暂无审核信息">
</el-form-item>
</el-row>
<vi-title title="校工会审核信息"></vi-title>
<el-row :gutter="20" v-if="row.schoolAudit">
<el-col :span="12">
<el-form-item label="审核人员">
<span>{{ row.schoolAudit.username }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
<span>{{ row.schoolAudit.auditTime }}</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
<span>{{ row.schoolAudit.auditOpinion }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row v-else type="flex" justify="center">
<el-form-item label="暂无审核信息">
</el-form-item>
</el-row>
</el-form>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
@@ -252,54 +135,44 @@ layout("/layouts/platform.html"){
:prop="column.prop"
:sortable="column.sortable"
>
<template v-if="column.prop=='type'" scope="{row:{type}}">
{{changeType[type]}}
</template>
<template v-else-if="column.prop=='applyOrigin'" scope="{row:{applyOrigin}}">
{{changeOrigin[applyOrigin]}}
</template>
<template v-else-if="column.prop=='stateId'" scope="{row}">
<vi-table-state v-if="row.stateId" :state="row"></vi-table-state>
<vi-table-state v-else :state="{stateColor:'#1890ff',stateName:'暂无'}"></vi-table-state>
</template>
<template v-else-if="column.prop==='unitname'" scope="{row}">
{{isDisPlayCode?'('+row.unitcode+')':null}}{{row.unitname}}
</template>
<template v-else-if="column.prop==='unionname'" scope="{row}">
{{isDisPlayCode?'('+row.unioncode+')':null}}{{row.unionname}}
<template v-if="column.prop=='stateId'" scope="{row}">
</template>
</el-table-column>
<el-table-column label="变更人姓名">
<template slot-scope="{row}">
{{row.schoolAudit?row.schoolAudit.username:''}}
</template>
<!-- <template v-else-if="column.prop==='changePersonLoginname'" scope="{row}">-->
<!-- {{row.schoolAudit.loginname}}-->
<!-- </template>-->
<!-- <template v-else-if="column.prop==='changeTime'" scope="{row}">-->
<!-- {{row.schoolAudit.auditTime}}-->
<!-- </template>-->
</el-table-column>
<el-table-column label="变更人工号">
<template slot-scope="{row}">
{{row.schoolAudit?row.schoolAudit.loginname:''}}
</template>
</el-table-column>
<el-table-column label="变更时间" width="150">
<template slot-scope="{row}">
{{row.schoolAudit?row.schoolAudit.auditTime:''}}
</template>
<el-table-column label="异动信息" header-align="center">
<el-table-column label="更新时间" prop="changeTime" min-width="145px"
header-align="center"
sortable
align="center" show-overflow-tooltip>
</el-table-column>
<el-table-column label="异动类型" prop="changeTypes" header-align="center"
align="center" show-overflow-tooltip sortable>
<template scope="{row}">
<span style="color: #0e78c5;cursor: pointer" @click="openUserChangeInfo(row)">
{{getChangeTypes(row.changeTypes)}}
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
width="100px" fixed="right">
<el-table-column label="审核状态">
<template scope="{row}">
<el-button size="small" :loading="row.loading" @click="openView(row.userId)">查看
</el-button>
<vi-table-state v-if="row.stateId" :state="row"></vi-table-state>
<vi-table-state v-else
:state="{stateColor:'#1890ff',stateName:'暂无'}"></vi-table-state>
</template>
</el-table-column>
<!-- <el-table-column prop="userOnline" align="center" header-align="center"-->
<!-- label="操作"-->
<!-- width="100px" fixed="right">-->
<!-- <template scope="{row}">-->
<!-- <el-button size="mini"-->
<!-- type="primary"-->
<!-- @click="openView(row.userId)">查看-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
@@ -320,6 +193,9 @@ layout("/layouts/platform.html"){
</el-tabs>
</template>
<user-change-history ref="userChangeHistory"></user-change-history>
</guava>
@@ -340,6 +216,9 @@ layout("/layouts/platform.html"){
formData: {},
pageForm: {
searchName: "u.username",
changeTypes: [],
personTypes: [],
changeOrigins: []
},
unions: [],
units: [],
@@ -350,28 +229,41 @@ layout("/layouts/platform.html"){
tableColumns: [
{prop: 'loginname', label: '工号'},
{prop: 'username', label: '姓名'},
{prop: 'sex', label: '性别', sortable: true, width: '100px'},
{prop: 'birthday', label: '出生年月', sortable: true},
{prop: 'personType', label: '人员类型', sortable: true},
{prop: 'userState', label: '在职状态', sortable: true},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
{prop: 'unionGroupName', label: '工会小组', sortable: true, checked: 0},
{prop: 'type', label: '变更类型', sortable: true},
{prop: 'applyDate', label: '申请时间', sortable: true},
{prop: 'applyOrigin', label: '申请方式', sortable: true},
{prop: 'stateId', label: '状态', sortable: true}
// {prop: 'type', label: '变更类型', sortable: true},
// {prop: 'applyDate', label: '申请时间', sortable: true},
// {prop: 'applyOrigin', label: '申请方式', sortable: true},
// {prop: 'stateId', label: '状态', sortable: true}
],
isThreeUnit:null,
isThreeUnit: false,
memberChangeOriginOptions: [],
userChangeTypeOptions: []
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=1.0.2'),
'mem-change-apply': httpVueLoader('/components/member/MemChangeApply.vue?v=1.0.0'),
'enum-select': httpVueLoader('/components/plugins/EnumSelect.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=' + new Date().getTime()),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=' + new Date().getTime()),
'mem-change-apply': httpVueLoader('/components/member/MemChangeApply.vue?v=' + new Date().getTime()),
'user-change-history': httpVueLoader('/components/userChangeHistory/userChangeHistory.vue?v=' + new Date().getTime()),
},
methods: {
async openUserChangeInfo({id}) {
this.$refs.userChangeHistory.openUserChangeInfo(id)
},
getChangeTypes(changeTypes) {
if (changeTypes) {
const c = JSON.parse(changeTypes)
return this.userChangeTypeOptions.filter(v => c.includes(v.code)).map(v => v.description).join()
}
return null
},
async onExpand(row, expandedRows) {
if (!expandedRows.includes(row)) {
return
@@ -380,9 +272,9 @@ layout("/layouts/platform.html"){
this.$set(row, "loading", true)
const resp = await $.get("/platform/member/common/findChangeApplyInfo", {id: row.id})
this.$set(row, "loading", false)
if(resp.code===0){
if (resp.code === 0) {
this.$set(row, "info", data)
}else{
} else {
this.notifyWarning(resp.msg)
this.$set(row, "info", {})
}
@@ -395,11 +287,11 @@ layout("/layouts/platform.html"){
async doSubmit(formData) {
const resp = await $.post(loc() + "/change", formData)
this.$refs.apply.closeLoading()
if(resp.code===0){
if (resp.code === 0) {
this.userId = ""
this.$refs.guava.index()
this.pageData()
}else{
} else {
this.notifyWarning(resp.msg)
}
},
@@ -419,9 +311,29 @@ layout("/layouts/platform.html"){
this.unionGroups = await unionGroupsByUnionId(this.pageForm.unionId)
}
},
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
const pageForm = clone(this.pageForm)
pageForm.userStates = JSON.stringify(pageForm.userStates)
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
pageForm.changeTypes = JSON.stringify(pageForm.changeTypes)
pageForm.changeOrigins = JSON.stringify(pageForm.changeOrigins)
$.post(loc() + '/pageData', pageForm, (data) => {
sublime.closeLoadingbar();
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");
},
},
async created() {
this.pageData();
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
if (this.isThreeUnit) {
this.tableColumns.forEach(v => {
@@ -431,7 +343,8 @@ layout("/layouts/platform.html"){
})
}
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.pageData();
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === 'true') {
this.unions = await getUnions(null, false)
} else {
this.unions = await getUnions(null, true)
@@ -440,6 +353,14 @@ layout("/layouts/platform.html"){
}
this.changeType = await member.getChangeType()
this.changeOrigin = await member.getChangeOrigin()
getEnumOptions('MemberChangeOrigin').then(res => {
this.memberChangeOriginOptions = res
})
getEnumOptions('UserChangeType').then(res => {
this.userChangeTypeOptions = res
})
}
})
</script>
@@ -15,7 +15,8 @@
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch" style="width: 100%">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工号" value="u.loginname"></el-option>
@@ -25,113 +26,89 @@
</div>
<div class="search-item">
<div class="search-item-label">申请时间:</div>
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<el-date-picker
style="width: 100%"
v-model="pageForm.dateRange"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd">
</el-date-picker>
<dict-select v-model="pageForm.userStates"
style="width: 100%"
multiple
clearable
placeholder="在职状态"
code="userState"></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personTypes"
style="width: 100%"
multiple
clearable
placeholder="人员类型"
code="UserType"></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">变更类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.type" style="width: 100%" clearable placeholder="变更类型"
code="MemberChangeType"></dict-select>
<enum-select v-model="pageForm.changeTypes"
enum="UserChangeType"
label="description"
multiple
value="code"
style="width: 100%"
clearable
placeholder="变更类型"
></enum-select>
</div>
</div>
<template v-if="searchMore">
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable
filterable
@change="flushUnits" @clear="flushUnits">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId"
style="width: 100%;"
clearable
filterable
@change="flushUnits" @clear="flushUnits">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
@change="getThreeUnits"
clearable
filterable>
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-row>
</div>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId"
style="width: 100%;"
@change="getThreeUnits"
clearable
filterable>
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-row>
</div>
<template v-if="isThreeUnit">
<div class="search-item">
<div class="search-item-label">工会小组:</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionGroupId" style="width: 100%"
filterable
clearable
@change="getThreeUnits"
placeholder="请选择">
<el-option
v-for="item in unionGroups"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable
clearable
placeholder="请选择">
<el-option
v-for="item in threeUnits"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<div class="search-item">
<div class="search-item-label">会员状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.memberStatus" style="width: 100%" clearable
placeholder="会员状态" code="memberStatusText"></dict-select>
</div>
</div>
</template>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
<more v-model="searchMore"></more>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="申请列表" :app="this">
<template #func>
<!-- <el-button type="primary" v-if="source==2" size="small"-->
<!-- :disabled="selection.length===0" @click="batchOpenAudit">批量审核-->
<!-- </el-button>-->
<el-radio-group v-model="pageForm.audit" @change="doSearch" size="small"
style="margin-bottom: -7.5px">
class="ml10">
<el-radio-button :label="0">全部</el-radio-button>
<el-radio-button :label="1">已审核</el-radio-button>
<el-radio-button :label="2">未审核</el-radio-button>
@@ -139,9 +116,17 @@
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder"
ref="table"
@selection-change="handleSelectionChange"
v-loading="tableLoading" :size="tableSize" class="vi-table">
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
<el-table-column type="selection" width="55"
v-if="source==2"
reserve-selection
:selectable="(row)=>{return row.audit}"></el-table-column>
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
@@ -153,10 +138,11 @@
:prop="column.prop"
:sortable="column.sortable"
>
<template v-if="column.prop=='type'" scope="{row:{type}}">
{{changeType[type]}}
<template v-if="column.prop=='type'" scope="{row}">
<span style="color: #0e78c5;cursor: pointer" @click="openUserChangeInfo(row)">{{changeType[row.type]}}</span>
</template>
<template v-else-if="column.prop=='applyOrigin'" scope="{row:{applyOrigin}}">
<template v-else-if="column.prop=='applyOrigin'"
scope="{row:{applyOrigin}}">
{{changeOrigin[applyOrigin]}}
</template>
<template v-else-if="column.prop=='stateId'" scope="{row}">
@@ -171,13 +157,18 @@
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作"
fixed="right"
width="100px">
<template scope="{row}">
<el-button size="mini" :loading="row.loading" v-if="row.audit" type="primary"
<el-button size="mini" :loading="row.loading" v-if="row.audit"
type="primary"
@click="openAudit(row,true)">审核
</el-button>
<el-button size="mini" :loading="row.loading" v-else @click="openAudit(row,false)">查看
<el-button size="mini" :loading="row.loading" v-else
type="primary"
@click="openAudit(row,false)">查看
</el-button>
</template>
</el-table-column>
@@ -188,17 +179,14 @@
</el-card>
</template>
<template #edit>
<el-tabs v-model="active">
<el-tab-pane label="个人信息" name="info">
<member ref="memberInfo" :id="info.userId" view></member>
</el-tab-pane>
<el-tab-pane label="变更记录" name="changInfo">
<mem-change-records :userid="info.userId"></mem-change-records>
</el-tab-pane>
<!-- <el-tab-pane label="变更记录" name="changInfo">-->
<!-- <mem-change-records :userid="info.userId"></mem-change-records>-->
<!-- </el-tab-pane>-->
<el-tab-pane label="分工会审核" name="union">
<el-form :model="formData" ref="form" :rules="formRules"
@@ -211,23 +199,27 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="原单位">
<el-input :value="info.originUnit.name" disabled></el-input>
<el-input :value="info.originUnit.name"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="原工会">
<el-input :value="info.originUnion.unionname" disabled></el-input>
<el-input :value="info.originUnion.unionname"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="新单位">
<el-input :value="info.currentUnit.name" disabled></el-input>
<el-input :value="info.currentUnit.name"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="新工会">
<el-input :value="info.currentUnion.unionname" disabled></el-input>
<el-input :value="info.currentUnion.unionname"
disabled></el-input>
</el-form-item>
</el-col>
</el-row>
@@ -248,7 +240,8 @@
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
<el-input type="textarea" v-model="formData.auditOpinion" rows="4"
maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
@@ -291,7 +284,8 @@
</el-tab-pane>
<el-tab-pane label="校工会审核" name="school"
v-if="info.unionAudit">
<el-form class="demo-table-expand" :model="formData" ref="form" :rules="formRules"
<el-form class="demo-table-expand" :model="formData" ref="form"
:rules="formRules"
label-width="120px" label-suffix=":">
<vi-title title="审核信息"></vi-title>
@@ -302,23 +296,27 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="原单位">
<el-input :value="info.originUnit.name" disabled></el-input>
<el-input :value="info.originUnit.name"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="原工会">
<el-input :value="info.originUnion.unionname" disabled></el-input>
<el-input :value="info.originUnion.unionname"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="新单位">
<el-input :value="info.currentUnit.name" disabled></el-input>
<el-input :value="info.currentUnit.name"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="新工会">
<el-input :value="info.currentUnion.unionname" disabled></el-input>
<el-input :value="info.currentUnion.unionname"
disabled></el-input>
</el-form-item>
</el-col>
</el-row>
@@ -339,12 +337,14 @@
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
<el-input type="textarea" v-model="formData.auditOpinion" rows="4"
maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
<div style="float: right;margin: 20px 0">
<el-button @click="doAudit(false)" type="danger" :loading="submitLoading">拒
<el-button @click="doAudit(false)" type="danger"
:loading="submitLoading">拒
绝
</el-button>
<el-button type="primary" @click="doAudit(true)"
@@ -390,6 +390,38 @@
</template>
</guava>
<el-dialog title="审核信息" :visible.sync="dialogVisible" width="40%" :close-on-click-modal="false">
<el-form class="demo-table-expand" :model="formData" ref="form" :rules="formRules"
label-width="120px" label-suffix=":">
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="batchDoAudit(false)">拒 绝</el-button>
<el-button type="primary" @click="batchDoAudit(true)">通 过</el-button>
</span>
</el-dialog>
<user-change-history ref="userChangeHistory"></user-change-history>
</div>
@@ -400,6 +432,8 @@
mixins: [initTableMixins],
data() {
return {
dialogVisible: false,
selection: [],
active: 'info',
submitLoading: false,
formRules: {},
@@ -415,7 +449,10 @@
unionGroupId: null,
source: source,
searchName: "u.username",
audit: 2
audit: 2,
changeTypes: [],
personTypes: [],
changeOrigins: []
},
units: [],
unions: [],
@@ -426,26 +463,62 @@
tableColumns: [
{prop: 'loginname', label: '工号', checked: true},
{prop: 'username', label: '姓名'},
{prop: 'MMobile', label: '联系电话'},
{prop: 'mobile', label: '联系电话'},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
{prop: 'unionGroupName', label: '工会小组', sortable: true, checked: 0},
// {prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
// {prop: 'unionGroupName', label: '工会小组', sortable: true, checked: 0},
{prop: 'type', label: '变更类型', sortable: true},
{prop: 'applyDate', label: '申请时间', sortable: true},
{prop: 'applyOrigin', label: '申请方式', sortable: true},
{prop: 'stateId', label: '状态', sortable: true},
],
isThreeUnit: null,
isThreeUnit: false,
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=1.0.2'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=' + new Date().getTime()),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=' + new Date().getTime()),
'user-change-history': httpVueLoader('/components/userChangeHistory/userChangeHistory.vue?v=' + new Date().getTime()),
},
methods: {
openUserChangeInfo({hisId}){
this.$refs.userChangeHistory.openUserChangeInfo(hisId)
},
async batchDoAudit(pass) {
const confirm = await this.$confirm('您确定要批量审核【' + this.selection.map(v => v.username) + '】吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if ('confirm' === confirm) {
this.formData.auditPass = pass
this.formData.recordIds = JSON.stringify(this.selection.map(v => v.id))
const resp = await $.post("/platform/member/change/audit/batchDoAudit", this.formData)
if (resp.code === 0) {
this.pageData()
this.dialogVisible = false
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
}
},
batchOpenAudit() {
if (this.pageForm.source === 2) {
this.active = 'school'
}
this.formData = {
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.dialogVisible = true
},
handleSelectionChange(row) {
this.selection = row
},
async doAudit(pass) {
if (!pass) {
const confirm = await this.$confirm('您确定要拒绝吗?', '提示', {
@@ -460,13 +533,13 @@
this.submitLoading = true
const resp = await $.post("/platform/member/change/audit/doAudit", this.formData)
this.submitLoading = false
if(resp.code===0){
if (resp.code === 0) {
//更新用户信息
this.info.userId = ""
this.pageData()
this.$refs.guava.index()
this.notifySuccess(resp.msg)
}else{
} else {
this.notifyWarning(resp.msg)
}
},
@@ -474,7 +547,7 @@
this.$set(row, "loading", true)
const resp = await $.get("/platform/member/common/findChangeApplyInfo", {id: row.id})
this.$set(row, "loading", false)
if(resp.code===0){
if (resp.code === 0) {
const data = resp.data
data.audit = audit
this.info = data
@@ -498,7 +571,7 @@
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
}else{
} else {
this.notifyWarning(resp.msg)
}
},
@@ -506,11 +579,17 @@
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
this.pageForm.date = JSON.stringify(this.pageForm.dateRange)
$.post("/platform/member/change/audit/pageData", this.pageForm, (data) => {
const pageForm = clone(this.pageForm)
pageForm.userStates = JSON.stringify(pageForm.userStates)
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
pageForm.changeTypes = JSON.stringify(pageForm.changeTypes)
pageForm.changeOrigins = JSON.stringify(pageForm.changeOrigins)
pageForm.date = JSON.stringify(pageForm.date)
$.post("/platform/member/change/audit/pageData", pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code == 0) {
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
@@ -533,18 +612,9 @@
}
},
async created() {
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
if (this.isThreeUnit) {
this.tableColumns.forEach(v => {
if (["threeUnitName", "unionGroupName"].includes(v.prop)) {
v.checked = 1
}
})
}
this.pageData();
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === 'true') {
this.unions = await getUnions(null, false)
} else {
this.unions = await getUnions(null, true)
@@ -436,7 +436,7 @@ layout("/layouts/platform.html"){
components: {
'member': httpVueLoader('/components/member/MemberInfo.vue?v=' + new Date().getTime()),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=' + new Date().getTime()),
'user-change-history': httpVueLoader('/components/userChangeHistory/UserChangeHistory.vue?v=' + new Date().getTime()),
'user-change-history': httpVueLoader('/components/userChangeHistory/userChangeHistory.vue?v=' + new Date().getTime()),
},
data() {
return {
@@ -21,9 +21,7 @@ layout("/layouts/platform.html"){
<div class="search-item-label">任务:</div>
<div class="search-item-option">
<el-select v-model="pageForm.taskId" style="width: 100%">
<el-option v-for="item in memberCheckTaskOptions"
:label="item.taskName"
:value="item.id"></el-option>
<el-option v-for="item in memberCheckTaskOptions" :label="item.taskName" :value="item.id"></el-option>
</el-select>
</div>
</div>
@@ -31,12 +29,14 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">职工信息:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 80px;">
<el-input
placeholder="请输入内容"
clearable
v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch"
>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型" style="width: 80px">
<el-option label="姓名" value="username"></el-option>
<el-option label="工号" value="loginname"></el-option>
</el-select>
@@ -44,31 +44,35 @@ layout("/layouts/platform.html"){
</div>
</div>
<div class="search-item"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}">
<div class="search-item" v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId"
style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
<el-select
placeholder="所属工会"
v-model="pageForm.unionId"
style="width: 100%"
clearable="true"
@change="flushUnits"
@clear="flushUnits"
filterable="true"
>
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
</div>
<div class="search-item"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}">
<div class="search-item" v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}">
<div class="search-item-label">组成单位:</div>
<div class="search-item-option">
<el-select placeholder="组成单位" v-model="pageForm.unitId" style="width: 100%;"
@change="getThreeUnits"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
<el-select
placeholder="组成单位"
v-model="pageForm.unitId"
style="width: 100%"
@change="getThreeUnits"
clearable="true"
filterable="true"
>
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
</div>
@@ -76,10 +80,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">性&emsp;&emsp;别:</div>
<div class="search-item-option">
<el-select v-model="pageForm.sex" style="width: 100%" clearable
placeholder="请选择">
<el-option v-for="sex in sexOptions" :label="sex"
:value="sex"></el-option>
<el-select v-model="pageForm.sex" style="width: 100%" clearable placeholder="请选择">
<el-option v-for="sex in sexOptions" :label="sex" :value="sex"></el-option>
</el-select>
</div>
</div>
@@ -87,48 +89,63 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userStates"
style="width: 100%"
multiple
clearable
placeholder="在职状态"
code="userState"></dict-select>
<dict-select
v-model="pageForm.userStates"
style="width: 100%"
multiple
clearable
placeholder="在职状态"
code="userState"
></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personTypes"
style="width: 100%"
multiple
clearable
placeholder="人员类型"
code="UserType"></dict-select>
<dict-select
v-model="pageForm.personTypes"
style="width: 100%"
multiple
clearable
placeholder="人员类型"
code="UserType"
></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select
v-model="pageForm.preparedBy"
style="width: 100%"
clearable
placeholder="人员类型"
code="PREPARED_BY"
></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">变更类型:</div>
<div class="search-item-option">
<enum-select v-model="pageForm.changeTypes"
enum="UserChangeType"
label="description"
multiple
value="code"
style="width: 100%"
clearable
placeholder="变更类型"
<enum-select
v-model="pageForm.changeTypes"
enum="UserChangeType"
label="description"
multiple
value="code"
style="width: 100%"
clearable
placeholder="变更类型"
></enum-select>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search"
@click="doSearch();getNumData();getUnionTaskStatus()">搜索
</el-button>
<el-button type="primary" icon="el-icon-search" @click="doSearch();getNumData();getUnionTaskStatus()">搜索</el-button>
</div>
</div>
</el-card>
@@ -136,16 +153,19 @@ layout("/layouts/platform.html"){
<table-tool label="人员列表" :app="this">
<template #func>
<!-- <span class="text-danger">人员信息是否异动:</span>-->
<el-select v-model="pageForm.isMember" @change="doSearch();getNumData()"
:clearable="false" size="small"
style="width: 200px;margin-right: 5px">
<el-select
v-model="pageForm.isMember"
@change="doSearch();getNumData()"
:clearable="false"
size="small"
style="width: 200px; margin-right: 5px"
>
<el-option label="全部" value=""></el-option>
<el-option label="是会员" value="1"></el-option>
<el-option label="不是会员" value="0"></el-option>
</el-select>
<el-radio-group v-model="pageForm.changed" @change="doSearch" class="mr5"
size="small">
<el-radio-group v-model="pageForm.changed" @change="doSearch" class="mr5" size="small">
<el-radio-button label="">全部({{numData.userSumNum}})</el-radio-button>
<el-radio-button :label="1">有变化({{numData.changeNum}})</el-radio-button>
<el-radio-button :label="0">无变化({{numData.notChangeNum}})</el-radio-button>
@@ -174,20 +194,20 @@ layout("/layouts/platform.html"){
<!-- </el-dropdown-menu>-->
<!-- </el-dropdown>-->
<el-button icon="el-icon-success" size="small" type="primary"
@click="submitCheck"
:disabled="unionTaskStatus || !allowOperationTask">
<el-button
icon="el-icon-success"
size="small"
type="primary"
@click="submitCheck"
:disabled="unionTaskStatus || !allowOperationTask"
>
全部核对完成,提交核对
</el-button>
<el-button v-if="unionTaskStatus" type="primary" size="small"
@click="checkAgain">
重新核对
</el-button>
<el-button v-if="unionTaskStatus" type="primary" size="small" @click="checkAgain">重新核对</el-button>
<el-button icon="el-icon-printer" class="m10" type="primary"
style="float: right"
size="small" @click="doExportByUnion">导出
<el-button icon="el-icon-printer" class="m10" type="primary" style="float: right" size="small" @click="doExportByUnion">
导出
</el-button>
<!-- <el-button :disabled="!checkUsers.length" type="primary" size="small"-->
@@ -195,72 +215,79 @@ layout("/layouts/platform.html"){
<!-- @click="openUnitMove" class="ml5">-->
<!-- 单位调整-->
<!-- </el-button>-->
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tableLoading" :size="tableSize" class="vi-table" ref="table"
@selection-change="tableHandleSelectionChange">
<el-table
:data="tableData"
style="width: 100%"
row-key="id"
@sort-change="pageOrder"
v-loading="tableLoading"
:size="tableSize"
class="vi-table"
ref="table"
@selection-change="tableHandleSelectionChange"
>
<!-- <el-table-column type="selection" :reserve-selection="true"></el-table-column>-->
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号" width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
>
</el-table-column>
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
></el-table-column>
<el-table-column label="异动信息" header-align="center">
<el-table-column label="更新时间" prop="changeTime" min-width="145px"
header-align="center" sortable
align="center" show-overflow-tooltip>
</el-table-column>
<el-table-column label="异动类型" prop="changeTypes" header-align="center"
align="center" show-overflow-tooltip sortable>
<el-table-column
label="更新时间"
prop="changeTime"
min-width="145px"
header-align="center"
sortable
align="center"
show-overflow-tooltip
></el-table-column>
<el-table-column label="异动类型" prop="changeTypes" header-align="center" align="center" show-overflow-tooltip sortable>
<template scope="{row}">
<span style="color: #0e78c5;cursor: pointer" @click="openUserChangeInfo(row)">
{{getChangeTypes(row.changeTypes)}}
</span>
<span style="color: #0e78c5; cursor: pointer" @click="openUserChangeInfo(row)">{{getChangeTypes(row.changeTypes)}}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="会员" header-align="center" align="center" prop="member"
show-overflow-tooltip sortable>
<el-table-column label="会员" header-align="center" align="center" prop="member" show-overflow-tooltip sortable>
<template scope="{row}">
<span v-if="row.member==1" class="text-success ">
<i class="fa fa-circle ml5"></i> 是
</span>
<span v-if="row.member==1" class="text-success">
<i class="fa fa-circle ml5"></i>
是
</span>
<span v-else class="text-danger">
<i class="fa fa-circle ml5"></i> 否
</span>
<i class="fa fa-circle ml5"></i>
否
</span>
</template>
</el-table-column>
<el-table-column label="变更状态" header-align="center" align="center"
prop="welfareMember"
show-overflow-tooltip sortable>
<el-table-column label="变更状态" header-align="center" align="center" prop="welfareMember" show-overflow-tooltip sortable>
<template scope="{row}">
<vi-table-state v-if="row.stateId" :state="row"></vi-table-state>
<vi-table-state v-else
:state="{stateColor:'#1890ff',stateName:'暂无'}"></vi-table-state>
<vi-table-state v-else :state="{stateColor:'#1890ff',stateName:'暂无'}"></vi-table-state>
</template>
</el-table-column>
<el-table-column header-align="center" label="操作" width="200px">
<template scope="{row}">
<el-button size="mini" type="primary" @click="openCheck(row)"
:disabled="!(row.apply||row.reApply) || unionTaskStatus || !allowOperationTask">
<el-button
size="mini"
type="primary"
@click="openCheck(row)"
:disabled="!(row.apply||row.reApply) || unionTaskStatus || !allowOperationTask"
>
核对
</el-button>
</template>
@@ -270,9 +297,7 @@ layout("/layouts/platform.html"){
</el-card>
<template #edit>
<mem-change-apply ref="apply" :userid="userId"
@submit="doSubmitChangeUser"
change_mode="check"></mem-change-apply>
<mem-change-apply ref="apply" :userid="userId" @submit="doSubmitChangeUser" change_mode="check"></mem-change-apply>
</template>
<template #public>
@@ -280,43 +305,39 @@ layout("/layouts/platform.html"){
</template>
<user-change-history ref="userChangeHistory"></user-change-history>
</guava>
<el-drawer
title="添加会员"
:visible.sync="selectUserVisible"
:before-close="handleClose" size="1200px">
<el-drawer title="添加会员" :visible.sync="selectUserVisible" :before-close="handleClose" size="1200px">
<member-user-select
v-model="selectUsers"
ref="userSelect"
:page_size="10"
:is_ghxzzz="is_ghxzzz"
:sql_cnd="['(u.member is null or u.member = 0) and (c.taskId is null OR c.stateId=70)']"
></member-user-select>
<member-user-select v-model="selectUsers" ref="userSelect" :page_size="10"
:is_ghxzzz="is_ghxzzz"
:sql_cnd="['(u.member is null or u.member = 0) and (c.taskId is null OR c.stateId=70)']"></member-user-select>
<span style="position: absolute;bottom: 20px;right: 20px">
<el-button @click="selectUserVisible = false"
:disabled="selectUserLoading">取 消</el-button>
<el-button type="primary" @click="doBatchJoinMember"
:loading="selectUserLoading">确定</el-button>
<span style="position: absolute; bottom: 20px; right: 20px">
<el-button @click="selectUserVisible = false" :disabled="selectUserLoading">取 消</el-button>
<el-button type="primary" @click="doBatchJoinMember" :loading="selectUserLoading">确定</el-button>
</span>
</el-drawer>
<user-change-history ref="userChangeHistory"></user-change-history>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [initTableMixins],
components: {
'mem-change-apply': httpVueLoader('/components/member/MemChangeApply.vue?v=' + new Date().getTime()),
'member-user-select': httpVueLoader('/components/plugins/MemberUserTableSelect.vue?v=' + new Date().getTime()),
'user-change-history': httpVueLoader('/components/userChangeHistory/UserChangeHistory.vue?v=' + new Date().getTime()),
"mem-change-apply": httpVueLoader("/components/member/MemChangeApply.vue?v=" + new Date().getTime()),
"member-user-select": httpVueLoader("/components/plugins/MemberUserTableSelect.vue?v=" + new Date().getTime()),
"user-change-history": httpVueLoader("/components/userChangeHistory/userChangeHistory.vue?v=" + new Date().getTime())
},
computed: {
allowOperationTask() {
const {taskId} = this.pageForm
const { taskId } = this.pageForm
if (taskId) {
const task = this.memberCheckTaskOptions.find(v => v.id === taskId)
const task = this.memberCheckTaskOptions.find((v) => v.id === taskId)
const startTime = moment(task.startTime).valueOf()
const endTime = moment(task.endTime).valueOf()
const nowDate = Date.now()
@@ -334,33 +355,31 @@ layout("/layouts/platform.html"){
unions: [],
units: [],
tableColumns: [
{prop: 'loginname', label: '工号', sortable: true},
{prop: 'username', label: '姓名', sortable: true},
{prop: 'sex', label: '性别', sortable: true, width: '100px'},
{prop: 'birthday', label: '出生年月', sortable: true},
{prop: 'personType', label: '人员类型', sortable: true},
{prop: 'userState', label: '在职状态', sortable: true},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{ prop: "loginname", label: "工号", sortable: true },
{ prop: "username", label: "姓名", sortable: true },
{ prop: "sex", label: "性别", sortable: true, width: "100px" },
{ prop: "birthday", label: "出生年月", sortable: true },
{ prop: "userState", label: "在职状态", sortable: true },
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionname", label: "所属工会", sortable: true },
{ prop: "unitname", label: "所属单位", sortable: true }
// {prop: 'threeUnitName', label: '所在科室', sortable: true},
// {prop: 'unionGroupName', label: '工会小组', sortable: true},
],
pageForm: {
year: new Date().getFullYear() + '',
searchName: 'username',
changed: '',
isMember: '1',
unionId: '',
unitId: '',
unionGroupId: '',
year: new Date().getFullYear() + "",
searchName: "username",
changed: "",
isMember: "1",
unionId: "",
unitId: "",
unionGroupId: "",
changeTypes: [],
personTypes: [],
changeOrigins: []
},
sexOptions: ['男', '女'],
sexOptions: ["男", "女"],
memberCheckTaskOptions: [],
changeType: {},
@@ -371,7 +390,7 @@ layout("/layouts/platform.html"){
notChangeNum: 0,
userSumNum: 0,
memberNum: 0,
notMemberNum: 0,
notMemberNum: 0
},
selectUserVisible: false,
selectUsers: [],
@@ -380,45 +399,54 @@ layout("/layouts/platform.html"){
unitMoveUnions: [],
unitMoveUnits: [],
unitMoveFormData: {
unitId: '',
unionId: '',
unitName: '',
unionName: ''
unitId: "",
unionId: "",
unitName: "",
unionName: ""
},
checkUsers: [],
checkUsers: []
}
},
methods: {
async openUserChangeInfo({hisId, changeTypes}) {
async openUserChangeInfo({ hisId, changeTypes }) {
this.$refs.userChangeHistory.openUserChangeInfo(hisId, changeTypes)
},
getChangeTypes(changeTypes) {
if (changeTypes) {
const c = JSON.parse(changeTypes)
return c.map(v => {
return this.changeType[v]
}).join(',')
return c
.map((v) => {
return this.changeType[v]
})
.join(",")
}
return null
},
doExportByUnion() {
let props = {}
this.tableColumns.forEach(v => {
this.tableColumns.forEach((v) => {
props[v.prop] = v.label
})
const {unionId, unitId, unionGroupId, year} = this.pageForm
window.open("/platform/member/inquire/integrate/doExportByUnion?=unitId=" + unitId
+ "&unionId=" + unionId
+ "&year=" + year
+ "&unionGroupId=" + unionGroupId
+ "&props=" + JSON.stringify(props))
const { unionId, unitId, unionGroupId, year } = this.pageForm
window.open(
"/platform/member/inquire/integrate/doExportByUnion?=unitId=" +
unitId +
"&unionId=" +
unionId +
"&year=" +
year +
"&unionGroupId=" +
unionGroupId +
"&props=" +
JSON.stringify(props)
)
},
async afterEdit(memData) {
if (!this.userId) {
await $.post(" /platform/member/info/make/joinMemberFamily", memData)
}
this.userId = ''
this.userId = ""
this.pageData()
this.$refs.guava.index()
},
@@ -433,15 +461,15 @@ layout("/layouts/platform.html"){
if (threeUnitId) {
aa = true
}
this.$confirm('您确定将选择的用户加入会员' + (aa ? "并修改单位和科室?" : "?"))
.then(async _ => {
this.$confirm("您确定将选择的用户加入会员" + (aa ? "并修改单位和科室?" : "?"))
.then(async (_) => {
this.selectUserLoading = true
const resp = await $.post("/platform/member/change/mange/joinWelfareMember", {
userIds: JSON.stringify(this.selectUsers),
taskId: this.pageForm.taskId,
unitId: unitId,
threeUnitId: threeUnitId,
});
threeUnitId: threeUnitId
})
this.selectUserLoading = false
if (resp.code === 0) {
this.pageData()
@@ -451,19 +479,16 @@ layout("/layouts/platform.html"){
this.notifyWarning(resp.msg)
}
})
.catch(_ => {
});
.catch((_) => {})
},
pushDropdownCommand({type}) {
if (type == 'select') {
pushDropdownCommand({ type }) {
if (type == "select") {
this.selectUsers = []
this.selectUserVisible = true
this.$nextTick(() => {
this.$refs.userSelect.init()
})
} else if (type == 'add') {
} else if (type == "add") {
this.userId = ""
this.$refs.guava.public()
if (!this.userId) {
@@ -475,80 +500,79 @@ layout("/layouts/platform.html"){
openUnitMove() {
this.unitMoveVisibile = true
this.unitMoveFormData = {
unitId: '',
unionId: '',
unitName: '',
unionName: ''
unitId: "",
unionId: "",
unitName: "",
unionName: ""
}
},
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
this.$confirm("确认关闭?")
.then((_) => {
done()
})
.catch(_ => {
});
.catch((_) => {})
},
async moveUnionsChange(val) {
if (val) {
this.unitMoveUnits = await getUnits(val)
this.$set(this.unitMoveFormData, 'unionName', this.unitMoveUnions.find(v => v.id === val).unionname)
this.$set(this.unitMoveFormData, 'unitId', '')
this.$set(this.unitMoveFormData, 'unitName', '')
this.$set(this.unitMoveFormData, "unionName", this.unitMoveUnions.find((v) => v.id === val).unionname)
this.$set(this.unitMoveFormData, "unitId", "")
this.$set(this.unitMoveFormData, "unitName", "")
} else {
this.$set(this.unitMoveFormData, 'unitId', '')
this.$set(this.unitMoveFormData, 'unitName', '')
this.$set(this.unitMoveFormData, 'unionName', '')
this.$set(this.unitMoveFormData, "unitId", "")
this.$set(this.unitMoveFormData, "unitName", "")
this.$set(this.unitMoveFormData, "unionName", "")
this.unitMoveUnits = []
}
},
async moveUnitChange(val) {
if (val) {
this.$set(this.unitMoveFormData, 'unitName', this.unitMoveUnits.find(v => v.id === val).name)
this.$set(this.unitMoveFormData, "unitName", this.unitMoveUnits.find((v) => v.id === val).name)
} else {
this.$set(this.unitMoveFormData, 'unitName', '')
this.$set(this.unitMoveFormData, "unitName", "")
}
if (val) {
this.threeUnits = await threeUnitsByUnionGroupOrUnitId(val, null)
}
},
async doUnitMove() {
if (this.unitMoveFormData.unitId === '') {
this.notifyWarning('请选择新单位!')
if (this.unitMoveFormData.unitId === "") {
this.notifyWarning("请选择新单位!")
return
}
if (this.unitMoveFormData.threeUnitId === '') {
this.notifyWarning('请选择新科室!')
if (this.unitMoveFormData.threeUnitId === "") {
this.notifyWarning("请选择新科室!")
return
}
const params = {
unitId: this.unitMoveFormData.unitId,
threeUnitId: this.unitMoveFormData.threeUnitId,
userId: this.checkUsers.map(v => v.id)
userId: this.checkUsers.map((v) => v.id)
}
const resp = await $.post('/platform/member/change/mange/userUnitMove', params)
const resp = await $.post("/platform/member/change/mange/userUnitMove", params)
if (resp.code === 0) {
this.pageData()
await this.getNumData()
this.$refs.table.clearSelection();
this.$refs.table.clearSelection()
this.unitMoveVisibile = false
} else {
this.notifyWarning(resp.msg)
}
},
tableHandleSelectionChange(val) {
this.checkUsers = val;
this.checkUsers = val
},
async threeUnitChange(val) {
if (val) {
const threeUnit = this.threeUnits.find(v => v.id === val)
const threeUnit = this.threeUnits.find((v) => v.id === val)
const groupName = threeUnit.groupname
this.$set(this.unitMoveFormData, 'threeUnitName', threeUnit.name)
this.$set(this.unitMoveFormData, 'unionGroupName', groupName)
this.$set(this.unitMoveFormData, "threeUnitName", threeUnit.name)
this.$set(this.unitMoveFormData, "unionGroupName", groupName)
} else {
this.$set(this.unitMoveFormData, 'unionGroupName', null)
this.$set(this.unitMoveFormData, "unionGroupName", null)
}
},
async getThreeUnits() {
@@ -565,7 +589,7 @@ layout("/layouts/platform.html"){
*/
async doSubmitChangeUser(formData) {
formData.taskId = this.pageForm.taskId
const resp = await $.post(loc() + '/doSubmitChangeUser', formData)
const resp = await $.post(loc() + "/doSubmitChangeUser", formData)
this.$refs.apply.closeLoading()
if (resp.code === 0) {
this.$message.success(resp.msg)
@@ -586,14 +610,14 @@ layout("/layouts/platform.html"){
this.notifyWarning("请选择需要核对的分工会!")
return
}
const confirm = await this.$confirm('此操作会提交至校工会确认,请确认核对完成了吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
const confirm = await this.$confirm("此操作会提交至校工会确认,请确认核对完成了吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
if ('confirm' !== confirm) return
const {taskId} = this.pageForm
const resp = await $.post(loc() + '/submitCheck', this.pageForm)
if ("confirm" !== confirm) return
const { taskId } = this.pageForm
const resp = await $.post(loc() + "/submitCheck", this.pageForm)
if (resp.code === 0) {
this.doSearch()
this.notifySuccess(resp.msg)
@@ -604,34 +628,32 @@ layout("/layouts/platform.html"){
},
async getMemberCheckTaskOptions() {
const resp = await $.get('/platform/member/check/task/getAllTask')
const resp = await $.get("/platform/member/check/task/getAllTask")
this.memberCheckTaskOptions = resp.data
if (this.memberCheckTaskOptions.length) {
this.$set(this.pageForm, 'taskId', this.memberCheckTaskOptions[0].id)
this.$set(this.pageForm, "taskId", this.memberCheckTaskOptions[0].id)
}
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === "true") {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
this.unionGroups = await unionGroupsByUnionId(this.pageForm.unionId)
},
async getChangeType() {
const changeType = {}
const changeTypeOptions = await getEnumOptions("UserChangeType")
changeTypeOptions.forEach(v => {
changeTypeOptions.forEach((v) => {
changeType[v.code] = v.description
})
return changeType
},
async getUnionTaskStatus() {
const {taskId} = this.pageForm
const resp = await $.get(loc() + '/getUnionTaskStatus', this.pageForm)
const { taskId } = this.pageForm
const resp = await $.get(loc() + "/getUnionTaskStatus", this.pageForm)
if (resp.code === 0) {
this.unionTaskStatus = resp.data
}
@@ -641,15 +663,15 @@ layout("/layouts/platform.html"){
this.notifyWarning("请选择需要重新核对的工会!")
return
}
const confirm = await this.$confirm('您确定要重新核对吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
const confirm = await this.$confirm("您确定要重新核对吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
if ('confirm' !== confirm) return
if ("confirm" !== confirm) return
const {taskId} = this.pageForm
const resp = await $.get(loc() + '/checkAgain', this.pageForm)
const { taskId } = this.pageForm
const resp = await $.get(loc() + "/checkAgain", this.pageForm)
if (resp.code === 0) {
this.getUnionTaskStatus()
}
@@ -660,7 +682,7 @@ layout("/layouts/platform.html"){
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
pageForm.changeTypes = JSON.stringify(pageForm.changeTypes)
pageForm.changeOrigins = JSON.stringify(pageForm.changeOrigins)
const resp = await $.post(loc() + '/getButtonNum', pageForm)
const resp = await $.post(loc() + "/getButtonNum", pageForm)
if (resp.code === 0) {
this.numData = resp.data
} else {
@@ -669,35 +691,38 @@ layout("/layouts/platform.html"){
},
pageData() {
sublime.showLoadingbar();
sublime.showLoadingbar()
this.tableLoading = true
const pageForm = clone(this.pageForm)
pageForm.userStates = JSON.stringify(pageForm.userStates)
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
pageForm.changeTypes = JSON.stringify(pageForm.changeTypes)
pageForm.changeOrigins = JSON.stringify(pageForm.changeOrigins)
$.post(loc() + '/pageData', pageForm, (data) => {
sublime.closeLoadingbar();
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");
},
$.post(
loc() + "/pageData",
pageForm,
(data) => {
sublime.closeLoadingbar()
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"
)
}
},
async created() {
await this.getMemberCheckTaskOptions()
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('H03')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'false') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('H03')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === "false") {
this.unions = await getUnions(null, true)
this.is_ghxzzz = true
this.$set(this.pageForm, "unionId", this.unions[0].id)
} else {
this.unions = await getUnions(null, false)
}
this.flushUnits()
@@ -18,7 +18,8 @@ layout("/layouts/platform.html"){
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="username"></el-option>
<el-option label="工号" value="loginname"></el-option>
@@ -30,11 +31,13 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
<el-select placeholder="所属工会" v-model="pageForm.unionId"
style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
</div>
@@ -42,17 +45,18 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
<el-select placeholder="所属单位" v-model="pageForm.unitId"
style="width: 100%;"
@change="getThreeUnits"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
</div>
<template v-if="searchMore">
<template v-if="isThreeUnit">
<div class="search-item">
<div class="search-item-label">工会小组:</div>
@@ -75,7 +79,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable
<el-select v-model="pageForm.threeUnitId" style="width: 100%"
filterable
clearable
placeholder="请选择">
<el-option
@@ -92,7 +97,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personType" style="width: 100%" clearable
<dict-select v-model="pageForm.personType" style="width: 100%"
clearable
placeholder="人员类型"
code="UserType"></dict-select>
</div>
@@ -101,7 +107,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userState" style="width: 100%" clearable
<dict-select v-model="pageForm.userState" style="width: 100%"
clearable
placeholder="在职状态"
code="UserState"></dict-select>
</div>
@@ -118,7 +125,8 @@ layout("/layouts/platform.html"){
</template>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
<more v-model="searchMore"></more>
</div>
@@ -129,17 +137,21 @@ layout("/layouts/platform.html"){
<el-card shadow="never" class="mt10">
<table-tool label="非会员用户列表" :app="this">
<template #func>
<el-button icon="el-icon-document-add" type="primary" size="small" :loading="submitLoading"
<el-button icon="el-icon-document-add" type="primary" size="small"
:loading="submitLoading"
@click="exportNotMember">导出
</el-button>
<el-button icon="el-icon-s-promotion" type="primary" size="small" :loading="submitLoading"
<el-button icon="el-icon-s-promotion" type="primary" size="small"
:loading="submitLoading"
@click="joinMemberFamily">批量设置
</el-button>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tableLoading" ref="table" @selection-change="handleSelectionChange"
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder"
v-loading="tableLoading" ref="table"
@selection-change="handleSelectionChange"
:size="tableSize" class="vi-table">
<el-table-column :reserve-selection="true"
type="selection"
@@ -158,12 +170,14 @@ layout("/layouts/platform.html"){
<template v-if="column.prop=='type'" scope="{row:{type}}">
{{changeType[type]}}
</template>
<template v-else-if="column.prop=='applyOrigin'" scope="{row:{applyOrigin}}">
<template v-else-if="column.prop=='applyOrigin'"
scope="{row:{applyOrigin}}">
{{changeOrigin[applyOrigin]}}
</template>
<template v-else-if="column.prop=='stateId'" scope="{row}">
<vi-table-state v-if="row.stateId" :state="row"></vi-table-state>
<vi-table-state v-else :state="{stateColor:'#1890ff',stateName:'暂无'}"></vi-table-state>
<vi-table-state v-else
:state="{stateColor:'#1890ff',stateName:'暂无'}"></vi-table-state>
</template>
<template v-else-if="column.prop==='unitname'" scope="{row}">
{{isDisPlayCode?'('+row.unitcode+')':null}}{{row.unitname}}
@@ -173,7 +187,8 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作"
width="100px">
<template scope="scope">
<el-dropdown @command="dropdownCommand">
@@ -226,8 +241,6 @@ layout("/layouts/platform.html"){
mixins: [initTableMixins],
data() {
return {
active: 'info',
submitLoading: false,
pageForm: {
searchName: "username",
},
@@ -235,7 +248,10 @@ layout("/layouts/platform.html"){
userId: "",
unions: [],
units: [],
active: 'info',
selection: [],
submitLoading: false,
tableColumns: [
{prop: 'loginname', label: '工号'},
{prop: 'username', label: '姓名'},
@@ -247,15 +263,13 @@ layout("/layouts/platform.html"){
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
{prop: 'unionGroupName', label: '工会小组', sortable: true, checked: 0},
{prop: 'campusName', label: '所属校区', sortable: true},
// {prop: 'campusName', label: '所属校区', sortable: true},
],
isThreeUnit:null,
isThreeUnit: false,
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=' + new Date().getTime())
},
methods: {
@@ -352,8 +366,9 @@ layout("/layouts/platform.html"){
}
})
}
this.pageData();
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === 'true') {
this.unions = await getUnions(null, false)
} else {
this.unions = await getUnions(null, true)
@@ -44,7 +44,8 @@ layout("/layouts/platform.html"){
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="username"></el-option>
<el-option label="工号" value="loginname"></el-option>
@@ -56,11 +57,13 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
<el-select placeholder="所属工会" v-model="pageForm.unionId"
style="width: 100%;"
clearable
@change="flushUnits" @clear="flushUnits"
filterable>
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
</div>
@@ -68,115 +71,20 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
<el-select placeholder="所属单位" v-model="pageForm.unitId"
style="width: 100%;"
@change="getThreeUnits"
clearable
filterable>
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
</div>
<template v-if="searchMore">
<template v-if="isThreeUnit">
<div class="search-item">
<div class="search-item-label">工会小组:</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionGroupId" style="width: 100%"
filterable
clearable
@change="getThreeUnits"
placeholder="请选择">
<el-option
v-for="item in unionGroups"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable
clearable
placeholder="请选择">
<el-option
v-for="item in threeUnits"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<!--<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personType" style="width: 100%" clearable
placeholder="人员类型"
code="UserType"></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userState" style="width: 100%" clearable
placeholder="在职状态"
code="UserState"></dict-select>
</div>
</div>-->
<div class="search-item">
<div class="search-item-label">性&emsp;&emsp;别:</div>
<div class="search-item-option">
<el-select v-model="pageForm.sex" style="width: 100%" clearable
placeholder="请选择">
<el-option v-for="sex in sexOptions" :label="sex" :value="sex"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">职&emsp;&emsp;务:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.position"
@keyup.enter.native="doSearch">
</el-input>
</div>
</div>
<div class="search-item">
<div class="search-item-label">职&emsp;&emsp;称:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.jobTitle"
@keyup.enter.native="doSearch">
</el-input>
</div>
</div>
<!-- <div class="search-item">
<div class="search-item-label">会员状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.memberStatus" style="width: 100%" clearable
placeholder="会员状态" code="memberStatusText"></dict-select>
</div>
</div>-->
</template>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
<more v-model="searchMore"></more>
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
</div>
</div>
</el-card>
@@ -196,7 +104,8 @@ layout("/layouts/platform.html"){
{{ item.name }}
</el-tag>
<el-link type="danger" v-if="personTypeOptions.length&&pageForm.personTypes.length"
<el-link type="danger"
v-if="personTypeOptions.length&&pageForm.personTypes.length"
:underline="false"
@click="pageForm.personTypes=[];doSearch()">清空
</el-link>
@@ -217,7 +126,8 @@ layout("/layouts/platform.html"){
{{ item.name }}
</el-tag>
<el-link type="danger" v-if="userStateOptions.length&&pageForm.userStates.length"
<el-link type="danger"
v-if="userStateOptions.length&&pageForm.userStates.length"
:underline="false"
@click="pageForm.userStates=[];doSearch()">清空
</el-link>
@@ -237,19 +147,23 @@ layout("/layouts/platform.html"){
<el-card shadow="never" class="mt10">
<table-tool label="会员列表" :app="this">
<template #func>
<el-button type="primary" v-if="${@shiro.hasRole('sysadmin')}" size="small" icon="el-icon-time"
<el-button type="primary" v-if="${@shiro.hasRole('sysadmin')}" size="small"
icon="el-icon-time"
@click="openArchive"
>备份历史会员
</el-button>
<el-button type="primary" size="small" icon="el-icon-download" @click="exportMember">固定格式导出
<el-button type="primary" size="small" icon="el-icon-download"
@click="exportMember">固定格式导出
</el-button>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder"
v-loading="tableLoading" :size="tableSize" class="vi-table">
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
@@ -271,7 +185,9 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作" fixed="right">
<el-table-column prop="userOnline" align="center" header-align="center"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionAdmin')||@shiro.hasRole('SchoolUnionMemberAdmin')}"
label="操作" fixed="right">
<template scope="scope">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
@@ -283,18 +199,13 @@ layout("/layouts/platform.html"){
查看
</el-dropdown-item>
<el-dropdown-item
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
:command="{type:'edit',data:scope.row}">
<el-dropdown-item :command="{type:'edit',data:scope.row}">
编辑
</el-dropdown-item>
<!-- <el-dropdown-item v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" :command="{type:'delete',data:scope.row}">-->
<!-- <el-dropdown-item v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" :command="{type:'delete',data:scope.row}">-->
<!-- 删除-->
<!-- </el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
</template>
@@ -386,6 +297,7 @@ layout("/layouts/platform.html"){
{prop: 'jobTitle', label: '职称', sortable: true, checked: 0},
{prop: 'personType', label: '人员类型', sortable: true},
{prop: 'userState', label: '在职状态', sortable: true},
{prop: 'political', label: '政治面貌', sortable: true},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
@@ -409,15 +321,13 @@ layout("/layouts/platform.html"){
);
}
},
isThreeUnit: null,
isThreeUnit: false,
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=1.0.2'),
'member-cnd': httpVueLoader('/components/member/MemberCnd.vue'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=' + new Date().getTime()),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=' + new Date().getTime()),
'member-cnd': httpVueLoader('/components/member/MemberCnd.vue?v=' + new Date().getTime())
},
methods: {
checkUserStateType(state) {
@@ -570,8 +480,10 @@ layout("/layouts/platform.html"){
}
})
}
this.pageData();
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === 'true') {
this.unions = await getUnions(null, false)
} else {
this.unions = await getUnions(null, true)
@@ -19,7 +19,8 @@ layout("/layouts/platform.html"){
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="username"></el-option>
<el-option label="工号" value="loginname"></el-option>
@@ -32,11 +33,13 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
<el-select placeholder="所属工会" v-model="pageForm.unionId"
style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
</div>
@@ -44,54 +47,61 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
<el-select placeholder="所属单位" v-model="pageForm.unitId"
style="width: 100%;"
@change="getThreeUnits"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
</div>
<template v-if="searchMore">
<div class="search-item">
<div class="search-item-label">工会小组:</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionGroupId" style="width: 100%"
filterable
clearable
@change="getThreeUnits"
placeholder="请选择">
<el-option
v-for="item in unionGroups"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<template v-if="isThreeUnit">
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable
clearable
placeholder="请选择">
<el-option
v-for="item in threeUnits"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">工会小组:</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionGroupId" style="width: 100%"
filterable
clearable
@change="getThreeUnits"
placeholder="请选择">
<el-option
v-for="item in unionGroups"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%"
filterable
clearable
placeholder="请选择">
<el-option
v-for="item in threeUnits"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personType" style="width: 100%" clearable
<dict-select v-model="pageForm.personType" style="width: 100%"
clearable
placeholder="人员类型"
code="UserType"></dict-select>
</div>
@@ -100,7 +110,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userState" style="width: 100%" clearable
<dict-select v-model="pageForm.userState" style="width: 100%"
clearable
placeholder="在职状态"
code="UserState"></dict-select>
</div>
@@ -109,15 +120,18 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">会员状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.memberStatus" style="width: 100%" clearable
placeholder="会员状态" code="memberStatusText"></dict-select>
<dict-select v-model="pageForm.memberStatus" style="width: 100%"
clearable
placeholder="会员状态"
code="memberStatusText"></dict-select>
</div>
</div>
</template>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
<more v-model="searchMore"></more>
</div>
@@ -128,13 +142,17 @@ layout("/layouts/platform.html"){
<el-card shadow="never" class="mt10">
<table-tool label="会员列表" :app="this">
<template #func>
<el-button icon="el-icon-plus" size="mini" @click="openAdd" type="primary">新增会员</el-button>
<el-button icon="el-icon-plus" size="mini" @click="openAdd" type="primary">
新增会员
</el-button>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder"
v-loading="tableLoading" :size="tableSize" class="vi-table">
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
@@ -149,12 +167,14 @@ layout("/layouts/platform.html"){
<template v-if="column.prop=='type'" scope="{row:{type}}">
{{changeType[type]}}
</template>
<template v-else-if="column.prop=='applyOrigin'" scope="{row:{applyOrigin}}">
<template v-else-if="column.prop=='applyOrigin'"
scope="{row:{applyOrigin}}">
{{changeOrigin[applyOrigin]}}
</template>
<template v-else-if="column.prop=='stateId'" scope="{row}">
<vi-table-state v-if="row.stateId" :state="row"></vi-table-state>
<vi-table-state v-else :state="{stateColor:'#1890ff',stateName:'暂无'}"></vi-table-state>
<vi-table-state v-else
:state="{stateColor:'#1890ff',stateName:'暂无'}"></vi-table-state>
</template>
<template v-else-if="column.prop==='unitname'" scope="{row}">
{{isDisPlayCode?'('+row.unitcode+')':null}}{{row.unitname}}
@@ -164,7 +184,8 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作"
width="100px">
<template scope="scope">
<el-dropdown @command="dropdownCommand">
@@ -226,7 +247,6 @@ layout("/layouts/platform.html"){
mixins: [initTableMixins],
data() {
return {
active: 'info',
submitLoading: false,
pageForm: {
searchName: "username",
@@ -245,17 +265,15 @@ layout("/layouts/platform.html"){
{prop: 'userState', label: '在职状态', sortable: true},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true},
{prop: 'unionGroupName', label: '工会小组', sortable: true},
{prop: 'campusName', label: '所属校区', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
{prop: 'unionGroupName', label: '工会小组', sortable: true, checked: 0},
],
isThreeUnit: false,
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=1.0.2'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=' + new Date().getTime()),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=' + new Date().getTime()),
},
methods: {
openAdd() {
@@ -274,9 +292,9 @@ layout("/layouts/platform.html"){
callback: async (a, b) => {
if ("confirm" == a) {//确认后再执行
const resp = await $.post(loc() + "/delete", {userId});
if(resp.code===0){
if (resp.code === 0) {
this.pageData()
}else{
} else {
this.notifyWarning(resp.msg)
}
}
@@ -332,8 +350,18 @@ layout("/layouts/platform.html"){
},
},
async created() {
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
if (this.isThreeUnit) {
this.tableColumns.forEach(v => {
if (["threeUnitName", "unionGroupName"].includes(v.prop)) {
v.checked = 1
}
})
}
this.pageData();
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === 'true') {
this.unions = await getUnions(null, false)
} else {
this.unions = await getUnions(null, true)
@@ -345,4 +373,4 @@ layout("/layouts/platform.html"){
</script>
<!--#
}
#-->
#-->
@@ -48,7 +48,7 @@ layout("/layouts/platform.html"){
return {}
},
components: {
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=' + new Date().getTime()),
},
methods: {},
async created() {
@@ -7,7 +7,7 @@ layout("/layouts/platform.html"){
}
.el-icon-close:before {
content: '取消';
content: "取消";
color: #f78989;
}
@@ -27,26 +27,33 @@ layout("/layouts/platform.html"){
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">姓名工号:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch">
</el-input>
<el-input
placeholder="请输入内容"
clearable
v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch"
></el-input>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
filterable="true">
<el-select
placeholder="所属工会"
v-model="pageForm.unionId"
style="width: 100%"
clearable="true"
@change="flushUnits"
@clear="flushUnits"
filterable="true"
>
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
@@ -55,32 +62,33 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
@change="getThreeUnits"
clearable="true"
filterable="true">
<el-select
placeholder="所属单位"
v-model="pageForm.unitId"
style="width: 100%"
@change="getThreeUnits"
clearable="true"
filterable="true"
>
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
</div>
<template v-if="searchMore">
<template v-if="isThreeUnit">
<div class="search-item">
<div class="search-item-label">工会小组:</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionGroupId" style="width: 100%"
filterable
clearable
@change="getThreeUnits"
placeholder="请选择">
<el-option
v-for="item in unionGroups"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
<el-select
v-model="pageForm.unionGroupId"
style="width: 100%"
filterable
clearable
@change="getThreeUnits"
placeholder="请选择"
>
<el-option v-for="item in unionGroups" :key="item.id" :label="item.groupName" :value="item.id"></el-option>
</el-select>
</div>
</div>
@@ -88,15 +96,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable
clearable
placeholder="请选择">
<el-option
v-for="item in threeUnits"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
<el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable clearable placeholder="请选择">
<el-option v-for="item in threeUnits" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
</div>
@@ -105,26 +106,52 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personType" style="width: 100%" clearable
placeholder="人员类型"
code="UserType"></dict-select>
<dict-select
v-model="pageForm.personType"
style="width: 100%"
clearable
placeholder="人员类型"
code="UserType"
></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userState" style="width: 100%" clearable
placeholder="在职状态"
code="UserState"></dict-select>
<dict-select
v-model="pageForm.userState"
style="width: 100%"
clearable
placeholder="在职状态"
code="UserState"
></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select
v-model="pageForm.userState"
style="width: 100%"
clearable
placeholder="在职状态"
code="UserState"
></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">会员状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.memberStatus" style="width: 100%" clearable
placeholder="会员状态" code="memberStatusText"></dict-select>
<dict-select
v-model="pageForm.memberStatus"
style="width: 100%"
clearable
placeholder="会员状态"
code="memberStatusText"
></dict-select>
</div>
</div>
</template>
@@ -137,19 +164,17 @@ layout("/layouts/platform.html"){
</el-card>
<el-card shadow="never" class="mt10">
<div class="search" style="position:relative;">
<div class="search" style="position: relative">
<div class="search-item">
<div class="search-item-label">工号开头:</div>
<div class="search-item-option">
<el-input v-model="pageForm.startLoginNames" maxLength="100"
placeholder="多个请用英文逗号分隔"></el-input>
<el-input v-model="pageForm.startLoginNames" maxLength="100" placeholder="多个请用英文逗号分隔"></el-input>
</div>
</div>
<div class="search-item">
<div class="search-item-label">工号结尾:</div>
<div class="search-item-option">
<el-input v-model="pageForm.endLoginNames" maxLength="100"
placeholder="多个请用英文逗号分隔"></el-input>
<el-input v-model="pageForm.endLoginNames" maxLength="100" placeholder="多个请用英文逗号分隔"></el-input>
</div>
</div>
@@ -157,21 +182,25 @@ layout("/layouts/platform.html"){
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<el-tag
style="margin-right: 10px;margin-bottom: 10px;cursor: pointer"
v-for="item in personTypeOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.personTypes.includes(item.name)?'dark':'plain'"
@click="tagClick('personTypes',item.name)">
style="margin-right: 10px; margin-bottom: 10px; cursor: pointer"
v-for="item in personTypeOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.personTypes.includes(item.name)?'dark':'plain'"
@click="tagClick('personTypes',item.name)"
>
{{ item.name }}
</el-tag>
<el-link type="danger" v-if="personTypeOptions.length&&pageForm.personTypes.length"
:underline="false"
@click="pageForm.personTypes=[];doSearch()">清空
<el-link
type="danger"
v-if="personTypeOptions.length&&pageForm.personTypes.length"
:underline="false"
@click="pageForm.personTypes=[];doSearch()"
>
清空
</el-link>
<el-link :underline="false"
@click="pageForm.personTypes=personTypeOptions.map(p=>p.code);doSearch()"
type="success">全部
<el-link :underline="false" @click="pageForm.personTypes=personTypeOptions.map(p=>p.code);doSearch()" type="success">
全部
</el-link>
</div>
</div>
@@ -180,70 +209,105 @@ layout("/layouts/platform.html"){
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<el-tag
style="margin-right: 10px;margin-bottom: 10px;cursor: pointer"
v-for="item in userStateOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.userStates.includes(item.name)?'dark':'plain'"
@click="tagClick('userStates',item.name)">
style="margin-right: 10px; margin-bottom: 10px; cursor: pointer"
v-for="item in userStateOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.userStates.includes(item.name)?'dark':'plain'"
@click="tagClick('userStates',item.name)"
>
{{ item.name }}
</el-tag>
<el-link type="danger" v-if="userStateOptions.length&&pageForm.userStates.length"
:underline="false"
@click="pageForm.userStates=[];doSearch()">清空
<el-link
type="danger"
v-if="userStateOptions.length&&pageForm.userStates.length"
:underline="false"
@click="pageForm.userStates=[];doSearch()"
>
清空
</el-link>
<el-link :underline="false"
@click="pageForm.userStates=userStateOptions.map(p=>p.code);doSearch()"
type="success">全部
<el-link :underline="false" @click="pageForm.userStates=userStateOptions.map(p=>p.code);doSearch()" type="success">
全部
</el-link>
</div>
</div>
<div class="search-query" style="position:absolute;right: 0;bottom: 0">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
<div class="search-item" style="width: calc(100% - 160px)">
<div class="search-item-label">人员性质:</div>
<div class="search-item-option">
<el-tag
style="margin-right: 10px; margin-bottom: 10px; cursor: pointer"
v-for="item in preparedByOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.preparedBys.includes(item.name)?'dark':'plain'"
@click="tagClick('preparedBys',item.name)"
>
{{ item.name }}
</el-tag>
<el-link
type="danger"
v-if="preparedByOptions.length&&pageForm.preparedBys.length"
:underline="false"
@click="pageForm.preparedBys=[];doSearch()"
>
清空
</el-link>
<el-link :underline="false" @click="pageForm.preparedBys=preparedByOptions.map(p=>p.code);doSearch()" type="success">
全部
</el-link>
</div>
</div>
<div class="search-query" style="position: absolute; right: 0; bottom: 0">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="会员列表" :app="this">
<table-tool label="人员列表" :app="this">
<template #func>
<el-button size="mini" @click="setBirthdayByIdCard" type="primary">
根据身份证设置生日
</el-button>
<el-button size="mini" @click="setBirthdayByIdCard" type="primary">根据身份证设置生日</el-button>
<el-tooltip content="温馨提醒:设置会员前,请事先更新基础数据" placement="top">
<el-button size="mini" @click="setMember" type="primary">
设置会员
</el-button>
<el-button size="mini" @click="setMember" type="primary">设置会员</el-button>
</el-tooltip>
<el-tooltip content="温馨提醒:设置福利会员前,请事先更新基础数据" placement="top">
<el-button size="mini" @click="setWelfareMember" type="primary">
设置福利会员
</el-button>
<el-button size="mini" @click="setWelfareMember" type="primary">设置福利会员</el-button>
</el-tooltip>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tableLoading" :size="tableSize" class="vi-table">
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table
:data="tableData"
style="width: 100%"
row-key="id"
@sort-change="pageOrder"
v-loading="tableLoading"
:size="tableSize"
class="vi-table"
>
<el-table-column
align="center"
header-align="center"
type="index"
:index="indexMethod"
label="序号"
width="80px"
></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
>
<template v-if="column.prop=='type'" scope="{row:{type}}">
{{changeType[type]}}
</template>
<template v-if="column.prop=='type'" scope="{row:{type}}">{{changeType[type]}}</template>
<template v-else-if="column.prop==='unitname'" scope="{row}">
{{isDisPlayCode?'('+row.unitcode+')':null}}{{row.unitname}}
</template>
@@ -251,25 +315,28 @@ layout("/layouts/platform.html"){
{{isDisPlayCode?'('+row.unioncode+')':null}}{{row.unionname}}
</template>
<template v-else-if="column.prop==='member'" scope="{row}">
<span v-if="row.member==1" class="text-success ">
<i class="fa fa-circle ml5"></i> 是
<span v-if="row.member==1" class="text-success">
<i class="fa fa-circle ml5"></i>
是
</span>
<span v-else class="text-danger">
<i class="fa fa-circle ml5"></i> 否
<i class="fa fa-circle ml5"></i>
否
</span>
</template>
<template v-else-if="column.prop==='welfareMember'" scope="{row}">
<span v-if="row.welfareMember==1" class="text-success ">
<i class="fa fa-circle ml5"></i> 是
<span v-if="row.welfareMember==1" class="text-success">
<i class="fa fa-circle ml5"></i>
是
</span>
<span v-else class="text-danger">
<i class="fa fa-circle ml5"></i> 否
<i class="fa fa-circle ml5"></i>
否
</span>
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
width="100px">
<el-table-column prop="userOnline" align="center" header-align="center" label="操作" width="100px">
<template scope="{row}">
<el-button size="mini" type="primary" @click="openView(row.id)">查看</el-button>
</template>
@@ -278,7 +345,6 @@ layout("/layouts/platform.html"){
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #view>
@@ -290,16 +356,13 @@ layout("/layouts/platform.html"){
<mem-change-records :userid="userId"></mem-change-records>
</el-tab-pane>
</el-tabs>
</template>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [initTableMixins],
data() {
return {
@@ -307,39 +370,39 @@ layout("/layouts/platform.html"){
pageForm: {
userStates: [],
personTypes: [],
preparedBys: []
},
userId: "",
unions: [],
units: [],
active: 'info',
active: "info",
tableColumns: [
{prop: 'loginname', label: '工号'},
{prop: 'username', label: '姓名'},
{prop: 'sex', label: '性别'},
{prop: 'personType', label: '人员类型', sortable: true},
{prop: 'userState', label: '在职状态', sortable: true},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
{prop: 'unionGroupName', label: '工会小组', sortable: true, checked: 0},
{prop: 'member', label: '是否会员', sortable: true},
{prop: 'welfareMember', label: '是否福利会员', sortable: true},
{prop: 'mobile', label: '联系电话'},
{prop: 'birthday', label: '生日'},
{prop: 'campusName', label: '所属校区', sortable: true, checked: 0},
{ prop: "loginname", label: "工号" },
{ prop: "username", label: "姓名" },
{ prop: "sex", label: "性别" },
{ prop: "userState", label: "在职状态", sortable: true },
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionname", label: "所属工会", sortable: true },
{ prop: "unitname", label: "所属单位", sortable: true },
{ prop: "threeUnitName", label: "所在科室", sortable: true, checked: 0 },
{ prop: "unionGroupName", label: "工会小组", sortable: true, checked: 0 },
{ prop: "member", label: "是否会员", sortable: true },
{ prop: "welfareMember", label: "是否福利会员", sortable: true },
{ prop: "mobile", label: "联系电话" },
{ prop: "birthday", label: "生日" }
// {prop: 'campusName', label: '所属校区', sortable: true},
],
setMemberDialogVisible: false,
personTypeOptions: [],
userStateOptions: [],
isThreeUnit:null,
preparedByOptions: [],
isThreeUnit: false
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=1.0.2'),
member: httpVueLoader("/components/member/MemberInfo.vue?v=" + new Date().getTime()),
"mem-change-records": httpVueLoader("/components/member/MemChangeRecords.vue?v=" + new Date().getTime())
},
methods: {
async pageData() {
@@ -348,7 +411,8 @@ layout("/layouts/platform.html"){
const pageForm = clone(this.pageForm)
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
pageForm.userStates = JSON.stringify(pageForm.userStates)
const {data, code, msg} = await $.post(loc() + '/pageData', pageForm)
pageForm.preparedBys = JSON.stringify(pageForm.preparedBys)
const { data, code, msg } = await $.post(loc() + "/pageData", pageForm)
this.tableLoading = false
sublime.closeLoadingbar()
if (code === 0) {
@@ -360,10 +424,10 @@ layout("/layouts/platform.html"){
},
setBirthdayByIdCard() {
this.$confirm('确定根据身份证设置生日吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
this.$confirm("确定根据身份证设置生日吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(async () => {
const resp = await $.post(loc() + "/setBirthdayByIdCard")
if (resp.code === 0) {
@@ -376,7 +440,7 @@ layout("/layouts/platform.html"){
},
tagClick(key, val) {
const index = this.pageForm[key].findIndex(v => v === val)
const index = this.pageForm[key].findIndex((v) => v === val)
if (index > -1) {
this.pageForm[key].splice(index, 1)
} else {
@@ -386,30 +450,37 @@ layout("/layouts/platform.html"){
},
async setMember() {
this.$confirm("<i class='el-icon-s-help' style='margin-right: 6px;'></i>" +
"如果先清空已有数据,后更新,请选择<span style='color: red'>更新</span>" +
"<span style='font-weight: bolder'>(这将清空目前所有的会员,请谨慎操作!)</span>" +
"<br/>" +
this.$confirm(
"<i class='el-icon-s-help' style='margin-right: 6px;'></i>" +
"如果追加或更新数据,请选择<span style='color: red'>追加</span>", '提示', {
confirmButtonText: '更新',
cancelButtonText: '追加',
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
cancelButtonClass: 'btnCancel',
type: 'warning'
}).then(async () => {
await this.setMemberDo(true)
}).catch(async action => {
if (action === 'cancel') {
await this.setMemberDo(false)
"如果先清空已有数据,后更新,请选择<span style='color: red'>更新</span>" +
"<span style='font-weight: bolder'>(这将清空目前所有的会员,请谨慎操作!)</span>" +
"<br/>" +
"<i class='el-icon-s-help' style='margin-right: 6px;'></i>" +
"如果追加或更新数据,请选择<span style='color: red'>追加</span>",
"提示",
{
confirmButtonText: "更新",
cancelButtonText: "追加",
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
cancelButtonClass: "btnCancel",
type: "warning"
}
})
)
.then(async () => {
await this.setMemberDo(true)
})
.catch(async (action) => {
if (action === "cancel") {
await this.setMemberDo(false)
}
})
},
async setMemberDo(confirm) {
const pageForm = clone(this.pageForm)
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
pageForm.userStates = JSON.stringify(pageForm.userStates)
pageForm.preparedBys = JSON.stringify(pageForm.preparedBys)
pageForm.confirm = confirm
const resp = await $.post(loc() + "/setMemberByCnd", pageForm)
if (resp.code === 0) {
@@ -420,25 +491,31 @@ layout("/layouts/platform.html"){
}
},
setWelfareMember() {
this.$confirm("<i class='el-icon-s-help' style='margin-right: 6px;'></i>" +
"如果先清空已有数据,后更新,请选择<span style='color: red'>更新</span>" +
"<span style='font-weight: bolder'>(这将清空目前所有的福利会员,请谨慎操作!)</span>" +
"<br/>" +
this.$confirm(
"<i class='el-icon-s-help' style='margin-right: 6px;'></i>" +
"如果追加或更新数据,请选择<span style='color: red'>追加</span>", '提示', {
confirmButtonText: '更新',
cancelButtonText: '追加',
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
cancelButtonClass: 'btnCancel',
type: 'warning'
}).then(async () => {
await this.setWelfareMemberDo(true)
}).catch(async action => {
if (action === 'cancel') {
await this.setWelfareMemberDo(false)
"如果先清空已有数据,后更新,请选择<span style='color: red'>更新</span>" +
"<span style='font-weight: bolder'>(这将清空目前所有的福利会员,请谨慎操作!)</span>" +
"<br/>" +
"<i class='el-icon-s-help' style='margin-right: 6px;'></i>" +
"如果追加或更新数据,请选择<span style='color: red'>追加</span>",
"提示",
{
confirmButtonText: "更新",
cancelButtonText: "追加",
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
cancelButtonClass: "btnCancel",
type: "warning"
}
})
)
.then(async () => {
await this.setWelfareMemberDo(true)
})
.catch(async (action) => {
if (action === "cancel") {
await this.setWelfareMemberDo(false)
}
})
},
async setWelfareMemberDo(confirm) {
const pageForm = clone(this.pageForm)
@@ -454,7 +531,7 @@ layout("/layouts/platform.html"){
}
},
openView(userId) {
this.active = 'info'
this.active = "info"
this.userId = userId
this.$refs.guava.view()
},
@@ -469,26 +546,27 @@ layout("/layouts/platform.html"){
this.units = await getUnits(this.pageForm.unionId)
this.unionGroups = await unionGroupsByUnionId(this.pageForm.unionId)
}
},
}
},
async created() {
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
this.isThreeUnit = (await getConfigKey("isThreeUnit")) === "true"
if (this.isThreeUnit) {
this.tableColumns.forEach(v => {
this.tableColumns.forEach((v) => {
if (["threeUnitName", "unionGroupName"].includes(v.prop)) {
v.checked = 1
}
})
}
this.pageData();
this.pageData()
this.personTypeOptions = await getDictOptions("UserType")
this.userStateOptions = await getDictOptions("UserState")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.preparedByOptions = await getDictOptions("PREPARED_BY")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === "true") {
this.unions = await getUnions(null, false)
} else {
this.unions = await getUnions(null, true)
this.$set(this.pageForm, 'unionId', this.unions ? this.unions[0].id : null)
this.$set(this.pageForm, "unionId", this.unions ? this.unions[0].id : null)
this.flushUnits()
}
}
@@ -149,7 +149,7 @@ layout("/layouts/platform.html"){
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue')
},
data() {
return {
@@ -126,7 +126,7 @@ layout("/layouts/platform.html"){
<div class="idx" v-else>{{$index+1}}</div>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="院级工会" prop="unioncode"
<el-table-column align="center" header-align="center" label="分工会" prop="unioncode"
show-overflow-tooltip sortable>
<template scope="{row}">
{{row.unionname}} {{isDisPlayCode?'('+row.unioncode+')':null}}
@@ -341,16 +341,32 @@ layout("/layouts/platform.html"){
return
}
chart.unionMemberChart = new G2Plot.TinyArea('unionMemberChart', {
chart.unionMemberChart = new G2Plot.Column('unionMemberChart', {
data:chartData,
autoFit: true,
data: values,
smooth: true,
tooltip: {
customContent: function (i, data) {
if (labels[i]) {
return labels[i] + '- ' + data[0]?.data?.y + '人';
}
return ''
xField: 'unionname',
yField: 'value',
label: {
// 可手动配置 label 数据标签位置
position: 'middle', // 'top', 'bottom', 'middle',
// 配置样式
style: {
fill: '#FFFFFF',
opacity: 0.6,
},
},
xAxis: {
label: {
autoHide: true,
autoRotate: false,
},
},
meta: {
label: {
alias: '类型',
},
value: {
alias: '会员数',
},
},
})
@@ -478,4 +494,4 @@ layout("/layouts/platform.html"){
</script>
<!--#
}
#-->
#-->
@@ -33,11 +33,13 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
<el-select placeholder="所属工会" v-model="pageForm.unionId"
style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
</div>
@@ -45,17 +47,18 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
<el-select placeholder="所属单位" v-model="pageForm.unitId"
style="width: 100%;"
@change="getThreeUnits"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
</div>
<template v-if="searchMore">
<template v-if="isThreeUnit">
<div class="search-item">
<div class="search-item-label">工会小组:</div>
@@ -78,7 +81,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable
<el-select v-model="pageForm.threeUnitId" style="width: 100%"
filterable
clearable
placeholder="请选择">
<el-option
@@ -95,10 +99,12 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">职工信息:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
<el-input placeholder="请输入内容" clearable
v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工号" value="u.loginname"></el-option>
@@ -110,7 +116,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personType" style="width: 100%" clearable
<dict-select v-model="pageForm.personType" style="width: 100%"
clearable
placeholder="人员类型"
code="UserType"></dict-select>
</div>
@@ -119,7 +126,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userState" style="width: 100%" clearable
<dict-select v-model="pageForm.userState" style="width: 100%"
clearable
placeholder="在职状态"
code="UserState"></dict-select>
</div>
@@ -128,7 +136,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">会员状态:</div>
<div class="search-item-option">
<el-select placeholder="会员状态" v-model="pageForm.memberStatus" style="width: 100%"
<el-select placeholder="会员状态" v-model="pageForm.memberStatus"
style="width: 100%"
clearable="true"
filterable="true">
<el-option v-for="item in memberStatusList" :label="item.name"
@@ -142,7 +151,8 @@ layout("/layouts/platform.html"){
</template>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
<more v-model="searchMore"></more>
</div>
@@ -152,10 +162,21 @@ layout("/layouts/platform.html"){
<el-card shadow="never" class="mt10">
<table-tool label="用户列表" :app="this">
<template #func>
<el-button icon="el-icon-printer" class="m10" type="primary"
style="float: right"
size="medium" @click="doExportByUnion">按分工会导出
</el-button>
<el-button icon="el-icon-printer" class="m10" type="primary"
style="float: right"
size="medium" @click="doExport">导出
</el-button>
</template>
</table-tool>
<el-table :data="tableData">
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
@@ -202,6 +223,16 @@ layout("/layouts/platform.html"){
pageForm: {
searchName: "u.username",
year: new Date().getFullYear() - 1 + "",
searchKeyword: '',
unionId: '',
unitId: '',
threeUnitId: '',
unionGroupId: '',
personType: '',
userState: '',
memberStatus: '',
memberSearchName: '',
memberSearchKeyWord: ''
},
unions: [],
units: [],
@@ -217,20 +248,43 @@ layout("/layouts/platform.html"){
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
{prop: 'unionGroupName', label: '工会小组', sortable: true, checked: 0},
],
userId:null,
active:'info',
isThreeUnit:null,
userId: null,
active: 'info',
isThreeUnit: false,
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'member-cnd': httpVueLoader('/components/member/MemberCnd.vue'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=' + new Date().getTime()),
'member-cnd': httpVueLoader('/components/member/MemberCnd.vue?v=' + new Date().getTime()),
},
methods: {
openView(row){
this.userId = row.userId
doExportByUnion() {
window.open(loc() + '/doExportByUnion?year=' + this.pageForm.year)
},
doExport() {
const {
year,
unionId,
unitId,
threeUnitId,
unionGroupId,
personType,
userState,
memberStatus,
memberSearchName,
memberSearchKeyWord,
searchName,
searchKeyword
} = this.pageForm
window.open(loc() + '/doExport?year=' + year + '&unionId=' + unionId + '&unitId=' + unitId + '&threeUnitId=' + threeUnitId +
'&unionGroupId=' + unionGroupId + '&personType=' + personType + '&userState=' + userState + '&memberStatus=' + memberStatus +
'&memberSearchName=' + memberSearchName + '&memberSearchKeyWord=' + memberSearchKeyWord + '&searchName=' + searchName +
'&searchKeyword=' + searchKeyword)
},
openView(row) {
console.log(row)
console.log(row.selfUserId)
this.userId = row.selfUserId
this.$refs.guava.view()
},
async flushUnits() {
@@ -249,6 +303,7 @@ layout("/layouts/platform.html"){
async created() {
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
if (this.isThreeUnit) {
this.tableColumns.forEach(v => {
if (["threeUnitName", "unionGroupName"].includes(v.prop)) {
v.checked = 1
@@ -256,8 +311,9 @@ layout("/layouts/platform.html"){
})
}
this.pageData();
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === 'true') {
this.unions = await getUnions(null, false)
} else {
this.unions = await getUnions(null, true)
@@ -272,4 +328,4 @@ layout("/layouts/platform.html"){
<!--#
}
#-->
#-->
File diff suppressed because it is too large Load Diff
@@ -201,7 +201,7 @@ layout("/layouts/platform.html"){
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue')
},
data() {
return {
@@ -9,7 +9,7 @@ layout("/layouts/platform.html"){
<div class="search">
<div class="search-item"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}">
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}">
<div class="search-item-label">分工会:</div>
<div class="search-item-option">
<el-select placeholder="分工会" v-model="pageForm.unionId" style="width: 100%;"
@@ -54,7 +54,7 @@ layout("/layouts/platform.html"){
width="80px"></el-table-column>
<el-table-column
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')} && searchType==='按分工会统计'"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')} && searchType==='按分工会统计'"
prop="unionName" label="工会">
<template slot-scope="{row}">
{{isDisPlayCode?'('+row.unionCode+')':null}}{{row.unionName}}
@@ -67,7 +67,7 @@ layout("/layouts/platform.html"){
</el-table-column>
<el-table-column
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')} && searchType==='按单位统计'"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')} && searchType==='按单位统计'"
prop="unionName" label="所属分工会">
<template slot-scope="{row}">
{{isDisPlayCode?'('+row.unionCode+')':null}}{{row.unionName}}
@@ -109,9 +109,6 @@ layout("/layouts/platform.html"){
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue')
},
data() {
return {
userTypeNames: [],
@@ -173,7 +170,7 @@ layout("/layouts/platform.html"){
await this.getUserTypes()
this.getData()
this.unions = await getUnions(null)
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(null)
} else {
this.units = await getUnionUnits()
@@ -19,13 +19,14 @@ const appModule = {
`,
data() {
return {
id: ""
id: "",
entranceModules: []
}
},
computed: {
entranceModules() {
return JSON.parse(window.sessionStorage.getItem("moduleMenus"))
}
// entranceModules() {
// return JSON.parse(window.sessionStorage.getItem("moduleMenus"))
// }
},
methods: {
enterEntranceModules(item) {
@@ -37,7 +38,8 @@ const appModule = {
created() {
setTimeout(() => {
// this.id = headerApp.appModuleId
this.enterEntranceModules({ id: headerApp.appModuleId })
// this.enterEntranceModules({ id: headerApp.appModuleId })
this.entranceModules = JSON.parse(window.sessionStorage.getItem("moduleMenus"))
}, 500)
}
}
@@ -1,20 +1,18 @@
const todo = {
template: `
template: /*language=HTML*/ `
<div class="home-todo">
<el-tabs v-model="todoActive " @tab-click="handleClick">
<el-tab-pane label="待处理" name="1">
<el-table :data="todoList" v-loading="todoLoading">
<el-table-column label="序号" type="index" width="70"></el-table-column>
<el-table-column label="标题" prop="processName" show-overflow-tooltip
width="200"></el-table-column>
<el-table size="mini" :data="todoList" v-loading="todoLoading">
<el-table-column label="标题" prop="processName" show-overflow-tooltip></el-table-column>
<el-table-column label="发起人" prop="createdByUserName"
width="140"></el-table-column>
show-overflow-tooltip></el-table-column>
<el-table-column label="发起时间" prop="createdOn" v-if="todoActive==='3'"
width="150"></el-table-column>
show-overflow-tooltip></el-table-column>
<el-table-column label="我的处理环节" prop="taskNodeName"
v-if="todoActive!=='3'"></el-table-column>
<el-table-column label="流程流转环节" prop="nodeName"></el-table-column>
<el-table-column label="操作" width="100">
<el-table-column label="操作">
<template scope="{row}">
<el-button @click="sublime.jumpPagePjax(row.formUrl)" size="mini" type="primary">查看</el-button>
</template>
@@ -22,18 +20,17 @@ const todo = {
</el-table>
</el-tab-pane>
<el-tab-pane label="已处理" name="2">
<el-table :data="todoList" v-loading="todoLoading">
<el-table-column label="序号" type="index" width="70"></el-table-column>
<el-table size="mini" :data="todoList" v-loading="todoLoading">
<el-table-column label="标题" prop="processName" show-overflow-tooltip
width="200"></el-table-column>
show-overflow-tooltip></el-table-column>
<el-table-column label="发起人" prop="createdByUserName"
width="140"></el-table-column>
show-overflow-tooltip></el-table-column>
<el-table-column label="发起时间" prop="createdOn" v-if="todoActive==='3'"
width="150"></el-table-column>
show-overflow-tooltip ></el-table-column>
<el-table-column label="我的处理环节" prop="taskNodeName"
v-if="todoActive!=='3'"></el-table-column>
<el-table-column label="流程流转环节" prop="nodeName"></el-table-column>
<el-table-column label="操作" width="100">
<el-table-column label="操作">
<template scope="{row}">
<el-button @click="sublime.jumpPagePjax(row.formUrl)" size="mini" type="primary">查看</el-button>
</template>
@@ -41,18 +38,17 @@ const todo = {
</el-table>
</el-tab-pane>
<el-tab-pane label="我的发起" name="3">
<el-table :data="todoList" v-loading="todoLoading">
<el-table-column label="序号" type="index" width="70"></el-table-column>
<el-table size="mini" :data="todoList" v-loading="todoLoading">
<el-table-column label="标题" prop="processName" show-overflow-tooltip
width="200"></el-table-column>
show-overflow-tooltip></el-table-column>
<el-table-column label="发起人" prop="createdByUserName"
width="140"></el-table-column>
show-overflow-tooltip></el-table-column>
<el-table-column label="发起时间" prop="createdOn" v-if="todoActive==='3'"
width="150"></el-table-column>
show-overflow-tooltip></el-table-column>
<el-table-column label="我的处理环节" prop="taskNodeName"
v-if="todoActive!=='3'"></el-table-column>
<el-table-column label="流程流转环节" prop="nodeName"></el-table-column>
<el-table-column label="操作" width="100">
<el-table-column label="操作">
<template scope="{row}">
<el-button @click="sublime.jumpPagePjax(row.formUrl)" size="mini" type="primary">查看</el-button>
</template>
@@ -83,13 +79,13 @@ const todo = {
data() {
return {
todoActive: "1",
todoList:[]
todoList: []
}
},
methods: {
async handleClick() {
this.todoLoading = true
const {data, code} = await $.get("/platform/sys/localProcess/todoList", { mode: this.todoActive })
const { data, code } = await $.get("/platform/sys/localProcess/todoList", { mode: this.todoActive })
this.todoList = data
this.todoLoading = false
}
File diff suppressed because it is too large Load Diff
@@ -9,24 +9,24 @@ layout("/layouts/platform.html"){
<div class="search-item-label">任务:</div>
<div class="search-item-option">
<el-select v-model="pageForm.taskId" style="width: 100%">
<el-option v-for="item in memberCheckTaskOptions"
:label="item.taskName"
:value="item.id"></el-option>
<el-option v-for="item in memberCheckTaskOptions" :label="item.taskName" :value="item.id"></el-option>
</el-select>
</div>
</div>
<div class="search-item"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}">
<div class="search-item" v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId"
style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
<el-select
placeholder="所属工会"
v-model="pageForm.unionId"
style="width: 100%"
clearable="true"
@change="flushUnits"
@clear="flushUnits"
filterable="true"
>
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
</div>
@@ -45,7 +45,6 @@ layout("/layouts/platform.html"){
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
</div>
</div>
</el-card>
@@ -56,52 +55,46 @@ layout("/layouts/platform.html"){
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
show-summary
:summary-method="getSummaries"
@expand-change="tableColumnExpandChange"
v-loading="tableLoading" :size="tableSize" class="vi-table">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table
:data="tableData"
style="width: 100%"
row-key="id"
@sort-change="pageOrder"
show-summary
:summary-method="getSummaries"
@expand-change="tableColumnExpandChange"
v-loading="tableLoading"
:size="tableSize"
class="vi-table"
>
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号" width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
>
<template v-if="column.prop=='isFinish'" scope="{row}">
<span :class="row.isFinish?'text-success':'text-danger'">
{{row.isFinishText}}
</span>
<span :class="row.isFinish?'text-success':'text-danger'">{{row.isFinishText}}</span>
</template>
<template v-else-if="column.prop=='unionGroup'" scope="{row}">
<el-link type="primary" @click="openGroupUnionDrawer(row)">
{{row.unionGroupNum}}(
{{row.shiUnionGroupNum}})
</el-link>
<el-link type="primary" @click="openGroupUnionDrawer(row)">{{row.unionGroupNum}}( {{row.shiUnionGroupNum}})</el-link>
</template>
</el-table-column>
<el-table-column header-align="center" label="操作" width="200px">
<template scope="{row}">
<el-button size="mini" type="primary" @click="openCheck(row)"
:disabled="!row.isFinish">
核对
</el-button>
<el-button size="mini" type="primary" @click="openCheck(row)" :disabled="!row.isFinish">核对</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<template #edit>
<el-tabs v-model="active">
<el-tab-pane label="个人信息" name="info">
<member ref="memberInfo" :id="info.userId" view></member>
@@ -112,9 +105,7 @@ layout("/layouts/platform.html"){
</el-tab-pane>
<el-tab-pane label="工会审核" name="union">
<el-form :model="formData" ref="form" :rules="formRules"
label-width="120px" label-suffix=":">
<el-form :model="formData" ref="form" :rules="formRules" label-width="120px" label-suffix=":">
<vi-title title="审核信息"></vi-title>
<template v-if="!info.unionAudit&&source==1">
@@ -122,27 +113,23 @@ layout("/layouts/platform.html"){
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="原单位">
<el-input :value="info.originUnit.name"
disabled></el-input>
<el-input :value="info.originUnit.name" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="原工会">
<el-input :value="info.originUnion.unionname"
disabled></el-input>
<el-input :value="info.originUnion.unionname" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="新单位">
<el-input :value="info.currentUnit.name"
disabled></el-input>
<el-input :value="info.currentUnit.name" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="新工会">
<el-input :value="info.currentUnion.unionname"
disabled></el-input>
<el-input :value="info.currentUnion.unionname" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
@@ -151,8 +138,7 @@ layout("/layouts/platform.html"){
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
<el-input v-model="formData.username" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -163,19 +149,18 @@ layout("/layouts/platform.html"){
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4"
maxlength="500"
placeholder="请填写您的审核意见"></el-input>
<el-input
type="textarea"
v-model="formData.auditOpinion"
rows="4"
maxlength="500"
placeholder="请填写您的审核意见"
></el-input>
</el-form-item>
<div style="float: right;margin: 20px 0">
<el-button @click="doAudit(false)" :loading="submitLoading">拒
绝
</el-button>
<el-button type="primary" @click="doAudit(true)"
:loading="submitLoading">通
过
</el-button>
<div style="float: right; margin: 20px 0">
<el-button @click="doAudit(false)" :loading="submitLoading">拒 绝</el-button>
<el-button type="primary" @click="doAudit(true)" :loading="submitLoading">通 过</el-button>
</div>
</template>
<template v-else>
@@ -199,59 +184,48 @@ layout("/layouts/platform.html"){
</el-row>
<el-row v-else type="flex" justify="center">
<el-form-item label="暂无审核信息">
</el-form-item>
<el-form-item label="暂无审核信息"></el-form-item>
</el-row>
</template>
</el-form>
</el-tab-pane>
<el-tab-pane label="校工会审核" name="school"
v-if="info.unionAudit">
<el-form class="demo-table-expand" :model="formData" ref="form"
:rules="formRules"
label-width="120px" label-suffix=":">
<el-tab-pane label="校工会审核" name="school" v-if="info.unionAudit">
<el-form class="demo-table-expand" :model="formData" ref="form" :rules="formRules" label-width="120px" label-suffix=":">
<vi-title title="审核信息"></vi-title>
<template v-if="!info.schoolAudit&&source==2">
<template v-if="info.type==1||info.currentUnitId">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="原单位">
<el-input :value="info.originUnit.name"
disabled></el-input>
<el-input :value="info.originUnit.name" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="原工会">
<el-input :value="info.originUnion.unionname"
disabled></el-input>
<el-input :value="info.originUnion.unionname" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="新单位">
<!-- <el-input :value="info.currentUnit.name"></el-input>-->
<el-select v-model="info.currentUnitId"
style="width: 100%" filterable
clearable
@change="unitChange"
placeholder="请选择单位">
<el-option
v-for="item in unitOptions"
:label="item.name"
:value="item.id">
</el-option>
<el-select
v-model="info.currentUnitId"
style="width: 100%"
filterable
clearable
@change="unitChange"
placeholder="请选择单位"
>
<el-option v-for="item in unitOptions" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="新工会">
<el-input v-model="info.currentUnionName"
disabled></el-input>
<el-input v-model="info.currentUnionName" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
@@ -260,8 +234,7 @@ layout("/layouts/platform.html"){
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
<el-input v-model="formData.username" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -272,19 +245,18 @@ layout("/layouts/platform.html"){
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4"
maxlength="500"
placeholder="请填写您的审核意见"></el-input>
<el-input
type="textarea"
v-model="formData.auditOpinion"
rows="4"
maxlength="500"
placeholder="请填写您的审核意见"
></el-input>
</el-form-item>
<div style="float: right;margin: 20px 0">
<el-button @click="doAudit(false)" :loading="submitLoading">拒
绝
</el-button>
<el-button type="primary" @click="doAudit(true)"
:loading="submitLoading">通
过
</el-button>
<div style="float: right; margin: 20px 0">
<el-button @click="doAudit(false)" :loading="submitLoading">拒 绝</el-button>
<el-button type="primary" @click="doAudit(true)" :loading="submitLoading">通 过</el-button>
</div>
</template>
<template v-else>
@@ -308,30 +280,22 @@ layout("/layouts/platform.html"){
</el-row>
<el-row v-else type="flex" justify="center">
<el-form-item label="暂无审核信息">
</el-form-item>
<el-form-item label="暂无审核信息"></el-form-item>
</el-row>
</template>
</el-form>
</el-tab-pane>
</el-tabs>
</template>
</guava>
<el-drawer
title="分工会核对情况"
:visible.sync="groupUnionDrawer"
direction="rtl" :size="'50%'">
<el-drawer title="分工会核对情况" :visible.sync="groupUnionDrawer" direction="rtl" :size="'50%'">
<el-table :data="unionGroupData">
<el-table-column prop="groupCode" label="小组编号"></el-table-column>
<el-table-column prop="groupName" label="小组名称"></el-table-column>
<el-table-column prop="username" label="联系人">
<template scope="{row}">
<sapn v-if="row.username">
{{row.username}}({{row.loginname}})
</sapn>
<sapn v-if="row.username">{{row.username}}({{row.loginname}})</sapn>
</template>
</el-table-column>
<el-table-column prop="mobile" label="联系方式"></el-table-column>
@@ -347,9 +311,7 @@ layout("/layouts/platform.html"){
<el-dialog title="异动详情" width="40%" :visible.sync="changeInfoDialog">
<div class="mb10">
<el-tag v-for="item in changeInfoTypes">
{{item}}
</el-tag>
<el-tag v-for="item in changeInfoTypes">{{item}}</el-tag>
</div>
<el-table :data="changeInfoData" border>
<el-table-column prop="columnName" label="字段"></el-table-column>
@@ -359,10 +321,7 @@ layout("/layouts/platform.html"){
</el-dialog>
<user-change-history ref="userChangeHistory">
<el-form class="demo-table-expand" :model="formData" ref="form"
:rules="formRules"
label-width="120px" label-suffix=":">
<el-form class="demo-table-expand" :model="formData" ref="form" :rules="formRules" label-width="120px" label-suffix=":">
<div class="el-descriptions__header mt10">
<div class="el-descriptions__title">校工会审核</div>
<div class="el-descriptions__extra"></div>
@@ -371,8 +330,7 @@ layout("/layouts/platform.html"){
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
<el-input v-model="formData.username" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -383,90 +341,72 @@ layout("/layouts/platform.html"){
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4"
maxlength="500"
placeholder="请填写您的审核意见"></el-input>
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500" placeholder="请填写您的审核意见"></el-input>
</el-form-item>
<el-row type="flex" justify="end">
<el-button @click="doAudit(false)" :loading="submitLoading">拒
绝
</el-button>
<el-button type="primary" @click="doAudit(true)"
:loading="submitLoading">通
过
</el-button>
<el-button @click="doAudit(false)" :loading="submitLoading">拒 绝</el-button>
<el-button type="primary" @click="doAudit(true)" :loading="submitLoading">通 过</el-button>
</el-row>
</el-form>
</user-change-history>
<el-dialog title="异动人员确认" width="60%" :visible.sync="confirmDialog">
<el-table :data="changeUsers">
<el-table-column label="序号" type="index"
header-align="center"></el-table-column>
<el-table-column label="姓名" prop="userName"
header-align="center"></el-table-column>
<el-table-column label="工号" prop="loginName"
header-align="center"></el-table-column>
<el-table-column label="在职状态" prop="userState"
header-align="center"></el-table-column>
<el-table-column label="所属单位" prop="unitname"
header-align="center">
<template scope="{row}">
{{row.unitname}}
</template>
<el-table-column label="序号" type="index" header-align="center"></el-table-column>
<el-table-column label="姓名" prop="userName" header-align="center"></el-table-column>
<el-table-column label="工号" prop="loginName" header-align="center"></el-table-column>
<el-table-column label="在职状态" prop="userState" header-align="center"></el-table-column>
<el-table-column label="所属单位" prop="unitname" header-align="center">
<template scope="{row}">{{row.unitname}}</template>
</el-table-column>
<el-table-column label="异动信息" header-align="center">
<el-table-column label="更新时间" prop="changeTime" min-width="145px"
header-align="center"
sortable
align="center" show-overflow-tooltip>
</el-table-column>
<el-table-column label="异动类型" prop="changeTypes" header-align="center"
align="center" show-overflow-tooltip sortable>
<el-table-column
label="更新时间"
prop="changeTime"
min-width="145px"
header-align="center"
sortable
align="center"
show-overflow-tooltip
></el-table-column>
<el-table-column label="异动类型" prop="changeTypes" header-align="center" align="center" show-overflow-tooltip sortable>
<template scope="{row}">
<span style="color: #0e78c5;cursor: pointer"
@click="openUserChangeInfo(row)">
{{getChangeTypes(row.changeTypes)}}
</span>
<span style="color: #0e78c5; cursor: pointer" @click="openUserChangeInfo(row)">{{getChangeTypes(row.changeTypes)}}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="会员" header-align="center" align="center"
prop="member"
show-overflow-tooltip sortable>
<el-table-column label="会员" header-align="center" align="center" prop="member" show-overflow-tooltip sortable>
<template scope="{row}">
<span v-if="row.member==1" class="text-success ">
<i class="fa fa-circle ml5"></i> 是
</span>
<span v-if="row.member==1" class="text-success">
<i class="fa fa-circle ml5"></i>
是
</span>
<span v-else class="text-danger">
<i class="fa fa-circle ml5"></i> 否
</span>
<i class="fa fa-circle ml5"></i>
否
</span>
</template>
</el-table-column>
<el-table-column label="操作" width="100px" header-align="center">
<template scope="{row}">
<el-button size="mini" type="primary"
@click="openAudit(row)">
审核
</el-button>
<el-button size="mini" type="primary" @click="openAudit(row)">审核</el-button>
</template>
</el-table-column>
</el-table>
</el-dialog>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [initTableMixins],
components: {
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'mem-change-records': httpVueLoader('/components/member/MemChangeRecords.vue?v=1.0.2'),
'user-change-history': httpVueLoader('/components/userChangeHistory/UserChangeHistory.vue?v=1.0.1'),
member: httpVueLoader("/components/member/MemberInfo.vue?v=1.0.3"),
"dict-select": httpVueLoader("/components/plugins/DictSelect.vue?v=1.0.0"),
"mem-change-records": httpVueLoader("/components/member/MemChangeRecords.vue?v=1.0.2"),
"user-change-history": httpVueLoader("/components/userChangeHistory/userChangeHistory.vue?v=1.0.1")
},
data() {
return {
@@ -475,18 +415,18 @@ layout("/layouts/platform.html"){
unions: [],
units: [],
tableColumns: [
{prop: 'unionname', label: '分工会名称', sortable: true},
{prop: 'memberNum', label: '会员人数', sortable: true},
{prop: 'isFinish', label: '分工会是否核对完成', sortable: true},
{prop: 'notCheckNum', label: '异动人数', sortable: true},
{ prop: "unionname", label: "分工会名称", sortable: true },
{ prop: "memberNum", label: "会员人数", sortable: true },
{ prop: "isFinish", label: "分工会是否核对完成", sortable: true },
{ prop: "notCheckNum", label: "异动人数", sortable: true }
],
pageForm: {
year: new Date().getFullYear() + ''
year: new Date().getFullYear() + ""
},
memberCheckTaskOptions: [],
changeType: {},
userId: null,
active: 'school',
active: "school",
info: {},
source: 2,
formData: {},
@@ -502,31 +442,31 @@ layout("/layouts/platform.html"){
}
},
methods: {
async openUserChangeInfo({hisId}) {
async openUserChangeInfo({ hisId }) {
this.$refs.userChangeHistory.openUserChangeInfo(hisId)
},
async openCheck(row) {
const taskId = this.pageForm.taskId
const unionId = row.id
this.currentUnionId = row.id
const resp = await $.post(loc() + '/getNotCheckUsers', {taskId, unionId})
const resp = await $.post(loc() + "/getNotCheckUsers", { taskId, unionId })
if (resp.code === 0) {
this.confirmDialog = true
this.changeUsers = resp.data
}
},
openAudit({hisId, id}) {
openAudit({ hisId, id }) {
debugger
this.$refs.userChangeHistory.openUserChangeInfo(hisId)
this.$refs.userChangeHistory.slot = true
if (this.$refs['form']) {
this.$refs['form'].resetFields()
if (this.$refs["form"]) {
this.$refs["form"].resetFields()
}
this.formData = {
recordId: id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
auditTime: moment().format("YYYY-MM-DD")
}
},
async doAudit(pass) {
@@ -537,7 +477,7 @@ layout("/layouts/platform.html"){
if (resp.code === 0) {
this.$message.success(resp.msg)
this.$refs.userChangeHistory.changeInfoDialog = false
this.openCheck({id: this.currentUnionId})
this.openCheck({ id: this.currentUnionId })
this.pageData()
} else {
this.$message.warning(resp.msg)
@@ -547,24 +487,26 @@ layout("/layouts/platform.html"){
getChangeTypes(changeTypes) {
if (changeTypes) {
const c = JSON.parse(changeTypes)
return c.map(v => {
return this.changeType[v]
}).join(',')
return c
.map((v) => {
return this.changeType[v]
})
.join(",")
}
return null
},
exportChangeUser() {
const {taskId} = this.pageForm
const { taskId } = this.pageForm
if (!taskId) {
this.notifyWarning('请先选择核对任务')
this.notifyWarning("请先选择核对任务")
return
}
window.open(loc() + '/exportChangeUser?taskId=' + taskId)
window.open(loc() + "/exportChangeUser?taskId=" + taskId)
},
async openGroupUnionDrawer(row) {
const {data} = await $.post(loc() + "/unionGroupData", {
const { data } = await $.post(loc() + "/unionGroupData", {
unionId: row.id,
taskId: this.pageForm.taskId
})
@@ -573,47 +515,47 @@ layout("/layouts/platform.html"){
},
getSummaries(param) {
const {columns, data} = param;
const sums = [];
const { columns, data } = param
const sums = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '总计';
return;
sums[index] = "总计"
return
} else if (index === 5) {
sums[index] = '';
return;
sums[index] = ""
return
} else if (index === 3) {
sums[index] = '';
return;
sums[index] = ""
return
}
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
const values = data.map((item) => Number(item[column.property]))
if (!values.every((value) => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
const value = Number(curr)
if (!isNaN(value)) {
return prev + curr;
return prev + curr
} else {
return prev;
return prev
}
}, 0);
sums[index] += ' ';
}, 0)
sums[index] += " "
} else {
sums[index] = '';
sums[index] = ""
}
});
})
return sums;
return sums
},
async getMemberCheckTaskOptions() {
const resp = await $.get('/platform/welfareMember/check/task/getAllTask', {year: this.pageForm.year})
const resp = await $.get("/platform/welfareMember/check/task/getAllTask", { year: this.pageForm.year })
this.memberCheckTaskOptions = resp.data
if (this.memberCheckTaskOptions.length) {
this.$set(this.pageForm, 'taskId', this.memberCheckTaskOptions[0].id)
this.$set(this.pageForm, "taskId", this.memberCheckTaskOptions[0].id)
}
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === "true") {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
@@ -622,14 +564,14 @@ layout("/layouts/platform.html"){
async getChangeType() {
const changeType = {}
const changeTypeOptions = await getEnumOptions("UserChangeType")
changeTypeOptions.forEach(v => {
changeTypeOptions.forEach((v) => {
changeType[v.code] = v.description
})
return changeType
},
async pageData() {
sublime.showLoadingbar()
const resp = await $.post(loc() + '/pageData', this.pageForm)
const resp = await $.post(loc() + "/pageData", this.pageForm)
sublime.closeLoadingbar()
if (resp.code === 0) {
this.tableData = resp.data
@@ -639,11 +581,11 @@ layout("/layouts/platform.html"){
},
async tableColumnExpandChange(row, expandedRows) {
if (expandedRows.length) {
const {taskId} = this.pageForm
const {id: unionId} = row
const resp = await $.post(loc() + '/getNotCheckUsers', {taskId, unionId})
const { taskId } = this.pageForm
const { id: unionId } = row
const resp = await $.post(loc() + "/getNotCheckUsers", { taskId, unionId })
if (resp.code === 0) {
this.$set(row, 'checkUsers', resp.data)
this.$set(row, "checkUsers", resp.data)
}
}
},
@@ -674,39 +616,37 @@ layout("/layouts/platform.html"){
// this.notifyWarning(resp.msg)
// }
// },
// async doAudit(pass) {
// this.formData.currentUnitId = this.info.currentUnitId
// this.formData.currentUnionId = this.info.currentUnionId
// this.formData.currentThreeUnitId = this.info.currentThreeUnitId
// this.formData.auditPass = pass
// this.submitLoading = true
// const resp = await $.post("/platform/member/change/audit/doAudit", this.formData)
// this.submitLoading = false
// if (resp.code === 0) {
// //更新用户信息
// this.info.userId = null
// this.pageData()
// this.$refs.guava.index()
// } else {
// this.notifyWarning(resp.msg)
// }
// },
// async doAudit(pass) {
// this.formData.currentUnitId = this.info.currentUnitId
// this.formData.currentUnionId = this.info.currentUnionId
// this.formData.currentThreeUnitId = this.info.currentThreeUnitId
// this.formData.auditPass = pass
// this.submitLoading = true
// const resp = await $.post("/platform/member/change/audit/doAudit", this.formData)
// this.submitLoading = false
// if (resp.code === 0) {
// //更新用户信息
// this.info.userId = null
// this.pageData()
// this.$refs.guava.index()
// } else {
// this.notifyWarning(resp.msg)
// }
// },
async unitChange(v) {
const unit = this.unitOptions.find(x => x.id === v)
const unit = this.unitOptions.find((x) => x.id === v)
if (unit) {
this.info.currentUnionId = unit.unionid
this.info.currentUnionName = unit.unionname
} else {
this.info.currentUnionId = ''
this.info.currentUnionName = ''
this.info.currentUnionId = ""
this.info.currentUnionName = ""
}
if (!v) {
this.info.currentThreeUnitId = ''
this.info.currentThreeUnitId = ""
}
this.threeUnits = await threeUnitsByUnionGroupOrUnitId(this.info.currentUnitId, null)
},
}
},
async created() {
await this.getMemberCheckTaskOptions()
File diff suppressed because it is too large Load Diff
@@ -130,7 +130,6 @@ layout("/layouts/platform.html"){
controls-position="right"
:controls="false"
precision="2"
readonly
placeholder="选择慰问类型自动匹配金额"
:min="0"
:max="1000000000"></el-input>
@@ -3,151 +3,371 @@ layout("/layouts/platform.html"){
#-->
<style>
.el-divider--horizontal {
margin-top: 50px;
margin-bottom: 40px;
}
</style>
<div id="app" v-cloak>
<guava>
<apply :form="formData" @radio="radioButton" ref="addFrom">
<template #footer>
<div style="float: right;margin: 20px 0">
<el-button @click="operation(false)" type="primary">保 存</el-button>
<el-button @click="operation(true)" type="primary">确 定</el-button>
</div>
</template>
</apply>
<el-card shadow="never">
<div class="clearfix" slot="header">
<h3 style="color: #1867b0">填写申请信息</h3>
</div>
<el-form :model="formData" :rules="formRules" label-width="140px" ref="formRef">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="申请人姓名" prop="proxyUserName">
<el-input disabled v-model="formData.proxyUserName">
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="申请人工号" prop="proxyLoginName">
<el-input disabled v-model="formData.proxyLoginName"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="申请模式" prop="mode">
<el-radio-group :disabled="formData.id" @change="modeChange"
style="width: 100%"
v-model="formData.mode"
>
<el-radio-button border label="1">本人申请</el-radio-button>
<el-radio-button border label="2">替他人申请</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="受补助人" prop="userId">
<el-select :remote-method="querySqr" @change="userChange" clearable
filterable
placeholder="输入工号或者姓名查找" remote
style="width: 100%"
v-if="!formData.id"
v-model="formData.userId">
<el-option :key="o.id"
:label="o.username+'('+o.loginname+')'"
:value="o.id"
v-for="o in subsidizedList"></el-option>
</el-select>
<el-input disabled maxlength="100" type="text" v-else
v-model="formData.userName"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="性别" prop="sex">
<el-select clearable placeholder="请选择性别" style="width: 100%"
v-model="formData.sex">
<el-option :key="item" :label="item" :value="item"
v-for="item in ['男','女']">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="所在单位" prop="unitName">
<el-input clearable maxlength="50" placeholder="所在单位"
v-model="formData.unitName"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="所在分工会" prop="unionName">
<el-input clearable maxlength="50" placeholder="所在分工会"
v-model="formData.unionName"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="本人月收入" prop="monthlyIncome">
<el-input-number :max="9999999"
:min="0"
clearable
controls-position="right"
placeholder="请填写本人月收入"
style="width: 100%" v-model="formData.monthlyIncome">
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="出生年月" prop="birthday">
<el-date-picker
clearable
placeholder="选择出生年月"
style="width: 100%"
type="date"
v-model="formData.birthday"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="手机号码" prop="mobile">
<el-input clearable maxlength="20" placeholder="请填写手机号码"
v-model="formData.mobile"></el-input>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="家庭地址" prop="homeAddress">
<el-input clearable maxlength="200" placeholder="请填写家庭地址"
v-model="formData.homeAddress"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="款项" prop="subsidyStandards">
<el-select style="width: 100%" v-model="formData.subsidyStandards">
<el-option :key="index" :label="item"
:value="item"
v-for="(item,index) in subsidyStandards">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="申请原因" prop="reason">
<el-input :autosize="{ minRows: 5, maxRows: 10}" clearable
maxlength="500"
placeholder="请简述申请原因"
type="textarea"
v-model="formData.reason"></el-input>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input :autosize="{ minRows: 5, maxRows: 10}" clearable
maxlength="500"
placeholder="请简述备注"
type="textarea"
v-model="formData.remarks"></el-input>
</el-form-item>
<el-form-item label="家庭成员经济收入" prop="familyList">
<el-table :data="formData.familyList" border max-height="500" size="mini"
style="width: 100%">
<el-table-column align="center" label="序号" type="index"
width="50"></el-table-column>
<el-table-column label="姓名" prop="name">
<template slot-scope="{row,$index}">
<el-form-item :prop="'familyList.'+$index+'.name'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"
label-width="0">
<el-input clearable placeholder="请输入姓名"
v-model="row.name"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="年龄(岁)" prop="relation">
<template slot-scope="{row,$index}">
<el-form-item :prop="'familyList.'+$index+'.age'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"
label-width="0">
<el-input-number :max="100" :min="1" :step="1"
clearable placeholder="请输入年龄"
v-model="row.age"></el-input-number>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="关系" prop="relation">
<template slot-scope="{row,$index}">
<el-form-item :prop="'familyList.'+$index+'.relation'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"
label-width="0">
<el-input clearable placeholder="请输入关系"
v-model="row.relation"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="月收入(元)" prop="monthlyIncome">
<template slot-scope="{row,$index}">
<el-form-item :prop="'familyList.'+$index+'.monthlyIncome'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"
label-width="0">
<el-input-number :min="0"
:step="1"
clearable placeholder="请输入月收入"
v-model="row.monthlyIncome"></el-input-number>
</el-form-item>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作"
width="150px">
<template slot="header" slot-scope="scope">
<el-button @click="formData.familyList.push({})" icon="el-icon-plus"
size="mini"
type="primary">添加
</el-button>
</template>
<template slot-scope="scope">
<el-button :disabled="formData.familyList.length==1"
@click="formData.familyList.splice(scope.$index,1)"
icon="el-icon-delete"
size="mini"
type="danger"></el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
<el-form-item label="附件" prop="files">
<file-upload :files.sync="formData.files" card></file-upload>
</el-form-item>
<el-form-item label="签字" prop="signature">
<sign :is_value_base64="false" :qz.sync="formData.signature"
prefix="difficult"></sign>
</el-form-item>
</el-form>
<el-row justify="end" type="flex">
<el-button @click="formData.id?doEdit():doAdd()" type="primary">提交</el-button>
</el-row>
</el-card>
</guava>
<el-dialog
:visible.sync="dialogVisible"
title=""
width="40%">
<el-form>
<el-form-item class="view-header" label="&emsp;&emsp;申请须知">
</el-form-item>
</el-form>
<span style="line-height: 24px">
&emsp;&emsp;一、住院慰问金申请:每位在职工会会员每年限申请一次,需在当年提出申请。系统全部审核完成后,可打印出报销凭证和纸质审批表,由本部门审核人员及本人签字并盖章后,以分工会为单位送交工会。为减少分工会工作量,分工会可于每月10号、20号(遇周末节假日可顺延)集中审核盖章后送交工会纸质材料。<br/>
&emsp;&emsp;二、因生活困难申报“元旦、春节”困难补助(慰问)金的会员,还须同时向分工会提交下列相关证明:<br/>
&emsp;&emsp;&emsp;&emsp;(1)申请人配偶、子女及家庭其他成员的收入情况证明原件(不涉及则无需提供);<br/>
&emsp;&emsp;&emsp;&emsp;(2)个人收入证明(年度工资银行对账单且有银行或单位盖章);<br/>
&emsp;&emsp;&emsp;&emsp;(3)涉及会员本人、配偶或子女患重病、大病者须提供病史证明复印件和自费医药费正式发票;
</span>
<span class="dialog-footer" slot="footer">
<el-button @click="dialogVisible = false">关闭</el-button>
<el-button @click="dialogVisible = false" type="primary">同意</el-button>
</span>
</el-dialog>
</div>
<script>
function getQueryVariable(variable) {
let query = window.location.search.substring(1);
let vars = query.split("&");
for (let i = 0; i < vars.length; i++) {
let pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return '';
}
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'apply': httpVueLoader('/components/difficulty/apply.vue?v=' + new Date().getTime()),
},
data() {
return {
dialogVisible: false,
id: GetQueryString("id"),
formData: {
sq_bzlx: "1",
sqsj: moment().format('YYYY-MM-DD'),
apply_mode: '1',
jtcys: [],
mode: "1",
},
userData: {},
subsidyStandards: [
'本人患重症处于康复期、新患重症以外的疾病且自理医疗费在5万元以上、直系亲属患重症:1000-1500元。',
'突发事件造成家庭损失较重致生活困难:2000-2500元。',
'本人新患重症、长病假人员生活困难、家庭人均收入接近无锡市最低生活保障线:3000元。'
],
formRules: {
userName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
loginName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sex: [{required: true, message: '必填', trigger: ['blur', 'change']}],
unitName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
unionName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
monthlyIncome: [{required: true, message: '必填', trigger: ['blur', 'change']}],
birthday: [{required: true, message: '必填', trigger: ['blur', 'change']}],
mobile: [{required: true, message: '必填', trigger: ['blur', 'change']}],
homeAddress: [{required: true, message: '必填', trigger: ['blur', 'change']}],
subsidyStandards: [{
required: true,
message: '必填',
trigger: ['blur', 'change']
}],
reason: [{required: true, message: '必填', trigger: ['blur', 'change']}],
remarks: [{required: false, message: '必填', trigger: ['blur', 'change']}],
familyList: [{required: true, message: '必填', trigger: ['blur', 'change']}],
signature: [{required: true, message: '必填', trigger: ['blur', 'change']}]
},
subsidizedList: []
}
},
methods: {
radioButton() {
this.$set(this.formData, 'idcard', '${@shiro.getPrincipalProperty("idcard")}')
this.$set(this.formData, 'sqr', '${@shiro.getPrincipalProperty("username")}')
this.$set(this.formData, 'bbzrusername', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('username')}" : null)
this.$set(this.formData, 'sqrloginname', "${@shiro.getPrincipalProperty('loginname')}")
this.$set(this.formData, 'sex', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('sex')}" : null)
this.$set(this.formData, 'idcard', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('idcard')}" : null)
this.$set(this.formData, 'birthday', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('birthday')}" : null)
this.$set(this.formData, 'lxfs', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('mobile')}" : null)
this.$set(this.formData, 'yhkh', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('bank_number')}" : null)
this.$set(this.formData, 'yhmc', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('yhmc')}" : null)
this.$set(this.formData, 'unitname', this.formData.apply_mode == 1 ? this.userData.unitname : null)
this.$set(this.formData, 'zw', this.formData.apply_mode == 1 ? this.userData.position : null)
this.$set(this.formData, 'zc', this.formData.apply_mode == 1 ? this.userData.jobtitle : null)
this.$set(this.formData, 'zzmm', this.formData.apply_mode == 1 ? this.userData.political : null)
this.$set(this.formData, 'mz', this.formData.apply_mode == 1 ? this.userData.nation : null)
querySqr(key) {
$.post('/platform/difficulty/apply/querySqr', {key: key}).then(res => {
this.subsidizedList = res.data;
});
},
async getUserData() {
const resp = await $.post(loc() + "/getUserData")
if (resp.code === 0) {
this.userData = resp.data;
async userChange() {
const user = this.subsidizedList.find(item => item.id === this.formData.userId)
if (user) {
this.$set(this.formData, 'userId', user.id)
this.$set(this.formData, 'userName', user.username)
this.$set(this.formData, 'loginName', user.loginname)
this.$set(this.formData, 'sex', user.sex)
this.$set(this.formData, 'unitId', user.unitid)
this.$set(this.formData, 'unitName', user.unitname)
this.$set(this.formData, 'unionId', user.unionid)
this.$set(this.formData, 'unionName', user.unionname)
this.$set(this.formData, 'birthday', user.birthday)
this.$set(this.formData, 'mobile', user.mobile)
} else {
this.$notify.error({title: '失败', message: resp.msg});
this.$set(this.formData, 'userId', null)
this.$set(this.formData, 'userName', null)
this.$set(this.formData, 'loginName', null)
this.$set(this.formData, 'sex', null)
this.$set(this.formData, 'unitId', null)
this.$set(this.formData, 'unitName', null)
this.$set(this.formData, 'unionId', null)
this.$set(this.formData, 'unionName', null)
this.$set(this.formData, 'birthday', null)
this.$set(this.formData, 'mobile', null)
}
},
async operation(flag) {
this.$refs.addFrom.operation(flag)
/*let method = this.formData.id ? "/doEdit" : "/doAdd"
this.$refs["addFrom"].validate(async (valid) => {
modeChange(val) {
const user = JSON.parse(window.sessionStorage.getItem('user'))
if (val === "1") {
this.$set(this.formData, 'userId', user.id)
this.$set(this.formData, 'userName', user.username)
this.$set(this.formData, 'loginName', user.loginname)
this.$set(this.formData, 'proxyUserId', user.id)
this.$set(this.formData, 'proxyUserName', user.username)
this.$set(this.formData, 'proxyLoginName', user.loginname)
this.$set(this.formData, 'mode', "1")
this.$set(this.formData, 'sex', user.sex)
this.$set(this.formData, 'unitId', user.unit.id)
this.$set(this.formData, 'unitName', user.unit.name)
this.$set(this.formData, 'unionId', user.union.id)
this.$set(this.formData, 'unionName', user.union.unionname)
this.$set(this.formData, 'monthlyIncome', null)
this.$set(this.formData, 'birthday', user.birthday)
this.$set(this.formData, 'mobile', user.mobile)
this.$set(this.formData, 'homeAddress', user.homeAddress)
this.$set(this.formData, 'subsidyStandards', null)
this.$set(this.formData, 'reason', null)
this.$set(this.formData, 'remarks', null)
this.$set(this.formData, 'familyList', [])
this.$set(this.formData, 'files', [])
this.querySqr(user.loginname)
} else {
this.formData = {}
this.$set(this.formData, 'proxyUserId', user.id)
this.$set(this.formData, 'proxyUserName', user.username)
this.$set(this.formData, 'proxyLoginName', user.loginname)
this.$set(this.formData, 'mode', "2")
this.$set(this.formData, 'familyList', [])
this.$set(this.formData, 'files', [])
}
},
doAdd() {
this.$refs.formRef.validate(valid => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const formData = Object.assign({}, this.formData);
formData.jtcys = JSON.stringify(formData.jtcys)
formData.files = JSON.stringify(formData.files)
formData.applicantsign = formData.sqsign
if (formData.apply_mode == 1) {
formData.bbzrusername = "${@shiro.getPrincipalProperty('id')}"
}
const resp = await $.post(loc() + method, formData)
if (resp.code === 0) {
sublime.jumpPagePjax('/platform/fw/difficulty/applylist')
loading.close()
} else {
this.$notify.error({title: '失败', message: resp.msg});
loading.close()
}
$.post('/platform/difficulty/apply/doAdd', {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
sublime.jumpPagePjax('/platform/difficulty/applylist')
} else {
this.$message.error(res.msg)
}
})
}
})*/
})
},
async openEdit(id) {
const resp = await $.get("/platform/fw/difficulty/applylist/findOne", {id})
if (resp.code === 0) {
if (resp.data.files) {
resp.data.files = JSON.parse(resp.data.files)
doEdit() {
this.$refs.formRef.validate(valid => {
if (valid) {
$.post('/platform/difficulty/apply/doEdit', {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
sublime.jumpPagePjax('/platform/difficulty/applylist')
} else {
this.$message.error(res.msg)
}
})
}
this.formData = resp.data
}
}
})
},
},
async created() {
await this.getUserData()
let id = getQueryVariable("id")
id ? this.openEdit(id) : this.radioButton()
if (this.id) {
$.get('/platform/difficulty/apply/findOne', {id: this.id}).then(res => {
if (res.code === 0) {
this.formData = res.data
this.querySqr(res.data.loginName)
}
})
} else {
this.modeChange("1")
}
}
})
</script>
@@ -0,0 +1,153 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
</style>
<div id="app" v-cloak>
<guava>
<apply :form="formData" @radio="radioButton" ref="addFrom">
<template #footer>
<div style="float: right;margin: 20px 0">
<el-button @click="operation(false)" type="primary">保 存</el-button>
<el-button @click="operation(true)" type="primary">确 定</el-button>
</div>
</template>
</apply>
</guava>
<el-dialog
:visible.sync="dialogVisible"
title=""
width="40%">
<el-form>
<el-form-item class="view-header" label="&emsp;&emsp;申请须知">
</el-form-item>
</el-form>
<span style="line-height: 24px">
&emsp;&emsp;一、住院慰问金申请:每位在职工会会员每年限申请一次,需在当年提出申请。系统全部审核完成后,可打印出报销凭证和纸质审批表,由本部门审核人员及本人签字并盖章后,以分工会为单位送交工会。为减少分工会工作量,分工会可于每月10号、20号(遇周末节假日可顺延)集中审核盖章后送交工会纸质材料。<br/>
&emsp;&emsp;二、因生活困难申报“元旦、春节”困难补助(慰问)金的会员,还须同时向分工会提交下列相关证明:<br/>
&emsp;&emsp;&emsp;&emsp;(1)申请人配偶、子女及家庭其他成员的收入情况证明原件(不涉及则无需提供);<br/>
&emsp;&emsp;&emsp;&emsp;(2)个人收入证明(年度工资银行对账单且有银行或单位盖章);<br/>
&emsp;&emsp;&emsp;&emsp;(3)涉及会员本人、配偶或子女患重病、大病者须提供病史证明复印件和自费医药费正式发票;
</span>
<span class="dialog-footer" slot="footer">
<el-button @click="dialogVisible = false">关闭</el-button>
<el-button @click="dialogVisible = false" type="primary">同意</el-button>
</span>
</el-dialog>
</div>
<script>
function getQueryVariable(variable) {
let query = window.location.search.substring(1);
let vars = query.split("&");
for (let i = 0; i < vars.length; i++) {
let pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return '';
}
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'apply': httpVueLoader('/components/difficulty/apply.vue?v=' + new Date().getTime()),
},
data() {
return {
dialogVisible: false,
formData: {
sq_bzlx: "1",
sqsj: moment().format('YYYY-MM-DD'),
apply_mode: '1',
jtcys: [],
},
userData: {},
}
},
methods: {
radioButton() {
this.$set(this.formData, 'idcard', '${@shiro.getPrincipalProperty("idcard")}')
this.$set(this.formData, 'sqr', '${@shiro.getPrincipalProperty("username")}')
this.$set(this.formData, 'bbzrusername', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('username')}" : null)
this.$set(this.formData, 'sqrloginname', "${@shiro.getPrincipalProperty('loginname')}")
this.$set(this.formData, 'sex', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('sex')}" : null)
this.$set(this.formData, 'idcard', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('idcard')}" : null)
this.$set(this.formData, 'birthday', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('birthday')}" : null)
this.$set(this.formData, 'lxfs', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('mobile')}" : null)
this.$set(this.formData, 'yhkh', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('bank_number')}" : null)
this.$set(this.formData, 'yhmc', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('yhmc')}" : null)
this.$set(this.formData, 'unitname', this.formData.apply_mode == 1 ? this.userData.unitname : null)
this.$set(this.formData, 'zw', this.formData.apply_mode == 1 ? this.userData.position : null)
this.$set(this.formData, 'zc', this.formData.apply_mode == 1 ? this.userData.jobtitle : null)
this.$set(this.formData, 'zzmm', this.formData.apply_mode == 1 ? this.userData.political : null)
this.$set(this.formData, 'mz', this.formData.apply_mode == 1 ? this.userData.nation : null)
},
async getUserData() {
const resp = await $.post(loc() + "/getUserData")
if (resp.code === 0) {
this.userData = resp.data;
} else {
this.$notify.error({title: '失败', message: resp.msg});
}
},
async operation(flag) {
this.$refs.addFrom.operation(flag)
/*let method = this.formData.id ? "/doEdit" : "/doAdd"
this.$refs["addFrom"].validate(async (valid) => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const formData = Object.assign({}, this.formData);
formData.jtcys = JSON.stringify(formData.jtcys)
formData.files = JSON.stringify(formData.files)
formData.applicantsign = formData.sqsign
if (formData.apply_mode == 1) {
formData.bbzrusername = "${@shiro.getPrincipalProperty('id')}"
}
const resp = await $.post(loc() + method, formData)
if (resp.code === 0) {
sublime.jumpPagePjax('/platform/fw/difficulty/applylist')
loading.close()
} else {
this.$notify.error({title: '失败', message: resp.msg});
loading.close()
}
}
})*/
},
async openEdit(id) {
const resp = await $.get("/platform/fw/difficulty/applylist/findOne", {id})
if (resp.code === 0) {
if (resp.data.files) {
resp.data.files = JSON.parse(resp.data.files)
}
this.formData = resp.data
}
}
},
async created() {
await this.getUserData()
let id = getQueryVariable("id")
id ? this.openEdit(id) : this.radioButton()
}
})
</script>
<!--#
}
#-->
@@ -1,4 +1,4 @@
<!--#
<!--#
layout("/layouts/platform.html"){
#-->
@@ -6,7 +6,6 @@ layout("/layouts/platform.html"){
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<div class="block">
<el-date-picker
@@ -29,7 +28,6 @@ layout("/layouts/platform.html"){
v-for="item in unions"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable="true" filterable="true" placeholder="所属单位"
style="width: 100%;"
@@ -38,19 +36,18 @@ layout("/layouts/platform.html"){
v-for="item in units"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 140px;"
v-model="pageForm.searchName">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<!-- <div class="btn-group tool-button">-->
<!-- <div>-->
<!-- <el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">-->
<!-- <el-select placeholder="查询类型" slot="prepend"-->
<!-- style="width: 140px;"-->
<!-- v-model="pageForm.searchName">-->
<!-- <el-option label="工号" value="sbzr.loginname"></el-option>-->
<!-- <el-option label="姓名" value="sbzr.username"></el-option>-->
<!-- </el-select>-->
<!-- </el-input>-->
<!-- </div>-->
<!-- </div>-->
<div class="btn-group tool-button">
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
@@ -67,47 +64,12 @@ layout("/layouts/platform.html"){
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<!-- <el-table-column align="center" header-align="center" label="受补助人姓名"
prop="sbzrname">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="受补助人工号"
prop="sbzrloginname"></el-table-column>-->
<el-table-column align="center" header-align="center" label="申请人"
prop="sqrname"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="sqrunionname" show-overflow-tooltip
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname" show-overflow-tooltip
sortable>
<template slot-scope="{row}">
{{row.unitname?row.unitname:row.sqrunitname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="联系方式"
min-width="100"
prop="lxfs"
show-overflow-tooltip></el-table-column>
<!-- <el-table-column align="center" header-align="center" label="困难类型"
min-width="100"
prop="sq_knlx" show-overflow-tooltip>
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
</el-table-column>-->
<el-table-column align="center" header-align="center" label="申请时间" prop="sqsj"
sortable></el-table-column>
<!-- <el-table-column align="center" header-align="center" label="审核人"
min-width="100"
prop="shrname" show-overflow-tooltip>
<template slot-scope="{row:{shrname}}">
{{shrname?shrname:'暂无'}}
</template>
</el-table-column>-->
<el-table-column align="center" header-align="center" label="姓名" prop="userName"></el-table-column>
<el-table-column align="center" header-align="center" label="工号" prop="loginName"></el-table-column>
<el-table-column align="center" header-align="center" label="单位" prop="unitName"></el-table-column>
<el-table-column align="center" header-align="center" label="工会" prop="unionName"></el-table-column>
<el-table-column align="center" header-align="center" label="申请时间" prop="applyTime"></el-table-column>
<el-table-column align="center" header-align="center" label="联系方式" prop="mobile"></el-table-column>
<el-table-column align="center" header-align="center" label="申请状态"
prop="state_id" sortable>
<template scope="scope">
@@ -128,28 +90,23 @@ layout("/layouts/platform.html"){
</el-dropdown-item>
<el-dropdown-item
:command="{type:'edit',data:row}"
:disabled="![98,152,252].includes(row.zt)">
:disabled="![3000,3020,3050,3080].includes(row.stateId)">
编辑
</el-dropdown-item>
<el-dropdown-item
v-if="[250,156,150].includes(row.zt)"
:command="{type:'edit',data:row}"
:disabled="![250,156,150].includes(row.zt)">
重新提交
</el-dropdown-item>
<!-- :disabled="![3000].includes(row.stateId)"-->
<el-dropdown-item :command="{type:'delete',data:row}"
:disabled="![98].includes(row.zt)&&${@shiro.hasRole('sysadmin')}=== 'false'"
v-if="[3010,3020,3040,3050,3070,3080].includes(row.stateId) || ${@shiro.hasRole('sysadmin')}"
:loading="row.delLoading">
删除
</el-dropdown-item>
<el-dropdown-item :command="{type:'export',data:row}"
:disabled="row.zt!=500">
导出申请表
</el-dropdown-item>
<el-dropdown-item :command="{type:'doExport',data:row}"
:disabled="row.zt!=500">
导出领取通知单
</el-dropdown-item>
<!-- <el-dropdown-item :command="{type:'export',data:row}"-->
<!-- :disabled="row.stateId!=3090">-->
<!-- 导出申请表-->
<!-- </el-dropdown-item>-->
<!-- <el-dropdown-item :command="{type:'doExport',data:row}"-->
<!-- :disabled="row.stateId!=3090">-->
<!-- 导出领取通知单-->
<!-- </el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
</template>
@@ -161,19 +118,20 @@ layout("/layouts/platform.html"){
</template>
<template #view>
<info ref="info"></info>
<info ref="viewInfoRef"></info>
</template>
</guava>
</div>
<script>
<!--#include('./common/info.js'){}#-->
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'info': httpVueLoader('/components/difficulty/info.vue?v=' + new Date().getTime()),
info
},
data() {
return {
@@ -194,24 +152,16 @@ layout("/layouts/platform.html"){
} else if (type == 'delete') {
this.doDelete(data)
} else if (type == 'edit') {
this.openEdit(data)
sublime.jumpPagePjax('/platform/difficulty/apply?id=' + data.id)
} else if (type == 'export') {
window.location.href = "/platform/fw/difficulty/reading/export?id=" + data.id
window.location.href = "/platform/difficulty/reading/export?id=" + data.id
} else if (type == 'doExport') {
window.location.href = "/platform/fw/difficulty/reading/doExport?id=" + data.id
window.location.href = "/platform/difficulty/reading/doExport?id=" + data.id
}
},
dodownloadAnnex(id) {
window.location.href = "/platform/fw/difficulty/applylist/downloadAnnex?id=" + id
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
},
openEdit(row) {
const {id} = row
sublime.jumpPagePjax('/platform/fw/difficulty/apply?id=' + id)
this.$refs.viewInfoRef.onOpen(row.id)
},
doDelete(row) {
const {id} = row
@@ -225,6 +175,7 @@ layout("/layouts/platform.html"){
const resp = await $.get(loc() + '/doDelete', {id: id})
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.$message.success(resp.msg)
this.pageData()
} else {
this.notifyWarning(resp.msg)
@@ -43,14 +43,7 @@ layout("/layouts/platform.html"){
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
<el-input placeholder="请输入工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
</div>
</div>
<div class="btn-group tool-button">
@@ -74,51 +67,20 @@ layout("/layouts/platform.html"){
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<!-- <el-table-column align="center" header-align="center" prop="sbzrname"
label="受补助人姓名">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrloginname"
label="受补助人工号"></el-table-column>-->
<el-table-column align="center" header-align="center" label="申请人"
prop="sqrname"></el-table-column>
<el-table-column align="center" header-align="center" label="性别"
prop="sex"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="sqrunionname"
show-overflow-tooltip
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="姓名"
prop="userName"></el-table-column>
<el-table-column align="center" header-align="center" label="工号"
prop="loginName"></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname" show-overflow-tooltip
sortable>
<!-- <template slot-scope="{row}">
{{row.unitname?row.unitname:row.sqrname}}
</template>-->
</el-table-column>
prop="unitName"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="unionName"></el-table-column>
<el-table-column align="center" header-align="center" label="申请时间"
prop="applyTime"></el-table-column>
<el-table-column align="center" header-align="center" label="联系方式"
min-width="100"
prop="lxfs"
show-overflow-tooltip></el-table-column>
<!-- <el-table-column prop="sq_knlx" label="困难类型" header-align="center" align="center"
show-overflow-tooltip min-width="100">
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
</el-table-column>-->
<el-table-column align="center" header-align="center" label="申请时间" prop="sqsj"
sortable></el-table-column>
prop="mobile"></el-table-column>
<el-table-column align="center" header-align="center" label="申请状态"
prop="state_id" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.state_name}}</span>
</template>
</el-table-column>
prop="state_name"></el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="120px">
<template slot-scope="{row}">
@@ -133,14 +95,13 @@ layout("/layouts/platform.html"){
</el-dropdown-item>
<el-dropdown-item
:command="{type:'openReview',data:row}"
:disabled="pageForm.isAudit == true || (row.zt==200||row.zt==155||row.zt==500)">
v-if="row.stateId===3000">
审核
</el-dropdown-item>
<!-- <el-dropdown-item :command="{type:'edit',data:row}"
v-if="row.zt==200||row.zt==150||row.zt==152">
撤回
</el-dropdown-item>-->
<el-dropdown-item :command="{type:'edit',data:row}"
v-if="[3010,3020,3030].includes(row.stateId)">
撤回
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
@@ -152,16 +113,10 @@ layout("/layouts/platform.html"){
</template>
<template #edit>
<info :handle="true" :panes="[2]" label="分工会主席审核" ref="info2">
<template #handle>
<el-form :model="formData" :rules="formRules" label-position="right"
label-width="120px"
ref="form"
style="padding: 20px 0">
<el-form-item class="view-header" label="审核信息&emsp;" label-width="135px">
</el-form-item>
<el-row gutter="20">
<info ref="auditInfoRef">
<el-tab-pane label="分工会审核" name="分工会审核">
<el-form :model="formData" :rules="formRules" label-width="80px" ref="form">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="审核人员" prop="username">
<el-input disabled
@@ -175,37 +130,36 @@ layout("/layouts/platform.html"){
</el-col>
</el-row>
<el-form-item label="审核意见" prop="opinion">
<el-form-item label="审核金额" prop="money">
<el-input-number
placeholder="请填写"
:min="0"
:precision="2"
:step="0.01"
v-model="formData.money"></el-input-number>
</el-form-item>
<el-form-item label="审核意见" prop="auditOpinion">
<el-input maxlength="500" placeholder="请填写您的审核意见" rows="4"
type="textarea"
v-model="formData.auditOpinion"></el-input>
</el-form-item>
<el-form-item label="签&emsp;&emsp;字" prop="sign">
<sign :qz.sync="formData.auditSign"></sign>
<el-form-item label="签&emsp;&emsp;字" prop="auditSign">
<sign :qz.sync="formData.auditSign" :is_value_base64="false"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button :disabled="subDis" :loading="subLoading1" @click="doReview(1)">拒
绝
</el-button>
<el-button :disabled="subDis" :loading="subLoading3" @click="doReview(2)"
type="danger">返回修改
</el-button>
<el-button :disabled="subDis" :loading="subLoading2" @click="doReview(3)"
type="primary">通
过
</el-button>
</div>
</template>
<el-row type="flex" justify="end">
<el-button @click="doReview(1)">拒绝</el-button>
<el-button @click="doReview(2)" type="danger">返回修改</el-button>
<el-button @click="doReview(3)" type="primary">通过</el-button>
</el-row>
</el-tab-pane>
</info>
</template>
<template #view>
<info ref="info"></info>
<info ref="viewInfoRef"></info>
</template>
</guava>
@@ -213,31 +167,29 @@ layout("/layouts/platform.html"){
<script>
<!--#include('./common/info.js'){}#-->
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'info': httpVueLoader('/components/difficulty/info.vue'),
info
},
data() {
return {
unions: [],
units: [],
subDis: false,
subLoading1: false,
subLoading2: false,
subLoading3: false,
pageForm: {
unit: "",
year: "",
isAudit: false,
searchName: "sbzr.loginname"
searchName: "info.loginName"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
money: [{required: true, message: '必填', trigger: ['blur', 'change']}],
auditSign: [{required: true, message: '必填', trigger: ['blur', 'change']}]
},
}
},
@@ -257,42 +209,31 @@ layout("/layouts/platform.html"){
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await $.post(loc() + "/doEdit", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
} else {
this.notifyWarning(resp.msg)
}
type: 'warning'
}).then(() => {
$.post(loc() + "/doEdit", {id: id}).then(resp => {
if (resp.code === 0) {
this.$message.success(resp.msg)
this.doSearch()
} else {
this.notifyWarning(resp.msg)
}
}
})
});
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
this.$refs.viewInfoRef.onOpen(row.id)
},
openReview(row) {
const {id} = row
this.$refs.guava.edit()
this.$refs.auditInfoRef.onOpen(id, '分工会审核')
this.formData = {
id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.subLoading1 = false
this.subLoading2 = false
this.subLoading3 = false
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
@@ -301,20 +242,9 @@ layout("/layouts/platform.html"){
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
this.subDis = true
if (flag == 1) {
this.subLoading1 = true
} else if (flag == 2) {
this.subLoading2 = true
} else {
this.subLoading3 = true
}
const resp = await $.post(loc() + "/doReview", this.formData)
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if (resp.code === 0) {
this.$message.success(resp.msg)
this.pageData()
this.$refs.guava.index()
} else {
@@ -0,0 +1,136 @@
const info = {
template:/*language=HTML*/
`
<div class="applyInfo">
<el-tabs tab-position="top" v-model="activeName">
<el-tab-pane label="申请信息" name="1">
<el-descriptions :column="3" border>
<template v-if="viewData.mode==='2'">
<el-descriptions-item label="申请人姓名">{{ viewData.proxyUserName }}</el-descriptions-item>
<el-descriptions-item label="申请人工号">{{ viewData.proxyLoginName }}</el-descriptions-item>
</template>
<el-descriptions-item label="姓名">{{ viewData.userName }}</el-descriptions-item>
<el-descriptions-item label="工号">{{ viewData.loginName }}</el-descriptions-item>
<el-descriptions-item label="性别">{{ viewData.sex }}</el-descriptions-item>
<el-descriptions-item label="单位">{{ viewData.unitName }}</el-descriptions-item>
<el-descriptions-item label="分工会">{{ viewData.unionName }}</el-descriptions-item>
<el-descriptions-item label="月收入">{{ viewData.monthlyIncome }}</el-descriptions-item>
<el-descriptions-item label="出生年月">{{ viewData.birthday }}</el-descriptions-item>
<el-descriptions-item label="手机号码" :span="2">{{ viewData.mobile }}
</el-descriptions-item>
<el-descriptions-item label="家庭地址" :span="3">{{ viewData.homeAddress }}
</el-descriptions-item>
<el-descriptions-item label="款项" :span="3">{{ viewData.subsidyStandards }}
</el-descriptions-item>
<el-descriptions-item label="申请原因" :span="3">{{ viewData.reason }}
</el-descriptions-item>
<el-descriptions-item label="备注" :span="3">{{ viewData.remarks }}</el-descriptions-item>
<el-descriptions-item label="家庭成员经济收入" :span="3">
<el-table :data="viewData.familyList" border>
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="姓名" prop="name"></el-table-column>
<el-table-column prop="age" label="年龄(岁)"></el-table-column>
<el-table-column prop="relation" label="关系"></el-table-column>
<el-table-column prop="monthlyIncome" label="月收入(元)"></el-table-column>
</el-table>
</el-descriptions-item>
<el-descriptions-item label="附件" :span="3">
<file-upload v-if="viewData.files&&viewData.files.length"
:files="viewData.files"
:view="true"></file-upload>
<span v-else>暂无</span>
</el-descriptions-item>
<el-descriptions-item label="签字" :span="3">
<el-image v-if="viewData.signature"
style="width: 300px; height: 100px"
:src="CREATE_PREVIEW_URL(viewData.signature)"
fit="contain"></el-image>
<span v-else>暂无</span>
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="分工会审核信息" name="分工会审核信息" v-if="viewData.branchUnionAudit">
<el-descriptions :column="2" border>
<el-descriptions-item label="审核人">{{ viewData.branchUnionAudit.username }}</el-descriptions-item>
<el-descriptions-item label="审核时间">{{ viewData.branchUnionAudit.auditTime }}</el-descriptions-item>
<el-descriptions-item label="审核金额" :span="2" v-if="!viewData.isSelf">{{ viewData.branchUnionAudit.ext?.money }}元</el-descriptions-item>
<el-descriptions-item label="审核意见" :span="2">{{ viewData.branchUnionAudit.auditOpinion }}</el-descriptions-item>
<el-descriptions-item label="签字" :span="2">
<el-image v-if="viewData.branchUnionAudit.auditSign"
style="width: 300px; height: 100px"
:src="CREATE_PREVIEW_URL(viewData.branchUnionAudit.auditSign)"
fit="contain"></el-image>
<span v-else>暂无</span>
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="校工会初审信息" name="校工会初审信息" v-if="viewData.schoolUnionInitialAudit">
<el-descriptions :column="2" border>
<el-descriptions-item label="审核人">{{ viewData.schoolUnionInitialAudit.username }}</el-descriptions-item>
<el-descriptions-item label="审核时间">{{ viewData.schoolUnionInitialAudit.auditTime }}</el-descriptions-item>
<el-descriptions-item label="审核金额" :span="2" v-if="!viewData.isSelf">{{ viewData.schoolUnionInitialAudit.ext?.money }}元</el-descriptions-item>
<el-descriptions-item label="审核意见" :span="2">{{ viewData.schoolUnionInitialAudit.auditOpinion }}</el-descriptions-item>
<el-descriptions-item label="签字" :span="2">
<el-image v-if="viewData.schoolUnionInitialAudit.auditSign"
style="width: 300px; height: 100px"
:src="CREATE_PREVIEW_URL(viewData.schoolUnionInitialAudit.auditSign)"
fit="contain"></el-image>
<span v-else>暂无</span>
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="批准部门意见" name="批准部门意见" v-if="viewData.schoolUnionFinalAudit">
<el-descriptions :column="2" border>
<el-descriptions-item label="审核人">{{ viewData.schoolUnionFinalAudit.username }}</el-descriptions-item>
<el-descriptions-item label="审核时间">{{ viewData.schoolUnionFinalAudit.auditTime }}</el-descriptions-item>
<el-descriptions-item label="审核金额" :span="2">{{ viewData.schoolUnionFinalAudit.ext?.money }}元</el-descriptions-item>
<el-descriptions-item label="审核意见" :span="2">{{ viewData.schoolUnionFinalAudit.auditOpinion }}</el-descriptions-item>
<el-descriptions-item label="签字" :span="2">
<el-image v-if="viewData.schoolUnionFinalAudit.auditSign"
style="width: 300px; height: 100px"
:src="CREATE_PREVIEW_URL(viewData.schoolUnionFinalAudit.auditSign)"
fit="contain"></el-image>
<span v-else>暂无</span>
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<slot></slot>
</el-tabs>
</div>
`,
data() {
return {
viewData: {},
activeName: '1'
}
},
methods: {
onOpen(id, activeName = '1') {
this.activeName = activeName
$.get('/platform/difficulty/common/findOne', {id}).then(res => {
if (res.code === 0) {
try {
res.data.familyList = JSON.parse(res.data.familyList)
res.data.files = JSON.parse(res.data.files)
} catch (e) {
}
this.viewData = res.data
console.log(this.viewData)
}
})
}
},
style:
/*language=CSS*/
`
.applyInfo .el-descriptions__table{
table-layout: fixed;
}
`
}
@@ -46,8 +46,8 @@ layout("/layouts/platform.html"){
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
<el-option label="工号" value="info.loginName"></el-option>
<el-option label="姓名" value="info.userName"></el-option>
</el-select>
</el-input>
</div>
@@ -56,10 +56,8 @@ layout("/layouts/platform.html"){
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
<div class="pull-right offscreen-right">
<!--#if(@shiro.hasRole('A06')||@shiro.hasRole('wyh02')||@shiro.hasRole('wyh03')||@shiro.hasRole('H04')||@shiro.hasRole('sysadmin')){#-->
<el-button @click="doExcel"><i class="el-icon-download"></i> 导出
<el-button @click="doExcel" type="primary"><i class="el-icon-download"></i> 导出
</el-button>
<!--#}#-->
</div>
</el-card>
@@ -74,43 +72,20 @@ layout("/layouts/platform.html"){
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<!-- <el-table-column align="center" header-align="center" prop="sbzrname"
label="受补助人姓名">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrloginname"
label="受补助人工号"></el-table-column>-->
<el-table-column align="center" header-align="center" label="申请人"
prop="sqrname"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="sqrunionname"
show-overflow-tooltip
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="姓名"
prop="userName"></el-table-column>
<el-table-column align="center" header-align="center" label="工号"
prop="loginName"></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname" show-overflow-tooltip
sortable>
<template slot-scope="{row}">
{{row.unitname?row.unitname:row.sqrname}}
</template>
</el-table-column>
<!-- <el-table-column prop="sq_knlx" label="困难类型" header-align="center" align="center"
show-overflow-tooltip min-width="100">
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
</el-table-column>-->
<el-table-column align="center" header-align="center" label="申请时间" prop="sqsj"
sortable></el-table-column>
prop="unitName"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="unionName"></el-table-column>
<el-table-column align="center" header-align="center" label="申请时间"
prop="applyTime"></el-table-column>
<el-table-column align="center" header-align="center" label="联系方式"
prop="mobile"></el-table-column>
<el-table-column align="center" header-align="center" label="申请状态"
prop="state_id" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.state_name}}</span>
</template>
</el-table-column>
prop="state_name"></el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="120px">
<template slot-scope="{row}">
@@ -128,11 +103,11 @@ layout("/layouts/platform.html"){
下载
</el-dropdown-item>-->
<el-dropdown-item :command="{type:'export',data:row}"
:disabled="row.zt!=500">
:disabled="row.stateId!==3090">
导出申请表
</el-dropdown-item>
<el-dropdown-item :command="{type:'doExport',data:row}"
:disabled="row.zt!=500">
:disabled="row.stateId!==3090">
导出领取通知单
</el-dropdown-item>
</el-dropdown-menu>
@@ -147,19 +122,20 @@ layout("/layouts/platform.html"){
</template>
<template #view>
<info ref="info"></info>
<info ref="viewInfoRef"></info>
</template>
</guava>
</div>
<script>
<!--#include('./common/info.js'){}#-->
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'info': httpVueLoader('/components/difficulty/info.vue'),
info
},
data() {
return {
@@ -170,7 +146,7 @@ layout("/layouts/platform.html"){
unionId: '',
unit: "",
year: "",
searchName: "sbzr.loginname"
searchName: "info.loginName"
},
unitOptions: [],
}
@@ -193,25 +169,24 @@ layout("/layouts/platform.html"){
if (type == 'view') {
this.openView(data)
} else if (type == 'downloadAnnex') {
window.location.href = "/platform/fw/difficulty/reading/downloadAnnex?id=" + data.id
window.location.href = "/platform/difficulty/reading/downloadAnnex?id=" + data.id
} else if (type == 'doExport') {
window.location.href = "/platform/fw/difficulty/reading/doExport?id=" + data.id
window.location.href = "/platform/difficulty/reading/doExport?id=" + data.id
} else if (type == 'export') {
window.location.href = "/platform/fw/difficulty/reading/export?id=" + data.id
window.location.href = "/platform/difficulty/reading/export?id=" + data.id
}
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
this.$refs.viewInfoRef.onOpen(row.id)
},
doExcel() {
const {unionId, unitId, _dateRange} = this.pageForm
window.open("/platform/fw/difficulty/reading/doExcel?dateRange=" + JSON.stringify(_dateRange)
window.open("/platform/difficulty/reading/doExcel?dateRange=" + JSON.stringify(_dateRange)
+ "&unionId=" + unionId + "&unitId=" + unitId)
},
doWholeExcel() {
window.open("/platform/fw/difficulty/reading/doWholeExcel?dateRange=" + JSON.stringify(_dateRange)
window.open("/platform/difficulty/reading/doWholeExcel?dateRange=" + JSON.stringify(_dateRange)
+ "&unionId=" + unionId
+ "&unitId=" + unitId)
},
@@ -2,9 +2,8 @@
layout("/layouts/platform.html"){
#-->
<!--二级党组织-->
<!--工会主席-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
@@ -20,7 +19,6 @@ layout("/layouts/platform.html"){
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select @change="flushUnits" @clear="flushUnits" clearable="true"
filterable="true"
@@ -45,14 +43,7 @@ layout("/layouts/platform.html"){
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
<el-input placeholder="请输入工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
</div>
</div>
<div class="btn-group tool-button">
@@ -65,8 +56,6 @@ layout("/layouts/platform.html"){
</el-radio-group>
</div>
</el-card>
<el-card class="mt20" shadow="never">
<el-table
:data="tableData"
@@ -78,49 +67,20 @@ layout("/layouts/platform.html"){
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<!-- <el-table-column align="center" header-align="center" prop="sbzrname"
label="受补助人姓名">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrloginname"
label="受补助人工号"></el-table-column>-->
<el-table-column align="center" header-align="center" label="申请人"
prop="sqrname"></el-table-column>
<el-table-column align="center" header-align="center" label="性别"
prop="sex"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="sqrunionname"
show-overflow-tooltip
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="姓名"
prop="userName"></el-table-column>
<el-table-column align="center" header-align="center" label="工号"
prop="loginName"></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname" show-overflow-tooltip
sortable>
<template slot-scope="{row}">
{{row.unitname?row.unitname:row.sqrname}}
</template>
</el-table-column>
prop="unitName"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="unionName"></el-table-column>
<el-table-column align="center" header-align="center" label="申请时间"
prop="applyTime"></el-table-column>
<el-table-column align="center" header-align="center" label="联系方式"
min-width="100"
prop="lxfs"
show-overflow-tooltip></el-table-column>
<!-- <el-table-column prop="sq_knlx" label="困难类型" header-align="center" align="center"
show-overflow-tooltip min-width="100">
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
</el-table-column>-->
<el-table-column align="center" header-align="center" label="申请时间" prop="sqsj"
sortable></el-table-column>
prop="mobile"></el-table-column>
<el-table-column align="center" header-align="center" label="申请状态"
prop="state_id" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.state_name}}</span>
</template>
</el-table-column>
prop="state_name"></el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="120px">
<template slot-scope="{row}">
@@ -133,14 +93,15 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'openReview',data:row}"
:disabled="row.zt > 155">
<el-dropdown-item
:command="{type:'openReview',data:row}"
v-if="row.stateId===3060">
审核
</el-dropdown-item>
<!-- <el-dropdown-item v-if="row.zt==200"
:command="{type:'edit',data:row}">
撤回
</el-dropdown-item>-->
<el-dropdown-item :command="{type:'edit',data:row}"
v-if="[3070,3080,3090].includes(row.stateId)">
撤回
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
@@ -148,18 +109,14 @@ layout("/layouts/platform.html"){
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #edit>
<info :handle="true" label="校工会初审" ref="info2">
<template #handle>
<el-form :model="formData" :rules="formRules" label-position="right"
label-width="120px"
ref="form"
style="padding: 20px 0">
<el-form-item class="view-header" label="审核信息&emsp;" label-width="135px">
</el-form-item>
<el-row gutter="20">
<info ref="auditInfoRef">
<el-tab-pane label="工会常委会审核" name="工会常委会审核">
<el-form :model="formData" :rules="formRules" label-width="80px" ref="form">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="审核人员" prop="username">
<el-input disabled
@@ -173,52 +130,36 @@ layout("/layouts/platform.html"){
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="初审金额" prop="xghbzje">
<el-input
onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
placeholder="请输入初审金额"
type="number" v-model="formData.xghbzje">
<template slot="append"
style="border: none;background-color: white;">元
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="审核金额" prop="money">
<el-input-number
placeholder="请填写"
:min="0"
:precision="2"
:step="0.01"
v-model="formData.money"></el-input-number>
</el-form-item>
<el-form-item label="审核意见" prop="opinion">
<el-form-item label="审核意见" prop="auditOpinion">
<el-input maxlength="500" placeholder="请填写您的审核意见" rows="4"
type="textarea"
v-model="formData.auditOpinion"></el-input>
</el-form-item>
<el-form-item label="签&emsp;&emsp;字" prop="sign">
<sign :qz.sync="formData.auditSign"></sign>
<el-form-item label="签&emsp;&emsp;字" prop="auditSign">
<sign :qz.sync="formData.auditSign" :is_value_base64="false"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button :disabled="subDis" :loading="subLoading1" @click="doReview(1)">拒
绝
</el-button>
<el-button :disabled="subDis" :loading="subLoading3" @click="doReview(3)"
type="danger">返回修改
</el-button>
<el-button :disabled="subDis" :loading="subLoading2" @click="doReview(2)"
type="primary">通
过
</el-button>
</div>
</template>
<el-row type="flex" justify="end">
<el-button @click="doReview(1)">拒绝</el-button>
<el-button @click="doReview(2)" type="danger">返回修改</el-button>
<el-button @click="doReview(3)" type="primary">通过</el-button>
</el-row>
</el-tab-pane>
</info>
</template>
<template #view>
<info ref="info"></info>
<info ref="viewInfoRef"></info>
</template>
</guava>
@@ -226,32 +167,29 @@ layout("/layouts/platform.html"){
<script>
<!--#include('./common/info.js'){}#-->
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/difficulty/info.vue'),
info
},
data() {
return {
unions: [],
units: [],
subDis: false,
subLoading1: false,
subLoading2: false,
subLoading3: false,
pageForm: {
unit: "",
year: "",
isAudit: false,
searchName: "sbzr.loginname"
searchName: "info.loginName"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
xghbzje: [{required: true, message: '必填', trigger: ['blur', 'change']}],
money: [{required: true, message: '必填', trigger: ['blur', 'change']}],
auditSign: [{required: false, message: '必填', trigger: ['blur', 'change']}]
},
}
},
@@ -271,38 +209,31 @@ layout("/layouts/platform.html"){
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await $.post("/platform/fw/difficulty/unionchairman/doEdit", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
} else {
this.notifyWarning(resp.msg)
}
type: 'warning'
}).then(() => {
$.post(loc() + "/doEdit", {id: id}).then(resp => {
if (resp.code === 0) {
this.$message.success(resp.msg)
this.doSearch()
} else {
this.notifyWarning(resp.msg)
}
}
})
});
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
this.$refs.viewInfoRef.onOpen(row.id)
},
async openReview(row) {
openReview(row) {
const {id} = row
this.$refs.guava.edit()
this.$refs.auditInfoRef.onOpen(id, '工会常委会审核')
this.formData = {
id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
@@ -311,21 +242,9 @@ layout("/layouts/platform.html"){
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
this.subDis = true
if (flag == 1) {
this.subLoading1 = true
} else if (flag == 2) {
this.subLoading2 = true
} else {
this.subLoading3 = true
}
const resp = await $.post(loc() + "/doReview", this.formData)
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if (resp.code === 0) {
this.$message.success(resp.msg)
this.pageData()
this.$refs.guava.index()
} else {
@@ -347,6 +266,7 @@ layout("/layouts/platform.html"){
this.pageData()
this.unions = await getUnions()
this.flushUnits()
}
})
</script>
@@ -2,9 +2,8 @@
layout("/layouts/platform.html"){
#-->
<!--校工会经办人-->
<!--工会主席-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
@@ -20,7 +19,6 @@ layout("/layouts/platform.html"){
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select @change="flushUnits" @clear="flushUnits" clearable="true"
filterable="true"
@@ -45,14 +43,7 @@ layout("/layouts/platform.html"){
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 140px;"
v-model="pageForm.searchName">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
<el-input placeholder="请输入工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
</div>
</div>
<div class="btn-group tool-button">
@@ -63,10 +54,10 @@ layout("/layouts/platform.html"){
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
<el-button @click="exportExcel" type="primary"><i class="el-icon-download"></i> 导出
</el-button>
</div>
</el-card>
<el-card class="mt20" shadow="never">
<el-table
:data="tableData"
@@ -78,49 +69,20 @@ layout("/layouts/platform.html"){
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<!-- <el-table-column align="center" header-align="center" prop="sbzrname"
label="受补助人姓名">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrloginname"
label="受补助人工号"></el-table-column>-->
<el-table-column align="center" header-align="center" label="申请人"
prop="sqrname"></el-table-column>
<el-table-column align="center" header-align="center" label="性别"
prop="sex"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="sqrunionname"
show-overflow-tooltip
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="姓名"
prop="userName"></el-table-column>
<el-table-column align="center" header-align="center" label="工号"
prop="loginName"></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname" show-overflow-tooltip
sortable>
<template slot-scope="{row}">
{{row.unitname?row.unitname:row.sqrname}}
</template>
</el-table-column>
prop="unitName"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="unionName"></el-table-column>
<el-table-column align="center" header-align="center" label="申请时间"
prop="applyTime"></el-table-column>
<el-table-column align="center" header-align="center" label="联系方式"
min-width="100"
prop="lxfs"
show-overflow-tooltip></el-table-column>
<!-- <el-table-column prop="sq_knlx" label="困难类型" header-align="center" align="center"
show-overflow-tooltip min-width="100">
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
</el-table-column>
-->
<el-table-column align="center" header-align="center" label="申请时间" prop="sqsj"
sortable></el-table-column>
prop="mobile"></el-table-column>
<el-table-column align="center" header-align="center" label="申请状态"
prop="state_id" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.state_name}}</span>
</template>
</el-table-column>
prop="state_name"></el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="120px">
<template slot-scope="{row}">
@@ -133,14 +95,15 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'openReview',data:row}"
:disabled="row.zt == 500">
<el-dropdown-item
:command="{type:'openReview',data:row}"
v-if="row.stateId===3030">
审核
</el-dropdown-item>
<!-- <el-dropdown-item v-if="row.zt==500"
:command="{type:'edit',data:row}">
撤回
</el-dropdown-item>-->
<el-dropdown-item :command="{type:'edit',data:row}"
v-if="[3040,3050,3060].includes(row.stateId)">
撤回
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
@@ -148,18 +111,14 @@ layout("/layouts/platform.html"){
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #edit>
<info :handle="true" label="校工会主席审核" ref="info2">
<template #handle>
<el-form :model="formData" :rules="formRules" label-position="right"
label-width="120px"
ref="form"
style="padding: 20px 0">
<el-form-item class="view-header" label="审核信息&emsp;" label-width="135px">
</el-form-item>
<el-row gutter="20">
<info ref="auditInfoRef">
<el-tab-pane label="校工会初审" name="校工会初审">
<el-form :model="formData" :rules="formRules" label-width="80px" ref="form">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="审核人员" prop="username">
<el-input disabled
@@ -173,52 +132,36 @@ layout("/layouts/platform.html"){
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="补助金额" prop="xghbzje">
<el-input disabled
onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
placeholder="请输入补助金额"
type="number" v-model="formData.xghbzje">
<template slot="append"
style="border: none;background-color: white;">元
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="审核金额" prop="money">
<el-input-number
placeholder="请填写"
:min="0"
:precision="2"
:step="0.01"
v-model="formData.money"></el-input-number>
</el-form-item>
<el-form-item label="审核意见" prop="opinion">
<el-form-item label="审核意见" prop="auditOpinion">
<el-input maxlength="500" placeholder="请填写您的审核意见" rows="4"
type="textarea"
v-model="formData.auditOpinion"></el-input>
</el-form-item>
<el-form-item label="签&emsp;&emsp;字" prop="sign">
<sign :qz.sync="formData.auditSign"></sign>
<el-form-item label="签&emsp;&emsp;字" prop="auditSign">
<sign :qz.sync="formData.auditSign" :is_value_base64="false"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button :disabled="subDis" :loading="subLoading1" @click="doReview(1)">拒
绝
</el-button>
<el-button :disabled="subDis" :loading="subLoading3" @click="doReview(3)"
type="danger">返回修改
</el-button>
<el-button :disabled="subDis" :loading="subLoading2" @click="doReview(2)"
type="primary">通
过
</el-button>
</div>
</template>
<el-row type="flex" justify="end">
<el-button @click="doReview(1)">拒绝</el-button>
<el-button @click="doReview(2)" type="danger">返回修改</el-button>
<el-button @click="doReview(3)" type="primary">通过</el-button>
</el-row>
</el-tab-pane>
</info>
</template>
<template #view>
<info ref="info"></info>
<info ref="viewInfoRef"></info>
</template>
</guava>
@@ -226,36 +169,40 @@ layout("/layouts/platform.html"){
<script>
<!--#include('./common/info.js'){}#-->
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/difficulty/info.vue'),
info
},
data() {
return {
unions: [],
units: [],
subDis: false,
subLoading1: false,
subLoading2: false,
subLoading3: false,
pageForm: {
unit: "",
unionId: "",
unitId: "",
year: "",
isAudit: false,
searchName: "sbzr.loginname"
searchName: "info.loginName"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
xghbzje: [{required: true, message: '必填', trigger: ['blur', 'change']}],
money: [{required: true, message: '必填', trigger: ['blur', 'change']}],
auditSign: [{required: false, message: '必填', trigger: ['blur', 'change']}]
},
}
},
methods: {
exportExcel(){
const {unionId, unitId, year} = this.pageForm
window.open("/platform/difficulty/schoolUnionInitialAudit/exportExcel?year=" + year
+ "&unionId=" + unionId + "&unitId=" + unitId)
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
@@ -271,39 +218,31 @@ layout("/layouts/platform.html"){
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await $.post("/platform/fw/difficulty/unionchairman/doEdit", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
} else {
this.notifyWarning(resp.msg)
}
type: 'warning'
}).then(() => {
$.post(loc() + "/doEdit", {id: id}).then(resp => {
if (resp.code === 0) {
this.$message.success(resp.msg)
this.doSearch()
} else {
this.notifyWarning(resp.msg)
}
}
})
});
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
this.$refs.viewInfoRef.onOpen(row.id)
},
async openReview(row) {
openReview(row) {
const {id} = row
this.$refs.guava.edit()
this.$refs.auditInfoRef.onOpen(id, '校工会初审')
this.formData = {
id,
xghbzje: row.xghbzje,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
@@ -312,21 +251,9 @@ layout("/layouts/platform.html"){
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
this.subDis = true
if (flag == 1) {
this.subLoading1 = true
} else if (flag == 2) {
this.subLoading2 = true
} else {
this.subLoading3 = true
}
const resp = await $.post(loc() + "/doReview", this.formData)
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if (resp.code === 0) {
this.$message.success(resp.msg)
this.pageData()
this.$refs.guava.index()
} else {
@@ -348,6 +275,7 @@ layout("/layouts/platform.html"){
this.pageData()
this.unions = await getUnions()
this.flushUnits()
}
})
</script>
@@ -1,288 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<!--校工会常务副主席审核-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5">
<div class="block">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.unit" filterable placeholder="请选择单位" clearable>
<el-option
v-for="item in unitOptions"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<el-option label="受助人工号" value="sbzr.loginname"></el-option>
<el-option label="受助人姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button mt5">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="btn-group tool-button mt5">
<el-radio-group v-model="pageForm.isAudit" @change="doSearch">
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
</div>
</el-row>
<el-row class="el-table-container">
<el-table
:data="tableData"
size="mini"
style="width: 100%"
@sort-change="pageOrder"
>
<el-table-column label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column
align="center" header-align="center"
prop="sqrloginname"
label="工号"
>
</el-table-column>
<el-table-column
align="center" header-align="center"
prop="sqrname"
label="姓名"
>
</el-table-column>
<el-table-column
align="center" header-align="center"
prop="unitname"
label="单位"
>
</el-table-column>
<el-table-column sortable
align="center" header-align="center"
prop="sqsj"
label="申请时间"
>
</el-table-column>
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.state_name}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'openReview',data:row}">
审核
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</el-row>
<!--#include("/layouts/pagination.html"){}#-->
</template>
<template #edit>
<info ref="info2" :handle="true" label="校工会常务副主席审核" :panes="[2]">
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<el-form-item label="审核信息&emsp;" label-width="135px" class="view-header">
</el-form-item>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="time" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="jb" label="级&emsp;&emsp;别">
<el-select v-model="formData.jb" placeholder="请选择级别"
clearable style="width: 100%">
<el-option
v-for="item in jbOptions"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="xghbzje" label="补助金额">
<el-input v-model="formData.xghbzje"
onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
placeholder="请输入补助金额" type="number">
<template style="border: none;background-color: white;" slot="append">元
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
<el-form-item prop="sign" label="签&emsp;&emsp;字">
<sign :qz.sync="formData.auditSign"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doReview(false)" :disabled="subDis" :loading="subLoading1">拒
绝
</el-button>
<el-button type="primary" @click="doReview(true)" :disabled="subDis" :loading="subLoading2">通
过
</el-button>
</div>
</template>
</info>
</template>
<template #view>
<info ref="info"></info>
</template>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/difficulty/info.vue'),
},
data() {
return {
jbOptions: ['甲级', '乙级', '丙级'],
subDis: false,
subLoading1: false,
subLoading2: false,
pageForm: {
unit: "",
year: "",
isAudit: false,
searchName: "sbzr.loginname"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'openReview') {
this.openReview(data)
}
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
},
openReview(row) {
const {id} = row
this.formData = {
id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
this.subDis = true
flag ? this.subLoading2 = true : this.subLoading1 = true
const resp = await $.post(loc() + "/doReview", this.formData)
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if(resp.code===0){
this.pageData()
this.$refs.guava.index()
}else{
this.notifyWarning(resp.msg)
}
}
})
},
},
async created() {
this.pageData()
this.unitOptions = await getUnits(null)
}
})
</script>
<!--#
}
#-->
@@ -1,743 +0,0 @@
<!--#
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>
<!--#
}
#-->