当前位置: 首页 > news >正文

uniapp动态表单

使用了uniapp自带扩展组件和uv-ui组件库自行安装下载

<template><view class="assetEdit_container"><view class="type-box"><uv-formlabelPosition="left"labelWidth="140rpx":model="formData"ref="formRef":rules="rulesAll"><view class="content-box"><!-- 白框 --><view class="formbox"><!-- 扩展字段================================================================= --><template v-for="item in ExtrasAll" :key="item.id"><!-- 单行文本 --><uv-form-item:label="item.label":prop="item.prop"borderBottomv-if="item.formType == '0'":required="item.isRequire == '0'"><uv-inputv-model="formData[item.prop]"border="none":placeholder="`${item.placeholder || ''}`"></uv-input></uv-form-item><!-- 多行文本 --><uv-form-item:label="item.label":prop="item.prop"borderBottomv-if="item.formType == '1'":required="item.isRequire == '0'"><uv-textareav-model="formData[item.prop]"count:customStyle="{'min-height': '240rpx',}"autoHeight:maxlength="item.length":placeholder="`${item.placeholder || ''}`"></uv-textarea></uv-form-item><!-- 数字输入框 --><uv-form-item:label="item.label":prop="item.prop"borderBottomv-if="item.formType == '2'":required="item.isRequire == '0'"><uv-number-boxv-model="formData[item.prop]"inputWidth="100":min="0"@change="changeNum(item.prop)"></uv-number-box></uv-form-item><!-- 单选框组 --><uv-form-item:label="item.label":prop="item.prop"borderBottomv-if="item.formType == '3'":required="item.isRequire == '0'"><uv-radio-group v-model="formData[item.prop]"><uv-radio:customStyle="{ margin: '8px' }"v-for="i in item.options.split(',')":key="i":label="i":name="i"></uv-radio></uv-radio-group></uv-form-item><!-- 下拉单选 --><uv-form-item:label="item.label":prop="item.prop"borderBottomv-if="item.formType == '4'"@click="showSelect(item)":required="item.isRequire == '0'"><uv-inputv-model="formData[item.prop]"disableddisabledColor="#ffffff":placeholder="`${item.placeholder || ''}`"border="none"></uv-input><template v-slot:right><uv-icon name="arrow-right"></uv-icon></template></uv-form-item><!-- 日期选择 --><uv-form-item:label="item.label":prop="item.prop"borderBottomv-if="item.formType == '5'"@click="opendatetime(item)":required="item.isRequire == '0'"><uv-inputv-model="formData[item.prop]"border="none"disableddisabledColor="#ffffff"suffixIcon="calendar"suffixIconStyle="color: #909399"></uv-input></uv-form-item><!-- 文件 --><uv-form-item:label="item.label":prop="item.prop"borderBottomv-if="item.formType == '6'":required="item.isRequire == '0'"><uni-section title="选择任意文件" type="line"><view class="example-body"><uni-file-pickerlimit="5"file-mediatype="all"@select="(e) => uploadFile(e, item)":value="formatFile(formData[item.prop])"@delete="({ index }) => deleteFile(index, item)"></uni-file-picker></view></uni-section></uv-form-item><!-- 图片 --><uv-form-item:label="item.label":prop="item.prop"borderBottomv-if="item.formType == '7'":required="item.isRequire == '0'"><uni-section title="只选择图片" type="line"><view class="example-body"><uni-file-pickerlimit="9"title=""@select="(e) => uploadFilePic(e, item)":value="formatPic(formData[item.prop])"@delete="({ index }) => deleteFilePic(index, item)"></uni-file-picker></view></uni-section></uv-form-item></template></view></view></uv-form></view><view class="btns"><view class="btn"><uv-button type="primary" text="提交" shape="circle"></uv-button></view></view><!-- 动态选择框 --><uv-pickerref="selectRef":keyName="selectLabel":columns="columns"@confirm="confirmSelect"@change="changeSelect"></uv-picker><!-- 动态日期选择 --><uv-datetime-pickerref="datetimeRef"v-model="datetimevalue"mode="date":formatter="formatter"@confirm="confirmDatetime"></uv-datetime-picker></view>
</template><script setup>
import { onLoad } from "@dcloudio/uni-app";
import { ref, onMounted, computed, getCurrentInstance } from "vue";
import { getExtras, getFieldExtras } from "../../api/common";
import { getToken } from "@/utils/auth.js";
import dayjs from "dayjs";
import config from "@/config/index.js";
const { proxy } = getCurrentInstance();
// 主要是获取不同的动态字段,并且根据动态字段创建校验信息
onMounted(async () => {// 获取全局动态字段Extras.value = (await getExtras()).data;// 获取动态校验内容getRule();
});
onLoad(async ({ id }) => {// 根据分类id获取动态字段 FieldExtrasFieldExtras.value = (await getFieldExtras(formData.value.typeId)).data;// 获取动态校验内容getRule();
});// 静态字段校验规则
let rules = ref({typeName: {type: "string",required: true,message: "提示信息",trigger: ["change"],},
});
// 动态校验数据
let FieldRules = ref({});
// 所有的校验:静态+动态
let rulesAll = computed(() => {return { ...rules.value, ...FieldRules.value };
});
// 通用的动态字段
let Extras = ref([]);
// 指定的动态字段
let FieldExtras = ref([]);
// 所有动态字段:通用的动态字段+指定的动态字段
let ExtrasAll = computed(() => {return Extras.value.concat(FieldExtras.value); //动态字段拼接
});
// 动态校验
// 根据扩展字段的属性配置获取校验规则
let getRule = () => {FieldRules.value = {};ExtrasAll.value.forEach((item) => {if (item.formType == "2" || item.formType == "3" || item.formType == "4") {FieldRules.value[item.prop] = {type: item.formType == "2" ? "number" : "string",required: item.isRequire == "0",message: `${item.label}${proxy.$t("AssetList.Cannotbeempty")}`,trigger: ["change"],};} else {FieldRules.value[item.prop] = {type: "string",required: item.isRequire == "0",message: `${item.label}${proxy.$t("AssetList.Cannotbeempty")}`,trigger: ["blur"],};}});
};
// ======================================================================
// 3、动态字段下拉框自定义配置
let columns = ref([]);
// 选择弹窗
let selectRef = ref(null);
// 定义一个和选择弹窗绑定的中间件
let selectProp = ref("");
// 点击状态选择输入框弹出选项
let showSelect = (item) => {selectRef.value.open(); //打开弹窗columns.value = [item.options.split(",")]; //下拉框数据selectProp.value = item.prop; //绑定键名
};
let confirmSelect = (e) => {console.log(e.value[0], 244);// 确认选择之后的赋值操作formData.value[selectProp.value] = e.value[0];formRef.value?.validateField(selectProp.value);
};
// 数字改变
let changeNum = (prop) => {formRef.value?.validateField(prop);
};
// 4、动态日期下拉框自定义配置
let datetimeRef = ref(null);
let datetimeProp = ref("");
let datetimevalue = ref(Number(new Date())); //当前打开选择器的时间
let opendatetime = (item) => {datetimeRef.value.open(); //打开弹窗datetimeProp.value = item.prop; //绑定键名console.log(item, 267);if (formData.value[item.prop]) {// 如果时间存在则回显时间,如果没值则选择器定位到当前时间datetimevalue.value = new Date(formData.value[item.prop]);}
};
let confirmDatetime = (e) => {formData.value[datetimeProp.value] = dayjs(e.value).format("YYYY-MM-DD");formRef.value?.validateField(datetimeProp.value);
};
let formatter = (type, value) => {if (type === "year") {return `${value}${proxy.$t("AssetList.year")}`;}if (type === "month") {return `${value}${proxy.$t("AssetList.month")}`;}if (type === "day") {return `${value}${proxy.$t("AssetList.day")}`;}return value;
};
// 5、动态文件上传
let formatFile = (UrlString) => {if (UrlString) {return UrlString.split(",").map((item) => {return {url:config.baseUrl +item.split("/").slice(0, item.split("/").length - 1).join("/"),extname: item.split(".").pop(),name: item.split("/").pop(),};});} else {return [];}
};
let uploadFile = (e, item) => {const file = e;if (file.tempFilePaths.length === 0) {uni.showToast({title: proxy.$t("AssetList.Nofileselected"),icon: "none",});return;}const uploadTask = uni.uploadFile({url: config.baseUrl + "/admin/sys-file/upload",filePath: file.tempFilePaths[0],name: "file", // 这里根据后端API的字段来定义header: {Authorization: "Bearer " + getToken(),"TENANT-ID": uni.getStorageSync("tenantId"),},success: (uploadRes) => {// 一个上传返回的字段,逗号拼接所有文件地址if (formData.value[item.prop]) {formData.value[item.prop] += "," + JSON.parse(uploadRes.data).data.url;} else {formData.value[item.prop] = JSON.parse(uploadRes.data).data.url;}formRef.value?.validateField(item.prop);uni.showToast({title: proxy.$t("AssetList.UploadSuccessfully"),icon: "success",});},fail: (err) => {uni.showToast({title: proxy.$t("AssetList.Uploadfailed"),icon: "none",});},});// 如果需要监听上传进度可以使用 uploadTask.onProgressUpdate// uploadTask.onProgressUpdate((res) => {//   console.log('上传进度', res.progress);//   console.log('已经上传的数据长度', res.totalBytesSent);//   console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend);// });
};
let deleteFile = (index, item) => {// 删除第index项if (formData.value[item.prop].split(",").length > 1) {formData.value[item.prop] = formData.value[item.prop].split(",");formData.value[item.prop].splice(index, 1);formData.value[item.prop] = formData.value[item.prop].join(",");} else {formData.value[item.prop] = "";}
};
// 动态上传图片
let formatPic = (UrlString) => {if (UrlString) {return UrlString.split(",").map((item) => {return {url:config.baseUrl +item.split("/").slice(0, item.split("/").length - 1).join("/"),extname: item.split(".").pop(),name: item.split("/").pop(),};});} else {return [];}
};
let uploadFilePic = (e, item) => {const file = e;if (file.tempFilePaths.length === 0) {uni.showToast({title: proxy.$t("AssetList.Nofileselected"),icon: "none",});return;}z;const uploadTask = uni.uploadFile({url: config.baseUrl + "/admin/sys-file/upload",filePath: file.tempFilePaths[0],name: "file", // 这里根据后端API的字段来定义header: {Authorization: "Bearer " + getToken(),"TENANT-ID": uni.getStorageSync("tenantId"),},success: (uploadRes) => {console.log(formData.value[item.prop], 521);// 一个上传返回的字段,逗号拼接所有文件地址if (formData.value[item.prop]) {formData.value[item.prop] += "," + JSON.parse(uploadRes.data).data.url;} else {formData.value[item.prop] = JSON.parse(uploadRes.data).data.url;}formRef.value?.validateField(item.prop);uni.showToast({title: proxy.$t("AssetList.UploadSuccessfully"),icon: "success",});},fail: (err) => {uni.showToast({title: proxy.$t("AssetList.Uploadfailed"),icon: "none",});},});// 如果需要监听上传进度可以使用 uploadTask.onProgressUpdate// uploadTask.onProgressUpdate((res) => {//   console.log('上传进度', res.progress);//   console.log('已经上传的数据长度', res.totalBytesSent);//   console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend);// });
};
let deleteFilePic = (index, item) => {// 删除第index项console.log(formData.value[item.prop], 542);if (formData.value[item.prop].split(",").length > 1) {formData.value[item.prop] = formData.value[item.prop].split(",");formData.value[item.prop].splice(index, 1);formData.value[item.prop] = formData.value[item.prop].join(",");} else {formData.value[item.prop] = "";}
};
</script><style lang="scss" scoped>
.assetEdit_container {height: 100vh;width: 100vw;background-color: #f2f2fa;display: flex;flex-direction: column;.type-box {flex: 1;width: 100vw;overflow: auto;padding: 24rpx;.title {font-weight: bold;font-size: 28rpx;color: #0a1629;line-height: 42rpx;}.content-box {background: #ffffff;padding: 10rpx 24rpx;box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);border-radius: 20rpx;margin: 38rpx 0;}}.btns {height: 146rpx;width: 100%;display: flex;background-color: #ffffff;justify-content: space-around;align-items: center;.btn {width: 300rpx;height: 70rpx;}}
}
</style>

相关文章:

uniapp动态表单

使用了uniapp自带扩展组件和uv-ui组件库自行安装下载 <template><view class"assetEdit_container"><view class"type-box"><uv-formlabelPosition"left"labelWidth"140rpx":model"formData"ref"…...

基于智能语音交互的智能呼叫中心工作机制

在智能化和信息化不断进步的现代&#xff0c;智能呼叫中心为客户提供高质量、高效率的服务体验&#xff0c;提升众多品牌用户的满意度和忠诚度。作为实现智能呼叫中心的关键技术之一的智能语音交互技术&#xff0c;它通过集成自然语言处理&#xff08;NLP&#xff09;、语音识别…...

flask的第一个应用

本文编写一个简单的实例来记录下flask的使用 文章目录 简单实例flask中的路由无参形式有参形式 参数类型不同的http方法本文小结 简单实例 flask的依赖包都安装好之后&#xff0c;我们就可以写一个最简单的web应用程序了&#xff0c;我们把这个应用程序命名为first.py: from fl…...

macOS开发环境配置与应用开发

macOS开发环境配置与应用开发 在数字化时代&#xff0c;软件开发已成为推动各行各业创新的重要引擎。macOS&#xff0c;作为苹果公司推出的操作系统&#xff0c;以其强大的性能、优雅的用户界面和丰富的开发工具&#xff0c;吸引了无数开发者的目光。本文将深入探讨macOS开发环…...

【SpringBoot】整合篇

1、log4j2 第一步&#xff0c;导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions><!-- 去掉springboot默认配置 --> <exclusion> <…...

Vue实战技巧:如何展示附件(PDF、MP4、Excel、Zip等)并修改名称下载

大家好&#xff0c;今天给大家分享一篇关于在Vue项目中展示附件&#xff08;PDF、MP4、Excel、Zip等&#xff09;并修改名称下载的教程。在实际开发过程中&#xff0c;这个功能非常实用&#xff0c;下面我们就一起来学习一下。 一、准备工作 首先&#xff0c;确保你的项目中已经…...

多线程运行时,JVM(Java虚拟机)的内存模型

在多线程运行时&#xff0c;JVM&#xff08;Java虚拟机&#xff09;的内存模型主要涉及以下几个方面&#xff1a; 1. 主内存和工作内存 JVM内存模型定义了主内存和工作内存的概念。主内存是所有线程共享的内存区域&#xff0c;而工作内存是每个线程私有的内存区域。线程对变量…...

VS与SQL Sever(C语言操作数据库)

作者这里使用的是程序是&#xff1a; Visual Studio SQL Sever (1 对VS的操作 1.首先我们打开Visual Studio Installer&#xff0c;并以管理员身份运行 2.点击修改 3.先选择数据存储和处理&#xff0c;再在右方添加处理工具&#…...

一次奇妙的getshell之旅

1. 资产收集时发现一个网站&#xff1a; https://xxxxxxxxxx/ischool/publish_page/0/ 发现存在管理员登陆: 这里之前在该旁站找到一个SQL注入&#xff0c;然后找到的这个账户密码&#xff08;这里如何从SQL注入找到账户密码前借鉴前面的报告。&#xff09;&#xff1a; 账号&…...

C# 集合(Collection)

文章目录 前言一、动态数组&#xff08;ArrayList&#xff09;二、哈希表&#xff08;Hashtable&#xff09;三、排序列表&#xff08;SortedList&#xff09;四、堆栈&#xff08;Stack&#xff09;五、队列&#xff08;Queue&#xff09;六、点阵列&#xff08;BitArray&…...

深度学习模型:门控循环单元(GRU)详解

本文深入探讨了门控循环单元&#xff08;GRU&#xff09;&#xff0c;它是一种简化版的长短期记忆网络&#xff08;LSTM&#xff09;&#xff0c;在处理序列数据方面表现出色。文章详细介绍了 GRU 的基本原理、与 LSTM 的对比、在不同领域的应用以及相关的代码实现&#xff0c;…...

深入浅出:开发者如何快速上手Web3生态系统

Web3作为互联网的未来发展方向&#xff0c;正在逐步改变传统互联网架构&#xff0c;推动去中心化技术的发展。对于开发者而言&#xff0c;Web3代表着一个充满机遇与挑战的新领域&#xff0c;学习和掌握Web3的基本技术和工具&#xff0c;将为未来的项目开发提供强大的支持。那么…...

HCIA笔记6--路由基础与静态路由:浮动路由、缺省路由、迭代查找

文章目录 0. 概念1.路由器工作原理2. 跨网访问流程3. 静态路由配置4. 静态路由的应用场景4.1 路由备份4.2 浮动路由4.3 缺省路由 5. 迭代路由6 问题6.1 为什么路由表中有的下一跳的地址有接口&#xff1f;6.2 个人电脑的网关本质是什么&#xff1f; 0. 概念 自治系统&#xff…...

【北京迅为】iTOP-4412全能版使用手册-第三十二章 网络通信-TCP套字节

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...

图片预处理技术介绍4——降噪

图片预处理 大家好&#xff0c;我是阿赵。   这一篇将两种基础的降噪算法。   之前介绍过均值模糊和高斯模糊。如果从降噪的角度来说&#xff0c;模糊算法也算是降噪的一类&#xff0c;所以之前介绍的两种模糊可以称呼为均值降噪和高斯降噪。不过模糊算法对原来的图像特征的…...

Java基础面试题12:Java中的两种异常类型是什么?它们有什么区别?

在 Java 中&#xff0c;异常是非常重要的一部分。理解异常的种类和它们的区别&#xff0c;是每个 Java 开发者都需要掌握的基础技能。 Java 中的异常分类 Java 中异常的根本来源是 Throwable 类&#xff0c;它包含了两大类&#xff1a;错误&#xff08;Error&#xff09;和异常…...

MySQL5.6升级MySQL5.7

升级方式介绍 08 数据库服务版本升级方法 5.6 – 5.7 – 8.0 数据库版本升级方法&#xff1a; Inplace-本地升级 步骤一&#xff1a;在同一台服务器中&#xff0c;需要部署高版本数据库服务实例步骤二&#xff1a;低版本数据库中的数据进行备份迁移&#xff0c;迁移到高版本…...

Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型)

Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型&#xff09; 目录 Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型&#xff09; 1. 项目说明 2. 数据说明 &#xff08;1&#xff09;心跳信号分类预测数据集 3. 模型训练 &#xff08;1&#xff09;项目安装 &…...

走进科学json版:在 JSON 格式中,字符串值必须使用双引号 “ 来界定,而不能使用单引号 ‘

走进科学疑难问题出现 在调试fastapi程序的时候&#xff0c;报错碰到422错误 INFO: 192.168.0.99:46536 - "POST /v1/chat/completions/ HTTP/1.1" 422 Unprocessable Entity 干净利索&#xff0c;只有这一句报错&#xff0c;不管代码里加入多少print语句查看…...

【C#】书籍信息的添加、修改、查询、删除

文章目录 一、简介二、程序功能2.1 Book类属性&#xff1a;方法&#xff1a; 2.2 Program 类 三、方法&#xff1a;四、用户界面流程&#xff1a;五、程序代码六、运行效果 一、简介 简单的C#控制台应用程序&#xff0c;用于管理书籍信息。这个程序将允许用户添加、编辑、查看…...

博泽Brose EDI项目案例

Brose 是一家德国的全球性汽车零部件供应商&#xff0c;主要为全球汽车制造商提供机电一体化系统和组件&#xff0c;涵盖车门、座椅调节系统、空调系统以及电动驱动装置等。Brose 以其高质量的创新产品闻名&#xff0c;在全球拥有多个研发和生产基地&#xff0c;是全球第五大家…...

Macos用brew安装Nodejs亲手教程

首先确保brew已安装&#xff0c;搜索node资源&#xff0c;命令如下&#xff1a; brew search nodejs 演示结果如下&#xff1a; 安装nodejs brew install node22 或 brew install node 出现如下界面 表示正在安装&#xff0c;安装成功后&#xff0c;提示如下信息&#xff1…...

开发一套ERP 第十弹 图片作为配置文件,本地读取图片,定时更新图片类型

echo Hello World在同一数据库中在建一个图床数据表,产品一,一对应,图片命名 最优的方案&#xff0c;使用 rust 在构建一个 http server 用于管理非数据库资源,也可以将来对接不同的图床&#xff0c;部署方便 考虑到数据库资源和图片资源,都可以被远程访问这种方法最佳...

终端环境下关闭显示器

终端环境下关闭显示器 使用vbetool vbetool 使用 lrmi 来运行视频 BIOS 中的代码。目前&#xff0c;它能够更改 DPMS 状态、保存/恢复视频卡状态并尝试从头开始初始化视频卡。 vbetool dpms off...

基于PySpark 使用线性回归、随机森林以及模型融合实现天气预测

基于PySpark 实现天气预测与模型集成 在大数据分析与机器学习领域&#xff0c;Spark 提供了强大的计算能力和灵活的扩展性。本文将介绍如何利用 PySpark 完成以下任务&#xff1a; 1、数据预处理&#xff1a;清洗和编码天气数据。 2、特征工程&#xff1a;合并数值和分类特征…...

Android Studio 右侧工具栏 Gradle 不显示 Task 列表

问题&#xff1a; android studio 4.2.1版本更新以后AS右侧工具栏Gradle Task列表不显示&#xff0c;这里需要手动去设置 解决办法&#xff1a; android studio 2024.2.1 Patch 2版本以前的版本设置&#xff1a;依次打开 File -> Settings -> Experimental 选项&#x…...

Linux详解:文件权限

文章目录 前言Linux文件权限基础文件成员与三组权限字符 权限的修改修改文件所有者总结 前言 在浩瀚的操作系统世界中&#xff0c;Linux以其开源、灵活和强大的特性&#xff0c;成为了服务器、开发环境以及众多个人用户的首选。而在Linux的众多特性中&#xff0c;文件权限机制…...

Linux条件变量线程池详解

一、条件变量 【互斥量】解决了线程间同步的问题&#xff0c;避免了多线程对同一块临界资源访问产生的冲突&#xff0c;但同一时刻对临界资源的访问&#xff0c;不论是生产者还是消费者&#xff0c;都需要竞争互斥锁&#xff0c;由此也带来了竞争的问题。即生产者和消费者、消费…...

CLIP模型也能处理点云信息

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

编译MT7620 OpenWrt的所有机型的固件

前置条件&#xff1a;准备VMware16Ubuntu16.04的编译环境 安装编译需要的插件 sudo apt-get install gcc g binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils libncurses5-dev ncurses-term zlib1g-dev gawk asciidoc libz-dev git-core uuid…...

C_字符串的一些函数

1.字符串输入函数 scanf("%s",数组名)&#xff1b; gets(数组名)&#xff1b; 区别&#xff1a; scanf(“%s”,数组名); 把空格识别为输入结束 #include <stdio.h>int main() {char a[10];printf("输入&#xff1a;");scanf("%s",a)…...

pytest自定义命令行参数

实际使用场景&#xff1a;pytest运行用例的时候&#xff0c;启动mitmdump进程试试抓包&#xff0c;pytest命令行启动的时候&#xff0c;传入mitmdump需要的参数&#xff08;1&#xff09;抓包生成的文件地址 &#xff08;2&#xff09;mitm的proxy设置 # 在pytest的固定文件中…...

【OpenAI库】从0到1深入理解Python调用OpenAI库的完整教程:从入门到实际运用

文章目录 Moss前沿AI一、初识OpenAI API1.1 获取API-Key&#xff08;两种方案&#xff09;1.2 安装OpenAI库 二、Python调用OpenAI API的基础设置2.1 设置API密钥和Base URL2.2 参数详解 三、构建一个简单的聊天应用3.1 创建聊天请求3.2 参数详解3.3 处理响应 四、完整代码示例…...

设计模式---建造者模式

建造者模式 一种创建型设计模式&#xff0c;它允许你一步一步地构建复杂对象。通过使用建造者模式&#xff0c;你可以将对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。说白点就是&#xff0c;解决了构造函数创建对象的问题。 适用于那种构造函…...

安装MySQL 5.7 亲测有效

前言&#xff1a;本文是笔者在安装MySQL5.7时根据另一位博主大大的安装教程基础上做了一些修改而成 首先在这里表示对博主大大的感谢 下面附博主大大地址 下面的步骤言简意赅 跟着做就不会出错 希望各位读者耐下心来 慢慢解决安装中出现的问题~MySQL 5.7 安装教程&#xff08;全…...

delphi 12 idhttpsever(S)+idhttp(C) 实现简单的JSON API服务

这篇博客展示了如何使用Delphi创建一个简单的HTTP服务器&#xff0c;并处理GET和POST请求。服务器监听6600端口&#xff0c;响应JSON格式的数据。客户端通过IdHttp组件进行GET和POST请求&#xff0c;获取并显示服务器响应的内容。 http服务器测试代码 procedure TForm1.FormSh…...

SVM支持向量机分类——基于Python实现

SVM支持向量机分类 1.描述统计 from numpy import * from scipy import * from pandas import * import matplotlib.pyplot as pltimport seaborn as sns glassread_csv(../data/第5章数据/Glass.csv,sep,) glass.head() glass[Type].value_counts()Type 2 76 1 70 7 …...

k8s使用的nfs作为sc。

k8s使用的nfs作为sc。 当前出现一个问题&#xff1a; 1.有一个pod他是通过流进行文件解压并写入到nfs服务器对应的目录中。 2.一个大压缩包下有20多个压缩包&#xff0c;递归解压。解压完成后应该是20多个文件夹&#xff0c;文件夹下有.json文件。 3.pod中的程序解压后去找以.j…...

tp6 合成两个pdf文件(附加pdf或者替换pdf)

最近在做项目有个需求&#xff0c;项目中需要根据设置的html合同模板自动生成PDF合同供客户下载签署&#xff0c;并根据回传的已签署合同尾页来替换原来未签署合同的尾页&#xff0c;合成新的已签署合同文本。 读取两个PDF文件并合成的 具体代码记录如下&#xff1a; use set…...

SpringBoot

SpringBoot简介 SpringBoot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化Spring应用的初始搭建以及开发过程 SpringBoot快速入门 新建maven工程&#xff0c;导入SpringBoot父工程以及依赖 <?xml version"1.0" encoding"UTF-8"?>…...

2024第六届金盾信安杯Web 详细题解

比赛一共4道Web题,比赛时只做出三道,那道文件上传没有做出来,所以这里是另外三道题的WP 分别是 fillllll_put hoverfly ssrf fillllll_put 涉及: 绕过exit() 死亡函数 php://filter 伪协议配合base64加解密 一句话木马 题目源码&#xff1a; $content参数在开头被…...

The selected directory is not a valid home for Go SDK

在idea里配置go语言的环境时&#xff0c;选择go语言的安装目录&#xff0c;一直提示这个 The selected directory is not a valid home for Go SDK后来查了一下&#xff0c;发现原来idea识别不出来 需要改一下配置文件&#xff0c;找到go环境的安装目录&#xff0c;我是默认安…...

《智能体雏形开发(高阶实操)》开发计划概述

智能体雏形开发计划 通过本计划,逐步完成一个可以真实运行的智能体雏形。 最终完成一个**“用户日志文件生成日报,日报再进一步汇总成周报”**的任务驱动型智能体雏形 第一阶段:基础准备与环境搭建 1. 学习基础知识 了解智能体的概念、类型和技术框架。学习大模型(如阿里…...

【查询基础】.NET开源 ORM 框架 SqlSugar 系列

&#x1f4a5; .NET开源 ORM 框架 SqlSugar 系列 &#x1f389;&#x1f389;&#x1f389; 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…...

【Linux】设计文件系统(C实现)

要求&#xff1a; (1)可以实现下列几条命令 dir 列文件目录 create 创建文件 delete 删除文件 read 读文件 write 写文件 (2)列目录时要列出文件名、存取权限&#xff08;八进制&#xff09;、文件长度、时间&#xff08;创建时间&#xff0c;修改时间以及…...

Redis+Caffeine 多级缓存数据一致性解决方案

RedisCaffeine 多级缓存数据一致性解决方案 背景 之前写过一篇文章RedisCaffeine 实现两级缓存实战&#xff0c;文章提到了两级缓存RedisCaffeine可以解决缓存雪等问题也可以提高接口的性能&#xff0c;但是可能会出现缓存一致性问题。如果数据频繁的变更&#xff0c;可能会导…...

SpringMVC(二)

Model 以Map方式进行存储&#xff0c;用于向作用域中存值。 注意&#xff1a;在Model中增加模型数据&#xff0c;若不指定key&#xff0c;则默认使用对象的类型作为key Controller //控制器类 public class IndexController {RequestMapping("/index3")public Strin…...

leetcode--螺旋矩阵

LCR 146.螺旋遍历二维数组 给定一个二维数组 array&#xff0c;请返回「螺旋遍历」该数组的结果。 螺旋遍历&#xff1a;从左上角开始&#xff0c;按照 向右、向下、向左、向上 的顺序 依次 提取元素&#xff0c;然后再进入内部一层重复相同的步骤&#xff0c;直到提取完所有元…...

动手学深度学习10.5. 多头注意力-笔记练习(PyTorch)

本节课程地址&#xff1a;多头注意力代码_哔哩哔哩_bilibili 本节教材地址&#xff1a;10.5. 多头注意力 — 动手学深度学习 2.0.0 documentation 本节开源代码&#xff1a;...>d2l-zh>pytorch>chapter_multilayer-perceptrons>multihead-attention.ipynb 多头注…...

Selenium3+Python如何操作键盘

selenium操作键盘&#xff0c;需要导入Keys类&#xff1a;“from selenium.webdriver.common.keys import Keys” 调用键盘操作的快捷键的方法 &#xff1a; 单键值&#xff1a;直接传入对应的键值“element.send_keys”(快捷键的键值) 组合键&#xff1a;键值之间由逗号分隔…...