rollback
xy 1 year ago
parent 45617ba587
commit d9a690ad5c

@ -1,5 +1,5 @@
import request from '@/utils/request'
import qs from 'qs'
export function flow(isLoading=false) {
return request({
method: 'get',
@ -8,6 +8,15 @@ export function flow(isLoading=false) {
})
}
export function flowList(params, type) {
return request({
method: 'get',
url: `/api/oa/flow/list/${type}`,
params
})
}
export function preConfig(custom_model_id,isLoading=false) {
return request({
method: 'get',
@ -15,3 +24,22 @@ export function preConfig(custom_model_id,isLoading=false) {
isLoading
})
}
export function create(data,custom_model_id) {
return request({
method: 'post',
url: `/api/oa/flow/create/${custom_model_id}`,
data: qs.stringify(data, { arrayFormat: 'brackets' }),
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
})
}
export function deal(data,flow_id) {
return request({
method: 'post',
url: `/api/oa/flow/deal/${flow_id}`,
data
})
}

File diff suppressed because it is too large Load Diff

@ -3,6 +3,16 @@ import { deepCopy } from "@/utils"
import formBuilder from '@/utils/formBuilder'
export default {
props: {
readable: {
type: Array,
default: () => [],
required: true
},
writeable: {
type: Array,
default: () => [],
required: true
},
originalForm: {
type: Object,
default: () => ({}),
@ -17,18 +27,21 @@ export default {
default: 'desktop',
required: true
},
info: {
fields: {
type: Array,
default: () => [],
required: true
},
fileList: {
type: Object,
default: () => ({}),
required: true
}
},
data() {
return {
form: {},
file: {
ggg: []
}
file: {}
}
},
methods: {
@ -45,16 +58,24 @@ export default {
},
originalForm(newVal) {
this.form = deepCopy(newVal)
},
fileList(newVal) {
this.file = deepCopy(newVal)
}
},
render(h) {
const authFields = this.fields.map(field => ({
...field,
_readable: this.readable.indexOf(field.id) !== -1,
_writeable: this.writeable.indexOf(field.id) !== -1
}))
return h('el-form', {
class: 'form',
props: {
model: this.form,
'label-position': 'top'
}
},this.info.map(field => formBuilder.bind(this)(this.device, field, h)))
},authFields.map(field => formBuilder.bind(this)(this.device, field, h)))
}
}
</script>

@ -1,28 +1,56 @@
<template>
<div class="container">
<el-card shadow="always">
<el-card shadow="always" class="card" style="height: 2000px;">
<template #header>
<p>{{ config.customModel ? config.customModel.name : '办理' }}</p>
</template>
<template>
<div class="steps">
<el-steps :space="120" finish-status="success" align-center>
<el-step :title="node.name" status="finish" icon="el-icon-edit"></el-step>
<el-step v-for="nextNode in node.nextNodes"
:key="nextNode.id"
:title="nextNode.name"
icon="el-icon-right"
status="wait"></el-step>
</el-steps>
</div>
<el-divider></el-divider>
<div class="form-container">
<template v-if="device === 'desktop'">
<DesktopForm :device="device" :sub-form="subConfig" :info="fields" :original-form="form"></DesktopForm>
<DesktopForm :device="device"
ref="desktopForm"
:sub-form="subConfig"
:fields="fields"
:original-form="form"
:readable="readableFields"
:file-list="fileList"
:writeable="writeableFields"></DesktopForm>
</template>
<template v-else>
<MobileForm :device="device" :info="fields"></MobileForm>
</template>
</div>
</template>
<div class="btns" ref="btns">
<el-button type="primary" size="small" @click="submit"> <i class="el-icon-right"></i></el-button>
</div>
</el-card>
<el-backtop></el-backtop>
</div>
</template>
<script>
import DesktopForm from "./DesktopForm.vue";
import MobileForm from "./MobileForm.vue";
import { preConfig } from "@/api/flow"
import { preConfig, deal, create } from "@/api/flow"
import { deepCopy } from "@/utils";
export default {
components: {
DesktopForm,
@ -41,6 +69,9 @@ export default {
methods: {
generateForm(object,fields) {
fields.forEach(field => {
if(field.type === 'file') {
this.fileList[field.name] = []
}
if(field.type === 'relation') {
object[field.name] = [{}]
@ -58,7 +89,7 @@ export default {
background: 'rgba(0, 0, 0, 0.8)'
});
try {
const res = await preConfig(this.$route.query.id)
const res = await preConfig(this.$route.query.module_id)
const { fields } = res?.customModel;
let subFormRequest = []
const getSubForm = (id) => {
@ -84,6 +115,39 @@ export default {
this.$message.error("配置失败")
loading.close()
}
},
submit() {
if(this.device === 'desktop') {
console.log(this.$refs['desktopForm'].form)
let copyForm = deepCopy(this.$refs['desktopForm'].form)
let copyFile = deepCopy(this.$refs['desktopForm'].file)
for (let [key, value] of Object.entries(copyFile)) {
if (copyForm.hasOwnProperty(key)) {
copyForm[key] = value.map(i => i.response?.id)?.toString()
}
}
for (let key in copyForm) {
if(copyForm[key] instanceof Array && copyForm[key][0]) {
let formatObj = {}
let subKeys = Object.keys(copyForm[key][0])
subKeys.forEach(key => {
formatObj[key] = []
})
copyForm[key].forEach(item => {
subKeys.forEach(subKey => {
formatObj[subKey].push(item[subKey])
})
})
delete formatObj['_X_ROW_KEY']
copyForm[key] = formatObj
}
}
create(copyForm,this.$route.query.module_id)
console.log(copyForm)
}
}
},
computed: {
@ -92,10 +156,21 @@ export default {
},
fields() {
return this.config?.customModel?.fields || []
},
readableFields() {
return this.config?.currentNode?.readable || []
},
writeableFields() {
return this.config?.currentNode?.writeable || []
},
node() {
return this.config?.currentNode || {}
}
},
created() {
this.getConfig()
},
mounted() {
}
}
</script>
@ -106,6 +181,16 @@ export default {
}
.container {
padding: 20px;
.card {
position: relative;
}
.btns {
margin-top: 10px;
position: sticky;
bottom: 20px;
}
}
.form-container {
}

@ -93,7 +93,7 @@ export default {
this.$router.push({
path: '/flow/create',
query: {
id: flow.id
module_id: flow.id
}
})
}

Loading…
Cancel
Save