增加撤回,驳回到指定节点共

This commit is contained in:
wulin 2021-01-12 10:11:36 +08:00
parent 4d78828e18
commit 0a731eae63
10 changed files with 18045 additions and 29 deletions

17701
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
export default [
{
path: '/dingTalkLogin',
name: 'dingTalkLogin',
component: (resolve) => require(['@/views/login/dingTalkLogin.vue'], resolve),
meta: {
title: '登录',
isNav: true
}
}
]

View File

@ -33,12 +33,13 @@
v-if="isShowPersonnel"
:isShow.sync='isShowPersonnel'
:len='1' />
<!-- 驳回 -->
<popup-right v-if="bohui"
@cancel='handleCancel'
@submit="handleSubmit"
<!-- 撤回 -->
<popup-right v-if="chehui"
@cancel='handleChehuiCancel'
@submit="handleChehuiSubmit"
:footer='true'
title="回">
title="回">
<div slot="content"
class="chooseManage">
<el-form style="width:400px;"
@ -47,7 +48,45 @@
ref="form"
label-width="80px"
class="demo-ruleForm">
<el-form-item label="驳回理由">
<el-form-item label="撤回理由">
<el-input :rows="5"
type="textarea"
v-model="form.comment"
placeholder="请输入撤回理由"
maxlength="9999"
show-word-limit></el-input>
</el-form-item>
</el-form>
</div>
</popup-right>
<!-- 驳回 -->
<popup-right v-if="bohui"
@cancel='handleCancel'
@submit="handleSubmit"
:footer='true'
title="驳回">
<div slot="content"
class="chooseManage">
<el-form :model="form"
:rules="rules"
ref="formBoHui">
<el-form-item
prop="flowRecordId"
label="驳回到">
<div>
<br />
<el-select v-model="form.flowRecordId"
size="mini"
placeholder="请选择流程节点">
<el-option v-for="item in selectList"
:key="item.id"
:label="item.flowName + ':'+item.staffNames"
:value="item.id">
</el-option>
</el-select>
</div>
</el-form-item>
<el-form-item label="驳回理由" prop="comment">
<el-input :rows="5"
type="textarea"
v-model="form.comment"
@ -188,6 +227,14 @@ export default {
click: this.handleChongZhi
},
{
name: '撤回',
type: 'primary',
info: !this.info,
permis: 'recall',
click: this.handleCheHui
},
{
name: '结果值录入',
type: 'primary',
@ -251,7 +298,7 @@ export default {
dialogFormVisible: false,
form: {},
rules: {
name: [
comment: [
{ required: true, message: '请输入驳回理由', trigger: 'blur' }
],
flowRecordId: [
@ -259,6 +306,7 @@ export default {
]
},
bohui: false,
chehui: false,
isShowPersonnel: false,
staffIds: '',
personnelList: {
@ -310,6 +358,11 @@ export default {
this.dialogFormVisibleChongZhi = true
},
//
handleCheHui () {
this.form = {}
this.chehui = true
},
//
handleJieguo () {
this.$emit('update:tableInfo', Object.assign({}, this.tableInfo, { result: true }))
},
@ -435,8 +488,9 @@ export default {
}
},
//
handleBohui () {
this.ruleForm = {}
async handleBohui () {
this.form = {}
await this.handleResetData(this.obj.id || '')
this.bohui = true
},
//
@ -513,11 +567,31 @@ export default {
}
})
},
async handleSubmit () {
async handleChehuiSubmit () {
this.$loadingStart()
let res = await this.handlApiSaveapproval({ status: 5, menuName: '驳回了' })
let res = await this.handlApiSaveapproval({ status: 2, menuName: '撤回了' })
this.$loadingEnd()
this.bohui = !!res
this.chehui = !!res
},
handleChehuiCancel () {
this.chehui = false
},
async handleSubmit () {
this.$refs.formBoHui.validate(async v => {
if (v) {
const params = Object.assign({}, this.form, { resultRecordId: this.resultRecordId || '' }, { status: 10, menuName: '驳回了流程' })
let res = await apiSaveapproval(params)
if (res.code !== 200) {
this.$message.error(res.msg)
history.go(0)
}
this.$message({
message: res.msg,
type: 'success'
})
history.go(0)
}
})
},
handleCancel () {
this.bohui = false
@ -557,7 +631,11 @@ export default {
type: 'success',
duration: 1000,
onClose: () => {
this.nextProcess(res)
if (obj.status !== 2) {
this.nextProcess(res)
} else {
location.reload(false)
}
}
})
if (res.resultRecordId) {

View File

@ -153,17 +153,29 @@
{{dto.acquireScore}}
</div>
<div class="pingfen-content-shuoming">
<el-input
v-if="tableInfo.score && dto.approvalId ===userInfo.userId"
style="width:200px;"
:rows="4"
size="mini"
type="textarea"
:placeholder="handleGetCommentsPlaceholder(dto)"
v-model="dto.scoreComment"
clearable
></el-input>
<span v-else>{{dto.scoreComment || '--'}}</span>
<el-form
label-width="auto"
size="mini"
:model="dto">
<el-form-item
:rules="[
{ required: handleCheckMustInput(dto), message: '请输入评分说明', trigger: 'blur' }
]"
prop="scoreComment"
v-if="tableInfo.score && dto.approvalId ===userInfo.userId"
>
<el-input
style="width:100px;"
:rows="4"
size="mini"
type="textarea"
v-model="dto.scoreComment"
:placeholder="handleGetCommentsPlaceholder(dto)"
clearable
></el-input>
</el-form-item>
<span v-else>{{dto.scoreComment || '--'}}</span>
</el-form>
</div>
</div>
</template>
@ -311,7 +323,12 @@ export default {
loadingZan: false,
input: '',
scoreList: [],
taskInfo: {}
taskInfo: {},
rules: {
scoreComment: [
{ required: true, message: '请输入评分说明', trigger: 'blur' }
]
}
// score: {
// lastScore: '',
// scoreLevel: ''
@ -441,9 +458,8 @@ export default {
} else {
isScore = false
}
// 3.53.75
if ((obj.acquireScore !== 3.75 && obj.acquireScore !== 3.5) && this.$isStringEmpty(obj.scoreComment)) {
if (this.handleCheckMustInput(obj)) {
isScoreComment = false
}
})
@ -457,7 +473,7 @@ export default {
} else if (!isScoreComment) {
this.loadingTi = false
return this.$message({
message: '评分不等于3.50或3.75的未填写评分说明',
message: '有些评分需要说明的未填写',
type: 'error'
})
}
@ -504,6 +520,37 @@ export default {
message: res.msg,
type: 'success'
})
},
handleGetCommentsPlaceholder (dto) {
if (this.checkPingFenAuto(dto.acquireScore)) {
return dto.acquireScore + '分必须输入评分说明'
}
return '请输入评分说明'
},
handleCheckMustInput (dto) {
return this.checkPingFenAuto(dto.acquireScore)
},
checkPingFenAuto (fen) {
if (fen === 4 && this.tableAuth.ScoreComment4 === 1) {
return true
} else if (fen === 4 && this.tableAuth.scoreComment4 === 1) {
return true
} else if (fen === 3.875 && this.tableAuth.scoreComment375P === 1) {
return true
} else if (fen === 3.75 && this.tableAuth.scoreComment375 === 1) {
return true
} else if (fen === 3.667 && this.tableAuth.scoreComment375M === 1) {
return true
} else if (fen === 3.583 && this.tableAuth.scoreComment35P === 1) {
return true
} else if (fen === 3.5 && this.tableAuth.scoreComment35 === 1) {
return true
} else if (fen === 3.375 && this.tableAuth.scoreComment35M === 1) {
return true
} else if (fen === 3.25 && this.tableAuth.scoreComment325 === 1) {
return true
}
return false
}
}
}

View File

@ -0,0 +1,29 @@
<!-- -->
<template>
<div>
home
</div>
</template>
<script>
export default {
data () {
return {
}
},
computed: {},
beforeMount () {},
mounted () {
console.log('this.$route', this.$route)
},
methods: {},
watch: {}
}
</script>
<style lang='' scoped>
</style>

View File

@ -0,0 +1,46 @@
<!-- -->
<template>
<div>
home
</div>
</template>
<script>
export default {
data () {
return {
}
},
// beforeRouteLeave (to, from, next) {
// console.log('123')
// next(false)
// // ...
// },
computed: {},
beforeMount () {},
mounted () {
console.log('this.$route', this.$route)
},
methods: {
open () {
this.$alert('这是一段内容', '标题名称', {
confirmButtonText: '确定',
callback: action => {
this.$message({
type: 'info',
message: `action: ${action}`
})
}
})
}
},
watch: {}
}
</script>
<style lang='' scoped>
</style>

View File

@ -0,0 +1,41 @@
<!-- 撤回 -->
<template>
<div class="ReCall">
<div class="ReCall-title commonFont">由谁撤回</div>
<div class="commonFont">执行人<el-radio v-model="form.optType" :label="-1">被考核人</el-radio></div>
</div>
</template>
<script>
export default {
props: ['info'],
data () {
return {
form: {
optType: -1
}
}
},
computed: {},
beforeMount () {},
mounted () {
const params = JSON.parse(JSON.stringify(this.info))
params.chartDetails.status = 1
params.chartDetails.recordSimpleDtos = params.chartDetails.recordSimpleDtos.length ? params.chartDetails.recordSimpleDtos : [this.form]
this.$emit('update:info', params)
},
methods: {},
watch: {
}
}
</script>
<style lang='less' scoped>
.ReCall{
&-title{
margin: 20px 0;
}
}
</style>

View File

@ -17,6 +17,7 @@
</div>
<div v-if="noInfo" class="process-content">
<!-- {{isActive}} -->
<ReCall v-show="isActive==='撤回'" :info.sync='info.ReCallInfo'/>
<ToDevelop v-show="isActive==='目标制定'" :info.sync='info.ToDevelopInfo'/>
<Confirm v-show="isActive==='目标确认'" :info.sync='info.ConfirmInfo'/>
<Perform v-show="isActive==='执行中'" :info.sync='info.PerformInfo'/>
@ -30,6 +31,7 @@
<script>
import PopupRight from '@/components/PopupRight'
import ReCall from './ReCall'
import ToDevelop from './ToDevelop'
import Confirm from './Confirm'
import Perform from './Perform'
@ -46,6 +48,7 @@ export default {
// componentId: 'Approval',
radio: '1',
info: {
ReCallInfo: {},
ToDevelopInfo: {},
ConfirmInfo: {
status: 0,
@ -61,6 +64,9 @@ export default {
},
processLsit: [],
processLsitCopy: [{
name: '撤回',
componment: 'ReCall'
}, {
name: '目标制定',
componment: 'ToDevelop'
}, {
@ -83,7 +89,7 @@ export default {
}
},
components: {
PopupRight, ToDevelop, Confirm, Perform, Entry, Score, Approval
PopupRight, ReCall, ToDevelop, Confirm, Perform, Entry, Score, Approval
},
computed: {
// componentId () {

View File

@ -0,0 +1,57 @@
<template>
<div>
<h2 class="brand-info__text">{{dataForm.verify}}</h2>
</div>
</template>
<script>
import * as dd from 'dingtalk-jsapi'
import { apiDingtalkLogin } from '@/api/login'
export default {
data () {
return {
dataForm: {
verify: '身份验证中...'
},
dingCode: '' //
}
},
created () {
this.handleGetDingtalkCode()
},
mounted () {},
methods: {
//
handleGetDingtalkCode () {
let _this = this
dd.runtime.permission.requestAuthCode({
corpId: 'ding267474e759bbca1c35c2f4657eb6378f',
onSuccess (res) {
console.log('result===', res)
_this.handleDingtalkLogin(res)
_this.dingCode = res
},
onFail (err) {
console.log('err===', err)
_this.dingCode = err
}
})
},
//
handleDingtalkLogin (val) {
apiDingtalkLogin(val).then(res => {
if (res && res.code === 0) {
this.$cookie.set('token', res.token)
this.dataForm.verify = '登录成功,跳转中...'
window.open(window.location.protocol + '//' + window.location.host + '/digitization/kpi/workbench/home?code=' + this.dingCode.code)
} else {
this.dataForm.verify = '身份验证失败' + res.msg
this.$message.error(this.dataForm.verify)
this.$router.replace({ name: 'dingTalkLogin' })
}
})
}
}
}
</script>

BIN
static/default.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB