若依ruoyi+AI项目二次开发

news2024/9/25 1:15:06

//-------------------------
//定义口味名称和口味列表静态数据
const dishFlavorListSelect=ref([
  {name:"辣度",value:["不辣","微辣","中辣","重辣"]},
  {name:"忌口",value:["不要葱","不要蒜","不要香菜","不要
  {name:"甜味",value:["无糖","少糖","半糖","多糖"]}
]);

//-------------------------

  <el-select v-model="scope.row.name" placeholder="请选择口味名称">
   <el-option
     v-for="dishFlavor in dishFlavorListSelect"
     :key="dishFlavor.name"
     :label="dishFlavor.name"
     :value="dishFlavor.name"
   ></el-option>
 </el-select>

 <el-select v-model="scope.row.value" placeholder="请选择口味列表">
   <el-option v-for="value in checkValueList" 
   :key="value" 
   :label="value"
     :value="value"></el-option>
 </el-select>

//存储当前选中口味列表数组
const checkValueList = ref([]);
//定义改变口味名称时更新当前选中的口味列表
function changeFlavorName(row) {
  //根据选中name去查找静态数据的value
  checkValueList.value = dishFlavorListSelect.value.find(item => item.name == row.name).value;
}

 <el-select v-model="scope.row.name" placeholder="请选择口味名称"
  @change="changeFlavorName(scope.row)">
   <el-option v-for="dishFlavor in dishFlavorListSelect" 
   :key="dishFlavor.name"
    :label="dishFlavor.name"
     :value="dishFlavor.name"></el-option>
 </el-select>

//存储当前选中口味列表数组
const checkValueList = ref([]);
//定义改变口味名称时更新当前选中的口味列表
function changeFlavorName(row) {
  //清空当前行value
  row.value = [];
  //根据选中name去查找静态数据的value
  checkValueList.value =
   dishFlavorListSelect.value.find(item => item.name == row.name).value;
}

/** 提交按钮 */
function submitForm() {
  proxy.$refs["dishRef"].validate(valid => {
    if (valid) {
      form.value.dishFlavorList = dishFlavorList.value;
      //将口味列表中value通过json工具类转为字符串,加个判断,不为空时进行转换
          if(form.value.dishFlavorList!=null){
       form.value.dishFlavorList.forEach(item => {
  item.value = JSON.stringify(item.value);
});

      if (form.value.id != null) {
        updateDish(form.value).then(response => {
          proxy.$modal.msgSuccess("修改成功");
          open.value = false;
          getList();
        });
      } else {
        addDish(form.value).then(response => {
          proxy.$modal.msgSuccess("新增成功");
          open.value = false;
          getList();
        });
      }
    }
  });
}

但点击修改,页面无法显示辣度内容,所以需要将口味列表value字符串转为json数组

数据列表回显问题

/** 修改按钮操作 */
function handleUpdate(row) {
  reset();
  const _id = row.id || ids.value
  getDish(_id).then(response => {
    form.value = response.data;
    dishFlavorList.value = response.data.dishFlavorList;
    //将口味列表value字符串转为json数组,加个判断,不为空时进行转换
    if( dishFlavorList.value!=null){
      dishFlavorList.value.forEach(item => {
   item.value = JSON.parse(item.value);
 });
    }
    open.value = true;
    title.value = "修改菜品管理";
  });
}

但无法修改口味列表数据

所以需要定义获取焦点方法

const { queryParams, form, rules } = toRefs(data);
//-------------------------
//定义口味名称和口味列表静态数据
const dishFlavorListSelect = ref([
  { name: "辣度", value: ["不辣", "微辣", "中辣", "重辣"] },
  { name: "忌口", value: ["不要葱", "不要蒜", "不要香菜", "不要辣"] },
  { name: "甜味", value: ["无糖", "少糖", "半糖", "多糖"] }
]);
//存储当前选中口味列表数组
const checkValueList = ref([]);
//定义改变口味名称时更新当前选中的口味列表
function changeFlavorName(row) {
  //清空当前行value
  row.value = [];
  //根据选中name去查找静态数据的value
  checkValueList.value =
   dishFlavorListSelect.value.find(item => item.name == row.name).value;
}
//定义口味列表获取焦点时更新当前选中的口味列表
function focusFlavorName(row) {
  //根据选中name去查找静态数据的value
  checkValueList.value =
   dishFlavorListSelect.value.find(item => item.name == row.name).value;
}

//-------------------------

 <el-select v-model="scope.row.value" placeholder="请选择口味列表" multiple
 @focus="focusFlavorName(scope.row)">
   <el-option v-for="value in checkValueList" 
   :key="value" 
   :label="value"
     :value="value"></el-option>
 </el-select> 

页面调整

改标题

改logo

最终效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1949933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADG901解析

目录 一、特性二、增强产品特性三、应用四、一般描述五、极低功耗六、引脚描述七、尺寸参数八、电路连接一、特性 宽带开关:-3 dB 在 4.5 GHz吸收型开关高关断隔离度:在 1 GHz 时为 38 dB低插入损耗:在 1 GHz 时为 0.8 dB单一 1.65 V 至 2.75 V 电源CMOS/LVTTL 控制逻辑小巧…

AI无处不在,英特尔举办第十七届网络与边缘计算行业大会,推动边缘AI深度融合

AI正在成为全行业的技术热潮。CSDN 看到&#xff0c;AI正在引发计算、开发、交互三大范式的全面升级&#xff0c;技术开发或将迎来一次全新的科技变革周期。国际权威的分析机构数据也一致显示了AI的快速增长之势。据IDC数据&#xff0c;中国生成式AI的复合年增长率达到86.2%&am…

企业利用AI智能名片S2B2C商城小程序参与社区团购的风险与机遇分析

摘要 在新零售浪潮的推动下&#xff0c;社区团购以其独特的商业模式迅速崛起&#xff0c;成为连接消费者与供应商的重要桥梁。企业纷纷探索如何有效利用这一新兴渠道&#xff0c;以扩大市场份额、提升品牌影响力。AI智能名片S2B2C商城小程序的引入&#xff0c;为企业参与社区团…

Spring源码学习笔记之@Async源码

文章目录 一、简介二、异步任务Async的使用方法2.1、第一步、配置类上加EnableAsync注解2.2、第二步、自定义线程池2.2.1、方法一、不配置自定义线程池使用默认线程池2.2.2、方法二、使用AsyncConfigurer指定线程池2.2.3、方法三、使用自定义的线程池Excutor2.2.4、方法四、使用…

家长读本编辑部家长读本杂志家长读本杂志社2024年第6期目录

新型教育 如何为孩子上好一堂科学课? (1) 孙瑜 全面实施“关爱微心愿”活动——福建宁德:汇聚星光,点亮学生“微心愿” (4) 黄荣夏 如何将STEM教育融入初中数学教学活动 (6) 罗淑萍 小学语文“读思达”教学法的推进策略 (9) 王湘福《家长读本》投稿&#xff1a;cn…

PE文件(十二)导入表

导入表 导入表的引入 当一个PE文件&#xff08;如.dll/.exe等&#xff09;需要使用别的模块的函数&#xff0c;也叫做依赖某模块&#xff0c;就需要一个清单来记录使用的模块&#xff08;一般为.dll文件&#xff0c;为方便理解&#xff0c;以后我们将模块都认为是.dll文件&am…

重磅发布:OpenAI宣布推出AI驱动的搜索引擎SearchGPT,将与Google和Perplexity展开竞争|TodayAI

OpenAI宣布推出其备受期待的AI驱动搜索引擎SearchGPT。该搜索引擎能够实时访问互联网信息&#xff0c;并将作为原型在有限范围内发布&#xff0c;计划最终将其功能整合到ChatGPT中。 SearchGPT的功能特点 SearchGPT是一个具有实时互联网信息访问能力的AI驱动搜索引擎。它的界面…

GoFly快速开发框架基于Go语言和Vue3开发后台管理附件管理插件包

说明 为了给客户提供更好的交互体验&#xff0c;框架把附件管理独立打包成插件包&#xff0c;这样附件管理接可以做个不通需求的附件管理插件包来满足不同甲方客户需求。 目前附件插件包有2个&#xff1a;一个基础包、一个高级包 附件插件包功能 1.基础包 统一管理业务系统…

Python酷库之旅-第三方库Pandas(046)

目录 一、用法精讲 161、pandas.Series.cumsum方法 161-1、语法 161-2、参数 161-3、功能 161-4、返回值 161-5、说明 161-6、用法 161-6-1、数据准备 161-6-2、代码示例 161-6-3、结果输出 162、pandas.Series.describe方法 162-1、语法 162-2、参数 162-3、功…

深入解析:inode、软硬链接与动静态库的奥秘

目录 一.inode1.inode的介绍2.文件系统与inode3.“目录”再理解 二.软硬链接1.硬链接2.软连接 三.动静态库1.静态库2.动态库3.动态库的加载过程 一.inode 1.inode的介绍 在Linux操作系统中&#xff0c;‘inode(索引节点)是文件系统的核心组件之一&#xff0c;用于管理文件和目…

从零开学C++:模板初阶

引言&#xff1a;在C语言当中&#xff0c;如果我们想要实现一个能计算整数和浮点数的计算器时&#xff0c;我们都需要根据不同的返回类型和参数类型创建许多个形式极其相似的函数&#xff0c;非常的麻烦&#xff0c;而在C中&#xff0c;我们将会引入模版的知识概念&#xff0c;…

模型优化—输入特征归一化处理

一、normalization 归一化&#xff08;规范化&#xff09;是对输入数据进行处理&#xff0c;使其满足某种规范。 前提&#xff1a;线性变换&#xff0c;不会改变原始数据的数值顺序。 假设原值分布在第一象限的某区间&#xff0c;并且x轴间距较广&#xff08;离散&#xff0…

QT动态添加布局以及删除布局

具体代码示例如下 &#xff1a; QHBoxLayout* hLayout new QHBoxLayout;hLayout->addWidget(new QLabel("444"));hLayout->addWidget(new QLineEdit("444"));hLayout->addWidget(new QPushButton("444"));layout->addLayout(hLayou…

Axure Web端元件库:从Quick UI到500+组件的飞跃

在快速变化的数字世界中&#xff0c;产品设计不仅仅是功能的堆砌&#xff0c;更是用户体验的精心雕琢。原型设计作为产品开发过程中的关键环节&#xff0c;其重要性不言而喻。Axure&#xff0c;作为业界领先的原型设计工具&#xff0c;凭借其强大的交互设计和丰富的功能&#x…

Masked Autoencoders for Point CloudSelf-supervised Learning

关于SSL中的MAE方法。 摘要 文章介绍了一种新的技术&#xff0c;叫做MAE&#xff0c;在帮助计算机自己学习理解语言和图片方面做得非常好。受到这个技术的启发&#xff0c;它用在了点云上。点云是一堆代表三维空间中某些点的数据&#xff0c;这种数据有时候会有点难处理&…

机器学习笔记-02-基础线性算法认识(问题-解答自查版)

前言 以下问题以Q&A形式记录&#xff0c;基本上都是笔者在初学一轮后&#xff0c;掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系&#xff0c;也适合做查漏补缺和复盘。 本文可以让读者用作自查&#xff0c;答案在后面&#xff0…

尚庭公寓开发(二)

任何二进制和子网掩码进行一个与运算 得到是子网ip的话就是属于子网ip的范围 任何数字和一做与运算都是他本身 和0做运算都是0 所以要得到子网ip的话他的前面必须是 192.168.200 最后是0-255之间的范围 0不能取 0是子网本身 255也不能用 因为他是广播地址 真正可以使用 的范…

[数据集][目标检测]躺坐站识别检测数据集VOC+YOLO格式9488张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;9488 标注数量(xml文件个数)&#xff1a;9488 标注数量(txt文件个数)&#xff1a;9488 标注…

Python升级打怪—Django入门

目录 一、Django简介 二、安装Django 三、创建Dajngo项目 (一) 创建项目 (二) 项目结构介绍 (三) 运行项目 (四) 结果 一、Django简介 Django是一个高级Python web框架&#xff0c;鼓励快速开发和干净、实用的设计。由经验丰富的开发人员构建&#xff0c;它解决了web开…

机器学习 | 分类算法原理——感知机

Hi&#xff0c;大家好&#xff0c;我是半亩花海。接着上次的内积继续更新《白话机器学习的数学》这本书的学习笔记&#xff0c;在此分享感知机这一回归算法基础。本章的回归算法基础基于《基于图像大小进行分类》项目&#xff0c;欢迎大家交流学习&#xff01; 目录 一、感知机…