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