clay commit : workflow开始做审批
This commit is contained in:
parent
dff930eb6f
commit
74a465567d
|
|
@ -248,6 +248,7 @@ export default {
|
|||
//发布流程
|
||||
publishProcess() {
|
||||
this.testPublish()
|
||||
// this.toAjaxAdd()
|
||||
// this.validateDesign()
|
||||
},
|
||||
getToken() {
|
||||
|
|
@ -267,9 +268,8 @@ export default {
|
|||
})
|
||||
},
|
||||
|
||||
|
||||
//todo 测试发布
|
||||
testPublish() {
|
||||
// this.toAjaxAdd()
|
||||
let token = sessionStorage.getItem("token");
|
||||
console.log(token)
|
||||
if (!token) {
|
||||
|
|
@ -277,10 +277,10 @@ export default {
|
|||
}
|
||||
|
||||
let templates = {
|
||||
formId: this.setup.formId,
|
||||
formName: this.setup.formName,
|
||||
logo: this.setup.logo,
|
||||
settings: this.setup.settings,
|
||||
processDefinitionKey: "pro"+this.setup.formId,
|
||||
deploymentName: this.setup.formName,
|
||||
logo: JSON.stringify(this.setup.logo),
|
||||
settings: JSON.stringify(this.setup.settings),
|
||||
groupId: this.setup.groupId,
|
||||
formItems: this.setup.formItems,
|
||||
process: this.setup.process,
|
||||
|
|
@ -293,14 +293,19 @@ export default {
|
|||
console.log("获取到token")
|
||||
axios({
|
||||
method: "post",
|
||||
url: "http://localhost:8000/workflow/process",
|
||||
data: this.setup.process,
|
||||
url: "http://localhost:8000/workflow/process/definition",
|
||||
// data: this.setup.process,
|
||||
data: templates,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
"authorization": token
|
||||
},
|
||||
}).then(res => {
|
||||
console.log(res.data)
|
||||
let data = res.data;
|
||||
if (data.code == 401){
|
||||
this.getToken()
|
||||
}
|
||||
console.log(data)
|
||||
})
|
||||
|
||||
},
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@
|
|||
</w-dialog>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<!--动态表单编辑器-->
|
||||
<script>
|
||||
import draggable from "vuedraggable";
|
||||
import FormRender from '@/views/common/form/FormRender'
|
||||
|
|
|
|||
|
|
@ -261,7 +261,7 @@ export default {
|
|||
d = Math.floor(d / 16)
|
||||
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16)
|
||||
})
|
||||
return uuid
|
||||
return 'node_'+uuid
|
||||
// return `node_${new Date().getTime().toString().substring(5)}${Math.round(Math.random() * 9000 + 1000)}`
|
||||
},
|
||||
//选中一个节点
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
//混入组件数据
|
||||
import th from "element-ui/src/locale/lang/th";
|
||||
|
||||
export default{
|
||||
props:{
|
||||
mode:{
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
<template>
|
||||
<!--todo 渲染表单-->
|
||||
<el-form ref="form" class="process-form" label-position="top" :rules="rules" :model="_value">
|
||||
<el-form-item v-if="item.name !== 'SpanLayout' && item.name !== 'Description'" :prop="item.id" :label="item.title" v-for="(item, index) in forms" :key="item.name + index">
|
||||
<form-design-render :ref="`sub-item_${item.id}`" v-model="_value[item.id]" mode="PC" :config="item"/>
|
||||
</el-form-item>
|
||||
<form-design-render ref="span-layout" v-else v-model="_value" mode="PC" :config="item"/>
|
||||
<div v-for="(item, index) in forms" :key="item.name + index">
|
||||
<el-form-item v-if="item.name !== 'SpanLayout' && item.name !== 'Description'"
|
||||
:prop="item.id" :label="item.title">
|
||||
<form-design-render :ref="`sub-item_${item.id}`" v-model="_value[item.id]" mode="PC" :config="item"/>
|
||||
</el-form-item>
|
||||
<form-design-render ref="span-layout" v-else v-model="_value" mode="PC" :config="item"/>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
|
|
@ -78,7 +81,7 @@ export default {
|
|||
this.$set(this._value, item.id, this.value[item.id])
|
||||
if(item.props.required){
|
||||
this.$set(this.rules, item.id, [{
|
||||
type: item.valueType === 'Array' ? 'array':undefined,
|
||||
type: item.valueType === 'Array' ? 'array' : undefined,
|
||||
required: true,
|
||||
message: `请填写${item.title}`, trigger: 'blur'
|
||||
}])
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<template>
|
||||
<div>
|
||||
<div v-if="mode === 'DESIGN'">
|
||||
<el-input size="medium" disabled :placeholder="placeholder" type="number"/>
|
||||
<el-input-number size="medium" disabled :placeholder="placeholder"/>
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-input v-model="_value" size="medium" clearable :placeholder="placeholder" type="number"/>
|
||||
<el-input-number style="width: 100%;" controls-position="right" v-model="_value" size="medium" clearable :placeholder="placeholder"/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -19,7 +19,7 @@ export default {
|
|||
props:{
|
||||
value:{
|
||||
type: Number,
|
||||
default: null
|
||||
default: 0
|
||||
},
|
||||
placeholder:{
|
||||
type: String,
|
||||
|
|
@ -29,10 +29,22 @@ export default {
|
|||
data() {
|
||||
return {}
|
||||
},
|
||||
computed: {
|
||||
_value: {
|
||||
get() {
|
||||
return this.value;
|
||||
},
|
||||
set(val) {
|
||||
this.$emit("input", val);
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
/deep/ .el-input__inner{
|
||||
text-align: left;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<span>{{ scope.row.title }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="readOnly" label="只读" width="80">
|
||||
<el-table-column v-if="nodeType !== 'ROOT'" prop="readOnly" label="只读" width="80">
|
||||
<template slot="header">
|
||||
<el-radio label="R" v-model="permSelect" @change="allSelect('R')">只读</el-radio>
|
||||
</template>
|
||||
|
|
@ -39,6 +39,12 @@
|
|||
export default {
|
||||
name: "FormAuthorityConfig",
|
||||
components: {},
|
||||
props :{
|
||||
nodeType :{
|
||||
type: String,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<component :is="(selectNode.type||'').toLowerCase()" :config="selectNode.props"/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="表单权限设置" name="permissions">
|
||||
<form-authority-config/>
|
||||
<form-authority-config :node-type="selectNode.type"/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<component :is="(selectNode.type||'').toLowerCase()" v-else :config="selectNode.props"/>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,126 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-table :data="tableData"
|
||||
@row-click="clickRow"
|
||||
style="width: 100%">
|
||||
<el-table-column
|
||||
prop="approveName"
|
||||
label="审批类型"
|
||||
width="180">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="assignee"
|
||||
label="发起人"
|
||||
width="180">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="createdDate"
|
||||
label="提交时间">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="taskName"
|
||||
label="当前节点">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="arriveDate"
|
||||
label="任务到达时间">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="status"
|
||||
label="状态">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- <el-dialog title="发起审批" width="800px" :visible.sync="openItemDl" :close-on-click-modal="false">-->
|
||||
<!-- <initiate-process ref="processForm" :code="selectForm.formId" v-if="openItemDl"></initiate-process>-->
|
||||
<!-- <span slot="footer" class="dialog-footer">-->
|
||||
<!-- <el-button size="mini" @click="openItemDl = false">取 消</el-button>-->
|
||||
<!-- </span>-->
|
||||
<!-- </el-dialog>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
|
||||
export default {
|
||||
name: "DisposalTask",
|
||||
data() {
|
||||
return {
|
||||
tableData: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
getToken() {
|
||||
axios.post(
|
||||
// "http://localhost:8000/auth/login",
|
||||
"http://gateway.odliken.cn/auth/login",
|
||||
{
|
||||
code: "string",
|
||||
password: "926425",
|
||||
username: "admin",
|
||||
uuid: "string"
|
||||
}
|
||||
).then(res => {
|
||||
console.log(res)
|
||||
sessionStorage.setItem("token", res.data.data)
|
||||
this.testPublish()
|
||||
})
|
||||
},
|
||||
clickRow(row){
|
||||
axios({
|
||||
method: "get",
|
||||
url: "http://localhost:8000/workflow/process/task/"+ row.taskId,
|
||||
// data: this.setup.process,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
"authorization": sessionStorage.getItem("token")
|
||||
},
|
||||
}).then(res => {
|
||||
let data = res.data;
|
||||
if (data.code == 401){
|
||||
this.getToken()
|
||||
}
|
||||
console.log(data)
|
||||
})
|
||||
|
||||
console.log(row)
|
||||
},
|
||||
getList(){
|
||||
let token = sessionStorage.getItem("token");
|
||||
axios({
|
||||
method: "get",
|
||||
url: "http://localhost:8000/workflow/process/task",
|
||||
// data: this.setup.process,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
"authorization": token
|
||||
},
|
||||
}).then(res => {
|
||||
let data = res.data;
|
||||
|
||||
if (data.code == 401){
|
||||
this.getToken()
|
||||
}
|
||||
this.tableData = data.data.rows
|
||||
console.log(data)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
|
||||
.no-data {
|
||||
text-align: center;
|
||||
padding: 50px 0;
|
||||
color: #656565;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -8,9 +8,9 @@
|
|||
<div>
|
||||
<!--渲染流程执行过程-->
|
||||
<el-timeline :reverse="false">
|
||||
<!--<el-timeline-item v-for="(activity, index) in activities" :key="index">
|
||||
<!-- <el-timeline-item v-for="(activity, index) in activities" :key="index">-->
|
||||
|
||||
</el-timeline-item>-->
|
||||
<!-- </el-timeline-item>-->
|
||||
</el-timeline>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -53,10 +53,22 @@ export default {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
sendData(){
|
||||
let formItems = this.form.formItems;
|
||||
formItems.forEach(item=>{
|
||||
console.log(item)
|
||||
if (item.name !== 'SpanLayout') {
|
||||
item.value = JSON.stringify(this.formData[item.id])
|
||||
}
|
||||
})
|
||||
this.form.formItems = formItems
|
||||
console.log(this.form,this.form)
|
||||
return this.form
|
||||
},
|
||||
loadFormInfo(formId) {
|
||||
this.loading = true
|
||||
getFormDetail(formId).then(rsp => {
|
||||
console.log(rsp,"请求");
|
||||
console.log(rsp, "请求");
|
||||
this.loading = false
|
||||
console.log(rsp.data)
|
||||
let form = rsp.data;
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="待我处理(3)">
|
||||
<div class="no-data">暂无数据 😀</div>
|
||||
<disposal-task/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="我发起的">
|
||||
<div class="no-data">暂无数据 😀</div>
|
||||
|
|
@ -64,10 +64,12 @@
|
|||
<script>
|
||||
import {getFormGroups} from '@/api/design'
|
||||
import InitiateProcess from "./InitiateProcess";
|
||||
import DisposalTask from "./DisposalTask";
|
||||
import axios from "axios";
|
||||
|
||||
export default {
|
||||
name: "workSpace",
|
||||
components: {InitiateProcess},
|
||||
components: {InitiateProcess,DisposalTask},
|
||||
data() {
|
||||
return {
|
||||
openItemDl: false,
|
||||
|
|
@ -104,9 +106,38 @@ export default {
|
|||
this.selectForm = item
|
||||
this.openItemDl = true
|
||||
},
|
||||
// todo 提交流程测试
|
||||
submitForm(){
|
||||
let templateDate = this.$refs.processForm.sendData();
|
||||
console.log(templateDate,"templateDate")
|
||||
let token = sessionStorage.getItem("token");
|
||||
|
||||
let paramsData = {
|
||||
processDefinitionKey: 'pro'+templateDate.formId,
|
||||
fromItems: templateDate.formItems
|
||||
}
|
||||
console.log(paramsData)
|
||||
this.$refs.processForm.validate(valid => {
|
||||
if (valid) {
|
||||
axios({
|
||||
method: "post",
|
||||
url: "http://localhost:8000/workflow/process/instance/start",
|
||||
// data: this.setup.process,
|
||||
data: paramsData,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
"authorization": token
|
||||
},
|
||||
}).then(res => {
|
||||
let data = res.data;
|
||||
if (data.code == 401){
|
||||
this.getToken()
|
||||
}
|
||||
console.log(data)
|
||||
})
|
||||
|
||||
|
||||
|
||||
this.$message.success("表单填写OK了,提交功能还在开发哦")
|
||||
} else {
|
||||
this.$message.warning("请完善表单😥")
|
||||
|
|
|
|||
Loading…
Reference in New Issue