Commit 21c2d4c3 by yangchen

合并于develop

parents 33b2cb34 1446c9d4
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 { saveBill, verifyBill, showCommentModal } from '../util'
import { BILL_GLOBAL_PARAM } from '../../constant'
export default {
execute: function (bill, param) {
bill = bill.dom || bill
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
}
// 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
// }
bill.setControlsSate(param["_control_name_"], "enable", false)
let curTagId = window.nros.context.getCurrTag();
let oldObj = curTagId && GMS.oldBillDataMap[curTagId]?GMS.oldBillDataMap[curTagId]:GMS.oldBillData;
let oldObj = curTagId && GMS.oldBillDataMap && GMS.oldBillDataMap[curTagId]?GMS.oldBillDataMap[curTagId]:GMS.oldBillData;
const dataChangeFlag = compareData(oldObj, bill.getBuillData())
const noRunTimeFormula = bill.getGlobalParam("noRunTimeFormula")
if (noRunTimeFormula) {
......@@ -67,63 +71,12 @@ export default {
},
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)
const fn = () => {
showCommentModal(bill, param).then(() => {
this.executeApproval(bill, param)
},
onCancel: () => {
}
});
}).catch(() => {
GMS.$hideContainer.$Message.error('未找到下一节点的审批人');
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"], "loading", false)
})
}
......@@ -133,7 +86,7 @@ export default {
}
bill.executeServerAction(saveParam, function (code, data) {
if (code === 200) {
getApprovalList()
fn()
} else {
bill.setControlsSate(param["_control_name_"], "enable", true)
if (data.message.includes('还款金额不能大于未还金额')) {
......@@ -145,7 +98,7 @@ export default {
}
}.bind(this));
} else {
getApprovalList()
fn()
}
},
executeApproval: function(bill, param) {
......@@ -155,10 +108,26 @@ export default {
? bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).suggestions
: '';
if (!comments) {
comments = '同意'
bill.setGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT, {
taskId,
suggestions: comments
})
}
const fn = () => {
saveBill(bill, param).then(() => {
GMS.$http.post('/rbc/workflow/approve/completed/' + taskId + '?result=1&comments=' + comments).then(
GMS.$http.post(
`/rbc/bill/action/zgh/change/work/${param.define}/bill.Basic.accept`,
{
approvalComments: comments,
data: bill.getBuillData(),
detailData: [],
}
).then(
function (response) {
console.log('response', response)
if (response.status == 200 || response.statusText == 'OK') {
if (response.data.code != 0) {
GMS.$hideContainer.$Message.error(response.data.message)
......@@ -193,39 +162,7 @@ export default {
})
}
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'
import { saveBill, showCommentModal } from '../util'
export default {
execute: function (bill, param) {
if(bill){
if (!this.isApproverEqulloginer(bill, param)) {
GMS.$hideContainer.$Message.error('单据审批状态已发生变化,请刷新界面')
return
}
if (bill) {
bill = bill.dom || bill
let curTagId = window.nros.context.getCurrTag();
let oldObj = curTagId && GMS.oldBillDataMap[curTagId]?GMS.oldBillDataMap[curTagId]:GMS.oldBillData;
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)
......@@ -28,20 +25,20 @@ export default {
}
})
}
}else{
} else {
GMS.$hideContainer.$Message.error('缺少参数');
}
},
approvalLogical: function (bill, param) {
bill.setControlsSate(param["_control_name_"], "enable", false)
if(param.param.actions){
if (param.param.actions) {
let saveParam = {
actions: param.param.actions,
}
bill.executeServerAction(saveParam,function(code,data){
if(code===200){
bill.executeServerAction(saveParam, function (code, data) {
if (code === 200) {
this.approval(bill, param);
}else{
} else {
bill.setControlsSate(param["_control_name_"], "enable", true)
GMS.$hideContainer.$message.error("操作异常请联系管理员");
}
......@@ -50,12 +47,10 @@ export default {
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;
approval: function (bill, param) {
const fn = () => {
let comments =
bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).suggestions
? bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).suggestions
......@@ -63,17 +58,24 @@ export default {
bill.clearSubDatas(SIGNATURE_TABLE_NAME)
saveBill(bill, param).then(() => {
GMS.$http.post('/rbc/workflow/approve/completed/' + taskId + '?result=3&comments='+comments).then(
function(response) {
GMS.$http.post(
`/rbc/bill/action/zgh/change/work/${param.define}/bill.Basic.reject`,
{
approvalComments: comments,
data: bill.getBuillData(),
detailData: [],
},
).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)
bill.setControlsSate(param["_control_name_"], "loading", false)
let curTagId = window.nros.context.getCurrTag();
GMS.vbus.$emit('change-form-state', { state: 'readOnly'},curTagId)
GMS.vbus.$emit('change-form-state', { state: 'readOnly' }, curTagId)
GMS.$hideContainer.$Message.success('驳回成功!')
if (
window.osConfig.appOpenMode &&
......@@ -89,31 +91,19 @@ export default {
}.bind(this)
)
.catch(
function(error) {
function (error) {
bill.setControlsSate(param["_control_name_"], "loading", false)
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 () {
}
showCommentModal(bill, param, true).then(fn).catch((error) => {
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"], "loading", false)
})
return approver.includes(loginer)
}
},
}
\ No newline at end of file
export default {
execute(bill, param) {
bill = bill.dom || bill
bill.setControlsSate(param["_control_name_"], "enable", false)
GMS.$http.post(
`/rbc/bill/action/zgh/change/work/${param.define}/bill.Basic.retrieve`,
{
approvalComments: comments,
data: bill.getBuillData(),
detailData: [],
}
).then(() => {
GMS.$hideContainer.$Message.success('操作成功!')
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"], "loading", false)
}).catch(() => {
GMS.$hideContainer.$Message.error('系统错误,请联系管理员')
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"], "loading", false)
})
},
}
......@@ -4,6 +4,8 @@ import { showSignModal, saveBill } from "../util";
export default {
execute: function (bill, param) {
bill = bill.dom || bill
console.log(param, bill)
if (param && param.param && param.param.budgetcontrol) {
let res = this.getBudgetControl(bill, true, param);
res.then((data) => {
......@@ -77,9 +79,12 @@ export default {
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) => {
detailData: [],
}
let url = `/rbc/bill/action/zgh/change/work/${param.define}/bill.Basic.submit`;
window.GMS.$http.post(url, postData).then((response) => {
console.log('------------------------------------')
console.log(response)
const data = response.data
let code = 200
if (data.code != 0) {
......@@ -104,8 +109,8 @@ export default {
}
}).catch((err) => {
GMS.$hideContainer.$Message.error('工作流配置错误,请联系管理员');
bill.setControlsSate(param["_control_name_"], "enable", true)
bill.setControlsSate(param["_control_name_"],"loading",false)
bill.setControlsSate(param["_control_name_"], "enable", true)
})
}
......
......@@ -7,6 +7,7 @@ import {
import { getValueListString } from '../../utils'
import { btnVerifySync } from '../../BJCAWebsign'
import ElectronicSignature from '../../components-control/electronic-signature.vue'
import ApprovalUserControl from '../../control/approval-user-control/approval-user-control.vue'
export const saveBill = (bill, param, postData) => {
if (!postData) {
......@@ -122,6 +123,50 @@ export const showSignModal = (bill, param, nodeName) => {
})
}
export const showCommentModal = (bill, param, checkComment) => {
const h = GMS.$hideContainer.$createElement
const vNode = h(
ApprovalUserControl,
{
props: {
define: {
isModal: true,
config: {
placeholder: '请直接输入您的意见或在下方选择常用意见'
},
},
context: {
bill,
},
},
}
)
window.GMS.vbus.$emit(GLOBAL_EVENT.APPROVAL_USER_CONTROL_RESETVALUE)
return GMS.$hideContainer.$msgbox({
title: '审批意见',
message: vNode,
showCancelButton: true,
confirmButtonText: '确定',
cancelButtonText: '取消',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
let comments =
bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT)
&& bill.getGlobalParam(BILL_GLOBAL_PARAM.APPROVAL_COMMENT).suggestions
if (comments || !checkComment) {
done()
}
else {
GMS.$hideContainer.$Message.error('请输入审批意见')
}
} else {
done()
}
}
})
}
export const verifyBill = (bill) => {
const dataObjList = bill.getSubData(SIGNATURE_TABLE_NAME)
if (!(dataObjList instanceof Array && dataObjList.length)) return true
......
......@@ -122,6 +122,9 @@ export default {
let that = this;
setTimeout(() => {
that.billClass = bill;
if (!GMS.oldBillDataMap) GMS.oldBillDataMap = {}
let curTagId = window.nros.context.getCurrTag()
curTagId && (GMS.oldBillDataMap[curTagId] = bill.getBuillData())
GMS.oldBillData = bill.getBuillData();
that.oldBillData = bill.getBuillData(); // 单据整体对象
}, 100);
......
......@@ -16,4 +16,6 @@ export const BILL_GLOBAL_PARAM = {
export const GLOBAL_EVENT = {
VERIFY_SIGNATURE_FAIL: 'verifySignatureFail',
APPROVAL_USER_CONTROL_RESETVALUE: 'approvalUserControlResetValue',
}
<template>
<div>
<div class="approval-user-control">
<div v-if="isModal" class="top-button-group">
<Button @click="openEditModal" size="small">
<svg aria-hidden="true" class="icon">
<use xlink:href="#icon-a-16_BILLEXPAND_C_RBC_EDIT"></use>
</svg>
</Button>
&nbsp;&nbsp;
<Button @click="handleAdd" size="small">
<svg aria-hidden="true" class="icon">
<use xlink:href="#icon-a-16_BILLEXPAND_A_RBC_ADD"></use>
</svg>
</Button>
</div>
<div class="suggestion-wrapper">
<div class="label">{{this.define.title}}</div>
<div v-if="!isModal" class="label">{{this.define.title}}</div>
<div class="input-wrapper">
<Input v-model="value" type="textarea" :placeholder="define.config.placeholder" :maxlength="240" />
<div class="suggestion-button-wrapper">
......@@ -31,10 +44,6 @@
</div>
</ConfirmPopover>
</div>
<!-- <div>
<Button size="small" @click="suggestionOptionModal = true">edit</Button>
<Button size="small" @click="handleAdd">add</Button>
</div> -->
</div>
</div>
<el-dialog
......@@ -124,7 +133,7 @@
<script>
const TABLE_NAME = "MD_SPYJ"
import ConfirmPopover from './confirm-popover'
import { BILL_GLOBAL_PARAM } from '../../constant';
import { BILL_GLOBAL_PARAM, GLOBAL_EVENT } from '../../constant';
export default {
name: 'ApprovalUserControl',
......@@ -185,6 +194,7 @@ export default {
}
},
mounted() {
this.isModal = this.define.isModal
this.reviewParam['taskId'] = GMS.workflowTaskId
this.taskId = GMS.workflowTaskId;
// this.reviewParam['billid'] = this.$route.query.id;
......@@ -193,6 +203,7 @@ export default {
this.currentTagId = window.nros.context.getCurrTag()
window.GMS.vbus.$on('approval-user-control-edit', this.openEditModal)
window.GMS.vbus.$on('approval-user-control-add', this.handleAdd)
window.GMS.vbus.$on(GLOBAL_EVENT.APPROVAL_USER_CONTROL_RESETVALUE, this.resetValue)
this.getSuggestionOptions()
},
beforeDestroy() {
......@@ -200,6 +211,10 @@ export default {
window.GMS.vbus.$off('approval-user-control-add', this.handleAdd)
},
methods: {
resetValue() {
if (this.currentTagId && this.currentTagId != window.nros.context.getCurrTag()) return
this.value = ''
},
showDeletePopover(suggestion) {
this.$set(suggestion, 'visible', true)
},
......@@ -348,7 +363,12 @@ export default {
</script>
<style lang="less">
.suggestion-wrapper {
.approval-user-control {
.top-button-group {
display: flex;
padding: 0 0 10px 15px;
}
.suggestion-wrapper {
display: flex;
.label {
width: 90px;
......@@ -393,7 +413,9 @@ export default {
}
}
}
}
}
.suggestion-edit-table-popper[style] {
z-index: 3000 !important;
}
......
<template>
<div>
<div class="modification-button" :style="{top: styleTop, right: styleRight}" @click="showDrawer = true">
<div class="icon">
<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="#icon-a-28_BILLEXPAND_C_RBC_xinshenpiguiji"></use>
</svg>
</div>
</div>
<Drawer
:transfer="false"
title="变更轨迹"
:closable="true"
v-model="showDrawer"
:width="styleDrawerWidth"
:inner="true"
:mask="false"
>
<div v-if="!data || data.length == 0">暂无数据</div>
<div v-if="data && data.length" class="modification-step-wrapper">
<div
class="modification-step"
v-for="step, k in data"
:key="k"
>
<div class="step-head">
<div class="step-circle">
</div>
<div :class="`step-line waiting-line`" v-if="k != data.length - 1"></div>
</div>
<div class="step-main">
<div class="main-body">
<div class="text-black">
<div>
<span class="participants">{{step.createUserName}}</span>
</div>
</div>
<div>{{formatDate(step.createTime)}}</div>
<div class="comment">
<div class="modification">
<div
v-for="modification in step.modifyDesc"
:key="modification.label"
>
<div class="label text-main">{{modification.label}}</div>
<div v-if="isArray(modification.value)">
<div
class="sub-table-modification-header"
@click="currentExpandBlock == modification ? currentExpandBlock = null : currentExpandBlock = modification"
>
<Icon v-if="isCurrentExpandBlock(modification)" type="ios-arrow-down" />
<Icon v-else type="ios-arrow-forward" />
<div>{{ isCurrentExpandBlock(modification) ? '收起明细' : '展开明细' }}</div>
</div>
<div style="margin-left: 10px" v-if="isCurrentExpandBlock(modification)">
<div
v-for="subModification in modification.value[0]"
:key="subModification.label"
>
<div class="label text-main">{{subModification.label}}</div>
<ValueChangeDetail :value="subModification.value" />
</div>
</div>
</div>
<ValueChangeDetail v-else :value="modification.value" />
<Divider />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</Drawer>
</div>
</template>
<script>
import ValueChangeDetail from './value-change-detail.vue'
export default {
components: {
ValueChangeDetail,
},
props: {
define: {
type: Object,
required: true,
},
context: {
type: Object,
default: () => { }
}
},
data() {
return {
showDrawer: false,
data: [],
currentExpandBlock: null,
}
},
computed: {
styleTop() {
return this.define.layout.top || '0px'
},
styleRight() {
return this.define.layout.right || '0px'
},
styleDrawerWidth() {
return this.define.layout.drawerWidth || '400px'
},
},
mounted() {
console.log(this.define, this.context)
const { tableName } = this.define.config
const subTable = this.context.bill.getSubData(tableName)
if (subTable instanceof Array) {
this.data = subTable.map((o) => {
const ans = {}
;['createTime', 'createUserName', 'deptName', 'modifyDesc'].forEach((key) => {
ans[key] = o.getValue(key)
})
ans['createTime'] = new Date(ans['createTime']).format('yyyy-MM-dd HH:mm:ss')
console.log(ans['modifyDesc'])
ans['modifyDesc'] = JSON.parse(ans['modifyDesc'])
return ans
})
}
console.log(this.data)
},
beforeDestroy() {
},
methods:{
isCurrentExpandBlock(block) {
return this.currentExpandBlock === block
},
isArray(obj) {
return obj instanceof Array
},
formatDate(datetime) {
const t = new Date(datetime)
return t.format('yyyy-MM-dd HH:mm:ss')
},
},
}
</script>
<style lang="less" scoped>
@icon-width: 24px;
@main-color: #0DA2E6;
.modification-button {
cursor: pointer;
position: absolute;
z-index: 1000;
padding-top: 4px;
width: 42px;
height: 36px;
background: #005791;
box-shadow: 0 0 4px 0 rgba(109,109,109,0.50);
border-radius: 100px 0 0 100px;
.icon {
width: 28px;
height: 28px;
margin-left: 11px;
}
.text {
margin-top: 2px;
text-align: center;
height: 17px;
font-size: 12px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
line-height: 17px;
text-shadow: 0px 1px 6px rgba(255, 169, 56, 0.8);
}
}
.modification-step-wrapper {
width: 100%;
.modification-step {
width: 100%;
position: relative;
.step-head {
width: @icon-width;
position: absolute;
height: 100%;
.step-circle {
width: 10px;
height: 10px;
border-radius: 50%;
margin: 5px auto 0 auto;
border: 1px @main-color solid;
}
.waiting-icon {
color: @main-color;
}
.finish-icon {
color: #888;
}
.step-line {
margin-left: @icon-width / 2;
width: 1px;
height: calc(100% - 10px);
}
.finish-line {
background-color: #C8C8C8;
}
.waiting-line {
background-color: @main-color;
}
}
.step-main {
width: 100%;
min-height: calc(@icon-width + 10px);
padding-left: @icon-width;
font-size: 12px;
color: #888888;
line-height: 17px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
.main-body {
padding-bottom: 30px;
padding-left: 5px;
> div {
margin-bottom: 5px;
}
.text-gray {
color: #888888;
}
.text-black {
color: #222222;
}
.text-main {
color: @main-color;
}
.text-error {
color: #ED664B;
}
.participants {
height: 20px;
font-size: 14px;
line-height: 20px;
}
.result {
height: 20px;
font-size: 14px;
line-height: 20px;
}
.comment {
.modification {
margin-top: 5px;
.sub-table-modification-header {
user-select: none;
cursor: pointer;
display: flex;
align-items: center;
}
}
}
}
}
}
}
</style>
<template>
<div class="value-change-detail">
<div class="value-block">{{value.oldDesc || 'null'}}</div>
<div class="arrow"><Icon type="md-arrow-round-forward" /></div>
<div class="value-block">{{value.newDesc || 'null'}}</div>
</div>
</template>
<script>
export default {
props: {
value: {
default: () => ({}),
type: Object,
},
}
}
</script>
<style lang="less" scoped>
.value-change-detail {
display: flex;
.value-block {
width: 45%;
}
.arrow {
width: 10%;
height: 100%;
align-self: center;
color: #0DA2E6;
}
}
</style>
\ No newline at end of file
<template>
<div class="bill-achievements">
<Button type="primary" @click="Primary">Primary</Button>
<vxe-table border ref="xTable" :data="tableData" :show-header="false">
<vxe-table
border
ref="xTable"
:data="tableData"
:show-header="false"
>
<vxe-table-column
field="name"
title="name"
......@@ -56,63 +61,57 @@ export default {
type: "vxeTableControl",
attr: {
showHeader: false,
addObj: {
name: "",
value: "",
},
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,
width: 230,
type: "inputControl",
},
{
......@@ -138,28 +137,30 @@ export default {
type: "vxeTableControl",
attr: {
showHeader: false,
addObj: {
name: "",
value: "",
},
tableData: [
{
name: "项目立项的依据",
value: "",
width: 200,
},
{
name: "项目申报的可行性",
value: "",
width: 200,
},
{
name: "项目申报的必要性",
value: "",
width: 200,
},
],
columns: [
{
field: "name",
title: "立项情况",
width: 200,
width: 230,
type: "inputControl"
},
{
field: "value",
......@@ -175,6 +176,11 @@ export default {
attr: {
showHeader: false,
headerOne: [0],
addObj: {
content: "",
startTime: "",
endTime: "",
},
tableData: [
{
content: "项目实施内容",
......@@ -224,6 +230,10 @@ export default {
attr: {
showHeader: false,
headerOne: [0],
addObj: {
longGoal: "",
yearGoal: "",
},
tableData: [
{
longGoal: "长期目标",
......@@ -256,6 +266,13 @@ export default {
attr: {
showHeader: false,
headerOne: [0, 5],
addObj: {
firstIndex: "",
secondIndex: "",
content: "",
indexValue: "",
remark: "",
},
tableData: [
{
firstIndex: "一级指标",
......@@ -427,6 +444,13 @@ export default {
attr: {
showHeader: false,
headerOne: [0, 3],
addObj: {
firstIndex: "",
secondIndex: "",
content: "",
indexValue: "",
remark: "",
},
tableData: [
{
firstIndex: "一级指标",
......@@ -637,9 +661,9 @@ export default {
watch: {},
computed: {},
methods: {
Primary(){
console.log(this.tableData)
}
Primary() {
console.log(this.tableData);
},
},
mounted() {},
created() {},
......@@ -647,12 +671,12 @@ export default {
};
</script>
<style lang="less">
.rbcInputControl input{
.rbcInputControl input {
margin-left: -10px;
width: calc(100% + 18px);
height: 40px;
margin-top:-3px;
border:none
margin-top: -3px;
border: none;
}
.bill-achievements {
width: 1300px;
......
......@@ -2,11 +2,13 @@
<div class="detail-table">
<vxe-table
border
ref="xTable"
ref="detailXTable"
:data="attr.attr.tableData"
:show-header="attr.attr.showHeader || false"
:header-cell-class-name="headerCellClassName"
:span-method="spanMethods"
:menu-config="tableMenu"
@menu-click="contextMenuClickEvent"
>
<template v-for="(column, index) in attr.attr.columns">
<vxe-table-column
......@@ -52,7 +54,18 @@ export default {
inputControl,
},
data() {
return {};
return {
tableMenu: {
body: {
options: [
[
{ code: "addRow", name: "增行", disabled: false },
{ code: "removeRow", name: "删行", disabled: false },
],
],
},
},
};
},
props: {
attr: {
......@@ -87,6 +100,21 @@ export default {
}
}
},
contextMenuClickEvent({ menu, row, rowIndex, $rowIndex, column, columnIndex, $columnIndex, $event }) {
console.log(menu, row, rowIndex, column, columnIndex);
let detailXTable = this.$refs.detailXTable;
switch (menu.code) {
case "addRow":
detailXTable.insertAt(this.attr.attr.addObj,row);
break;
case "removeRow":
if(this.attr.attr.tableData.length>1){
detailXTable.remove(row)
}
break;
default:
}
},
},
mounted() {},
created() {},
......
export default {
billControl: [
{
"title": "变更轨迹",
"description": "",
"discard": false,
"dynamicComponent": 'billForm',
"extends": {
"config": [
{
"ref": "BillClassVO.all",
"type": "field",
"title": "操作表名称",
"valueKey": "bagName",
"key": "tableName"
},
{},
],
},
"value": "ModificationTrack",
"path": "报销/通用"
},
{
"title": "绩效表样",
"description":"",
"discard": false,
......@@ -1273,6 +1293,12 @@ export default {
"type": "Boolean",
"title": "导出当页",
"key": "currentPage"
},
{
"isRequired": true,
"type": "Boolean",
"title": "是否导出id",
"key": "isId"
}
]
},
......@@ -2250,6 +2276,18 @@ export default {
},
{
"discard": false,
"path": "报销/工会",
"extends": {
"param": [
]
},
"description": "",
"title": "工会_取回[GH_retrieveAction]",
"value": "GH_retrieveAction",
"btnDisable": "billEdit"
},
{
"discard": false,
"path": "资产/通用",
"extends": {
"param": [
......
......@@ -45,6 +45,7 @@ import lincaoReadView from './actions/lincaoReadView';
import GH_agreeAction from './actions/labourUnion/gh_agreeAction.js';
import GH_rejectAction from './actions/labourUnion/gh_rejectAction.js';
import GH_submitAction from './actions/labourUnion/gh_submitAction.js';
import GH_retrieveAction from './actions/labourUnion/gh_retrieveAction.js';
//queryAction
import leafletGenerationAction from './query-actions/leafletGenerationAction.js'
......@@ -88,6 +89,7 @@ import IntroduceInputControl from './control/IntroduceInputControl.vue'
import InputModalControl from './control/InputModalControl.vue'
import Achievements from './control/vxe-achievements/achievements.vue'
import VxeSubjectControl from './control/vxeTableExpand/VxeSubjectControl.js'
import ModificationTrack from './control/modification-track/modification-track.vue'
//formula
import GeneralImportFile from './formula/GeneralImportFile.js';
......@@ -215,6 +217,7 @@ export default {
GH_agreeAction,
GH_rejectAction,
GH_submitAction,
GH_retrieveAction,
DEQKD_batchEditorAction
},
billAction: {
......@@ -273,7 +276,8 @@ export default {
IntroduceInputControl,
InputModalControl,
Achievements,
VxeSubjectControl
VxeSubjectControl,
ModificationTrack,
},
formula: {
SubTableSetBaseData,
......
......@@ -7,6 +7,7 @@ export default {
}
GMS.$http.post(`/rbcquery/exportExcel`, {
queryParameter: queryParam,
enableId:param.isId||false,
queryViewVO: context.dom.queryBus.config,
currentGroup: context.dom.queryBus.currGroup,
},{
......
baseDir=`pwd`
# basedir = $(cd "$(dirname "$0")";pwd)
echo $baseDir
for folder in \
"@gms/gms-plugin-billexpand" \
"@gms/gms-plugin-mainpage-commonfunctions" \
"@gms/gms-plugin-mainpage-feedback" \
"@gms/gms-plugin-mainpage-fileList" \
"@gms/gms-plugin-mainpage-mybill" \
"@gms/gms-plugin-mainpage-newsList" \
"@gms/gms-plugin-mainpage-reimburseBill" \
"@gms/gms-plugin-mainpage-reimburseExpense" \
"@gms/gms-plugin-mainpage-workflowcard" \
# "@gms/gms-plugin-workflow" \
# "@rbc/bill-runner-query" \
# "@rbc/control-strategy" \
# "@rbc/file-management" \
# "@rbc/invoice" \
# "@rbc/rbc-news" \
# "@rbc/runner-bill-form" \
# "@rbc/voucher-center" \
# "@rbc/welcome-page" \
# "@rbc/workflow-job-view"
do
cd $baseDir/$folder
# rm package-lock.json
# npm install
npm run build-dev
# npm publish
done
\ No newline at end of file
......@@ -2,7 +2,7 @@
"name": "nvwa",
"index": {
"name": "@gms/gms-entry",
"version": "latest"
"version": "0.2.93-rbc"
},
"login": {
"name": "@rbc/rbc-login",
......
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