功能说明并准备静态结构

news2025/2/21 2:21:56

功能说明并准备静态结构

<template>
  <div class="card-container">
    <!-- 搜索区域 -->
    <div class="search-container">
      <span class="search-label">车牌号码:</span>

      <el-input clearable placeholder="请输入内容" class="search-main" />
      <span class="search-label">车主姓名:</span>

      <el-input clearable placeholder="请输入内容" class="search-main" />
      <span class="search-label">状态:</span>

      <el-select>
        <el-option v-for="item in []" :key="item.id" />
      </el-select>

      <el-button type="primary" class="search-btn">查询</el-button>
    </div>

    <!-- 新增删除操作区域 -->
    <div class="create-container">
      <div>
        <el-button type="primary">添加月卡</el-button>

        <el-button>批量删除</el-button>
      </div>
      <div class="tip">
        <i class="el-icon-info"></i>
        <span>本园区共计 1486 个车位,月卡用户 0 人,车位占有率 0.00%</span>
      </div>
    </div>

    <!-- 表格区域 -->
    <div class="table">
      <el-table style="width: 100%" :data="[]">
        <el-table-column type="index" label="序号" />
        <el-table-column label="车主名称" />
        <el-table-column label="联系方式" />
        <el-table-column label="车牌号码" />
        <el-table-column label="车辆品牌" />
        <el-table-column label="剩余有效天数" />
        <el-table-column label="操作" fixed="right" width="180">
          <template #default="scope">
            <el-button size="mini" type="text">续费</el-button>

            <el-button size="mini" type="text">查看</el-button>

            <el-button size="mini" type="text">编辑</el-button>

            <el-button size="mini" type="text">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>

    <div class="page-container">
      <el-pagination layout="total, prev, pager, next" :total="0" />
    </div>

    <!-- 添加楼宇 -->
    <el-dialog title="添加楼宇" width="580px">
      <!-- 表单接口 -->
      <div class="form-container">
        <!-- <el-form ref="addForm" :model="addForm" :rules="addFormRules">
          <el-form-item label="楼宇名称" prop="name">
            <el-input v-model="addForm.name" />
          </el-form-item>

          <el-form-item label="楼宇层数" prop="floors">
            <el-input v-model="addForm.floors" />
          </el-form-item>

          <el-form-item label="在管面积" prop="area">
            <el-input v-model="addForm.area" />
          </el-form-item>

          <el-form-item label="物业费" prop="propertyFeePrice">
            <el-input v-model="addForm.propertyFeePrice" />
          </el-form-item>

        </el-form> -->
      </div>

      <template #footer>
        <el-button size="mini">取 消</el-button>

        <el-button size="mini" type="primary">确 定</el-button>
      </template>
    </el-dialog>
  </div>
</template>


<script>
export default {};
</script>


<style lang="scss" scoped>
.card-container {
  padding: 20px;
  background-color: #fff;
}

.search-container {
  display: flex;
  align-items: center;
  border-bottom: 1px solid rgb(237, 237, 237, 0.9);
  padding-bottom: 20px;
  .search-main {
    width: 220px;
    margin-right: 10px;
  }
  .search-btn {
    margin-left: 20px;
  }
}
.create-container {
  display: flex;
  justify-content: space-between;
  margin: 10px 0px;
  .tip {
    background: #e6f7ff;
    height: 39px;
    width: 427px;
    border: 1px solid #0094ff;
    border-radius: 3px;
    line-height: 39px;
    padding-left: 15px;
    i {
      color: #0094ff;
      margin-right: 10px;
    }
    span {
      font-size: 13px;
    }
  }
}
.page-container {
  padding: 4px 0px;
  text-align: right;
}
.form-container {
  padding: 0px 80px;
}
</style>

渲染基础Table列表

实现思路分析

代码实现

1- 接口封装

import request from '@/utils/request'

/**
 * 获取楼宇列表
 * @param { page, pageSize} params
 * @returns
 */
export function getCardListAPI(params) {
  return request({
    url: '/parking/card/list',
    params
  })
}

2- 代码实现

<script>
  import { getCardListAPI } from '@/apis/card'
  export default {
    data() {
      return {
        // 请求参数
        params: {
          page: 1,
          pageSize: 10
        },
        // 月卡列表
        cardList: []
      }
    },
    mounted() {
      this.getCardList()
    },
    methods: {
      async getCardList() {
        const res = await getCardListAPI(this.params)
        this.cardList = res.data.rows
      }
    }
  }
</script

<template>

  <el-table style="width: 100%" :data="cardList">
    <el-table-column type="index" label="序号" />
    <el-table-column label="车主名称" prop="personName" />
    <el-table-column label="联系方式" prop="phoneNumber" />
    <el-table-column label="车牌号码" prop="carNumber" />
    <el-table-column label="车辆品牌" prop="carBrand" />
    <el-table-column label="剩余有效天数" prop="totalEffectiveDate" />
    <el-table-column label="操作" fixed="right" width="180">
      <template #default="scope">
        <el-button size="mini" type="text">续费</el-button>

        <el-button size="mini" type="text">查看</el-button>

        <el-button size="mini" type="text">编辑</el-button>

        <el-button size="mini" type="text">删除</el-button>

      </template>

    </el-table-column>

  </el-table>

</template>

适配状态显示

<el-table-column label="状态" prop="cardStatus" :formatter="formatStatus" />

formatStatus(row) {
  const MAP = {
    0: '可用',
    1: '已过期'
  }
  return MAP[row.cardStatus]
}

分页功能实现

分出页数

分页公式:页数 = 总条数 / 每页条数

<el-pagination
  layout="total, prev, pager, next"
  :page-size="params.pageSize"
  :total="total"
/>


<script>
import { getCardListAPI } from '@/apis/card'
export default {
  data() {
    return {
      // 请求参数
      params: {
        page: 1,
        pageSize: 2
      },
      total: 0,
      // 月卡列表
      cardList: []
    }
  },
  mounted() {
    this.getCardList()
  },
  methods: {
    async getCardList() {
      const res = await getCardListAPI(this.params)
      this.cardList = res.data.rows
      this.total = res.data.total
    }
  }
}
</script>

实现点击切换

实现步骤:

  1. 拿到当前点击了第几页
  1. 使用当前点击的页数去和后端要数据
<el-pagination
  layout="total, prev, pager, next"
  :page-size="params.pageSize"
  :total="total"
  @current-change="pageChange"
/>


methods: {
  async getCardList() {
    const res = await getCardListAPI(this.params)
    this.cardList = res.data.rows
    this.total = res.data.total
  },
  pageChange(page) {
    // 把点击的页数赋值给请求参数页数
    this.params.page = page
    // 使用最新的请求参数获取列表数据
    this.getCardList()
  }
}

搜索功能实现

收集查询字段数据

<!-- 搜索区域 -->
<div class="search-container">
  <span class="search-label">车牌号码:</span>

  <el-input v-model="params.carNumber" clearable placeholder="请输入内容" class="search-main" />
  <span class="search-label">车主姓名:</span>

  <el-input v-model="params.personName" clearable placeholder="请输入内容" class="search-main" />
  <span class="search-label">状态:</span>

  <el-select v-model="params.cardStatus">
    <el-option
      v-for="item in cardStatusList"
      :key="item.id"
      :value="item.id"
      :label="item.name"
    />
  </el-select>

  <el-button type="primary" class="search-btn" @click="doSearch">查询</el-button>

</div

data() {
    return {
      // 请求参数
      params: {
        page: 1,
        pageSize: 5,
        carNumber: null,
        personName: null,
        cardStatus: null
      },
      // 月卡状态
      cardStatusList: [
        {
          id: null,
          name: '全部'
        },
        {
          id: 0,
          name: '可用'
        },
        {
          id: 1,
          name: '已过期'
        }
      ]
    }
  }

调用接口获取数据

doSearch() {
  // 调用接口之前把页数参数重置为1
  this.params.page = 1
  this.getCardList()
}

<el-button type="primary" class="search-btn" @click="doSearch">查询</el-button>

新增月卡实现

配置路由完成跳转

<template>
  <div class="add-card">
    <header class="add-header">
      <el-page-header content="增加月卡" @back="$router.back()" />
    </header>

    <main class="add-main">
      <div class="form-container">
        <div class="title">车辆信息</div>

        <div class="form">
          <el-form label-width="100px">
            <el-form-item label="车主姓名">
              <el-input />
            </el-form-item>

            <el-form-item label="联系方式">
              <el-input />
            </el-form-item>

            <el-form-item label="车辆号码">
              <el-input />
            </el-form-item>

            <el-form-item label="企业联系人">
              <el-input />
            </el-form-item>

          </el-form>

        </div>

      </div>

      <div class="form-container">
        <div class="title">最新一次月卡缴费信息</div>

        <div class="form">
          <el-form label-width="100px">
            <el-form-item label="有效日期">
              <el-input />
            </el-form-item>

            <el-form-item label="支付金额">
              <el-input />
            </el-form-item>

            <el-form-item label="支付方式">
              <el-select>
                <el-option
                  v-for="item in [{}]"
                  :key="item.industryCode"
                  :value="item.industryCode"
                  :label="item.industryName"
                />
              </el-select>

            </el-form-item>

          </el-form>

        </div>

      </div>

    </main>

    <footer class="add-footer">
      <div class="btn-container">
        <el-button>重置</el-button>

        <el-button type="primary">确定</el-button>

      </div>

    </footer>

  </div>

</template>

<script>
export default {

}
</script>

<style scoped lang="scss">
.add-card {
  background-color: #f4f6f8;
  height: 100vh;

  .add-header {
    display: flex;
    align-items: center;
    padding: 0 20px;
    height: 64px;
    background-color: #fff;

    .left {
      span {
        margin-right: 4px;
      }
      .arrow{
        cursor: pointer;
      }
    }

    .right {
      text-align: right;
    }
  }

  .add-main {
    background: #f4f6f8;
    padding: 20px 130px;

    .form-container {
      background-color: #fff;

      .title {
        height: 60px;
        line-height: 60px;
        padding-left: 20px;
      }

      .form {
        margin-bottom: 20px;
        padding: 20px 65px 24px;

        .el-form {
          display: flex;
          flex-wrap: wrap;

          .el-form-item {
            width: 50%;
          }
        }
      }
    }
    .preview{
      img{
        width: 100px;
      }
    }
  }

  .add-footer {
    position: fixed;
    bottom: 0;
    width: 100%;
    padding: 24px 50px;
    color: #000000d9;
    font-size: 14px;
    background: #fff;
    text-align: center;
  }
}
</style>
// 添加一级路由
{
  path: '/cardAdd',
  component: () => import('@/views/car/car-card/cardAdd'),
  hidden:true
}
<el-button type="primary" @click="$router.push('/cardAdd')">添加月卡</el-button>

车辆信息表单验证

其它项做非空校验,车辆号码既做非空校验,也做正则校验

<el-form :model="carInfoForm" :rules="carInfoRules" label-width="100px">
  <el-form-item label="车主姓名" prop="personName">
    <el-input v-model="carInfoForm.personName" />
  </el-form-item>

  <el-form-item label="联系方式" prop="phoneNumber">
    <el-input v-model="carInfoForm.phoneNumber" />
  </el-form-item>

  <el-form-item label="车辆号码" prop="carNumber">
    <el-input v-model="carInfoForm.carNumber" />
  </el-form-item>

  <el-form-item label="车辆品牌" prop="carBrand">
    <el-input v-model="carInfoForm.carBrand" />
  </el-form-item>

</el-form>

data() {
    return {
      // 车辆信息表单
      carInfoForm: {
        personName: '', // 车主姓名
        phoneNumber: '', // 联系方式
        carNumber: '', // 车牌号码
        carBrand: '' // 车辆品牌
      },
      carInfoRules: {
        personName: [
          {
            required: true, message: '请输入车主姓名', trigger: 'blur'
          }
        ],
        phoneNumber: [
          {
            required: true, message: '请输入联系方式', trigger: 'blur'
          }
        ],
        carNumber: [
          {
            required: true, message: '请输入车辆号码', trigger: 'blur'
          }
        ],
        carBrand: [
          {
            required: true, message: '请输入车辆品牌', trigger: 'blur'
          }
        ]
      }
    }
  }

车牌号单独校验

较复杂的校验可以通过设置一个校验函数来做,给校验选项添加一个validator选项,值为校验函数,在校验函数中编写校验规则

 data() {
    const validaeCarNumber = (rule, value, callback) => {
      const plateNumberRegex = /^[\u4E00-\u9FA5][\da-zA-Z]{6}$/
      if (plateNumberRegex.test(value)) {
        callback()
      } else {
        callback(new Error('请输入正确的车牌号'))
      }
    }
    return {
      carInfoRules: {
        carNumber: [
          {
            required: true, message: '请输入车辆号码', trigger: 'blur'
          },
          {
            validator: validaeCarNumber, trigger: 'blur'
          }
        ]
      }
    }
  }

缴费信息表单校验

<el-form :model="feeForm" :rules="feeFormRules" label-width="100px">
    <el-form-item label="有效日期" prop="payTime">
      <el-date-picker
        v-model="feeForm.payTime"
        type="daterange"
        range-separator="至"
        start-placeholder="开始日期"
        end-placeholder="结束日期"
      />
    </el-form-item>

    <el-form-item label="支付金额" prop="paymentAmount">
      <el-input v-model="feeForm.paymentAmount" />
    </el-form-item>

    <el-form-item label="支付方式" prop="paymentMethod">
      <el-select v-model="feeForm.paymentMethod">
        <el-option
          v-for="item in payMethodList"
          :key="item.id"
          :value="item.id"
          :label="item.name"
        />
      </el-select>

    </el-form-item>

  </el-form>


  data() {
    return {
      // 缴费信息表单
      feeForm: {
        payTime: '', // 支付时间
        paymentAmount: null, // 支付金额
        paymentMethod: '' // 支付方式
      },
      // 缴费规则
      feeFormRules: {
        payTime: [
          {
            required: true,
            message: '请选择支付时间'
          }
        ],
        paymentAmount: [
          {
            required: true,
            message: '请输入支付金额',
            trigger: 'blur'
          }
        ],
        paymentMethod: [
          {
            required: true,
            message: '请选择支付方式',
            trigger: 'change'
          }
        ]
      },
      // 支付方式列表
      payMethodList: [
        {
          id: 'Alipay',
          name: '支付宝'
        },
        {
          id: 'WeChat',
          name: '微信'
        },
        {
          id: 'Cash',
          name: '线下'
        }
      ]
    }
  }

统一校验俩个表单

校验方式:表单校验采用串行校验,也就是第一个表单校验通过之后再进行第二个校验

<el-form ref="carInfoForm"></el-form>

<el-form ref="feeForm"></el-form>


methods: {
  confirmAdd() {
    this.$refs.carInfoForm.validate(valid => {
      if (valid) {
        this.$refs.feeForm.validate(valid => {
          if (valid) {
            // 全部校验通过
            // TODO 确定
          }
        })
      }
    })
  }
}

收集表单确认提交


1-封装接口

/**
 * 新增月卡
 * @data
 * @returns
 */
export function createCardAPI(data) {
  return request({
    url: '/parking/card',
    method: 'POST',
    data
  })
}

2-处理表单数据提交

methods: {
  confirmAdd() {
    this.$refs.carInfoForm.validate(valid => {
      if (valid) {
        this.$refs.feeForm.validate(valid => {
          if (valid) {
            // 全部校验通过
            // TODO 确定
             // 参数处理
            const payload = {
              ...this.feeForm,
              ...this.carInfoForm,
              // 单独处理时间
              cardStartDate: this.feeForm.payTime[0],
              cardEndDate: this.feeForm.payTime[1]
            }
            // 删掉多余字段
            delete payload.payTime
            await createCardAPI(payload)
            this.$router.back()
          }
        })
      }
    })
  }
}

重置表单

重置表单主要做两件事

  1. 清空输入数据
  1. 清空校验错误
// 重置表单
resetForm() {
  this.$refs.feeForm.resetFields()
  this.$refs.carInfoForm.resetFields()
}

编辑月卡

编辑功能的通用实现流程

携带id跳转并缓存id

<el-button size="mini" type="text" @click="editCard(scope.row.id)">编辑</el-button>

  
editCard(id) {
  this.$router.push({
    path: '/cardAdd',
    query: {
      id
    }
  })
}

回填数据

1- 封装接口

/**
 * 获取月卡详情
 * @data
 * @returns
 */
export function getCardDetailAPI(id) {
  return request({
    url: `/parking/card/detail/${id}`
  })
}

2-根据id获取详情

// 获取详情
async getDetail() {
  const res = await getCardDetailAPI(this.id)
  // 回填车辆信息表单
  const { carInfoId, personName, phoneNumber, carNumber, carBrand } = res.data
  this.carInfoForm = {
    personName, phoneNumber, carNumber, carBrand, carInfoId
  }

  // 回填缴费信息表单
  const { rechargeId, cardStartDate, cardEndDate, paymentAmount, paymentMethod } = res.data
  this.feeForm = {
    rechargeId,
    paymentAmount,
    paymentMethod,
    payTime: [cardStartDate, cardEndDate]
  }
}

mounted() {
  if (this.id) {
    this.getDetail()
  }
}

根据id做接口适配

封装编辑接口


/**
 * 新增月卡
 * @data
 * @returns
 */
export function updateCardAPI(data) {
  return request({
    url: 'parking/card/edit',
    method: 'PUT',
    data
  })
}
methods: {
  confirmAdd() {
    this.$refs.carInfoForm.validate(valid => {
      if (valid) {
        this.$refs.feeForm.validate(async valid => {
          if (valid) {
            // 全部校验通过
            // TODO 确定
             // 参数处理
            const payload = {
              ...this.feeForm,
              ...this.carInfoForm,
              cardStartDate: this.feeForm.payTime[0],
              cardEndDate: this.feeForm.payTime[1]
            }
            delete payload.payTime
            if (this.id) {
              // 编辑
              await updateCardAPI(payload)
            } else {
              // 新增
              await createCardAPI(payload)
            }
            this.$router.back()
          }
        })
      }
    })
  }
}

删除功能实现

/**
 * 删除月卡
 * @param {*} id
 * @returns
 */
export function delCardAPI(id) {
  return request({
    url: `/parking/card/${id}`,
    method: 'DELETE'
  })
}

// 绑定事件
<el-button size="mini" type="text" @click="delCard(scope.row.id)">删除</el-button>

// 导入接口
import { delCardAPI } from '@/apis/card'

// 删除逻辑
delCard(id) {
  this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }).then(async() => {
    await delCardAPI(id)
    this.getCardList()
    this.$message({
      type: 'success',
      message: '删除成功!'
    })
  }).catch((error) => {
    console.log(error)
  })
}

批量删除

收集用户选择行

<el-table style="width: 100%" 
  :data="cardList" 
  @selection-change="handleSelectionChange">
    <el-table-column
      type="selection"
      width="55"
    />
    <!-- 省略 -->
</el-table>

data() {
  return {
    // 已选择列表
    selectedCarList: []
  }
}

methods:{
  handleSelectionChange(rowList) {
    console.log(rowList)
    this.selectedCarList = rowList
  }
}

处理数据调用接口

/**
 * 删除月卡
 * @param {*} id
 * @returns
 */
export function delCardListAPI(idList) {
  return request({
    url: `/parking/card/${idList.join(',')}`,
    method: 'DELETE'
  })
}


delCartList() {
  this.$confirm('此操作将永久删除选择的月卡, 是否继续?', '提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }).then(async() => {
    // 处理id
    await delCardListAPI(this.selectedCarList.map(item => item.id))
    this.getCardList()
    this.$message({
      type: 'success',
      message: '删除成功!'
    })
  }).catch((error) => {
    console.log(error)
  })
}

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

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

相关文章

[免费]SpringBoot公益众筹爱心捐赠系统【论文+源码+SQL脚本】

大家好&#xff0c;我是老师&#xff0c;看到一个不错的SpringBoot公益众筹爱心捐赠系统&#xff0c;分享下哈。 项目介绍 公益捐助平台的发展背景可以追溯到几十年前&#xff0c;当时人们已经开始通过各种渠道进行公益捐助。随着互联网的普及&#xff0c;本文旨在探讨公益事业…

ML.Net二元分类

ML.Net二元分类 文章目录 ML.Net二元分类前言项目的创建机器学习模型的创建添加模型选择方案训练环境的选择训练数据的添加训练数据的选择训练数据的格式要预测列的选择模型评估模型的使用总结前言 ‌ML.NET‌是由Microsoft为.NET开发者平台创建的免费、开源、跨平台的机器学习…

visutal studio 2022使用qcustomplot基础教程

编译 下载&#xff0c;2.1.1版支持到Qt6.4 。 拷贝qcustomplot.h和qcustomplot.cpp到项目源目录&#xff08;Qt project&#xff09;。 在msvc中将它俩加入项目中。 使用Qt6.8&#xff0c;需要修改两处代码&#xff1a; L6779 # if QT_VERSION > QT_VERSION_CHECK(5, 2, …

本地搭建自己的专属客服之OneApi关联Ollama部署的大模型并创建令牌《下》

这里写目录标题 OneApi1、渠道设置2、令牌创建 配置文件修改修改配置文件docker-compose.yml修改config.json到此结束 上文讲了如何本地docker部署fastGtp&#xff0c;相信大家也都已经部署成功了&#xff01;&#xff01;&#xff01; 今天就说说怎么让他们连接在一起 创建你的…

【C】初阶数据结构4 -- 双向循环链表

之前学习的单链表相比于顺序表来说&#xff0c;就是其头插和头删的时间复杂度很低&#xff0c;仅为O(1) 且无需扩容&#xff1b;但是对于尾插和尾删来说&#xff0c;由于其需要从首节点开始遍历找到尾节点&#xff0c;所以其复杂度为O(n)。那么有没有一种结构是能使得头插和头删…

小爱音箱控制手机和电视听歌的尝试

最近买了小爱音箱pro&#xff0c;老婆让我扔了&#xff0c;吃灰多年的旧音箱。当然舍不得&#xff0c;比小爱还贵&#xff0c;刚好还有一台红米手机&#xff0c;能插音箱&#xff0c;为了让音箱更加灵活&#xff0c;买了个2元的蓝牙接收模块Type-c供电3.5接口。这就是本次尝试起…

Kotlin Lambda

Kotlin Lambda 在探索Kotlin Lambda之前&#xff0c;我们先回顾下Java中的Lambda表达式&#xff0c;Java 的 Lambda 表达式是 Java 8 引入的一项强大的功能&#xff0c;它使得函数式编程风格的代码更加简洁和易于理解。Lambda 表达式允许你以一种更简洁的方式表示实现接口&…

Java 设计模式之备忘录模式

文章目录 Java 设计模式之备忘录模式概述UML代码实现 Java 设计模式之备忘录模式 概述 备忘录(Memento)&#xff1a;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。方便对该对象恢复到原先保存的状态。 UML Originnato…

vue3搭建实战项目笔记二

vue3搭建实战项目笔记二 2.1.git管理项目2.2.隐藏tabBar栏2.2.1 方案一&#xff1a;在路由元信息中设置一个参数是否显示tabBar2.2.2 方案二&#xff1a;通过全局设置相对定位样式 2.3.项目里封装axios2.3.1 发送网络请求的两种做法2.3.2 封装axios并发送网络请求2.3.2.1 对axi…

【原创】解决vue-element-plus-admin无法实现下拉框动态控制表单功能,动态显隐输入框

前言 目前使用vue-element-plus-admin想要做一个系统定时任务功能&#xff0c;可以选择不同的定时任务类型&#xff0c;比如使用cron表达式、周期执行、指定时间执行等。每种类型对应不同的输入框&#xff0c;需要动态显隐输入框才行&#xff0c;但是这个vue-element-plus-adm…

大疆无人机需要的kml文件如何制作kml导出(大疆KML文件)

大疆无人机需要的轨迹kml文件&#xff0c;是一种专门的格式&#xff0c;这个kml里面只有轨迹点&#xff0c;其它的属性信息都不需要。 BigemapPro提供了专门的大疆格式输出&#xff0c; 软件这里下载 www.bigemap.com 安装后&#xff0c;kml导入如下图&#xff1a; 然后选择…

免费deepseek的API获取教程及将API接入word或WPS中

免费deepseek的API获取教程: 1 https://cloud.siliconflow.cn/中注册时填写邀请码&#xff1a;GAejkK6X即可获取2000 万 Tokens; 2 按照图中步骤进行操作 将API接入word或WPS中 1 打开一个word&#xff0c;文件-选项-自定义功能区-勾选开发工具-左侧的信任中心-信任中心设置…

(三)Axure制作转动的唱片

效果图 属性&#xff1a; 图标库&#xff1a;iconfont-阿里巴巴矢量图标库 方形图片转为圆角图片&#xff0c;裁剪&#xff0c;然后加圆角&#xff0c; 唱片和底图是两个图片&#xff0c;点击播放&#xff0c;唱片在旋转。 主要是播放按钮和停止按钮&#xff0c;两个动态面板…

ASP.NET Core SixLabors.ImageSharp 位图图像创建和下载

从 MVC 控制器内部创建位图图像并将其发送到浏览器&#xff1b;用 C# 编写并与 Linux 和 Windows 服务器兼容。 使用从 ASP.NET MVC 中的控制器下载任何文件类型File。 此示例创建一个位图 (jpeg) 并将其发送到浏览器。它需要 NuGet 包SixLabors.ImageSharp v1.0.4。 另请参…

机器学习所需要的数学知识【01】

总览 导数 行列式 偏导数 概理论 凸优化-梯度下降 kkt条件

【D2】神经网络初步学习

总结&#xff1a;学习了 PyTorch 中的基本概念和常用功能&#xff0c;张量&#xff08;Tensor&#xff09;的操作、自动微分&#xff08;Autograd&#xff09;、正向传播、反向传播。通过了解认识LeNet 模型&#xff0c;定义神经网络类&#xff0c;熟悉卷积神经网络的基本结构和…

变相提高大模型上下文长度-RAG文档压缩-3.优化map-reduce(reranker过滤+社区聚类)

我遇到的业务问题实际上是RAG需要处理很多同一对象的日常报告&#xff0c;不像常识类问题&#xff0c;它的相关Document更多而且更分散&#xff0c;日常报告代表数据库里有很多它的内容&#xff0c;而且对象可能只在段落中的几句话提及到。top-k数量受限于大模型长度&#xff0…

电解电容的参数指标

容量 这个值通常是室温25℃&#xff0c;在一定频率和幅度的交流信号下测得的容量。容量会随着温度、直流电压、交流电压值的变化而改变。 额定电压 施加在电容上的最大直流电压&#xff0c;通常要求降额使用。 例如额定电压是4V&#xff0c;降额到70%使用&#xff0c;最高施…

计时器任务实现(保存视频和图像)

下面是一个简单的计时器任务实现&#xff0c;可持续地每秒保存一幅图像&#xff0c;也可持续地每60秒保存一个视频&#xff0c;图像和视频均以当前时间命名&#xff1a; TimerTask类的实现如下&#xff1a; class TimerTask { public:TimerTask(const std::string& path):…

Django 美化使用ModelForm的输入框

在初次使用ModelForm时&#xff0c;我的html文件代码如下&#xff0c;主要内容是显示一个卡片式表单&#xff0c;通过循环遍历 form 对象动态生成表单字段 {% extends layout.html %}{% block content %} <div class"container"><div class"c1"&g…