master
xy 3 years ago
parent a3da6dcfea
commit b056cc76e1

@ -132,7 +132,11 @@ export default {
},
doLayout() {
this.$refs['table'].doLayout();
}
},
toggleRowExpansion(row,expanded){
this.$refs['table'].toggleRowExpansion(row,expanded)
},
},
created() {
this.initLoad()

@ -0,0 +1,282 @@
<template>
<div>
<el-drawer
size="46%"
:title="type === 1 ? '年中绩效指标' : '年末绩效指标'"
:visible.sync="isShow"
direction="rtl"
>
<xy-table
ref="table"
:list="list"
:table-item="table"
:default-expand-all="false"
@expand-change="expandChange"
>
<template v-slot:btns> </template>
</xy-table>
</el-drawer>
</div>
</template>
<script>
import { index } from "@/api/budget/planTarget";
import { save, show } from "@/api/achievements/evaluate"
import { resetSelect } from "@/utils";
import { getToken } from "@/utils/auth";
export default {
data() {
return {
isShow: false,
type: 1,
action: process.env.VUE_APP_UPLOAD_API,
list: [],
table: [
{
type: "expand",
width: 80,
label: "自评展开",
expandFn: ({ row, $index, store }) => {
return (
<div class="expand">
<el-form
ref={`expand-form${$index}`}
props={{ model: row._form }}
label-width="80px"
>
<el-form-item label="自评值" required={true}>
<el-input
type="textarea"
autosize={{
minRows: 3,
}}
v-model={row._form.result}
size="small"
placeholder="请输入自评值"
></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input
type="textarea"
autosize={{
minRows: 3,
}}
v-model={row._form.remark}
size="small"
placeholder="请输入备注"
></el-input>
</el-form-item>
<el-form-item label="文件">
<el-upload
style="width: 300px"
ref={`expand-form-upload${$index}`}
multiple={true}
headers={{
Authorization: "Bearer " + getToken(),
}}
before-upload={this.uploadBefore}
props={{
onSuccess: (response, file, fileList) => {
this.successHandle(response, file, fileList, row);
},
onRemove: (file, fileList) => {
this.removeHande(file, fileList, row);
},
}}
accept="application/x-rar-compressed,application/zip,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/pdf"
action={this.action}
file-list={row._fileList}
auto-upload={false}
>
<el-button slot="trigger" size="small" type="primary">
选取文件
</el-button>
<el-button
style="margin-left: 10px"
size="small"
type="success"
on={{
["click"]: (e) =>
this.$refs[`expand-form-upload${$index}`].submit(),
}}
>
开始上传
</el-button>
<div slot="tip" className="el-upload__tip">
支持文件格式.rar .zip .doc .docx .pdf
<br />
单个文件不能超过500kb
</div>
</el-upload>
</el-form-item>
<el-form-item>
<el-button
type="primary"
on={{
["click"]: (e) => {
row._form.file_ids = row._fileList?.map(i => i.response.id)
save(row._form).then(res => {
this.$message({
type: "success",
message: "操作成功"
})
})
},
}}
>
立即创建
</el-button>
<el-button
on={{
["click"]: (e) => {
this.$refs["table"].toggleRowExpansion(row, false);
resetSelect(row._form);
},
}}
>
取消
</el-button>
</el-form-item>
</el-form>
</div>
);
},
},
{
label: "指标名称",
prop: "target.name",
minWidth: 200,
},
{
label: "半年(程)指标值",
prop: "target.half_target",
width: 180,
},
{
label: "全年(程)指标值",
prop: "target.year_target",
width: 180,
},
{
label: "创建时间",
prop: "created_at",
width: 200,
},
],
select: {
page: 1,
page_size: 999,
plan_id: "",
},
};
},
methods: {
show() {
this.isShow = true;
},
hidden() {
this.isShow = false;
},
getPlanId() {
return this.select.plan_id;
},
setPlanId(plan_id) {
this.select.plan_id = plan_id;
},
//
successHandle(response, file, fileList, row) {
row._fileList = fileList;
},
removeHande(file, fileList, row) {
row._fileList = fileList;
},
uploadBefore(file) {
console.log(file);
if (file.size / 1024 > 500) {
this.$message({
type: "warning",
message: "上传文件大小超过500kb",
});
return false;
}
},
spanMethod({ row, column, rowIndex, columnIndex }) {
if (column.key === "target_type") {
const _row = this.spanArr[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
if (column.key === "target_type2") {
const _row = this.spanArr1[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
expandChange({ row, expanded }) {
console.log(row, expanded)
if(expanded.indexOf(row) !== -1) {
show({ id:2 }).then(res => {
this.$integrateData(row._form,res)
row._fileList = res.files.map(i => {
return {
name: i.name,
url: i.url,
response: {
id: i.id
}
}
})
})
}
},
async getList() {
const res = await index(this.select);
this.list = res.data.map((item) => {
return {
_form: {
id: "",
result: "",
remark: "",
type: this.type,
file_ids: [],
plan_id: this.getPlanId(),
plan_target_id: item.id,
},
_fileList: [],
...item,
};
});
console.log(this.list);
},
submit() {},
},
computed: {},
watch: {
isShow(val) {
if (val) {
this.getList();
} else {
}
},
},
};
</script>
<style scoped lang="scss"></style>

@ -117,6 +117,7 @@
</div>
<div class="xy-table-item-content">
<el-select
ref="symbolSelect"
v-model="form.symbol_id"
clearable
placeholder="请选择计算符号"
@ -141,12 +142,24 @@
半年指标值
</div>
<div class="xy-table-item-content">
<el-input
v-model="form.half_target"
clearable
placeholder="请输入半年(程)指标值"
style="width: 300px"
></el-input>
<template v-if="isDingxing">
<el-input
v-model="form.half_target"
clearable
placeholder="请输入半年(程)指标值"
style="width: 300px"
></el-input>
</template>
<template v-else>
<el-input-number
v-model="form.half_target"
clearable
placeholder="请输入半年(程)指标值"
style="width: 300px"
:controls="false"
:precision="2"
></el-input-number>
</template>
</div>
</div>
</template>
@ -159,12 +172,24 @@
全年指标值
</div>
<div class="xy-table-item-content">
<el-input
v-model="form.year_target"
clearable
placeholder="请输入全年(程)指标值"
style="width: 300px"
></el-input>
<template v-if="isDingxing">
<el-input
v-model="form.year_target"
clearable
placeholder="请输入全年(程)指标值"
style="width: 300px"
></el-input>
</template>
<template v-else>
<el-input-number
v-model="form.year_target"
clearable
placeholder="请输入全年(程)指标值"
style="width: 300px"
:controls="false"
:precision="2"
></el-input-number>
</template>
</div>
</div>
</template>
@ -191,6 +216,7 @@ export default {
},
data() {
return {
isDingxing: false,
isShow: false,
id: "",
type: "",
@ -318,7 +344,7 @@ export default {
computed:{
typeFormat() {
return this.target_types.filter(item => item.id === this.form.target_type_id)[0]?.name || "";
}
},
},
watch: {
isShow(val) {
@ -334,6 +360,14 @@ export default {
delete this.form.id;
}
},
"form.symbol_id": {
handler:function(val) {
this.$nextTick(() => {
this.isDingxing = this.$refs['symbolSelect']?.selectedLabel === '定形';
})
},
immediate: true
}
},
};
</script>

@ -1,6 +1,6 @@
<template>
<div style="padding: 0 20px;">
<lx-header icon="md-apps" style="margin-bottom: 10px; border: 0px; margin-top: 15px" text="绩效指标类型">
<lx-header icon="md-apps" style="margin-bottom: 10px; border: 0px; margin-top: 15px" text="绩效自评自审">
<div slot="content"></div>
<slot>
<div class="selects">
@ -22,20 +22,26 @@
<xy-table :list="list" :table-item="table" @delete="destroy" @editor="edit">
<template v-slot:btns>
<el-table-column label="操作" header-align="center" fixed="right" width="200">
<el-table-column label="操作" header-align="center" fixed="right" width="120">
<template v-slot:default="scope">
<Button type="primary"
size="small"
style="margin-left:4px;margin-bottom: 2px;"
@click="edit(scope.row,1)">年中评审</Button>
<Button type="error"
size="small"
style="margin-left:4px;margin-bottom: 2px;"
@click="edit(scope.row,2)">年终评审</Button>
<Button type="error"
size="small"
style="margin-left:4px;margin-bottom: 2px;"
@click="edit(scope.row,2)">查看</Button>
<el-dropdown
@command="
(command) => {
$refs['addPlanEvaluate'].type = command;
$refs['addPlanEvaluate'].setPlanId(scope.row.id);
$refs['addPlanEvaluate'].show();
}
"
>
<Button size="small" type="primary" class="slot-btns-item">
绩效审核<i class="el-icon-arrow-down el-icon--right"></i>
</Button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="1">年中目标</el-dropdown-item>
<el-dropdown-item :command="2">年末目标</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</template>
@ -45,6 +51,7 @@
<!-- <Page :total="total" @on-change="" show-elevator show-sizer @on-page-size-change="" />-->
<!-- </div>-->
<addEvaluate ref="addEvaluate" @refresh="getList"></addEvaluate>
<addPlanEvaluate ref="addPlanEvaluate"></addPlanEvaluate>
</div>
</template>
@ -52,12 +59,14 @@
import { getBudget } from "@/api/budget/budget"
import { index,destroy } from "@/api/achievements/evaluate"
import { moneyFormatter, parseTime } from '@/utils'
import { getparameter } from '@/api/system/dictionary'
import addEvaluate from '@/views/achievements/components/addEvaluate.vue'
import { getparameter } from '@/api/system/dictionary'
import addPlanEvaluate from '@/views/achievements/components/addPlanEvaluate.vue'
export default {
components:{
addEvaluate
addEvaluate,
addPlanEvaluate
},
data() {
return {

File diff suppressed because it is too large Load Diff

@ -0,0 +1,69 @@
<template>
<div>
<el-dialog :title="type === 1 ? '年中绩效目标' : '年末绩效目标'" :visible.sync="isShow" width="54%">
<el-input :value="type === 1 ? form.year_midst : form.year_end"
type="textarea"
:autosize="{ minRows:6 }"
:placeholder="type === 1 ? '请填写年中绩效目标' : '请填写年末绩效目标'"
@input="input"></el-input>
<span slot="footer" class="dialog-footer">
<el-button @click="hidden"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { editorBudget,detailBudget } from "@/api/budget/budget";
export default {
data() {
return {
id: "",
isShow: false,
type: 1,//1 2
form: {
}
}
},
methods: {
show() {
this.isShow = true
},
hidden() {
this.isShow = false
},
setId(id) {
this.id = id;
},
input(e) {
this.type === 1 ? this.form.year_midst = e : this.form.year_end = e
},
submit() {
editorBudget(this.form).then(res => {
this.$message({
type: 'success',
message: "保存成功"
})
this.hidden();
})
}
},
computed: {},
watch: {
isShow(val) {
if(val) {
detailBudget({id: this.id}).then(res => this.form = res )
}else{
this.form = {}
}
}
}
}
</script>
<style scoped lang="scss">
</style>

@ -45,23 +45,14 @@
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
<el-dialog :title="evaluateForm.type === 1 ? '年中绩效目标' : '年末绩效目标'" :visible.sync="isShowEvaluate" width="54%">
<el-input v-model="evaluateForm.result" type="textarea" :autosize="{minRows:6}" placeholder="请填写目标"></el-input>
<span slot="footer" class="dialog-footer">
<el-button @click="isShowModal = false"> </el-button>
<el-button type="primary" @click="submitEvaluate"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { index, save, destroy } from "@/api/budget/planTarget";
import { index as pointIndex } from "@/api/achievements/points";
import { save as evaluateSave } from "@/api/achievements/evaluate"
import { resetSelect } from "@/utils"
import { resetSelect } from "@/utils";
export default {
data() {
return {
@ -95,67 +86,42 @@ export default {
minWidth: 200,
customFn: (row) => {
return (
<div style={
{
'display':'flex',
'align-items':'center',
'flex-wrap':'wrap',
'justify-content':'flex-start'
}
}>
<el-dropdown on={{
['command']:command => {
this.evaluateForm.plan_target_id = row.id
this.evaluateForm.type = command
this.isShowEvaluate = true
}
}}>
<el-button size="mini" type="primary">
绩效目标<i class="el-icon-arrow-down el-icon--right"></i>
<el-popover
style="margin-left: .4em;"
placement="top"
width="160"
trigger="click"
>
<p>确定删除吗</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text">
取消
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command={1}>年中目标</el-dropdown-item>
<el-dropdown-item command={2}>年末目标</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-popover
style="margin-left: .4em;"
placement="top"
width="160"
trigger="click"
>
<p>确定删除吗</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text">
取消
</el-button>
<el-button
type="primary"
size="mini"
on={{
["click"]: (e) => {
destroy({
id: row.id,
}).then((res) => {
this.$message({
type: "success",
message: "删除成功",
});
this.getList();
<el-button
type="primary"
size="mini"
on={{
["click"]: (e) => {
destroy({
id: row.id,
}).then((res) => {
this.$message({
type: "success",
message: "删除成功",
});
},
}}
>
确定
</el-button>
</div>
<el-button slot="reference" size="mini" type="danger">
删除
this.getList();
});
},
}}
>
确定
</el-button>
</el-popover>
</div>
</div>
<el-button slot="reference" size="mini" type="danger">
删除
</el-button>
</el-popover>
);
},
},
@ -239,13 +205,7 @@ export default {
],
selections: [], //
isShowEvaluate: false,
evaluateForm: {
result: "",
type: 1,
file_ids: [],
plan_target_id: ""
}
};
},
methods: {
@ -291,15 +251,15 @@ export default {
},
async getList() {
this.pos = this.pos1 = 0;
this.spanArr = [];
this.spanArr1 = [];
const res = await index(this.select);
this.list = res.data;
},
async getPoints() {
this.loading = true;
this.pos = this.pos1 = 0;
this.spanArr = [];
this.spanArr1 = [];
try {
const res = await pointIndex(this.pointSelect);
let selectedIds = Array.from(new Set(this.list.map((item) => item.target_id)));
@ -362,15 +322,7 @@ export default {
this.isShowModal = false;
});
},
submitEvaluate() {
evaluateSave(this.evaluateForm).then(res => {
this.$message({
type: 'success',
message: "保存成功"
})
this.isShowEvaluate = false;
})
}
},
computed: {},
watch: {

@ -263,8 +263,10 @@
<span style="color: red;font-weight: 600;padding-right: 4px;">*是否为简易流程</span>
</div>
<div class="xy-table-item-content">
<el-switch v-model="form.is_simple" active-text="" inactive-text="" :active-value="1" :inactive-value="0"/>
<span>水电煤报刊订阅网络通讯车辆使用等费用付款</span>
<div style="display:flex;width: 300px;align-items: center;">
<el-switch v-model="form.is_simple" active-text="" inactive-text="" :active-value="1" :inactive-value="0"/>
<div style="flex: 1;text-align: right;">水电煤报刊订阅网络通讯车辆使用等费用付款</div>
</div>
</div>
</div>
@ -368,6 +370,28 @@
</div>
</div>
</template>
<template v-slot:is_framework>
<div class="xy-table-item">
<div class="xy-table-item-label" style="width: 200px;">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>是否框架协议
</div>
<div class="xy-table-item-content">
<el-switch v-model="form.is_framework" active-text="" inactive-text="" :active-value="1"
:inactive-value="0"/>
</div>
</div>
</template>
<template v-slot:use_framework_buy>
<div class="xy-table-item">
<div class="xy-table-item-label" style="width: 200px;">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>是否使用框架协议内的采购
</div>
<div class="xy-table-item-content">
<el-switch v-model="form.use_framework_buy" active-text="" inactive-text="" :active-value="1"
:inactive-value="0"/>
</div>
</div>
</template>
<template v-slot:plan>
<div class="xy-table-item">
<div class="xy-table-item-label">
@ -1086,6 +1110,9 @@ export default {
isBudget: true,
plan: [],
is_substitute: 0,
is_framework: 0,
use_framework_buy: 0,
},
plan: [],
rules: {
@ -1737,8 +1764,6 @@ export default {
let iframe = document.createElement('iframe');
iframe.src = `${process.env.VUE_APP_OUT_OLD}/login/oss_login?id=${this.$store.state.user.userId}&username=${this.$store.state.user.username}`
iframe.style.display = 'none'
console.log(111,`${process.env.VUE_APP_OUT_OLD}/login/oss_login?id=${this.$store.state.user.userId}&username=${this.$store.state.user.username}`
)
document.body.appendChild(iframe);
},
destroyed() {
@ -1805,7 +1830,5 @@ export default {
content: '(元)'
}
}
.xy-table-item-label{
width: 200px;
}
</style>

Loading…
Cancel
Save