xy 12 months ago
parent 88b0440af9
commit 714ecf3056

@ -942,7 +942,8 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
jointlySignContent.push(h('div',[ jointlySignContent.push(h('div',[
h('span', value.value), h('span', value.value),
h('br'), h('br'),
info.is_sign ? h('el-image',{ info.is_sign ? (
(log.user.sign_file && log.user.sign_file.url) ? h('el-image',{
style: { style: {
'max-height': '80px', 'max-height': '80px',
'max-width': '120px' 'max-width': '120px'
@ -956,7 +957,8 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
src: log.user?.sign_file?.url, src: log.user?.sign_file?.url,
alt: log.user?.name alt: log.user?.name
} }
}) : '', }) : h('span', log.user?.name)
) : '',
info.is_sign ? h('br') : '', info.is_sign ? h('br') : '',
h('span', log.updated_at ? this.$moment(log.updated_at).format('YYYY年MM月DD') : '') h('span', log.updated_at ? this.$moment(log.updated_at).format('YYYY年MM月DD') : '')
])) ]))
@ -985,7 +987,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field?.name === info.name) !== -1) && (row ? row[info.name] : this.form[info.name]) let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field?.name === info.name) !== -1) && (row ? row[info.name] : this.form[info.name])
if (log && log.user) { if (log && log.user) {
return h('div',[ return h('div',[
h('el-image',{ (log.user.sign_file && log.user.sign_file.url) ? h('el-image',{
style: { style: {
'max-height': '80px', 'max-height': '80px',
'max-width': '120px' 'max-width': '120px'
@ -999,7 +1001,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
src: log.user?.sign_file?.url, src: log.user?.sign_file?.url,
alt: log.user?.name alt: log.user?.name
} }
}), }) : h('span', log.user?.name),
h('div', this.$moment(log.updated_at).format('YYYY年MM月DD日 HH时mm分')) h('div', this.$moment(log.updated_at).format('YYYY年MM月DD日 HH时mm分'))
]) ])
} }
@ -1009,7 +1011,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field?.name === info.name) !== -1 && (row ? row[info.name] : this.form[info.name])) let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field?.name === info.name) !== -1 && (row ? row[info.name] : this.form[info.name]))
if (log && log.user) { if (log && log.user) {
return h('div',[ return h('div',[
h('el-image',{ (log.user.sign_file && log.user.sign_file.url) ? h('el-image',{
style: { style: {
'max-height': '80px', 'max-height': '80px',
'max-width': '120px' 'max-width': '120px'
@ -1023,7 +1025,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
src: log.user?.sign_file?.url, src: log.user?.sign_file?.url,
alt: log.user?.name alt: log.user?.name
} }
}), }) : h('span', log.user?.name),
h('div', this.$moment(log.updated_at).format('YYYY年MM月DD日 HH时mm分')) h('div', this.$moment(log.updated_at).format('YYYY年MM月DD日 HH时mm分'))
]) ])
} }
@ -1737,7 +1739,8 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
jointlySignContent.push(h('div',[ jointlySignContent.push(h('div',[
h('span', value.value), h('span', value.value),
h('br'), h('br'),
info.is_sign ? h('el-image',{ info.is_sign ? (
(log.user.sign_file && log.user.sign_file.url) ? h('el-image',{
style: { style: {
'max-height': '80px', 'max-height': '80px',
'max-width': '120px' 'max-width': '120px'
@ -1751,7 +1754,8 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
src: log.user?.sign_file?.url, src: log.user?.sign_file?.url,
alt: log.user?.name alt: log.user?.name
} }
}) : '', }) : h('span', log.user?.name)
) : '',
info.is_sign ? h('br') : '', info.is_sign ? h('br') : '',
h('span', log.updated_at ? this.$moment(log.updated_at).format('YYYY年MM月DD') : '') h('span', log.updated_at ? this.$moment(log.updated_at).format('YYYY年MM月DD') : '')
])) ]))
@ -1763,7 +1767,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field?.name === info.name) !== -1) && (row ? row[info.name] : this.form[info.name]) let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field?.name === info.name) !== -1) && (row ? row[info.name] : this.form[info.name])
if (log && log.user) { if (log && log.user) {
return h('van-cell',[ return h('van-cell',[
h('el-image',{ (log.user.sign_file && log.user.sign_file.url) ? h('el-image',{
style: { style: {
'max-height': '80px', 'max-height': '80px',
'max-width': '120px' 'max-width': '120px'
@ -1777,7 +1781,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
src: log.user?.sign_file?.url, src: log.user?.sign_file?.url,
alt: log.user?.name alt: log.user?.name
} }
}), }) : h('span', log.user?.name),
h('div', this.$moment(log.updated_at).format('YYYY年MM月DD日 HH时mm分')) h('div', this.$moment(log.updated_at).format('YYYY年MM月DD日 HH时mm分'))
]) ])
} }
@ -1787,7 +1791,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field?.name === info.name) !== -1 && (row ? row[info.name] : this.form[info.name])) let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field?.name === info.name) !== -1 && (row ? row[info.name] : this.form[info.name]))
if (log && log.user) { if (log && log.user) {
return h('van-cell',[ return h('van-cell',[
h('el-image',{ (log.user.sign_file && log.user.sign_file.url) ? h('el-image',{
style: { style: {
'max-height': '80px', 'max-height': '80px',
'max-width': '120px' 'max-width': '120px'
@ -1801,7 +1805,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
src: log.user?.sign_file?.url, src: log.user?.sign_file?.url,
alt: log.user?.name alt: log.user?.name
} }
}), }) : h('span', log.user?.name),
h('div', this.$moment(log.updated_at).format('YYYY年MM月DD日 HH时mm分')) h('div', this.$moment(log.updated_at).format('YYYY年MM月DD日 HH时mm分'))
]) ])
} }

@ -8,10 +8,10 @@ import store from '@/store'
**/ **/
export async function print(printJs, isLog, form, logContent) { export async function print(printJs, isLog, form, logContent) {
const staticMap = new Map([ const staticMap = new Map([
['apply_name', () => `<span>${form.creator?.name}</span>`], ['apply_name', `<span>${form.creator?.name}</span>`],
['apply_department_name', () => `<span>${form.creator_department?.name}</span>`], ['apply_department_name', `<span>${form.creator_department?.name}</span>`],
['apply_sign', () => `<img src="${form.creator?.sign_file}" alt="${form.creator?.name}" style="max-height: 80px; ">`], ['apply_sign', `<img src="${form.creator?.sign_file}" alt="${form.creator?.name}" style="max-height: 80px;max-width: 120px;">`],
['created_at', () => `<span>${form.created_at}</span>`], ['created_at', `<span>${form.created_at}</span>`],
]) ])
let printStr = printJs let printStr = printJs

@ -24,13 +24,55 @@
:loading="loading" :loading="loading"
keep-source keep-source
show-overflow show-overflow
:max-height="800" :max-height="1400"
:min-height="400"
:export-config="{}" :export-config="{}"
:print-config="{}" :print-config="{}"
:column-config="{resizable: true}" :column-config="{ resizable: true }"
:scroll-y="{enabled: true, gt: 100}" :scroll-y="{ enabled: true, gt: 100 }"
:expand-config="{
visibleMethod: () => false,
trigger: 'manual'
}"
:data="tableData" :data="tableData"
> >
<vxe-column type="expand" title="关联调休" align="center" width="80">
<template #default="{ row }">
<el-button type="primary"
size="mini"
icon="el-icon-zoom-in"
@click="toggleExpand(row)">{{ row.qingqiujia instanceof Array ? row.qingqiujia.length : 0 }}</el-button>
</template>
<template #content="{ row }">
<div>
<h4 style="text-indent: 24px;"><i class="el-icon-alarm-clock"></i> 请休假</h4>
<vxe-table style="width: calc(100% - 80px);" :max-height="400" align="center" show-overflow :data="row.qingqiujia">
<vxe-column type="seq" width="58" align="center" />
<vxe-column title="请假类别" width="100" field="qingjialeibie"></vxe-column>
<vxe-column title="开始时间" width="180" field="kaishishijian" :formatter="({ cellValue }) => cellValue ? $moment(cellValue).format('YYYY-MM-DD HH:mm') : ''" />
<vxe-column title="结束时间" width="180" field="jieshushijian" :formatter="({ cellValue }) => cellValue ? $moment(cellValue).format('YYYY-MM-DD HH:mm') : ''" />
<vxe-column title="请假时间(时)" width="120" field="qingjiashijian"></vxe-column>
<vxe-column title="请假天数" width="120" field="day"></vxe-column>
<vxe-column title="实际开始时间" width="180" field="shijikaishishijian" :formatter="({ cellValue }) => cellValue ? $moment(cellValue).format('YYYY-MM-DD HH:mm') : ''" />
<vxe-column title="实际结束时间" width="180" field="shijijieshushijian" :formatter="({ cellValue }) => cellValue ? $moment(cellValue).format('YYYY-MM-DD HH:mm') : ''" />
<vxe-column title="实际请假时间(时)" width="160" field="shijiqingjiashichang"></vxe-column>
<vxe-column title="实际请假天数" width="120" field="shijiqingjiatianshu"></vxe-column>
<vxe-column
min-width="80"
align="center"
field="operate"
title="操作"
fixed="right"
>
<template #default="{ row }">
<el-button plain type="success" size="mini" @click="detail(row)"
>查看</el-button>
</template>
</vxe-column>
</vxe-table>
</div>
</template>
</vxe-column>
<vxe-column type="seq" width="58" align="center" /> <vxe-column type="seq" width="58" align="center" />
<vxe-column <vxe-column
min-width="180" min-width="180"
@ -38,26 +80,8 @@
field="title" field="title"
title="工作名称" title="工作名称"
></vxe-column> ></vxe-column>
<vxe-column <vxe-column width="190" align="center" title="开始时间" field="kaishiriqi" />
align="center" <vxe-column width="190" align="center" title="结束时间" field="jieshushijian" />
width="140"
field="current_node.name"
title="当前节点"
></vxe-column>
<vxe-column
width="200"
align="center"
field="created_at"
title="发起日期"
:formatter="
({ cellValue }) =>
$moment(cellValue).format('YYYY-MM-DD HH:mm:ss')
"
:export-method="
({ row, column, options }) =>
$moment(row['created_at']).format('YYYY-MM-DD HH:mm:ss')
"
></vxe-column>
<vxe-column <vxe-column
width="80" width="80"
align="center" align="center"
@ -77,6 +101,20 @@
> >
</template> </template>
</vxe-column> </vxe-column>
<vxe-column
width="200"
align="center"
field="created_at"
title="发起日期"
:formatter="
({ cellValue }) =>
$moment(cellValue).format('YYYY-MM-DD HH:mm:ss')
"
:export-method="
({ row, column, options }) =>
$moment(row['created_at']).format('YYYY-MM-DD HH:mm:ss')
"
></vxe-column>
<vxe-column <vxe-column
min-width="80" min-width="80"
align="center" align="center"
@ -121,9 +159,16 @@ export default {
} }
}, },
methods: { methods: {
toggleExpand (row) {
const $table = this.$refs.table
if ($table) {
$table.toggleRowExpand(row)
}
},
detail(row) { detail(row) {
this.$router.push( this.$router.push(
`/flow/detail?module_id=${row.custom_model_id}&flow_id=${row.id}` `/flow/detail?module_id=${row.custom_model_id||68}&flow_id=${row.belongs_id}`
); );
}, },
async getList() { async getList() {

@ -38,7 +38,7 @@
<div class="next-nodes__label">下一节点</div> <div class="next-nodes__label">下一节点</div>
<div> <div>
<el-radio-group v-model="form.next_node_id" @change="pickUsers = node2Users.get(form.next_node_id),form.user_id = ''"> <el-radio-group v-model="form.next_node_id" @change="nodePick">
<el-radio v-for="node in node.nextNodes" :label="node.id">{{ node.name }}</el-radio> <el-radio v-for="node in node.nextNodes" :label="node.id">{{ node.name }}</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
@ -57,7 +57,7 @@
<el-checkbox-group v-model="form.user_id" @change="handleCheckedUsersChange"> <el-checkbox-group v-model="form.user_id" @change="handleCheckedUsersChange">
<div v-for="group in pickUsers" :key="group.id"> <div v-for="group in pickUsers" :key="group.id">
<div class="group-name">{{ group.name }}</div> <div class="group-name">{{ group.name }}</div>
<el-checkbox v-for="user in group.users" :label="user.id">{{ user.name }}</el-checkbox> <el-checkbox v-for="user in group.users" :checked="group.users.length === 1" :label="user.id">{{ user.name }}</el-checkbox>
</div> </div>
</el-checkbox-group> </el-checkbox-group>
</div> </div>
@ -148,6 +148,17 @@ export default {
}; };
}, },
methods: { methods: {
nodePick() {
this.pickUsers = this.node2Users.get(this.form.next_node_id)
this.form.user_id = ''
if (!this.isJointlySign) {
if (this.pickUsers.length === 1) {
if (this.pickUsers[0].users?.length === 1) {
this.form.user_id = this.pickUsers[0].users[0].id
}
}
}
},
handleCheckAllChange(val) { handleCheckAllChange(val) {
this.form.user_id = val ? this.pickUsers?.map(i => i.users.map(j => j.id))?.flat() : []; this.form.user_id = val ? this.pickUsers?.map(i => i.users.map(j => j.id))?.flat() : [];
this.isIndeterminate = false; this.isIndeterminate = false;
@ -203,6 +214,13 @@ export default {
this.node2Users.set(nodeIds[index], group.users) this.node2Users.set(nodeIds[index], group.users)
}) })
this.pickUsers = this.node2Users.get(this.form.next_node_id) this.pickUsers = this.node2Users.get(this.form.next_node_id)
if (!this.isJointlySign) {
if (this.pickUsers.length === 1) {
if (this.pickUsers[0].users?.length === 1) {
this.form.user_id = this.pickUsers[0].users[0].id
}
}
}
} catch (err) { } catch (err) {
console.error(err) console.error(err)
} }

@ -502,6 +502,9 @@ export default {
}, },
computed: { computed: {
}, },
activated() {
this.getList();
},
created() { created() {
this.getList(); this.getList();
}, },

Loading…
Cancel
Save