rollback
xy 1 year ago
parent 45617ba587
commit d9a690ad5c

@ -1,5 +1,5 @@
import request from '@/utils/request' import request from '@/utils/request'
import qs from 'qs'
export function flow(isLoading=false) { export function flow(isLoading=false) {
return request({ return request({
method: 'get', 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) { export function preConfig(custom_model_id,isLoading=false) {
return request({ return request({
method: 'get', method: 'get',
@ -15,3 +24,22 @@ export function preConfig(custom_model_id,isLoading=false) {
isLoading 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' import formBuilder from '@/utils/formBuilder'
export default { export default {
props: { props: {
readable: {
type: Array,
default: () => [],
required: true
},
writeable: {
type: Array,
default: () => [],
required: true
},
originalForm: { originalForm: {
type: Object, type: Object,
default: () => ({}), default: () => ({}),
@ -17,18 +27,21 @@ export default {
default: 'desktop', default: 'desktop',
required: true required: true
}, },
info: { fields: {
type: Array, type: Array,
default: () => [], default: () => [],
required: true required: true
},
fileList: {
type: Object,
default: () => ({}),
required: true
} }
}, },
data() { data() {
return { return {
form: {}, form: {},
file: { file: {}
ggg: []
}
} }
}, },
methods: { methods: {
@ -45,16 +58,24 @@ export default {
}, },
originalForm(newVal) { originalForm(newVal) {
this.form = deepCopy(newVal) this.form = deepCopy(newVal)
},
fileList(newVal) {
this.file = deepCopy(newVal)
} }
}, },
render(h) { 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', { return h('el-form', {
class: 'form', class: 'form',
props: { props: {
model: this.form, model: this.form,
'label-position': 'top' '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> </script>

@ -1,28 +1,56 @@
<template> <template>
<div class="container"> <div class="container">
<el-card shadow="always"> <el-card shadow="always" class="card" style="height: 2000px;">
<template #header> <template #header>
<p>{{ config.customModel ? config.customModel.name : '办理' }}</p> <p>{{ config.customModel ? config.customModel.name : '办理' }}</p>
</template> </template>
<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"> <div class="form-container">
<template v-if="device === 'desktop'"> <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>
<template v-else> <template v-else>
<MobileForm :device="device" :info="fields"></MobileForm> <MobileForm :device="device" :info="fields"></MobileForm>
</template> </template>
</div> </div>
</template> </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-card>
<el-backtop></el-backtop>
</div> </div>
</template> </template>
<script> <script>
import DesktopForm from "./DesktopForm.vue"; import DesktopForm from "./DesktopForm.vue";
import MobileForm from "./MobileForm.vue"; import MobileForm from "./MobileForm.vue";
import { preConfig } from "@/api/flow" import { preConfig, deal, create } from "@/api/flow"
import { deepCopy } from "@/utils";
export default { export default {
components: { components: {
DesktopForm, DesktopForm,
@ -41,6 +69,9 @@ export default {
methods: { methods: {
generateForm(object,fields) { generateForm(object,fields) {
fields.forEach(field => { fields.forEach(field => {
if(field.type === 'file') {
this.fileList[field.name] = []
}
if(field.type === 'relation') { if(field.type === 'relation') {
object[field.name] = [{}] object[field.name] = [{}]
@ -58,7 +89,7 @@ export default {
background: 'rgba(0, 0, 0, 0.8)' background: 'rgba(0, 0, 0, 0.8)'
}); });
try { try {
const res = await preConfig(this.$route.query.id) const res = await preConfig(this.$route.query.module_id)
const { fields } = res?.customModel; const { fields } = res?.customModel;
let subFormRequest = [] let subFormRequest = []
const getSubForm = (id) => { const getSubForm = (id) => {
@ -84,6 +115,39 @@ export default {
this.$message.error("配置失败") this.$message.error("配置失败")
loading.close() 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: { computed: {
@ -92,10 +156,21 @@ export default {
}, },
fields() { fields() {
return this.config?.customModel?.fields || [] return this.config?.customModel?.fields || []
},
readableFields() {
return this.config?.currentNode?.readable || []
},
writeableFields() {
return this.config?.currentNode?.writeable || []
},
node() {
return this.config?.currentNode || {}
} }
}, },
created() { created() {
this.getConfig() this.getConfig()
},
mounted() {
} }
} }
</script> </script>
@ -106,6 +181,16 @@ export default {
} }
.container { .container {
padding: 20px; padding: 20px;
.card {
position: relative;
}
.btns {
margin-top: 10px;
position: sticky;
bottom: 20px;
}
} }
.form-container { .form-container {
} }

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

Loading…
Cancel
Save