增加撤回,驳回到指定节点共
This commit is contained in:
parent
4d78828e18
commit
0a731eae63
17701
package-lock.json
generated
Normal file
17701
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
11
src/router/config_route.js
Normal file
11
src/router/config_route.js
Normal file
@ -0,0 +1,11 @@
|
||||
export default [
|
||||
{
|
||||
path: '/dingTalkLogin',
|
||||
name: 'dingTalkLogin',
|
||||
component: (resolve) => require(['@/views/login/dingTalkLogin.vue'], resolve),
|
||||
meta: {
|
||||
title: '登录',
|
||||
isNav: true
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -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) {
|
||||
|
||||
@ -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.5或3.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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
29
src/views/kpi/home/index.vue
Normal file
29
src/views/kpi/home/index.vue
Normal 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>
|
||||
46
src/views/kpi/home1/index.vue
Normal file
46
src/views/kpi/home1/index.vue
Normal 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>
|
||||
@ -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>
|
||||
@ -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 () {
|
||||
|
||||
57
src/views/login/dingTalkLogin.vue
Normal file
57
src/views/login/dingTalkLogin.vue
Normal 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
BIN
static/default.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
Loading…
x
Reference in New Issue
Block a user