Commit a984570b by qiaoyanqi

工会信息

parent 3e3a0fea
import Bridge from '../components-control/util/bridge'
import SelectApprovers from '../components-control/select-approvers.vue'
import { compareData } from "../components-control/util/dataChange"
import { showSignModal, saveBill, verifyBill } from './util'
import { BILL_GLOBAL_PARAM } from '../constant'
export default {
execute: function (bill, param) {
if (bill) {
if (!verifyBill(bill)) {
GMS.$hideContainer.$Message.error('验签失败')
return
}
if (!bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT) || !bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).taskId) {
GMS.$hideContainer.$Message.error('请配置审批轨迹')
return
}
if (!this.isApproverEqulloginer(bill, param)) {
GMS.$hideContainer.$Message.error('单据审批状态已发生变化,请刷新界面')
return
}
let curTagId = window.nros.context.getCurrTag();
let oldObj = curTagId && GMS.oldBillDataMap[curTagId]?GMS.oldBillDataMap[curTagId]:GMS.oldBillData;
const dataChangeFlag = compareData(oldObj, bill.getBuillData())
const noRunTimeFormula = bill.getGlobalParam("noRunTimeFormula")
if (noRunTimeFormula) {
this.approvalLogical(bill, param, this)
}
else if (dataChangeFlag) {
bill.runFormulaCheckData(param, (msg) => {
if (msg.length == 0) {
this.approvalLogical(bill, param, this)
}
else {
GMS.vbus.$Modal.warning({
title: "信息错误",
content: msg,
});
}
})
}
else {
bill.runFormulaCheckData(param, (msg) => {
if (msg.length == 0) {
GMS.$hideContainer.$Modal.confirm({
title: "信息提示",
content: "信息发生变化, 是否保存",
onOk: () => {
saveBill(bill, param).then(() => {
this.approvalLogical(bill, param)
})
},
onCancel: () => {
}
})
} else {
GMS.vbus.$Modal.warning({
title: "信息错误",
content: msg,
});
}
});
}
} else {
GMS.$hideContainer.$Message.error('缺少参数');
}
},
approvalLogical: function (bill, param) {
const getApprovalList = () => {
const setApprover = (data) => {
bill.getMasterData().setValue('APPROVERPROPERTIES', data, null, 'none')
}
let taskId = bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).taskId;
bill.setControlsSate(param["_control_name_"], "enable", false)
let selectedApprovers = []
window.GMS.$http.get(`/bpm/bill/selectApprover/ApproverList/${taskId}`).then((res) => {
setApprover(null)
if (res.data.code == 204) {
this.executeApproval(bill, param)
return
}
else if (res.data.code != 200) {
bill.setControlsSate(param["_control_name_"], "enable", true)
GMS.$hideContainer.$Message.error(res.data.msg || '提交失败,请联系系统管理员');
return
}
bill.setControlsSate(param["_control_name_"], "enable", true)
const nodeData = res.data.ApproverVo
const optionList = [...nodeData.approvers]
if (optionList.length == 0) {
GMS.$hideContainer.$Message.error('未找到下一节点的审批人')
return
}
GMS.$hideContainer.$Modal.confirm({
width: 700,
render: (h) => {
return h(
SelectApprovers,
{
props: {
optionList,
},
on: {
'on-change': (val) => {
selectedApprovers = val
}
}
}
)
},
onOk: () => {
const data = JSON.stringify({
...nodeData,
approvers: selectedApprovers,
})
setApprover(data)
this.executeApproval(bill, param)
},
onCancel: () => {
}
});
}).catch(() => {
GMS.$hideContainer.$Message.error('未找到下一节点的审批人');
})
}
if (param.param.actions) {
let saveParam = {
actions: param.param.actions
}
bill.executeServerAction(saveParam, function (code, data) {
if (code === 200) {
getApprovalList()
} else {
bill.setControlsSate(param["_control_name_"], "enable", true)
if (data.message.includes('还款金额不能大于未还金额')) {
GMS.$hideContainer.$message.error("还款金额不能大于未还金额!");
}
else {
GMS.$hideContainer.$message.error("操作异常请联系管理员");
}
}
}.bind(this));
} else {
getApprovalList()
}
},
executeApproval: function(bill, param) {
let taskId = bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).taskId;
let comments =
bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).suggestions
? bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).suggestions
: '';
const fn = () => {
saveBill(bill, param).then(() => {
GMS.$http.post('/rbc/workflow/approve/completed/' + taskId + '?result=1&comments=' + comments).then(
function (response) {
if (response.status == 200 || response.statusText == 'OK') {
if (response.data.code != 0) {
GMS.$hideContainer.$Message.error(response.data.message)
return
}
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"], "loading", false)
GMS.$hideContainer.$Message.success('审批成功!')
let curTagId = window.nros.context.getCurrTag();
GMS.vbus.$emit('change-form-state', { state: 'readOnly'},curTagId)
if (
window.osConfig.appOpenMode &&
window.osConfig.appOpenMode == "apploader"
) {
GMS.$hideContainer.$portalAPI.emit('entry-tag-close')
}
else if (Bridge.vm) {
Bridge.vm.modal_visible = false
}
window.GMS.vbus.$emit('refresh-workflow-job-view')
}
}.bind(this)
)
.catch(
function (error) {
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"], "loading", false)
GMS.$hideContainer.$Message.error('工作流配置错误,请联系管理员')
}.bind(this)
);
})
}
window.GMS.$http.get(`/rbc/workflow/signatureConfig/${taskId}`).then((res) => {
const { isUseSignature, nodeName } = res.data && res.data.data || {}
if (isUseSignature) {
showSignModal(bill, param, nodeName).then(fn).catch((err) => {
if (err) console.error(err)
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"], "loading", false)
})
}
else {
fn()
}
})
return
},
isApproverEqulloginer: function (bill, param) {
const loginer = GMS.userContext && GMS.userContext.id || window.nros.getUser().conetxtUser.id;
let approver = []
$.ajax({
type: "GET",
url: `${osConfig.baseUrl}/rbc/workflow/confirmApprover/getUserId/${bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).taskId}`,
async: false,
contentType: "application/json;",
beforeSend: function (request) {
request.setRequestHeader("Authorization", GMS.util.getAuthorization());
},
success: function (data1) {
approver = data1.ownerIds
},
error: function () {
}
})
return approver.includes(loginer)
}
}
\ No newline at end of file
import Bridge from '../components-control/util/bridge'
import { compareData } from "../components-control/util/dataChange"
import { SIGNATURE_TABLE_NAME, BILL_GLOBAL_PARAM } from '../constant'
import { saveBill } from './util'
export default {
execute: function (bill, param) {
if(bill){
if (!this.isApproverEqulloginer(bill, param)) {
GMS.$hideContainer.$Message.error('单据审批状态已发生变化,请刷新界面')
return
}
let curTagId = window.nros.context.getCurrTag();
let oldObj = curTagId && GMS.oldBillDataMap[curTagId]?GMS.oldBillDataMap[curTagId]:GMS.oldBillData;
let flag = compareData(oldObj, bill.getBuillData()) || bill.getGlobalParam("noRunTimeFormula");
if (flag) {
this.approvalLogical(bill, param, this)
} else {
GMS.$hideContainer.$Modal.confirm({
title: "信息提示",
content: "信息发生变化, 是否保存",
onOk: () => {
saveBill(bill, param).then(() => {
this.approvalLogical(bill, param)
})
},
onCancel: () => {
}
})
}
}else{
GMS.$hideContainer.$Message.error('缺少参数');
}
},
approvalLogical: function (bill, param) {
bill.setControlsSate(param["_control_name_"], "enable", false)
if(param.param.actions){
let saveParam = {
actions: param.param.actions,
}
bill.executeServerAction(saveParam,function(code,data){
if(code===200){
this.approval(bill, param);
}else{
bill.setControlsSate(param["_control_name_"], "enable", true)
GMS.$hideContainer.$message.error("操作异常请联系管理员");
}
}.bind(this));
} else {
this.approval(bill, param);
}
},
approval: function(bill, param){
if (!bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT) || !bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).taskId) {
GMS.$hideContainer.$Message.error('请配置审批轨迹')
return
}
let taskId = bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).taskId;
let comments =
bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).suggestions
? bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).suggestions
: ''
bill.clearSubDatas(SIGNATURE_TABLE_NAME)
saveBill(bill, param).then(() => {
GMS.$http.post('/rbc/workflow/approve/completed/' + taskId + '?result=3&comments='+comments).then(
function(response) {
if (response.status == 200 || response.statusText == 'OK') {
if (response.data.code != 0) {
GMS.$hideContainer.$Message.error(response.data.message)
return
}
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"],"loading",false)
let curTagId = window.nros.context.getCurrTag();
GMS.vbus.$emit('change-form-state', { state: 'readOnly'},curTagId)
GMS.$hideContainer.$Message.success('驳回成功!')
if (
window.osConfig.appOpenMode &&
window.osConfig.appOpenMode == "apploader"
) {
GMS.$hideContainer.$portalAPI.emit('entry-tag-close')
}
else if (Bridge.vm) {
Bridge.vm.modal_visible = false
}
window.GMS.vbus.$emit('refresh-workflow-job-view')
}
}.bind(this)
)
.catch(
function(error) {
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"],"loading",false)
GMS.$hideContainer.$Message.error('工作流配置错误,请联系管理员')
}.bind(this)
);
})
},
isApproverEqulloginer: function (bill, param) {
const loginer = GMS.userContext && GMS.userContext.id || window.nros.getUser().conetxtUser.id;
let approver = []
$.ajax({
type: "GET",
url: `${osConfig.baseUrl}/rbc/workflow/confirmApprover/getUserId/${bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).taskId}`,
async: false,
contentType: "application/json;",
beforeSend: function (request) {
request.setRequestHeader("Authorization", GMS.util.getAuthorization());
},
success: function (data1) {
approver = data1.ownerIds
},
error: function () {
}
})
return approver.includes(loginer)
}
}
\ No newline at end of file
import errorMessageUtil from "./util/errorMessageUtil";
import {minusIndex} from '../query-actions/util/queryTag.js';
import { showSignModal, saveBill } from "./util";
export default {
execute: function (bill, param) {
if (param && param.param && param.param.budgetcontrol) {
let res = this.getBudgetControl(bill, true, param);
res.then((data) => {
if (data.code == 0) {
let result = this.getBudgetControl(bill, false, param);
result.then((data1) => {
if (data1.code == 0) {
this.submitExecute(bill, param);
} else if (data1.code == 1) {
GAMS.Common.messagePrompt(data1.msg);
}
});
} else if (data.code == 1) {
setTimeout(() => {
GAMS.Common.messagePrompt(data.msg);
}, 500);
} else if (data.code == 2) {
setTimeout(() => {
this.getModal(bill, param, data);
}, 500);
}
});
} else {
this.submitExecute(bill, param);
}
},
getModal(bill, param, data) {
GMS.$hideContainer.$Modal.confirm({
title: "信息提示",
content: data.msg,
onOk: () => {
let result = this.getBudgetControl(bill, false, param);
result.then((data1) => {
if (data1.code == 0) {
this.submitExecute(bill, param);
} else if (data1.code == 1) {
GAMS.Common.messagePrompt(data1.msg);
}
});
},
onCancel: () => {
GMS.$hideContainer.$Message["error"]({
content: "已取消",
});
},
});
},
getBudgetControl(bill, check, param) {
let postData = {
data: bill.getBuillData(),
};
let url = `/v1/budget/control/${param.define}/${check}`;
return new Promise((resolve, reject) => {
GMS.$http
.post(url, postData, {
headers: {
post: {
"Content-Type": "application/json",
},
},
})
.then((res) => {
resolve(res.data);
});
});
},
submitExecute(bill, param){
if (bill) {
bill.setControlsSate(param["_control_name_"], 'enable', false)
const submitFn = () => {
let postData = {
data: bill.getBuillData(),
};
let url = `/rbc/bill/workflowAction/executed/${param.define}/workflow.submitToFlow?transmission=total`;
window.GMS.$http.post(url, JSON.stringify(postData)).then((response) => {
const data = response.data
let code = 200
if (data.code != 0) {
code = 201
}
bill.setControlsSate(param["_control_name_"], 'enable', true)
if (code === 200) {
const id = data.content.billData.id;
minusIndex();//上张下张用
GMS.$hideContainer.$Message.success('提交成功');
let curTagId = window.nros.context.getCurrTag();
GMS.vbus.$emit("workflow-state-change", 90,curTagId);
} else if (code === 201) {
GMS.$hideContainer.$Spin.hide()
data.message && GMS.$hideContainer.$Message.error({
content: errorMessageUtil.submitAction.getErrorMessage(data.message),
duration: 3
});
} else if (code === 202) {
GMS.$hideContainer.$Spin.hide();
GMS.$hideContainer.$Message.error("暂存单据异常请联系管理员");
}
}).catch((err) => {
GMS.$hideContainer.$Message.error('工作流配置错误,请联系管理员');
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"],"loading",false)
})
}
if (param && param.param && param.param.useSignature) {
showSignModal(bill, param, '提交人').then(() => {
saveBill(bill, param).then(submitFn)
}).catch(() => {
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"],"loading",false)
})
}
else {
submitFn()
}
} else {
GMS.$hideContainer.$Spin.hide();
alert('缺少参数');
}
}
}
\ No newline at end of file
......@@ -2,7 +2,7 @@
<div class="news-container">
<div class="news-detail">
<div class="detail-title">{{title}}</div>
<div class="detail-description">摘要:{{description}} &nbsp&nbsp&nbsp&nbsp 时间:{{time}}</div>
<div class="detail-description">摘要:{{description}} &nbsp;&nbsp;&nbsp;&nbsp; 时间:{{time}}</div>
<div class="detail-content" v-html="content"></div>
</div>
</div>
......
<template>
<div class="bill-achievements">
<vxe-table border ref="xTable" :data="tableData" :show-header="false">
<vxe-table-column
field="name"
title="name"
width="160"
align="center"
></vxe-table-column>
<vxe-table-column field="value" title="type">
<template slot-scope="scope">
<component
:is="scope.row.type"
:attr="{ field: 'value', row: scope.row, attr: scope.row.attr }"
></component>
</template>
</vxe-table-column>
</vxe-table>
</div>
</template>
<script>
import vxeAchievements from "./vxe-achievements.js";
import dataControl from "./components/dataControl.vue";
import vxeTableControl from "./components/vxe-table.vue";
import radioGroupControl from "./components/radioGroupControl.vue";
import inputControl from "./components/inputControl.vue";
export default {
mixins: [vxeAchievements],
components: {
vxeTableControl,
dataControl,
radioGroupControl,
inputControl,
},
data() {
return {
tableData: [
{
name: "项目名称",
type: "inputControl",
value: "",
},
{
name: "项目属性",
type: "radioGroupControl",
value: "",
},
{
name: "项目起止时间",
type: "dataControl",
value: "",
},
{
name: "项目资金申请(万元)",
type: "vxeTableControl",
attr: {
showHeader: false,
tableData: [
{
name: "资金总额:",
value: "",
width: 200,
},
{
name: " (一)上级工会预算拨款:",
value: "",
width: 200,
},
{
name: "1.工会经费:",
value: "",
width: 200,
},
{
name: "2.财政拨款:",
value: "",
width: 200,
},
{
name: "(二)自有资金:",
value: "",
width: 200,
},
{
name: "1.工会经费:",
value: "",
width: 200,
},
{
name: "2.财政补助收入:",
value: "",
width: 200,
},
{
name: "3.行政补助收入:",
value: "",
width: 200,
},
{
name: "4.事业收入:",
value: "",
width: 200,
},
{
name: "5.经营性收入:",
value: "",
width: 200,
},
],
columns: [
{
field: "name",
title: "收入名称",
width: 150,
type: "inputControl",
},
{
field: "value",
title: "数值",
type: "inputControl",
},
],
},
},
{
name: "单位(部门)职能概述",
type: "inputControl",
},
{
name: "项目概况",
type: "inputControl",
},
{
name: "项目立项情况",
type: "vxeTableControl",
attr: {
showHeader: false,
tableData: [
{
name: "项目立项的依据",
value: "",
width: 200,
},
{
name: "项目申报的可行性",
value: "",
width: 200,
},
{
name: "项目申报的必要性",
value: "",
width: 200,
},
],
columns: [
{
field: "name",
title: "立项情况",
width: 200,
},
{
field: "value",
title: "描述",
type: "inputControl",
},
],
},
},
{
name: "项目实施进度计划",
type: "vxeTableControl",
attr: {
showHeader: true,
tableData: [
{
content: "",
startTime: "",
endTime: "",
},
{
content: "",
startTime: "",
endTime: "",
},
],
columns: [
{
field: "content",
title: "项目实施内容",
type: "inputControl",
},
{
field: "startTime",
title: "开始时间",
type: "dataControl",
daterange: "date",
placement: "bottom",
},
{
field: "endTime",
title: "完成时间",
type: "dataControl",
daterange: "date",
placement: "bottom",
},
],
},
},
{
name: "项目绩效目标",
type: "vxeTableControl",
attr: { showHeader: false },
},
{
name: "长期绩效指标",
type: "vxeTableControl",
attr: { showHeader: false },
},
{
name: "年度绩效指标",
type: "vxeTableControl",
attr: {
showHeader: true,
tableData: [
{
longGoal: "",
yearGoal: "",
},
{
longGoal: "",
yearGoal: "",
},
],
columns: [
{
field: "longGoal",
title: "长期目标",
type: "inputControl",
},
{
field: "yearGoal",
title: "年度目标",
type: "dataControl",
type: "inputControl",
}
],
},
},
{
name: "其他说明的问题",
type: "inputControl",
},
{
name: "填报人:",
type: "inputControl",
},
],
};
},
props: {},
watch: {},
computed: {},
methods: {},
mounted() {},
created() {},
beforeDestroy() {},
};
</script>
<style lang="less" scoped>
.bill-achievements {
}
</style>
<template>
<div class="">
<DatePicker :type="attr.column && attr.column.daterange?attr.column.daterange:'daterange'" :placement="attr.column && attr.column.placement" :value="attr.row[attr.field]"></DatePicker>
</div>
</template>
<script>
export default {
data() {
return {
};
},
props: {
attr:{
type:Object,
default:()=>{}
}
},
watch: {},
computed: {},
methods: {
},
mounted() {},
created() {},
beforeDestroy() {},
};
</script>
<style lang="less" scoped>
</style>
<template>
<div class="">
<Input v-model="attr.row[attr.field]"/>
</div>
</template>
<script>
export default {
data() {
return {
};
},
props: {
attr:{
type:Object,
default:()=>{}
}
},
watch: {},
computed: {},
methods: {
},
mounted() {},
created() {},
beforeDestroy() {},
};
</script>
<style lang="less" scoped>
</style>
<template>
<div class="">
<RadioGroup v-model="attr.row[attr.field]">
<Radio label="新增项目"></Radio>
<Radio label="延续项目"></Radio>
</RadioGroup>
</div>
</template>
<script>
export default {
data() {
return {};
},
props: {
attr:{
type:Object,
default:()=>{}
}
},
watch: {},
computed: {},
methods: {},
mounted() {},
created() {},
beforeDestroy() {},
};
</script>
<style lang="less" scoped></style>
<template>
<div class="detail-table">
<vxe-table border ref="xTable" :data="attr.attr.tableData" :show-header="attr.attr.showHeader||false"
:header-cell-class-name="headerCellClassName">
<template v-for="(column, index) in attr.attr.columns">
<vxe-table-column :field="column.field" :title="column.title" :width="column.width" :key="index">
<template slot-scope="scope">
<component
v-if="column.type"
:is="column.type"
:attr="{field:column.field,row:scope.row,column:column}"
></component>
<span v-else>{{scope.row[column.field]}}</span>
</template>
</vxe-table-column>
</template>
</vxe-table>
</div>
</template>
<script>
import vxeAchievements from "../vxe-achievements.js";
import dataControl from "./dataControl.vue";
import vxeTableControl from "./vxe-table.vue";
import radioGroupControl from "./radioGroupControl.vue";
import inputControl from "./inputControl.vue";
export default {
mixins: [vxeAchievements],
components: {
vxeTableControl,
dataControl,
radioGroupControl,
inputControl
},
data() {
return {
};
},
props: {
attr:{
type:Object,
default:()=>{}
}
},
watch: {},
computed: {},
methods: {
headerCellClassName ({ column, columnIndex }) {
if (column.property === 'content') {
return 'col-white'
}
},
},
mounted() {},
created() {},
beforeDestroy() {},
};
</script>
<style lang="less" scoped>
.detail-table {
.vxe-header--column .col-white {
background-color: #fff !important;
}
}
</style>
export default {
data() {
return {
};
},
props: {},
watch: {},
computed: {},
methods: {
},
mounted() {
},
created() {},
beforeDestroy() {},
};
export default {
billControl: [
{
"title": "绩效表样",
"description":"",
"discard": false,
"dynamicComponent": 'billForm',
"extends": {
"config": [
{
"background": "#fff",
"key": "background",
"type": "Color",
"title": "背景色"
}
],
"layout":[]
},
"value": "Achievements",
"path": "单据/通用"
},
{
"title": "Tab切换容器",
"description":"",
"discard": false,
......
......@@ -83,6 +83,7 @@ import integerControl from './control/integerControl.vue'
import IntroduceInputControl from './control/IntroduceInputControl.vue'
import InputModalControl from './control/InputModalControl.vue'
import TabContainer from './control/tab-container/tab-container.vue'
import Achievements from './control/vxe-achievements/achievements.vue'
//formula
import GeneralImportFile from './formula/GeneralImportFile.js';
......@@ -263,7 +264,8 @@ export default {
integerControl,
IntroduceInputControl,
InputModalControl,
TabContainer
TabContainer,
Achievements
},
formula: {
SubTableSetBaseData,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment