clay commit : workflow开始做审批

This commit is contained in:
clay 2022-12-25 00:18:24 +08:00
parent dff930eb6f
commit 74a465567d
11 changed files with 224 additions and 27 deletions

View File

@ -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)
})
},

View File

@ -92,7 +92,7 @@
</w-dialog>
</el-container>
</template>
<!--动态表单编辑器-->
<script>
import draggable from "vuedraggable";
import FormRender from '@/views/common/form/FormRender'

View File

@ -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)}`
},
//

View File

@ -1,4 +1,6 @@
//混入组件数据
import th from "element-ui/src/locale/lang/th";
export default{
props:{
mode:{

View File

@ -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'
}])

View File

@ -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>

View File

@ -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: [],

View File

@ -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"/>

View File

@ -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>

View File

@ -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;

View File

@ -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("请完善表单😥")