vue3 动态el-table表格 动态数据 新增修改删除的简单判断

整体页面预览
弹框预览

<template>
  <div class="app-container">
    <el-form
      :model="queryParams"
      ref="queryRef"
      :inline="true"
      v-show="showSearch"
      label-width="68px"
    >
      <el-form-item label="年份选择" prop="sampleCode">
        <el-date-picker
          v-model="queryParams.year"
          type="year"
          value-format="YYYY"
          placeholder="请选择年份"
          style="width: 100%"
        />
      </el-form-item>
      <el-form-item label="送检编号" prop="sampleCode">
        <el-input
          v-model="queryParams.sampleCode"
          placeholder="送检编号"
          clearable
          @keyup.enter="handleQuery"
        />
      </el-form-item>
      <!-- <el-form-item label="送检时间" prop="sampleTime">
        <el-input
          v-model="queryParams.sampleTime"
          placeholder="请输入送检时间"
          clearable
          @keyup.enter="handleQuery"
        />
      </el-form-item>
      <el-form-item label="送检人员" prop="sampleUser">
        <el-input
          v-model="queryParams.sampleUser"
          placeholder="请输入送检人员"
          clearable
          @keyup.enter="handleQuery"
        />
      </el-form-item> -->
      <el-form-item>
        <el-button type="primary" icon="Search" @click="handleQuery"
          >搜索</el-button
        >
        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
        <el-button
          type="primary"
          plain
          icon="Plus"
          @click="handleAdd"
          v-hasPermi="['business:business:add']"
          >新增</el-button
        >
      </el-form-item>
    </el-form>

    <el-table
      v-loading="loading"
      :data="spongeFacilitySampleList"
      height="45vh"
      @row-click="clickModal"
      highlight-current-row
    >
      <el-table-column type="index" label="序号" width="55" align="center" />
      <el-table-column label="检验编号" align="center" prop="sampleCode" />
      <el-table-column label="送检时间" align="center" prop="sampleTime" />
      <el-table-column label="送检人员" align="center" prop="sampleUser" />
      <el-table-column label="采样报告" align="center" prop="sysFileList">
        <template #default="scope">
          <el-link
            v-if="scope.row.sysFileList && scope.row.sysFileList.length"
            @click="openfile(scope.row.sysFileList[0].url)"
            type="primary"
            >{{ scope.row.sysFileList[0].name }}</el-link
          >
          <span v-else></span>
        </template>
      </el-table-column>
      <el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
      >
        <template #default="scope">
          <el-button
            link
            type="primary"
            icon="Edit"
            @click.stop="handleUpdate(scope.row)"
            v-hasPermi="['business:business:edit']"
            >录入</el-button
          >
          <el-button
            link
            type="primary"
            icon="Delete"
            @click.stop="handleDelete(scope.row)"
            v-hasPermi="['business:business:remove']"
            >删除</el-button
          >
        </template>
      </el-table-column>
    </el-table>

    <pagination
      v-show="total > 0"
      :total="total"
      v-model:page="queryParams.pageNum"
      v-model:limit="queryParams.pageSize"
      @pagination="getList"
    />

    <el-table v-loading="bottomloading" :data="bottomList" height="30vh">
      <el-table-column
        label="海绵设施"
        prop="spongeFacilityType"
        width="100"
        align="center"
      >
        <template #default="scope">
          <dict-tag
            :options="sponge_facility_type"
            :value="scope.row.spongeFacilityType"
          />
        </template>
      </el-table-column>
      <el-table-column
        :label="item.label"
        align="center"
        v-for="item in rain_type"
        :key="item"
      >
        <el-table-column label="第一次采样" align="center">
          <el-table-column label="点位1" align="center">
            <template #default="scope">
              {{ scope.row[item.value] && scope.row[item.value].ss1Point1 }}
            </template>
          </el-table-column>
          <el-table-column label="点位2" align="center">
            <template #default="scope">
              {{ scope.row[item.value] && scope.row[item.value].ss1Point2 }}
            </template>
          </el-table-column>
        </el-table-column>
        <el-table-column label="第二次采样" align="center">
          <el-table-column label="点位1" align="center">
            <template #default="scope">
              {{ scope.row[item.value] && scope.row[item.value].ss2Point1 }}
            </template>
          </el-table-column>
          <el-table-column label="点位2" align="center">
            <template #default="scope">
              {{ scope.row[item.value] && scope.row[item.value].ss2Point2 }}
            </template>
          </el-table-column>
        </el-table-column>
        <el-table-column label="第三次采样" align="center">
          <el-table-column label="点位1" align="center">
            <template #default="scope">
              {{ scope.row[item.value] && scope.row[item.value].ss3Point1 }}
            </template>
          </el-table-column>
          <el-table-column label="点位2" align="center">
            <template #default="scope">
              {{ scope.row[item.value] && scope.row[item.value].ss3Point2 }}
            </template>
          </el-table-column>
        </el-table-column>
      </el-table-column>
    </el-table>

    <!-- 添加或修改人工化验采集--海绵设施人工采样对话框 -->
    <el-dialog
      :title="title"
      v-model="open"
      width="1200px"
      :close-on-click-modal="false"
      append-to-body
    >
      <div class="boxtitle" v-if="title != '新增海绵设施人工采样'">
        <div class="line"></div>
        基本信息
      </div>
      <el-form
        ref="businessRef"
        :model="form"
        :rules="rules"
        label-width="80px"
      >
        <el-form-item label="检验编号" prop="sampleCode">
          <el-input v-model="form.sampleCode" placeholder="请输入检验编号" />
        </el-form-item>
        <el-form-item label="送检时间" prop="sampleTime">
          <el-date-picker
            v-model="form.sampleTime"
            type="datetime"
            placeholder="送检时间"
            format="YYYY-MM-DD HH:mm:ss"
            value-format="YYYY-MM-DD HH:mm:ss"
          />
        </el-form-item>
        <el-form-item label="送检人员" prop="sampleUser">
          <el-input v-model="form.sampleUser" placeholder="请输入送检人员" />
        </el-form-item>
        <el-form-item label="采样报告" prop="sampleUser">
          <ImageFileUpload
            :limit="1"
            :fileType="['txt', 'doc', 'xls', 'docx', 'pdf']"
            v-model:saveFileArr="form.sysFileSaveRequestList"
            :listType="'text'"
            :refType="'proProjectCompany'"
          />
        </el-form-item>
        <div class="boxtitle" v-if="title != '新增海绵设施人工采样'">
          <div class="line"></div>
          填报内容
        </div>
        <el-table
          :data="filterTableData"
          style="width: 100%"
          v-if="title != '新增海绵设施人工采样'"
          max-height="320px"
        >
          <el-table-column
            label="海绵设施"
            prop="spongeFacilityType"
            align="center"
          >
            <template #default="scope">
              <el-badge is-dot class="item">
                <el-select
                  :disabled="!scope.row.isshow"
                  v-model="scope.row.spongeFacilityType"
                  placeholder="选择海绵设施"
                  filterable
                  clearable
                >
                  <el-option
                    v-for="dict in sponge_facility_type"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  ></el-option>
                </el-select>
              </el-badge>
            </template>
          </el-table-column>
          <el-table-column label="雨型" prop="rainType" align="center">
            <template #default="scope">
              <el-badge is-dot class="item">
                <el-select
                  :disabled="!scope.row.isshow"
                  v-model="scope.row.rainType"
                  placeholder="选择雨型"
                  clearable
                >
                  <el-option
                    v-for="dict in rain_type"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  ></el-option>
                </el-select>
              </el-badge>
            </template>
          </el-table-column>
          <el-table-column label="第一次采样" align="center">
            <el-table-column label="点位1" prop="ss1Point1" align="center">
              <template #default="scope">
                <el-input
                  :disabled="!scope.row.isshow"
                  placeholder="值"
                  min="0"
                  type="number"
                  v-model="scope.row.ss1Point1"
                ></el-input>
              </template>
            </el-table-column>
            <el-table-column label="点位2" prop="ss1Point2" align="center">
              <template #default="scope">
                <el-input
                  :disabled="!scope.row.isshow"
                  placeholder="值"
                  min="0"
                  type="number"
                  v-model="scope.row.ss1Point2"
                ></el-input>
              </template>
            </el-table-column>
          </el-table-column>

          <el-table-column label="第二次采样" align="center">
            <el-table-column label="点位1" prop="ss2Point1" align="center">
              <template #default="scope">
                <el-input
                  :disabled="!scope.row.isshow"
                  placeholder="值"
                  min="0"
                  type="number"
                  v-model="scope.row.ss2Point1"
                ></el-input>
              </template>
            </el-table-column>
            <el-table-column label="点位2" prop="ss2Point2" align="center">
              <template #default="scope">
                <el-input
                  :disabled="!scope.row.isshow"
                  placeholder="值"
                  min="0"
                  type="number"
                  v-model="scope.row.ss2Point2"
                ></el-input>
              </template>
            </el-table-column>
          </el-table-column>

          <el-table-column label="第三次采样" align="center">
            <el-table-column label="点位1" prop="ss3Point1" align="center">
              <template #default="scope">
                <el-input
                  :disabled="!scope.row.isshow"
                  placeholder="值"
                  min="0"
                  type="number"
                  v-model="scope.row.ss3Point1"
                ></el-input>
              </template>
            </el-table-column>
            <el-table-column label="点位2" prop="ss3Point2" align="center">
              <template #default="scope">
                <el-input
                  :disabled="!scope.row.isshow"
                  placeholder="值"
                  min="0"
                  type="number"
                  v-model="scope.row.ss3Point2"
                ></el-input>
              </template>
            </el-table-column>
          </el-table-column>
          <el-table-column align="center" width="150px">
            <template #header>
              <el-button @click="addCofig" type="primary" size="small">
                新增
              </el-button>
            </template>
            <template #default="scope">
              <el-button
                v-if="!scope.row.isshow"
                size="small"
                type="primary"
                @click="change(scope.row)"
                >修改</el-button
              >
              <el-button
                v-if="scope.row.isshow"
                size="small"
                type="primary"
                @click="saverow(scope.row)"
                >保存</el-button
              >
              <el-button
                size="small"
                type="danger"
                @click="deleterow(scope.$index, scope.row)"
                >删除</el-button
              >
            </template>
          </el-table-column>
        </el-table>
      </el-form>
      <template #footer>
        <div class="dialog-footer">
          <el-button type="primary" @click="submitForm">确 定</el-button>
          <el-button @click="cancel">取 消</el-button>
        </div>
      </template>
    </el-dialog>

    <!-- 人工化验采集--海绵设施人工采样详情 -->
    <el-dialog
      title="海绵设施人工采样详情"
      v-model="detailOpen"
      width="800px"
      append-to-body
      class="dialog-detail-box"
    >
      <div class="dialog-form-detail flex flex-r flex-wrap">
        <div class="flex flex-r">
          <div class="detail-label flex flex-align-center">检验编号</div>
          <div class="detail-value flex flex-align-center">
            {{ dialogFormDetail.sampleCode }}
          </div>
        </div>
        <div class="flex flex-r">
          <div class="detail-label flex flex-align-center">送检时间</div>
          <div class="detail-value flex flex-align-center">
            {{ dialogFormDetail.sampleTime }}
          </div>
        </div>
        <div class="flex flex-r">
          <div class="detail-label flex flex-align-center">送检人员</div>
          <div class="detail-value flex flex-align-center">
            {{ dialogFormDetail.sampleUser }}
          </div>
        </div>
        <div class="flex flex-r">
          <div class="detail-label flex flex-align-center">备注</div>
          <div class="detail-value flex flex-align-center">
            {{ dialogFormDetail.remark }}
          </div>
        </div>
        <div class="flex flex-r">
          <div class="detail-label flex flex-align-center">状态</div>
          <div class="detail-value flex flex-align-center">
            {{ dialogFormDetail.status }}
          </div>
        </div>
      </div>
      <template #footer>
        <div class="dialog-footer">
          <el-button @click="cancel">关 闭</el-button>
        </div>
      </template>
    </el-dialog>
  </div>
</template>

<script setup name="Business">
const { proxy } = getCurrentInstance()
import {
  pagespongeFacilitySample,
  getspongeFacilitySample,
  delspongeFacilitySample,
  addspongeFacilitySample,
  updatespongeFacilitySample,
  addspongeFacilitySampleDetail,
  editspongeFacilitySampleDetail,
  deletespongeFacilitySampleDetail,
  seachpongeFacilitySampleDetail,
} from '@/api/scada/spongeFacilitySample'

const { sponge_facility_type, rain_type } = proxy.useDict(
  'sponge_facility_type',
  'rain_type'
)
const filterTableData = ref([
  {
    createBy: '',
    createTime: '',
    delFlag: '',
    id: '',
    rainType: '',
    remark: '',
    sampleCode: '',
    spongeFacilityType: '',
    ss1Point1: 0,
    ss1Point2: 0,
    ss2Point1: 0,
    ss2Point2: 0,
    ss3Point1: 0,
    ss3Point2: 0,
    status: '',
    updateBy: '',
    updateTime: '',
    isshow: true,
  },
])

const Getdetialid = ref(null)
const spongeFacilitySampleList = ref([])
const open = ref(false)
const loading = ref(false)
const bottomloading = ref(false)

const showSearch = ref(true)
const ids = ref([])
const single = ref(true)
const multiple = ref(true)
const total = ref(0)
const title = ref('')
const detailOpen = ref(false)
const bottomList = ref([])

const data = reactive({
  form: {},
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    sampleCode: null,
    sampleTime: null,
    sampleUser: null,
    status: null,
    sysFileSaveRequestList: [],
  },
  rules: {
    sampleCode: [
      { required: true, message: '检验编号不能为空', trigger: 'blur' },
    ],
    sampleTime: [
      { required: true, message: '送检时间不能为空', trigger: 'blur' },
    ],
    sampleUser: [
      { required: true, message: '送检人员不能为空', trigger: 'blur' },
    ],
  },
  dialogFormDetail: {}, //详情弹框数据
})

const getisshow = ref(false)
const { queryParams, form, rules, dialogFormDetail } = toRefs(data)

//批量添加
function addCofig() {
  chaxunisshow()
  if (getisshow.value) {
    proxy.$modal.msgWarning('请先保存上一条数据!')
  } else {
    filterTableData.value.push({
      createBy: '',
      createTime: '',
      delFlag: '',
      id: '',
      rainType: '',
      remark: '',
      sampleCode: '',
      spongeFacilityType: '',
      ss1Point1: 0,
      ss1Point2: 0,
      ss2Point1: 0,
      ss2Point2: 0,
      ss3Point1: 0,
      ss3Point2: 0,
      status: '',
      updateBy: '',
      updateTime: '',
      isshow: true,
    })
  }
}

//表格点击
function clickModal(row) {
  console.log('rowrowrowrow', row)
  bottomloading.value = true

  getspongeFacilitySample(row.id).then((response) => {
    bottomList.value = response.data.spongeFacilitySampleGroupDetails
    bottomloading.value = false
    console.log('bottomList.value', bottomList.value)
  })
}

function openfile(file) {
  window.open(file)
}

/** 删除按钮操作 */
function deleterow(index, row) {
  console.log(row, index, 'row')
  proxy.$modal
    .confirm('是否确认删除?')
    .then(function () {
      if (row.id) {
        deletespongeFacilitySampleDetail(row.id).then((res) => {
          searchDetail()
        })
      } else {
        filterTableData.value.splice(index, 1)
      }
    })
    .then(() => {
      proxy.$modal.msgSuccess('删除成功')
    })
    .catch(() => {})
}

function saverow(row) {
  console.log(row, form.value)

  if (!row.spongeFacilityType) {
    proxy.$modal.msgWarning('请选择海绵设施')
    return
  }

  if (!row.rainType) {
    proxy.$modal.msgWarning('请选择雨型')
    return
  }

  if (row.id) {
    editspongeFacilitySampleDetail(row).then((res) => {
      if (res.code == 200) {
        proxy.$modal.msgSuccess('修改成功')
        searchDetail()
        getlist()
      } else {
        proxy.$modal.msgWarning(res.msg)
      }
    })
  } else {
    row.sampleCode = form.value.sampleCode
    addspongeFacilitySampleDetail(row).then((res) => {
      if (res.code == 200) {
        proxy.$modal.msgSuccess('新增成功')
        searchDetail()
        getlist()
      } else {
        proxy.$modal.msgWarning(res.msg)
      }
    })
  }
}

function chaxunisshow() {
  let a = filterTableData.value.findIndex((item) => {
    return item.isshow == true
  })

  getisshow.value = a == -1 ? false : true
}

function change(row) {
  chaxunisshow()
  if (getisshow.value) {
    proxy.$modal.msgWarning('请先保存上一条数据!')
  } else {
    row.isshow = true
  }
  console.log(row, form.value)
}

/** 查询人工化验采集--海绵设施人工采样列表 */
function getList() {
  loading.value = true
  pagespongeFacilitySample(queryParams.value).then((response) => {
    spongeFacilitySampleList.value = response.data
    total.value = response.total
    if (response.data[0]) {
      clickModal(response.data[0])
    }
    loading.value = false
  })
}

// 取消按钮
function cancel() {
  open.value = false
  reset()
}

// 表单重置
function reset() {
  Getdetialid.value = ''
  form.value = {
    sampleCode: null,
    sampleUser: null,
    sampleTime: null,
    sysFileSaveRequestList: [],
  }
  filterTableData.value = [
    {
      createBy: '',
      createTime: '',
      delFlag: '',
      id: '',
      rainType: '',
      remark: '',
      sampleCode: '',
      spongeFacilityType: '',
      ss1Point1: 0,
      ss1Point2: 0,
      ss2Point1: 0,
      ss2Point2: 0,
      ss3Point1: 0,
      ss3Point2: 0,
      status: '',
      updateBy: '',
      updateTime: '',
      isshow: true,
    },
  ]

  proxy.resetForm('businessRef')
}

/** 搜索按钮操作 */
function handleQuery() {
  queryParams.value.pageNum = 1
  getList()
}

/** 重置按钮操作 */
function resetQuery() {
  proxy.resetForm('queryRef')
  handleQuery()
}

// 多选框选中数据
function handleSelectionChange(selection) {
  ids.value = selection.map((item) => item.id)
  single.value = selection.length != 1
  multiple.value = !selection.length
}

/** 新增按钮操作 */
function handleAdd() {
  reset()
  open.value = true
  title.value = '新增海绵设施人工采样'
}

/** 修改按钮操作 */
function handleUpdate(row) {
  reset()
  Getdetialid.value = row.sampleCode
  const _id = row.id || ids.value
  getspongeFacilitySample(_id).then((response) => {
    response.data.sysFileSaveRequestList = response.data.sysFileList
    form.value = response.data
    open.value = true
    title.value = '录入海绵设施人工采样'
    searchDetail()
  })
}

function searchDetail() {
  seachpongeFacilitySampleDetail({ sampleCode: Getdetialid.value }).then(
    (res) => {
      console.log('seachpongeFacilitySampleDetail', res)
      if (res.data && res.data.lenght) {
        res.data.map((item) => {
          item.isshow = false
        })
      }
      filterTableData.value = res.data
    }
  )
}

/** 提交按钮 */
function submitForm() {
  chaxunisshow()
  if (getisshow.value && title.value != '新增海绵设施人工采样') {
    proxy.$modal.msgWarning('请先保存填报内容数据!')
    return
  }

  proxy.$refs['businessRef'].validate((valid) => {
    if (valid) {
      if (form.value.id != null) {
        updatespongeFacilitySample(form.value).then((response) => {
          proxy.$modal.msgSuccess('修改成功')
          open.value = false
          getList()
        })
      } else {
        addspongeFacilitySample(form.value).then((response) => {
          proxy.$modal.msgSuccess('新增成功')
          open.value = false
          getList()
        })
      }
    }
  })
}

/** 删除按钮操作 */
function handleDelete(row) {
  const _ids = row.id || ids.value
  proxy.$modal
    .confirm('是否确认删除检验编号为"' + row.sampleCode + '"的数据项?')
    .then(function () {
      return delspongeFacilitySample(_ids)
    })
    .then(() => {
      getList()
      proxy.$modal.msgSuccess('删除成功')
    })
    .catch(() => {})
}

/** 导出按钮操作 */
function handleExport() {
  proxy.download(
    'business/business/export',
    {
      ...queryParams.value,
    },
    `business_${new Date().getTime()}.xlsx`
  )
}
//查看详情操作
function handleDetail(row) {
  detailOpen.value = true
  dialogFormDetail.value = row
}
getList()
</script>
<style lang="scss" scoped>
.boxtitle {
  color: #000;
  font-size: 16px;
  display: flex;
  margin-bottom: 5px;
  .line {
    width: 3px;
    height: 24px;
    background: #33e3b8;
    margin-right: 5px;
  }
}

.item {
  margin-top: 5px;
}

.pagination-container {
  margin: 10px 0 !important;
  padding: 0px 16px !important;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DevExpress中文教程 - 如何在.NET MAUI应用中实现Material Design 3?

DevExpress .NET MAUI多平台应用UI组件库提供了用于Android和iOS移动开发的高性能UI组件&#xff0c;该组件库包括数据网格、图表、调度程序、数据编辑器、CollectionView和选项卡组件等。 获取DevExpress v24.1正式版下载 Material Design是一个由Google开发的跨平台指南系统…

iOS ------ Block的相关问题

Block的定义 Block可以截获局部变量的匿名函数&#xff0c; 是将函数及其执行上下文封装起来的对象。 Block的实现 通过Clang将以下的OC代码转化为C代码 // Clang xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m//main.m #import <Foundation/Foundation.…

60个常见的 Linux 指令

1.ssh 登录到计算机主机 ssh -p port usernamehostnameusername&#xff1a; 远程计算机上的用户账户名。 hostname&#xff1a; 远程计算机的 IP 地址或主机名。 -p 选项指定端口号。 2.ls 列出目录内容 ls ls -l # 显示详细列表 ls -a # 显示包括隐藏文件在内的所有内…

封装和桥接Unity 协程体系

简介 协程&#xff08;Coroutine&#xff09;在C#中是一种特殊的函数&#xff0c;它允许开发者编写可以暂停执行并在未来某个时刻恢复执行的代码块。协程通常用于实现异步操作&#xff0c;如延时执行、等待某个事件发生、或者分段执行复杂的任务。在Unity游戏引擎中&#xff0c…

Conda和Pip有什么区别?

conda和pip是Python中两种常用的包管理工具&#xff0c;它们在用途、包来源以及环境管理等方面存在区别。以下是具体分析&#xff1a; 用途 conda&#xff1a;conda是Anaconda发行版中的包管理工具&#xff0c;可以管理包括非Python软件包在内的各种包。它是一个全面的环境管理…

【数据结构】建堆算法复杂度分析及TOP-K问题

【数据结构】建堆算法复杂度分析及TOP-K问题 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;数据结构 文章目录 【数据结构】建堆算法复杂度分析及TOP-K问题前言一.复杂度分析1.1向下建堆复杂度1.2向上建堆复杂度1.3堆排序复杂度 二.TOP-K问…

Leetcode—769. 最多能完成排序的块【中等】

2024每日刷题&#xff08;149&#xff09; Leetcode—769. 最多能完成排序的块 实现代码 class Solution { public:int maxChunksToSorted(vector<int>& arr) {int ans 0;int mx INT_MIN;for(int i 0; i < arr.size(); i) {mx max(arr[i], mx);if(mx i) {a…

数据库安全:MySQL安全配置,MySQL安全基线检查加固

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需要知道MySQL的安全基线标准和加固方式。 MySQL基线检查 1、更新…

Cannot access org.springframework.context.ConfigurableApplicationContext

Cannot access org.springframework.context.ConfigurableApplicationContext SpringApplication.run曝红 解决方案&#xff1a; File -> Invalidate Cache and Restart 如果对你有用就点个赞&#xff01;

项目实战——外挂开发(30小时精通C++和外挂实战)

项目实战——外挂开发&#xff08;30小时精通C和外挂实战&#xff09; 外挂开发1-监控游戏外挂开发2-秒杀僵尸外挂开发3-阳光地址分析外挂开发4-模拟阳光外挂开发5-无限阳光 外挂开发1-监控游戏 外挂的本质 有两种方式 1&#xff0c;修改内存中的数据 2&#xff0c;更改内存中…

【Stable Diffusion】AI生成新玩法:图像风格迁移

【Stable Diffusion】 AI生成新玩法&#xff1a;图像风格迁移 1 背景导入 你是否曾梦想过让自己融入梵高的星空之中 或是将一幅风景画赋予毕加索的立体主义之魂 还是把人物送进宫崎骏的动画世界&#xff1f; 下面让我们来看看如何通过 Stable Diffusion 实现在图像中玩…

Java面试八股之什么是声明式事务管理,spring怎么实现声明式事务管理?

什么是声明式事务管理&#xff0c;spring怎么实现声明式事务管理&#xff1f; 声明式事务管理是一种编程范式&#xff0c;它允许开发人员通过声明性的配置或注解&#xff0c;而不是硬编码事务处理逻辑&#xff0c;来指定哪些方法或类应该在其上下文中执行事务。这种方法将事务…

【Gin】深度解析:在Gin框架中优化应用程序流程的责任链设计模式(上)

【Gin】深度解析&#xff1a;在Gin框架中优化应用程序流程的责任链设计模式(上) 大家好 我是寸铁&#x1f44a; 【Gin】深度解析&#xff1a;在Gin框架中优化应用程序流程的责任链设计模式(上)✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 本次文章分为上下两部分&#xf…

学习React(描述 UI)

React 是一个用于构建用户界面&#xff08;UI&#xff09;的 JavaScript 库&#xff0c;用户界面由按钮、文本和图像等小单元内容构建而成。React 帮助你把它们组合成可重用、可嵌套的 组件。从 web 端网站到移动端应用&#xff0c;屏幕上的所有内容都可以被分解成组件。在本章…

MongoDB教程(二十一):MongoDB大文件存储GridFS

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、GridFS…

Windows版MySQL5.7解压直用(如何卸载更换位置重新安装)

文章目录 停止mysql进程及服务迁移整个mysql文件夹删除data重启计算机重新安装 停止mysql进程及服务 net stop mysql mysqld -remove mysql迁移整个mysql文件夹 删除data 重启计算机 shutdown -r -t 0重新安装 https://blog.csdn.net/xzzteach/article/details/137723185

H3CNE(vlan的基础配置)

目录 9.1 传统以太网的问题 9.2 VLAN基础实现的原理 示例一&#xff08;vlan配置的基础实现&#xff09;&#xff1a; 示例二&#xff08;交换机间配置trunk&#xff09;&#xff1a; 9.3 hybrid接口类型与打标签的原理 示例三&#xff08;配置hybrid接口&#xff09;&#x…

【深度学习】LLaMA-Factory 大模型微调工具, 大模型GLM-4-9B Chat ,微调与部署 (2)

文章目录 数据准备chat评估模型导出模型部署总结 资料&#xff1a; https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md https://www.53ai.com/news/qianyanjishu/2015.html 代码拉取&#xff1a; git clone https://github.com/hiyouga/LLaMA-Factory.git cd …

STM32串口(串口基础)

串口整个东西可以说但凡你要碰单片机&#xff0c;想做点上点档次的东西的话那你就包用它的。32的串口配置并不难&#xff0c;哪怕是比起51其实也难不到哪去。 目录 一.通信基础 1.通信方式 2.通信速率 二.串口基础 1.串口的数据帧结构&#xff08;协议&#xff09; 2.ST…

【Godot4.2】GodotXML插件 - 解析和生成XML

概述 近期在研究Godot的XML和SVG解析&#xff0c;Godot提供了XMLParser类型&#xff0c;但本身只提供了低级的XML解析接口和功能&#xff0c;想要完成完整的XML文档解析和存储可能还需要在其基础上编写类或功能&#xff0c;就像我在昨天&#xff08;2024年7月20日&#xff09;…