Commit 90405591 authored by mhw's avatar mhw

修改

parent 9a541c67
......@@ -2,6 +2,17 @@ export default class PresetTemplateController {
static list (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/app/promptTemplate/list', 'post', params, axiosOption, httpOption);
}
static listForHomemade (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/app/promptTemplate/listForHomemade', 'post', params, axiosOption, httpOption);
}
static listForPreset (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/app/promptTemplate/listForPreset', 'post', params, axiosOption, httpOption);
}
static listForCollect (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/app/promptTemplate/listForCollect', 'post', params, axiosOption, httpOption);
}
static view (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/app/promptTemplate/view', 'get', params, axiosOption, httpOption);
......@@ -22,4 +33,11 @@ export default class PresetTemplateController {
static delete (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/app/promptTemplate/delete', 'post', params, axiosOption, httpOption);
}
static addCollect (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/app/promptTemplate/addCollect', 'post', params, axiosOption, httpOption);
}
static deleteCollect (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/app/promptTemplate/deleteCollect', 'post', params, axiosOption, httpOption);
}
}
import PresetTemplateController from './GptController/PresetTemplateController.js';
import TemplateController from './GptController/PresetTemplateController.js';
export {
PresetTemplateController
TemplateController
}
......@@ -66,7 +66,7 @@ export default {
}
},
mounted () {
console.log(this.$slots.default)
// console.log(this.$slots.default)
},
methods: {
search () {
......
......@@ -10,8 +10,9 @@ export class DropdownWidget {
* @param {Boolean} isTree 是否是树数据
* @param {String} idKey 键字段字段名
* @param {String} parentIdKey 父字段字段名
* @param {Boolean} isinit 是否初始获取下拉值
*/
constructor (loadDropdownData, isTree = false, idKey = 'id', parentIdKey = 'parentId') {
constructor (loadDropdownData, isTree = false, idKey = 'id', parentIdKey = 'parentId', isinit = false) {
this.loading = false;
this.dirty = true;
this.dropdownList = [];
......@@ -21,6 +22,33 @@ export class DropdownWidget {
this.loadDropdownData = loadDropdownData;
this.setDropdownList = this.setDropdownList.bind(this);
this.onVisibleChange = this.onVisibleChange.bind(this);
if (isinit) {
this.initData()
}
}
// 初始赋值
initData () {
return new Promise((resolve, reject) => {
if (!this.loading) {
if (typeof this.loadDropdownData === 'function') {
this.loading = true;
this.loadDropdownData().then(dataList => {
this.setDropdownList(dataList);
this.loading = false;
this.dirty = false;
resolve(this.dropdownList);
}).catch(e => {
this.setDropdownList([]);
this.loading = false;
reject(this.dropdownList);
});
} else {
reject(new Error('获取下拉数据失败'));
}
} else {
resolve(this.dropdownList);
}
});
}
/**
* 重新获取下拉数据
......
<!-- -->
<template>
<div class="cardBox">
<el-card class="box-card" v-for="item in dataList" :key="item.templateId">
<div class="titleBox">
<div class="title omit">{{item.templateName}}</div>
<div>
<el-button size="mini" v-if="isPreset">复制</el-button>
<el-dropdown v-else>
<span class="el-dropdown-link">
<i class="el-icon-more el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>编辑</el-dropdown-item>
<el-dropdown-item>删除</el-dropdown-item>
<el-dropdown-item>赋值</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
<div class="tagBox">
<el-tag class="tag" type="info" size="mini" v-for="item2 in getTemplateLabel(item)" :key="item2">{{ item2 }}</el-tag>
</div>
<div class="content omit_2">{{ item.templateContent }}</div>
<el-divider style="margin: 14px 0"></el-divider>
<div class="buttonBox">
<div>
<el-tooltip :content="'收藏量'+item.viewCount" placement="top">
<el-button type="text" style="color: #333" icon="el-icon-star-off" @click="collect">{{ item.viewCount}}</el-button>
</el-tooltip>
<el-tooltip :content="'浏览量'+item.viewCount" placement="top">
<el-button type="text" style="color: #333" icon="el-icon-view">{{ item.viewCount}}</el-button>
</el-tooltip>
</div>
</div>
</el-card>
<div class="box-card-2" v-for="item in 3" :key="item"></div>
</div>
</template>
<script>
export default {
data () {
return {
};
},
props: ['dataList', 'isPreset'],
components: {},
computed: {
getTemplateLabel () {
return (item) => {
return JSON.parse(item.templateLabel)
}
}
},
mounted () { },
methods: {}
}
</script>
<style lang="scss" scoped>
@import "@/assets/style/element-variables.scss";
.box-card {
width: calc(100% / 4 - 20px);
height: 180px;
flex-shrink: 0;
margin-bottom: 20px;
min-width: 300px;
background: linear-gradient(to bottom, #e7efff 10%, #fff 50%);
}
.box-card-2 {
width: calc(100% / 4 - 20px);
min-width: 300px;
flex-shrink: 0;
height: 0;
}
div /deep/.el-divider--horizontal {
margin: 14px 0 0 0;
}
.title {
font-size: 16px;
color: $--color-text-primary;
}
.content {
margin-bottom: 10px;
color: $--color-text-secondary;
}
/deep/ .el-card__body {
height: 100%;
width: 100%;
position: relative;
}
.buttonBox {
display: flex;
justify-content: space-between;
position: absolute;
bottom: 0;
right: 20px;
}
.tag:not(:last-child) {
margin-right: 10px;
}
.titleBox {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
}
.cardBox {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
align-content: flex-start;
justify-content: space-between;
}
.tagBox {
margin-bottom: 10px;
}
</style>
......@@ -6,43 +6,39 @@
</el-form-item>
<el-form-item label="模板标签:">
<el-select :size="defaultFormItemSize" class="inputWidth" v-model="form.templateLabel" multiple :filterable='true' :allow-create='true' default-first-option placeholder="请选择模板标签">
<el-option v-for="item in tagOptions" :key="item.value" :label="item.label" :value="item.value">
<el-option v-for="item in templateLabelOptions.dropdownList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="场景类型:">
<el-radio v-model="form.scenarioType" label="1" :size="defaultFormItemSize">文生文</el-radio>
<el-radio v-model="form.scenarioType" label="2" :size="defaultFormItemSize">文生图</el-radio>
<el-radio v-model="form.scenarioType" v-for="item in scenarioTypeOptions.dropdownList" :label="item.id" :size="defaultFormItemSize" :key="item.id">{{ item.name }}</el-radio>
</el-form-item>
<el-form-item label="参数格式:">
<el-select v-model="form.parameterFormat" placeholder="请选择" :size="defaultFormItemSize" class="inputWidth">
<el-option v-for="item in identifierOptions" :key="item.value" :label="item.label" :value="item.value">
<el-option v-for="item in parameterFormatOptions.dropdownList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<template v-if="form.scenarioType == 1">
<el-form-item label="模板框架:" class="templateFramework">
<el-radio v-model="form.templateFramework" label="1"></el-radio>
<el-radio v-model="form.templateFramework" label="2">Basic Prompt Framework</el-radio>
<el-radio v-model="form.templateFramework" label="3">CRISPE Prompt Framework</el-radio>
<el-radio v-model="form.templateFramework" label="4">Few-shot Prompt</el-radio>
<el-radio v-model="form.templateFramework" v-for="item in templateFrameworkOptions.dropdownList" :label="item.id" :size="defaultFormItemSize" :key="item.id">{{ item.name }}</el-radio>
</el-form-item>
<el-form-item label="Prompt:">
<el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="form.templateContent" class="inputWidth">
</el-input>
{{templateVariables}}
{{form.templateVariables}}
</el-form-item>
</template>
<template v-else>
<el-form-item label="正向Prompt:">
<el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="form.templateContent" class="inputWidth">
</el-input>
{{templateVariables}}
{{form.templateVariables}}
</el-form-item>
<el-form-item label="负向Prompt:">
<el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="form.negativeTemplateContent" class="inputWidth">
</el-input>
{{negativeTemplateVariables}}
{{form.negativeTemplateVariables}}
</el-form-item>
</template>
<el-row type="flex" justify="end" class="dialog-btn-layer mt20">
......@@ -53,7 +49,9 @@
</template>
<script>
import {PresetTemplateController} from '@/api/gptController.js';
import {TemplateController} from '@/api/gptController.js';
import { DictionaryController } from '@/api';
import { DropdownWidget } from '@/utils/widget.js';
export default {
data () {
return {
......@@ -71,34 +69,11 @@ export default {
'templateVariables': '',
'viewCount': 0
},
identifierOptions: [
{
value: '选项1',
label: '黄金糕'
},
{
value: '选项2',
label: '双皮奶'
},
{
value: '选项3',
label: '蚵仔煎'
}
],
tagOptions: [
{
value: 'HTML',
label: 'HTML'
},
{
value: 'CSS',
label: 'CSS'
},
{
value: 'JavaScript',
label: 'JavaScript'
}
]
templateLabelOptions: new DropdownWidget(this.loadTlDropdownList, true, 'id', 'parentId', true),
scenarioTypeOptions: new DropdownWidget(this.loadStDropdownList, true, 'id', 'parentId', true),
parameterFormatOptions: new DropdownWidget(this.loadPfDropdownList, true, 'id', 'parentId', true),
templateFrameworkOptions: new DropdownWidget(this.loadTfDropdownList, true, 'id', 'parentId', true)
};
},
props: ['isEdit'],
......@@ -108,7 +83,9 @@ export default {
},
mounted () { },
mounted () {
console.log(this.scenarioTypeOptions);
},
methods: {
onCancel (isSuccess) {
......@@ -124,7 +101,7 @@ export default {
params.promptTemplateDto = {...this.form};
if (this.isEdit) {
PresetTemplateController.update(this, params).then(res => {
TemplateController.update(this, params).then(res => {
resolve(res);
this.$message.success('编辑成功');
this.onCancel(true);
......@@ -132,7 +109,7 @@ export default {
reject(e);
});
} else {
PresetTemplateController.add(this, params).then(res => {
TemplateController.add(this, params).then(res => {
resolve(res);
this.$message.success('添加成功');
this.onCancel(true);
......@@ -145,6 +122,51 @@ export default {
}
});
});
},
loadTlDropdownList () {
return new Promise((resolve, reject) => {
let params = {};
params.dictCode = 'TemplateLabelLabel';
DictionaryController.dictGlobalDict(this, params).then(res => {
resolve(res.getList());
}).catch(e => {
reject(e);
});
});
},
loadStDropdownList () {
return new Promise((resolve, reject) => {
let params = {};
params.dictCode = 'ScenarioTypeLabel';
DictionaryController.dictGlobalDict(this, params).then(res => {
resolve(res.getList());
}).catch(e => {
reject(e);
});
});
},
loadPfDropdownList () {
return new Promise((resolve, reject) => {
let params = {};
params.dictCode = 'ParameterFormatLabel';
DictionaryController.dictGlobalDict(this, params).then(res => {
resolve(res.getList());
}).catch(e => {
reject(e);
});
});
},
loadTfDropdownList () {
return new Promise((resolve, reject) => {
let params = {};
params.dictCode = 'TemplateFrameworkLabel';
DictionaryController.dictGlobalDict(this, params).then(res => {
resolve(res.getList());
}).catch(e => {
reject(e);
});
});
}
}
};
......
<!--自制模板-->
<template>
<div class="homemadeTemplate">
<el-form
ref="myDataSetPage"
:model="myDataSetPage"
label-width="75px"
:size="defaultFormItemSize"
label-position="right"
@submit.native.prevent
>
<filter-box :item-width="350" @search="search()" @reset="onReset">
<el-form-item
label="模板名称"
prop="formFilter.modelName"
>
<el-input
class="filter-item"
v-model="myDataSetPage.formFilter.modelName"
:clearable="true"
placeholder="模板名称"
/>
</el-form-item>
<el-form-item label-width="0px">
<el-button
class="add"
type="primary"
icon="el-icon-plus"
:size="defaultFormItemSize"
>创建模板</el-button
>
</el-form-item>
</filter-box>
<div class="homemadeTemplate">
<el-form ref="myDataSetPage" :model="myDataSetPage" label-width="75px" :size="defaultFormItemSize" label-position="right" @submit.native.prevent>
<filter-box :item-width="350" @search="refresh()" @reset="onReset">
<el-form-item label="模板名称" prop="formFilter.templateName">
<el-input class="filter-item" v-model="myDataSetPage.formFilter.templateName" :clearable="true" placeholder="模板名称" />
</el-form-item>
<el-form-item label-width="0px">
<el-button class="add" type="primary" icon="el-icon-plus" :size="defaultFormItemSize" @click="add">创建模板</el-button>
</el-form-item>
</filter-box>
</el-form>
<div class="listBox">
<el-card class="box-card" v-for="item in 5" :key="item + 'a'">
<div class="titleBox">
<div class="title omit">朋友圈文案</div>
<el-button type="text" size="mini" icon="el-icon-more"></el-button>
</div>
<div class="content omit_2">一个微信朋友圈文案,主题为{theme}</div>
<card :dataList='myDataSetPage.operationLog.impl.dataList'></card>
<el-divider style="margin: 14px 0"></el-divider>
<div class="buttonBox">
<div>
<el-tooltip :content="'收藏量1890'" placement="top">
<el-button type="text" style="color: #333" icon="el-icon-star-off"
>1890</el-button
>
</el-tooltip>
<el-tooltip :content="'浏览量262'" placement="top">
<el-button type="text" style="color: #333" icon="el-icon-view"
>262</el-button
>
</el-tooltip>
</div>
</div>
</el-card>
<div class="box-card-2" v-for="item in 3" :key="item"></div>
<el-row slot="pagination" type="flex" justify="end" style="margin-top: 16px;">
<el-pagination :total="myDataSetPage.operationLog.impl.totalCount" :current-page="myDataSetPage.operationLog.impl.currentPage" :page-size="myDataSetPage.operationLog.impl.pageSize" :page-sizes="[10, 20, 50, 100]" layout="total, prev, pager, next, sizes" @current-change="myDataSetPage.operationLog.impl.onCurrentPageChange" @size-change="myDataSetPage.operationLog.impl.onPageSizeChange">
</el-pagination>
</el-row>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
/* eslint-disable-next-line */
import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/widget.js';
import { TemplateController } from '@/api/gptController.js';
import createTemplate from '../components/dialog/createTemplate';
import card from '../components/card/index';
export default {
data () {
return {
myDataSetPage: {
formFilter: {
modelName: ''
interfaceAddress: '',
pageView: 0,
parameterFormat: '',
scenarioType: 0,
searchString: '',
templateContent: '',
templateFramework: 0,
templateId: 0,
templateLabel: '',
templateName: '',
templateSource: 0,
variable: ''
},
operationLog: {
impl: new TableWidget(this.getwidgetData, true, true, false, 'logId', false)
}
}
};
},
components: {},
components: {card},
computed: {
...mapGetters(['getMainContextHeight']),
tableHeight () {
return this.getMainContextHeight - 149 - 94 - 40 + 'px';
}
},
mounted () {},
methods: {
onReset () {},
search () {},
handleChange () {}
getwidgetData (params) {
if (params == null) params = {};
params = {
...params,
orderParam: [
{
asc: true,
dateAggregateBy: '',
fieldName: ''
}
],
pageParam: {
pageNum: 0,
pageSize: 0
},
promptTemplateDtoFilter: {
interfaceAddress: this.myDataSetPage.formFilter.interfaceAddress,
pageView: this.myDataSetPage.formFilter.pageView,
parameterFormat: this.myDataSetPage.formFilter.parameterFormat,
scenarioType: this.myDataSetPage.formFilter.scenarioType,
searchString: this.myDataSetPage.formFilter.searchString,
templateContent: this.myDataSetPage.formFilter.templateContent,
templateFramework: this.myDataSetPage.formFilter.templateFramework,
templateId: this.myDataSetPage.formFilter.templateId,
templateLabel: this.myDataSetPage.formFilter.templateLabel,
templateName: this.myDataSetPage.formFilter.templateName,
templateSource: this.myDataSetPage.formFilter.templateSource,
variable: this.myDataSetPage.formFilter.variable
}
}
return new Promise((resolve, reject) => {
TemplateController.listForHomemade(this, params).then(res => {
resolve({
dataList: res.data.dataList,
totalCount: res.data.totalCount
});
}).catch(e => {
reject(e);
});
});
},
add () {
this.$dialog.show('创建模版', createTemplate, {
area: ['100%', '100%']
}, { isEdit: false }).then(res => {
this.refresh();
}).catch(e => { });
},
edit () {
this.$dialog.show('修改模版', createTemplate, {
area: ['100%', '100%']
}, { isEdit: true }).then(res => {
this.refresh();
}).catch(e => { });
},
refresh (reloadData = false) {
if (reloadData) {
this.myDataSetPage.operationLog.impl.refreshTable(true, 1);
} else {
this.myDataSetPage.operationLog.impl.refreshTable();
}
},
onReset () {
this.$refs.myDataSetPage.resetFields();
this.refresh(true);
},
formInit () {
this.refresh();
},
handleChange () { }
},
mounted () {
this.formInit()
}
};
</script>
<style lang="scss" scoped>
@import "@/assets/style/element-variables.scss";
.homemadeTemplate{
.homemadeTemplate {
overflow: auto;
height: 100%;
}
......@@ -172,54 +224,8 @@ export default {
align-content: flex-start;
justify-content: space-between;
}
.box-card {
width: calc(100% / 4 - 20px);
height: 180px;
flex-shrink: 0;
margin-bottom: 20px;
min-width: 300px;
background: linear-gradient(to bottom, #e7efff 10%, #fff 50%);
}
.box-card-2 {
width: calc(100% / 4 - 20px);
min-width: 300px;
flex-shrink: 0;
}
div /deep/.el-divider--horizontal {
margin: 14px 0 0 0;
}
.title {
font-size: 16px;
color: $--color-text-primary;
}
.content {
.tagBox {
margin-bottom: 10px;
color: $--color-text-secondary;
}
.buttonBox {
display: flex;
justify-content: space-between;
}
.tag:not(:last-child) {
margin-right: 10px;
}
.titleBox {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
}
/deep/ .el-card__body{
height: 100%;
width: 100%;
position: relative;
}
.buttonBox {
display: flex;
justify-content: space-between;
position: absolute;
bottom: 0;
right: 20px;
}
</style>
<!--我的收藏-->
<template>
<div class="myCollection">
<el-form
ref="myDataSetPage"
:model="myDataSetPage"
label-width="75px"
:size="defaultFormItemSize"
label-position="right"
@submit.native.prevent
>
<filter-box :item-width="350" @search="search()" @reset="onReset">
<el-form-item
label="模板名称"
prop="formFilter.modelName"
>
<el-input
class="filter-item"
v-model="myDataSetPage.formFilter.modelName"
:clearable="true"
placeholder="模板名称"
/>
</el-form-item>
<el-form-item label-width="0px">
<el-button
class="add"
type="primary"
icon="el-icon-plus"
:size="defaultFormItemSize"
>创建模板</el-button
>
</el-form-item>
</filter-box>
<div class="myCollection">
<el-form ref="myDataSetPage" :model="myDataSetPage" label-width="75px" :size="defaultFormItemSize" label-position="right" @submit.native.prevent>
<filter-box :item-width="350" @search="refresh()" @reset="onReset">
<el-form-item label="模板名称" prop="formFilter.templateName">
<el-input class="filter-item" v-model="myDataSetPage.formFilter.templateName" :clearable="true" placeholder="模板名称" />
</el-form-item>
<el-form-item label-width="0px">
<el-button class="add" type="primary" icon="el-icon-plus" :size="defaultFormItemSize" @click="add">创建模板</el-button>
</el-form-item>
</filter-box>
</el-form>
<div class="listBox">
<el-card class="box-card" v-for="item in 5" :key="item + 'a'">
<div class="titleBox">
<div class="title omit">朋友圈文案</div>
<el-button type="text" size="mini" icon="el-icon-more"></el-button>
</div>
<div class="content omit_2">一个微信朋友圈文案,主题为{theme}</div>
<card :dataList='myDataSetPage.operationLog.impl.dataList'></card>
<el-divider style="margin: 14px 0"></el-divider>
<div class="buttonBox">
<div>
<el-tooltip :content="'收藏量1890'" placement="top">
<el-button type="text" style="color: #333" icon="el-icon-star-off"
>1890</el-button
>
</el-tooltip>
<el-tooltip :content="'浏览量262'" placement="top">
<el-button type="text" style="color: #333" icon="el-icon-view"
>262</el-button
>
</el-tooltip>
</div>
</div>
</el-card>
<div class="box-card-2" v-for="item in 3" :key="item"></div>
<el-row slot="pagination" type="flex" justify="end" style="margin-top: 16px;">
<el-pagination :total="myDataSetPage.operationLog.impl.totalCount" :current-page="myDataSetPage.operationLog.impl.currentPage" :page-size="myDataSetPage.operationLog.impl.pageSize" :page-sizes="[10, 20, 50, 100]" layout="total, prev, pager, next, sizes" @current-change="myDataSetPage.operationLog.impl.onCurrentPageChange" @size-change="myDataSetPage.operationLog.impl.onPageSizeChange">
</el-pagination>
</el-row>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
/* eslint-disable-next-line */
import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/widget.js';
import { TemplateController } from '@/api/gptController.js';
import createTemplate from '../components/dialog/createTemplate';
import card from '../components/card/index';
export default {
data () {
return {
myDataSetPage: {
formFilter: {
modelName: ''
interfaceAddress: '',
pageView: 0,
parameterFormat: '',
scenarioType: 0,
searchString: '',
templateContent: '',
templateFramework: 0,
templateId: 0,
templateLabel: '',
templateName: '',
templateSource: 0,
variable: ''
},
operationLog: {
impl: new TableWidget(this.getwidgetData, true, true, false, 'logId', false)
}
}
};
},
components: {},
components: {card},
computed: {
...mapGetters(['getMainContextHeight']),
tableHeight () {
return this.getMainContextHeight - 149 - 94 - 40 + 'px';
}
},
mounted () {},
methods: {
onReset () {},
search () {},
handleChange () {}
getwidgetData (params) {
if (params == null) params = {};
params = {
...params,
orderParam: [
{
asc: true,
dateAggregateBy: '',
fieldName: ''
}
],
pageParam: {
pageNum: 0,
pageSize: 0
},
promptTemplateDtoFilter: {
interfaceAddress: this.myDataSetPage.formFilter.interfaceAddress,
pageView: this.myDataSetPage.formFilter.pageView,
parameterFormat: this.myDataSetPage.formFilter.parameterFormat,
scenarioType: this.myDataSetPage.formFilter.scenarioType,
searchString: this.myDataSetPage.formFilter.searchString,
templateContent: this.myDataSetPage.formFilter.templateContent,
templateFramework: this.myDataSetPage.formFilter.templateFramework,
templateId: this.myDataSetPage.formFilter.templateId,
templateLabel: this.myDataSetPage.formFilter.templateLabel,
templateName: this.myDataSetPage.formFilter.templateName,
templateSource: this.myDataSetPage.formFilter.templateSource,
variable: this.myDataSetPage.formFilter.variable
}
}
return new Promise((resolve, reject) => {
TemplateController.listForCollect(this, params).then(res => {
resolve({
dataList: res.data.dataList,
totalCount: res.data.totalCount
});
}).catch(e => {
reject(e);
});
});
},
add () {
this.$dialog.show('创建模版', createTemplate, {
area: ['100%', '100%']
}, { isEdit: false }).then(res => {
this.refresh();
}).catch(e => { });
},
edit () {
this.$dialog.show('修改模版', createTemplate, {
area: ['100%', '100%']
}, { isEdit: true }).then(res => {
this.refresh();
}).catch(e => { });
},
refresh (reloadData = false) {
if (reloadData) {
this.myDataSetPage.operationLog.impl.refreshTable(true, 1);
} else {
this.myDataSetPage.operationLog.impl.refreshTable();
}
},
onReset () {
this.$refs.myDataSetPage.resetFields();
this.refresh(true);
},
formInit () {
this.refresh();
},
handleChange () { }
},
mounted () {
this.formInit()
}
};
</script>
<style lang="scss" scoped>
@import "@/assets/style/element-variables.scss";
.myCollection{
.myCollection {
overflow: auto;
height: 100%;
}
......@@ -172,54 +225,8 @@ export default {
align-content: flex-start;
justify-content: space-between;
}
.box-card {
width: calc(100% / 4 - 20px);
height: 180px;
flex-shrink: 0;
margin-bottom: 20px;
min-width: 300px;
background: linear-gradient(to bottom, #e7efff 10%, #fff 50%);
}
.box-card-2 {
width: calc(100% / 4 - 20px);
min-width: 300px;
flex-shrink: 0;
}
div /deep/.el-divider--horizontal {
margin: 14px 0 0 0;
}
.title {
font-size: 16px;
color: $--color-text-primary;
}
.content {
.tagBox {
margin-bottom: 10px;
color: $--color-text-secondary;
}
.buttonBox {
display: flex;
justify-content: space-between;
}
.tag:not(:last-child) {
margin-right: 10px;
}
.titleBox {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
}
/deep/ .el-card__body{
height: 100%;
width: 100%;
position: relative;
}
.buttonBox {
display: flex;
justify-content: space-between;
position: absolute;
bottom: 0;
right: 20px;
}
</style>
<!--预置模板-->
<template>
<div class="presetTemplate">
<el-form
ref="myDataSetPage"
:model="myDataSetPage"
label-width="75px"
:size="defaultFormItemSize"
label-position="right"
@submit.native.prevent
>
<filter-box :item-width="350" @search="refresh()" @reset="onReset">
<el-form-item
label="模板名称"
prop="formFilter.templateName"
>
<el-input
class="filter-item"
v-model="myDataSetPage.formFilter.templateName"
:clearable="true"
placeholder="模板名称"
/>
</el-form-item>
<el-form-item label-width="0px">
<el-button
class="add"
type="primary"
icon="el-icon-plus"
:size="defaultFormItemSize"
@click="add"
>创建模板</el-button
>
</el-form-item>
</filter-box>
<div class="presetTemplate">
<el-form ref="myDataSetPage" :model="myDataSetPage" label-width="75px" :size="defaultFormItemSize" label-position="right" @submit.native.prevent>
<filter-box :item-width="350" @search="refresh()" @reset="onReset">
<el-form-item label="模板名称" prop="formFilter.templateName">
<el-input class="filter-item" v-model="myDataSetPage.formFilter.templateName" :clearable="true" placeholder="模板名称" />
</el-form-item>
<el-form-item label-width="0px">
<el-button class="add" type="primary" icon="el-icon-plus" :size="defaultFormItemSize" @click="add">创建模板</el-button>
</el-form-item>
</filter-box>
</el-form>
<div class="listBox">
<el-card class="box-card" v-for="item in myDataSetPage.operationLog.impl.dataList" :key="item + 'a'">
<div class="titleBox">
<div class="title omit">朋友圈文案</div>
<el-button size="mini">复制</el-button>
</div>
<div class="tagBox">
<el-tag class="tag" type="info" size="mini">生活助手</el-tag>
</div>
<div class="content omit_2">一个微信朋友圈文案,主题为{theme}</div>
<card :dataList='myDataSetPage.operationLog.impl.dataList' :isPreset="true"></card>
<el-divider style="margin: 14px 0"></el-divider>
<div class="buttonBox">
<div>
<el-tooltip :content="'收藏量1890'" placement="top">
<el-button type="text" style="color: #333" icon="el-icon-star-off"
>1890</el-button
>
</el-tooltip>
<el-tooltip :content="'浏览量262'" placement="top">
<el-button type="text" style="color: #333" icon="el-icon-view"
>262</el-button
>
</el-tooltip>
</div>
</div>
</el-card>
<div class="box-card-2" v-for="item in 3" :key="item"></div>
<el-row slot="pagination" type="flex" justify="end" style="margin-top: 16px;">
<el-pagination
:total="myDataSetPage.operationLog.impl.totalCount"
:current-page="myDataSetPage.operationLog.impl.currentPage"
:page-size="myDataSetPage.operationLog.impl.pageSize"
:page-sizes="[10, 20, 50, 100]"
layout="total, prev, pager, next, sizes"
@current-change="myDataSetPage.operationLog.impl.onCurrentPageChange"
@size-change="myDataSetPage.operationLog.impl.onPageSizeChange">
<el-row slot="pagination" type="flex" justify="end" style="margin-top: 16px;">
<el-pagination :total="myDataSetPage.operationLog.impl.totalCount" :current-page="myDataSetPage.operationLog.impl.currentPage" :page-size="myDataSetPage.operationLog.impl.pageSize" :page-sizes="[10, 20, 50, 100]" layout="total, prev, pager, next, sizes" @current-change="myDataSetPage.operationLog.impl.onCurrentPageChange" @size-change="myDataSetPage.operationLog.impl.onPageSizeChange">
</el-pagination>
</el-row>
</div>
......@@ -81,8 +26,9 @@
import { mapGetters } from 'vuex';
/* eslint-disable-next-line */
import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/widget.js';
import {PresetTemplateController} from '@/api/gptController.js';
import createTemplate from './dialog/createTemplate';
import { TemplateController } from '@/api/gptController.js';
import createTemplate from '../components/dialog/createTemplate';
import card from '../components/card/index';
export default {
data () {
return {
......@@ -101,7 +47,7 @@ export default {
templateSource: 0,
variable: ''
},
operationLog: {
impl: new TableWidget(this.getwidgetData, true, true, false, 'logId', false)
}
......@@ -109,13 +55,14 @@ export default {
};
},
components: {},
components: {card},
computed: {
...mapGetters(['getMainContextHeight']),
tableHeight () {
return this.getMainContextHeight - 149 - 94 - 40 + 'px';
}
},
methods: {
......@@ -135,22 +82,23 @@ export default {
pageSize: 0
},
promptTemplateDtoFilter: {
interfaceAddress: '',
pageView: 0,
parameterFormat: '',
scenarioType: 0,
searchString: '',
templateContent: '',
templateFramework: 0,
templateId: undefined,
templateLabel: '',
templateName: '',
templateSource: 0,
variable: ''
interfaceAddress: this.myDataSetPage.formFilter.interfaceAddress,
pageView: this.myDataSetPage.formFilter.pageView,
parameterFormat: this.myDataSetPage.formFilter.parameterFormat,
scenarioType: this.myDataSetPage.formFilter.scenarioType,
searchString: this.myDataSetPage.formFilter.searchString,
templateContent: this.myDataSetPage.formFilter.templateContent,
templateFramework: this.myDataSetPage.formFilter.templateFramework,
templateId: this.myDataSetPage.formFilter.templateId,
templateLabel: this.myDataSetPage.formFilter.templateLabel,
templateName: this.myDataSetPage.formFilter.templateName,
templateSource: this.myDataSetPage.formFilter.templateSource,
variable: this.myDataSetPage.formFilter.variable
}
}
return new Promise((resolve, reject) => {
PresetTemplateController.list(this, params).then(res => {
TemplateController.listForPreset(this, params).then(res => {
console.log(res);
resolve({
dataList: res.data.dataList,
totalCount: res.data.totalCount
......@@ -163,16 +111,16 @@ export default {
add () {
this.$dialog.show('创建模版', createTemplate, {
area: ['100%', '100%']
}, {isEdit: false}).then(res => {
}, { isEdit: false }).then(res => {
this.refresh();
}).catch(e => {});
}).catch(e => { });
},
edit () {
this.$dialog.show('修改模版', createTemplate, {
area: ['100%', '100%']
}, {isEdit: true}).then(res => {
}, { isEdit: true }).then(res => {
this.refresh();
}).catch(e => {});
}).catch(e => { });
},
refresh (reloadData = false) {
if (reloadData) {
......@@ -182,17 +130,17 @@ export default {
}
},
onReset () {
this.$refs.presetTemplate.resetFields();
this.$refs.myDataSetPage.resetFields();
this.refresh(true);
},
formInit () {
this.refresh();
},
handleChange () {}
handleChange () { }
},
mounted () {
this.formInit()
}
......@@ -200,7 +148,7 @@ export default {
</script>
<style lang="scss" scoped>
@import "@/assets/style/element-variables.scss";
.presetTemplate{
.presetTemplate {
overflow: auto;
height: 100%;
}
......@@ -277,53 +225,5 @@ export default {
align-content: flex-start;
justify-content: space-between;
}
.tagBox {
margin-bottom: 10px;
}
.box-card {
width: calc(100% / 4 - 20px);
height: 180px;
flex-shrink: 0;
margin-bottom: 20px;
min-width: 300px;
background: linear-gradient(to bottom, #e7efff 10%, #fff 50%);
}
.box-card-2 {
width: calc(100% / 4 - 20px);
min-width: 300px;
flex-shrink: 0;
}
div /deep/.el-divider--horizontal {
margin: 14px 0 0 0;
}
.title {
font-size: 16px;
color: $--color-text-primary;
}
.content {
margin-bottom: 10px;
color: $--color-text-secondary;
}
/deep/ .el-card__body{
height: 100%;
width: 100%;
position: relative;
}
.buttonBox {
display: flex;
justify-content: space-between;
position: absolute;
bottom: 0;
right: 20px;
}
.tag:not(:last-child) {
margin-right: 10px;
}
.titleBox {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment