2 changed files with 264 additions and 2 deletions
@ -0,0 +1,249 @@ |
|||
<!-- |
|||
@ 作者: 秦东 |
|||
@ 时间: 2025-04-09 14:37:11 |
|||
@ 备注: AI相关数据设置 |
|||
--> |
|||
<script lang="ts" setup> |
|||
import { formTableField } from "@/api/DesignForm/type"; |
|||
import { gainFormTableField } from "@/api/DesignForm/requestapi"; |
|||
import FormDesign from "@/components/DesignForm/public/form/form.vue"; |
|||
|
|||
const props = defineProps({ |
|||
appCont: { |
|||
type: Object, |
|||
default() { |
|||
return {}; |
|||
}, |
|||
}, |
|||
formKey: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
groupKey: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
menuId: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
appPageKey: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
formVersion: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
state: { |
|||
type: Object, |
|||
default() { |
|||
return {}; |
|||
}, |
|||
}, |
|||
}); |
|||
|
|||
const formTableField = reactive<formTableField>({}); |
|||
|
|||
const aiList = reactive([ |
|||
{ |
|||
title: "", |
|||
trigger: 1, |
|||
openShowType: 1, |
|||
}, |
|||
]); |
|||
|
|||
const aiFormField = ref([]); |
|||
//添加条件 |
|||
const addPickTracn = () => { |
|||
aiList.push({ |
|||
title: "", |
|||
trigger: 1, |
|||
openShowType: 1, |
|||
}); |
|||
props.state.formData.aiConfig = aiList; |
|||
}; |
|||
//删除条件 |
|||
const delList = (index: number) => { |
|||
console.log("删除条件=========>", index); |
|||
if (aiList && aiList.length > 0) { |
|||
aiList.splice(index, 1); |
|||
} |
|||
}; |
|||
/** |
|||
@ 作者: 秦东 |
|||
@ 时间: 2025-04-10 08:12:21 |
|||
@ 功能: 知识库 |
|||
*/ |
|||
const libraryList = ref([ |
|||
{ |
|||
label: "法律法规", |
|||
value: 1, |
|||
}, |
|||
{ |
|||
label: "安全环保", |
|||
value: 2, |
|||
}, |
|||
{ |
|||
label: "员工守则", |
|||
value: 3, |
|||
}, |
|||
]); |
|||
|
|||
/** |
|||
@ 作者: 秦东 |
|||
@ 时间: 2025-04-10 09:46:29 |
|||
@ 功能: 解析表单数据 |
|||
*/ |
|||
const jieForm = () => { |
|||
if (props.formKey != "") { |
|||
gainFormTableField({ id: props.appPageKey.toString() }).then((data) => { |
|||
// console.log('解析表单--->',data) |
|||
formTableField.masterTable = data.data.masterTable; |
|||
formTableField.sunTable = data.data.sunTable; |
|||
}); |
|||
} |
|||
}; |
|||
onMounted(() => { |
|||
jieForm(); |
|||
}); |
|||
</script> |
|||
<template> |
|||
<div class="common-layout"> |
|||
<el-container> |
|||
<el-main class="asideBox contBox"> |
|||
{{ props.state.formData }} |
|||
<FormDesign |
|||
:type="5" |
|||
:form-data="state.formData" |
|||
:dict="state.formDict" |
|||
v-model:is-web="isWeb" |
|||
@optionsValue3Get3="optionsValue3Get3" |
|||
/> |
|||
</el-main> |
|||
<el-aside width="400px" class="asideBox"> |
|||
<el-divider content-position="left">AI触发条件设置</el-divider> |
|||
<el-scrollbar class="aiBox"> |
|||
<el-card v-for="(item, index) in aiList" class="aiCardBox"> |
|||
<template #header> |
|||
<div class="card-header"> |
|||
<i class="fa fa-close" @click="delList(index)"></i> |
|||
</div> |
|||
</template> |
|||
<el-form :model="item" label-width="auto"> |
|||
<el-form-item label="触发字段"> |
|||
<el-select |
|||
v-model="item.title" |
|||
multiple |
|||
collapse-tags |
|||
placeholder="请选择触发字段" |
|||
> |
|||
<el-option |
|||
v-for="oItem in formTableField.masterTable" |
|||
:key="oItem.field" |
|||
:label="oItem.label" |
|||
:value="oItem.field" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="触发方式"> |
|||
<el-radio-group v-model="item.trigger"> |
|||
<el-radio :value="1">全部有值</el-radio> |
|||
<el-radio :value="2">任一有值</el-radio> |
|||
<el-radio :value="3">半数以上有值</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
<el-form-item label="采用的知识库"> |
|||
<el-select |
|||
v-model="item.library" |
|||
multiple |
|||
collapse-tags |
|||
placeholder="请选择采用的知识库" |
|||
> |
|||
<el-option |
|||
v-for="lItem in libraryList" |
|||
:key="lItem.value" |
|||
:label="lItem.label" |
|||
:value="lItem.value" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="结果呈现方式"> |
|||
<el-radio-group v-model="item.openShowType"> |
|||
<el-radio :value="1">底部展示</el-radio> |
|||
<el-radio :value="2">消息弹出框</el-radio> |
|||
<el-radio :value="3">抽屉</el-radio> |
|||
<el-radio :value="4">消息提示</el-radio> |
|||
<el-radio :value="5">通知框</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
</el-form> |
|||
</el-card> |
|||
|
|||
<el-button type="primary" class="aiBut" @click="addPickTracn" |
|||
>添加条件</el-button |
|||
> |
|||
</el-scrollbar> |
|||
</el-aside> |
|||
</el-container> |
|||
</div> |
|||
</template> |
|||
<style lang="scss" scoped> |
|||
.common-layout { |
|||
width: 100%; |
|||
height: calc(100vh - 40px); |
|||
:deep .el-header { |
|||
padding: 0px; |
|||
} |
|||
:deep .el-main { |
|||
padding: 10px; |
|||
} |
|||
|
|||
.asideBox { |
|||
height: calc(100vh - 40px); |
|||
} |
|||
.contBox { |
|||
border-right: 1px solid #ccc; |
|||
} |
|||
.titleBox { |
|||
width: 100%; |
|||
height: 40px; |
|||
border-bottom: 1px solid #ccc; |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
.rowBox { |
|||
width: 100%; |
|||
text-align: center; |
|||
} |
|||
} |
|||
.aiBox { |
|||
width: 100%; |
|||
|
|||
height: calc(100vh - 90px); |
|||
.aiBut { |
|||
width: 94%; |
|||
margin-bottom: 15px; |
|||
margin-left: 3%; |
|||
} |
|||
:deep .el-card__header { |
|||
padding: 5px 10px; |
|||
border: 0; |
|||
i { |
|||
color: #ff0000; |
|||
} |
|||
} |
|||
:deep .el-card__body { |
|||
padding: 0px 10px 10px 10px; |
|||
} |
|||
} |
|||
.aiCardBox { |
|||
width: 94%; |
|||
margin-top: 15px; |
|||
margin-bottom: 15px; |
|||
margin-left: 3%; |
|||
} |
|||
.card-header { |
|||
text-align: right; |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue