From cbe4b354224dfc34a852c7b7f932d33bbe85ffec Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 03 Feb 2026 15:19:39 +0800
Subject: [PATCH] feat(ai): 新增产品题目导入导出功能
---
src/main/resources/templates/febs/views/modules/ai/productQuestion/list.html | 157 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 149 insertions(+), 8 deletions(-)
diff --git a/src/main/resources/templates/febs/views/modules/ai/productQuestion/list.html b/src/main/resources/templates/febs/views/modules/ai/productQuestion/list.html
index a769fc4..1c627a3 100644
--- a/src/main/resources/templates/febs/views/modules/ai/productQuestion/list.html
+++ b/src/main/resources/templates/febs/views/modules/ai/productQuestion/list.html
@@ -6,7 +6,13 @@
<form class="layui-form layui-table-form" lay-filter="productQuestion-table-form">
<div class="layui-row">
<div class="layui-col-md10">
- <div class="layui-form-item">
+ <div class="layui-row layui-col-space6 layui-form-item">
+ <div class="layui-col-lg3">
+ <label class="layui-form-label">产品分类:</label>
+ <div class="layui-input-block">
+ <div id="product-qutestion-category-query"></div>
+ </div>
+ </div>
</div>
</div>
<div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
@@ -45,7 +51,13 @@
<script type="text/html" id="productQuestionToolbar">
<div class="layui-btn-container">
- <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:add" lay-event="productQuestionAdd">新增</button>
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:add" lay-event="productQuestionAdd">手动新增</button>
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:aiAdd" lay-event="productQuestionAiAdd">AI新增</button>
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:aiAdd" lay-event="productQuestionStateOpen">启用</button>
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:aiAdd" lay-event="productQuestionStateClose">禁用</button>
+ <button class="layui-btn layui-btn-danger layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:aiAdd" lay-event="productQuestionDelete">删除</button>
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="productQuestionList:aiAdd" lay-event="exportProductQuestion">导出</button>
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="productQuestionList:aiAdd" lay-event="importProductQuestion">导入</button>
</div>
</script>
@@ -66,9 +78,9 @@
<script type="text/html" id="difficultyFormat">
{{# if(d.difficulty == 1) { }}
<span>简单</span>
- {{# }else if(d.isNormal == 2) { }}
+ {{# }else if(d.difficulty == 2) { }}
<span>中等</span>
- {{# }else if(d.isNormal == 3) { }}
+ {{# }else if(d.difficulty == 3) { }}
<span>困难</span>
{{# } else { }}
<span>-</span>
@@ -83,11 +95,12 @@
<!-- 表格操作栏 end -->
<script data-th-inline="none" type="text/javascript">
// 引入组件并初始化
- layui.use([ 'jquery', 'form', 'table', 'febs'], function () {
+ layui.use([ 'jquery', 'form', 'table', 'febs', 'xmSelect', 'upload'], function () {
var $ = layui.jquery,
febs = layui.febs,
form = layui.form,
table = layui.table,
+ upload = layui.upload,
$view = $('#febs-productQuestion'),
$query = $view.find('#query'),
$reset = $view.find('#reset'),
@@ -96,6 +109,35 @@
tableIns;
form.render();
+
+ var categoryQuestion = xmSelect.render({
+ el: '#product-qutestion-category-query',
+ language: 'zn',
+ prop : {
+ value : 'id',
+ children : 'child'
+ },
+ iconfont: {
+ parent: 'hidden',
+ },
+ tips: '请选择',
+ filterable: true,
+ radio: true,
+ clickClose: true,
+ tree: {
+ show: true,
+ //非严格模式
+ strict: false,
+ },
+ data: []
+ })
+
+ febs.get(ctx + 'admin/productCategory/categoryTree', null, function(res) {
+ categoryQuestion.update({
+ data : res.data,
+ autoRow: true,
+ });
+ })
// 表格初始化
initProductQuestionTable();
@@ -157,7 +199,102 @@
}
});
}
+ if(layEvent === 'productQuestionAiAdd'){
+ febs.modal.open('新增', 'modules/ai/productQuestion/aiAdd/', {
+ btn: ['提交', '取消'],
+ area:['100%','100%'],
+ yes: function (index, layero) {
+ $('#febs-productQuestion-ai-add').find('#submit').trigger('click');
+ },
+ btn2: function () {
+ layer.closeAll();
+ }
+ });
+ }
+ if (layEvent === 'productQuestionStateOpen') {
+ var checkData = table.checkStatus('productQuestionTable').data;
+ if (checkData.length <= 0) {
+ febs.alert.warn('请选择');
+ return;
+ }
+ febs.modal.confirm('状态', '启用?', function () {
+ var ids = [];
+ layui.each(checkData, function (key, item) {
+ ids.push(item.id)
+ });
+ productQuestionStateUpdate(ids.join(','), 1);
+ });
+ }
+ if (layEvent === 'productQuestionStateClose') {
+
+ var checkData = table.checkStatus('productQuestionTable').data;
+ if (checkData.length <= 0) {
+ febs.alert.warn('请选择');
+ return;
+ }
+ febs.modal.confirm('状态', '禁用?', function () {
+ var ids = [];
+ layui.each(checkData, function (key, item) {
+ ids.push(item.id)
+ });
+ productQuestionStateUpdate(ids.join(','), 0);
+ });
+ }
+ if (layEvent === 'productQuestionDelete') {
+
+ var checkData = table.checkStatus('productQuestionTable').data;
+ if (checkData.length <= 0) {
+ febs.alert.warn('请选择');
+ return;
+ }
+ febs.modal.confirm('删除', '确定?', function () {
+ var ids = [];
+ layui.each(checkData, function (key, item) {
+ ids.push(item.id)
+ });
+ productQuestionDelete(ids.join(','));
+ });
+ }
+ if (layEvent == 'exportProductQuestion') {
+ var checkData = table.checkStatus('productQuestionTable').data;
+ if (checkData.length <= 0) {
+ febs.alert.warn('请选择');
+ return;
+ }
+ var ids = [];
+ layui.each(checkData, function (key, item) {
+ ids.push(item.id)
+ });
+ window.location.href = ctx + "admin/productQuestion/exportProductQuestion?ids="+ids;
+ }
});
+
+ upload.render({
+ elem: '#importProductQuestion'
+ ,url: 'admin/productQuestion/importProductQuestion' //此处配置你自己的上传接口即可
+ ,accept: 'file' //普通文件
+ ,done: function(res){
+ console.log("123");
+ febs.alert.success('操作成功');
+ $query.click();
+ }
+ });
+
+
+
+ function productQuestionStateUpdate(ids, type) {
+ febs.post(ctx + 'admin/productQuestion/stateUpdate/' + type + "/"+ ids, null, function () {
+ febs.alert.success('操作成功');
+ });
+ }
+
+
+
+ function productQuestionDelete(ids) {
+ febs.post(ctx + 'admin/productQuestion/productQuestionDelete/'+ ids, null, function () {
+ febs.alert.success('操作成功');
+ });
+ }
function initProductQuestionTable() {
tableIns = febs.table.init({
@@ -185,10 +322,10 @@
productSwitch(data.value,0);
}
})
- function productSwitch(id,type,state) {
+ function productSwitch(id,state) {
febs.get(ctx + 'admin/productQuestion/changeState/' + id+'/' + state, null, function (data) {
febs.alert.success(data.message);
- $query.click();
+ // $query.click();
});
}
@@ -201,13 +338,17 @@
// 刷新按钮
$reset.on('click', function () {
+
+ var categoryList = [];
+ categoryQuestion.setValue(categoryList);
$searchForm[0].reset();
sortObject.type = 'null';
- tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
+ tableIns.reload({where: null, page: {curr: 1}, initSort: sortObject});
});
// 获取查询参数
function getQueryParams() {
return {
+ productCategoryId: categoryQuestion.getValue('valueStr'),
};
}
--
Gitblit v1.9.1