自学内容网 自学内容网

vue3页面编写-导入导出excel、展开查询项等

数据保持

<router-view v-slot="{ Component, route }">
        <keep-alive>
                <component :is="Component" :key="route.name" v-if="route.meta.keepAlive" />
        </keep-alive>
        <component :is="Component" :key="route.name"  v-if="!route.meta.keepAlive"/>
</router-view>
{   // 
                path: "/main/rvCarBom",
                meta: {
                    keepAlive: true,
                    isBack: false
                },
                component: () => import('@/pages/rv/bom/rvCarBom.vue'),
            },

功能页面

<!--

-->

<template>
  <div class="rv_root_container">
    <div class="rv_container">
      <div>
        <el-form :inline="true" label-position="right" size="small">
          <el-row>
            <el-form-item label="装车基地">
              <el-select v-model="dddd.form.city" clearable placeholder="请选择" style="width:150px" @change="handleChangeFactory">
                <el-option
                  v-for="item in dddd.cityList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="车系">
              <el-select v-model="dddd.form.carModel" clearable placeholder="请选择" style="width:150px" @change="handleChangeFactory">
                <el-option
                  v-for="item in dddd.carModelList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="车型">
              <el-select v-model="dddd.form.carType" clearable placeholder="请选择" style="width:150px" @change="handleChangeFactory">
                <el-option
                  v-for="item in dddd.carTypeList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="配置">
              <el-select v-model="dddd.form.carConf" clearable placeholder="请选择" style="width:150px" @change="handleChangeFactory">
                <el-option
                  v-for="item in dddd.carConfList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="选装">
              <el-select v-model="dddd.form.carSel" clearable placeholder="请选择" style="width:150px" @change="handleChangeFactory">
                <el-option
                  v-for="item in dddd.carSelList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="国家">
              <el-select v-model="dddd.form.country" clearable placeholder="请选择" style="width:150px" @change="handleChangeFactory">
                <el-option
                  v-for="item in dddd.countryList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
          </el-row>
          <el-row v-if="dddd.isShow">
            <el-form-item label="总成料号">
              <el-input type="textarea" :rows="1" :clearable="true" v-model="dddd.form.assemblyMatNumber" style="width:150px"></el-input>
            </el-form-item>
            <el-form-item label="总成描述">
              <el-input type="textarea" :rows="1" :clearable="true" v-model="dddd.form.assemblyDes" style="width:150px"></el-input>
            </el-form-item>
            <el-form-item label="工厂">
              <el-select v-model="dddd.form.factory" clearable placeholder="请选择" style="width:150px" @change="handleChangeFactory">
                <el-option
                  v-for="item in dddd.factoryList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="线体名称">
              <el-select v-model="dddd.form.lineName" clearable placeholder="请选择" style="width:150px">
                <el-option
                  v-for="item in dddd.lineNameList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="代装厂">
              <el-input type="textarea" :rows="1" :clearable="true" v-model="dddd.form.buyLocation" style="width:150px"></el-input>
            </el-form-item>
            <el-form-item label="产能检查">
              <el-select v-model="dddd.form.capacityCheck" clearable placeholder="请选择" style="width:150px">
                <el-option
                  v-for="item in dddd.capacityCheckList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="产品大类">
              <el-select v-model="dddd.form.product" clearable placeholder="请选择" style="width:150px" @change="handleChangeProduct">
                <el-option
                  v-for="item in dddd.productList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="产品小类">
              <el-select v-model="dddd.form.productSub" clearable placeholder="请选择" style="width:150px">
                <el-option
                  v-for="item in dddd.productSubList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="计划员">
              <el-select v-model="dddd.form.planPerson" clearable placeholder="请选择" style="width:150px">
                <el-option
                  v-for="item in dddd.planPersonList"
                  :key="item"
                  :label="item"
                  :value="item">
                </el-option>
              </el-select>
            </el-form-item>
          </el-row>
          <el-row>
            <el-button type="primary" @click="clickSearch" :icon="IconReload">查询</el-button>
            <el-button @click="clickReset" :icon="IconRefresh">重置</el-button>
            <el-button type="primary" @click="clickExport" :icon="IconDownload">导出</el-button>
            <el-button type="primary" @click="clickEdit" :icon="IconPlus">新增</el-button>
            <el-button type="primary" @click="clickDelete" :icon="IconRowRemove">删除</el-button>
            <el-upload class="rv_upload" action="" :show-file-list="false" :on-change="handleOnChange">
              <el-button type="primary" :icon="IconUpload">导入</el-button>
            </el-upload>
            <el-button text @click="clickTemplate">模板下载</el-button>
            <el-button type="primary" @click="clickShow" :icon="dddd.isShow ? IconArrowUp : IconArrowDown">
              {{ dddd.isShow ? "收起" : "展开" }}
            </el-button>
            <a id="aExport" href="#" class="hide"></a>
          </el-row>
        </el-form>
      </div>
      <div class="rv_table">
        <el-table stripe border show-overflow-tooltip highlight-current-row size="small" 
        class-name="custom-table" header-cell-class-name="custom-header-cell-class-name" :row-class-name="tableRowClassName"
        :data="dddd.tableList" @selection-change="handleSelectionChange">
          <el-table-column type="selection" align="center" width="50" fixed="left"></el-table-column>
          <el-table-column align="center" width="100" label="操作" fixed="left">
            <template #default="scope">
              <el-button type="primary" size="small" @click="clickEdit1(scope.row)" :icon="IconEdit"></el-button>
              <el-button type="danger" size="small" @click="clickDelete1(scope.row)" :icon="IconRowRemove"></el-button>
            </template>
          </el-table-column>
          <el-table-column align="center" type="index" label="序号" width="50" fixed="left"></el-table-column>
          <el-table-column align="center" prop="city" label="装车基地" width="75" fixed="left"></el-table-column>
          <el-table-column align="center" prop="carModel" label="车系" width="75" fixed="left"></el-table-column>
          <el-table-column align="center" prop="carType" label="车型" width="75" fixed="left"></el-table-column>
          <el-table-column align="center" prop="carConf" label="配置" width="75" fixed="left"></el-table-column>
          <el-table-column align="center" prop="carSel" label="选装" width="75" fixed="left"></el-table-column>
          <el-table-column align="center" prop="country" label="国家" width="75" fixed="left"></el-table-column>
          <el-table-column align="center" prop="assemblyMatNumber" label="总成料号" width="150" fixed="left"></el-table-column>
          <el-table-column align="center" prop="assemblyDes" label="总成描述" width="220" fixed="left"></el-table-column>
          <el-table-column align="center" prop="num" label="用量" width="75"></el-table-column>
          <el-table-column align="center" prop="factory" label="工厂" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale" label="份额" width="75"></el-table-column>
          <el-table-column align="center" prop="speLineName" label="线体名称" width="150"></el-table-column>
          <el-table-column align="center" prop="buyLocation" label="代装厂" width="75"></el-table-column>
          <el-table-column align="center" prop="capacityCheck" label="产能检查" width="75"></el-table-column>
          <el-table-column align="center" prop="product" label="产品大类" width="75"></el-table-column>
          <el-table-column align="center" prop="productSub" label="产品小类" width="75"></el-table-column>
          <el-table-column align="center" prop="planPerson" label="计划员" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale1" label="1月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale2" label="2月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale3" label="3月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale4" label="4月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale5" label="5月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale6" label="6月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale7" label="7月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale8" label="8月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale9" label="9月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale10" label="10月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale11" label="11月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="carScale12" label="12月份额" width="75"></el-table-column>
          <el-table-column align="center" prop="lineName" label="特殊线体" width="150"></el-table-column>
          <el-table-column align="center" prop="createName" label="创建人" width="75"></el-table-column>
          <el-table-column align="center" prop="createTime" label="创建时间" width="150"></el-table-column>
          <el-table-column align="center" prop="updateName" label="修改人" width="75"></el-table-column>
          <el-table-column align="center" prop="updateTime" label="修改时间" width="150"></el-table-column>
        </el-table>
      </div>
      <div class="rv_center">
        <el-pagination small @size-change="handleSizeChange" @current-change="handleCurrentChange"
          :current-page="dddd.pageNum"
          :page-size="dddd.pageSize"
          :page-sizes="[10, 100, 500, 1000, 2000]"
          :total="dddd.total"
          layout="total, sizes, prev, pager, next, jumper">
        </el-pagination>
      </div>
    </div>
  </div>
</template>
<style>
.rv_root_container {
  flex: 1;
  display: flex;
  background-color: #f3f3f3;
  padding: 16px;
  overflow: hidden;
}
.rv_container {
  flex: 1;
  display: flex;
  flex-direction: column;
  background-color: white;
  border-radius: 5px;
  padding: 16px;
  overflow: hidden;
  position: relative;
}
.rv_center {
  display: flex;
  align-content: center;
  justify-content: center;
}
.rv_table {
  flex: 1;
  margin-top: 16px;
  margin-bottom: 16px;
  position: relative;
}
.rv_upload {
  line-height: 0.8;
  margin-left: 16px;
}
.custom-table .cell {
  padding: 0;
  justify-content: center;
}
.el-table .warning-row {
  color: tomato;
}
</style>
<script setup>
import { IconReload, IconRefresh, IconDownload, IconPlus, IconRowRemove, IconUpload, IconArrowUp, IconArrowDown,IconEdit } from "@tabler/icons-vue"
import { basePostReq, sendPostReq } from "@/service/baseReq.js"
import { ApiPaths } from "@/service/Request.js"
import { ElMessage, ElMessageBox } from "element-plus"
import { useRoute, useRouter } from "vue-router"
import { reactive, onActivated } from "vue"

const dddd = reactive({
  form: {},
  tableList: [],
  pageSize: 10,
  pageNum: 1,
  total: 0,
  selectBatch: [],
  isShow: false,
  factoryList: ['SZ55','X157','C157','HFF5'],
  lineNameList: [],
  capacityCheckList: ['是', '否'],
  productList: [],
  productSubList: [],
  planPersonList: [],
  cityList: [],
  carModelList: [],
  carTypeList: [],
  carConfList: [],
  carSelList: [],
  countryList: []
})

const route = useRoute()
const router = useRouter()

onActivated(() => {
  if (!route.meta.isBack) {
    clickReset()
    dddd.tableList = []
  }
  route.meta.isBack = false
})

function handleSizeChange(val) {
  dddd.pageSize = val
  getPage()
}
function handleCurrentChange(val) {
  dddd.pageNum = val
  getPage()
}
function handleSelectionChange(val) {
  dddd.selectBatch = val
}
function tableRowClassName(item) {
  if (item.row.capacityCheck != '是') {
    return 'warning-row'
  }
  return ''
}
function getParam() {
  var param = {}
  if (dddd.form.city) {
    param.city = dddd.form.city.replace(/[\r\n]/g, ";")
  }
  if (dddd.form.carModel) {
    param.carModel = dddd.form.carModel.replace(/[\r\n]/g, ";")
  }
  if (dddd.form.carType) {
    param.carType = dddd.form.carType.replace(/[\r\n]/g, ";")
  }
  if (dddd.form.carConf) {
    param.carConf = dddd.form.carConf.replace(/[\r\n]/g, ";")
  }
  if (dddd.form.carSel) {
    param.carSel = dddd.form.carSel.replace(/[\r\n]/g, ";")
  }
  if (dddd.form.country) {
    param.country = dddd.form.country.replace(/[\r\n]/g, ";")
  }
  if (dddd.form.assemblyMatNumber) {
    param.assemblyMatNumber = dddd.form.assemblyMatNumber.replace(/[\r\n]/g, ";")
  }
  if (dddd.form.assemblyDes) {
    param.assemblyDes = dddd.form.assemblyDes.replace(/[\r\n]/g, ";")
  }
  if (dddd.form.factory) {
    param.factory = dddd.form.factory
  }
  if (dddd.form.buyLocation) {
    param.buyLocation = dddd.form.buyLocation.replace(/[\r\n]/g, ";")
  }
  if (dddd.form.lineName) {
    param.lineName = dddd.form.lineName
  }
  if (dddd.form.capacityCheck) {
    param.capacityCheck = dddd.form.capacityCheck
  }
  if (dddd.form.product) {
    param.product = dddd.form.product
  }
  if (dddd.form.productSub) {
    param.productSub = dddd.form.productSub
  }
  if (dddd.form.planPerson) {
    param.planPerson = dddd.form.planPerson
  }
  return param
}
function clickSearch() {
  getPage()
}
function getPage() {
  var param = getParam()
  param.pageNum = dddd.pageNum
  param.pageSize = dddd.pageSize
  basePostReq(ApiPaths.rvNeedCarBomGetPage, param, (res) => {
    if (res) {
      dddd.tableList = res.data
      dddd.total = res.total
    }
  })
}
function clickReset() {
  dddd.form = {}
  dddd.pageNum = 1
  getInitMap()
  getCarTypeInitMap()
}
function clickExport() {
  var param = getParam()
  var config = {
    responseType: "blob",
  }
  const data = sendPostReq(ApiPaths.rvNeedCarBomExport, param, config, true, true, true, (res) => {
      if (res) {
        const blob = new Blob([res])
        let $a = document.getElementById("aExport")
        $a.download = "整车bom.xlsx"
        $a.href = URL.createObjectURL(blob)
        $a.click()
        URL.revokeObjectURL($a.href)
      }
    }
  )
}
function clickTemplate() {
  var config = {
    responseType: "blob",
  }
  sendPostReq(ApiPaths.rvNeedCarBomExportTemplate,null,config,true,true,true,(res) => {
      if (res) {
        const blob = new Blob([res])
        let $a = document.getElementById("aExport")
        $a.download = "整车bom模板.xlsx"
        $a.href = URL.createObjectURL(blob)
        $a.click()
        URL.revokeObjectURL($a.href)
      }
    }
  )
}
function handleOnChange(file) {
  if (file.status == "ready") {
    var curFile = file.raw
    const isExcel = [
      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
    ].includes(curFile.type)
    const isLt1M = curFile.size / 1024 / 1024 < 100
    if (!isExcel) {
      ElMessage.error("文件格式为.xlsx")
      return
    }
    if (!isLt1M) {
      ElMessage.error("文件要小于100M")
      return
    }
    
    var formData = new FormData()
    formData.append("file", file.raw)
    formData.append("param", JSON.stringify(getParam()))
    var config = {
      headers: {
        "Content-Type": "multipart/form-data",
      },
    }
    sendPostReq(ApiPaths.rvNeedCarBomImportFileCheck1,formData,config,true,true,false,(res) => {
        if (res && res.code == 200) {
          ElMessage.success("上传成功")
        }
      }
    )
  }
}
function clickDelete() {
  if (!dddd.selectBatch.length) {
    ElMessage.error("没有数据被选中")
    return
  }
  ElMessageBox.confirm("是否删除", "温馨提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  }).then(() => {
    var ids = dddd.selectBatch.map((p) => p.id)
    var param = {}
    param.ids = ids
    sendPostReq(ApiPaths.rvNeedCarBomRemoveListByIds,param,null,true,true,false,(res) => {
        if (res && res.code == 200) {
          ElMessage.success("删除成功")
          clickSearch()
        }
      }
    )
  })
}
function clickDelete1(item) {
  if (!item || !item.id) {
    ElMessage.error("没有id")
    return
  }
  ElMessageBox.confirm("是否删除", "温馨提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  }).then(() => {
    var param = {}
    param.ids = [item.id]
    sendPostReq(ApiPaths.rvNeedCarBomRemoveListByIds,param,null,true,true,false,(res) => {
        if (res && res.code == 200) {
          ElMessage.success("删除成功")
          clickSearch()
        }
      }
    )
  })
}
function clickEdit() {
  router.push({ path: "/main/rvCarBomEdit" })
}
function clickEdit1(item) {
  if (item && item.id) {
    item.edit = "update"
    router.push({ path: "/main/rvCarBomEdit",query:item })
  }
}
function clickShow() {
  dddd.isShow = !dddd.isShow
}
function getLineName() {
  var param = {}
  param.factory = dddd.form.factory
  basePostReq(ApiPaths.rvBomCarProductMatGetListLineName, param, (res) => {
    dddd.lineNameList = res
  })
}
function handleChangeFactory() {
  getLineName()
}
function getInitMap() {
  var param = {}
  basePostReq(ApiPaths.rvNeedCarBomGetInitMap, param, (res) => {
    if (res) {
      dddd.productList = res.productList
      dddd.productSubList = res.productSubList
      dddd.planPersonList = res.planPersonList
      dddd.lineNameList = res.lineNameList
      dddd.factoryList = res.factoryList
    }
  })
}
function getProductSub() {
  var param = {}
  if (dddd.form.product) {
    param.product = dddd.form.product
  }
  basePostReq(ApiPaths.rvBomCarProductMatGetListProductSub, param, (res) => {
    dddd.productSubList = res
  })
}
function handleChangeProduct() {
  getProductSub()
}
function getCarTypeInitMap() {
  var param = {}
  basePostReq(ApiPaths.rvNeedCarTypeManagerGetCarTypeInitMap, param, (res) => {
    if (res) {
      dddd.cityList = res.cityList
      dddd.carModelList = res.carModelList
      dddd.carTypeList = res.carTypeList
      dddd.carSelList = res.carSelList
      dddd.carConfList = res.carConfList
      dddd.countryList = res.countryList
    }
  })
}
</script>

编辑页面


<!--

-->

<template>
  <div class="rv_root_container_edit">
    <div class="rv_container_edit">
      <div>
        <el-form label-position="right" size="small">
          <el-form-item label="装车基地" required>
            <el-input :clearable="true" v-model="dddd.form.city" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="车系" required>
            <el-input :clearable="true" v-model="dddd.form.carModel" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="车型" required>
            <el-input :clearable="true" v-model="dddd.form.carType" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="配置" required>
            <el-input :clearable="true" v-model="dddd.form.carConf" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="选装" required>
            <el-input :clearable="true" v-model="dddd.form.carSel" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="国家" required>
            <el-input :clearable="true" v-model="dddd.form.country" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="总成料号" required>
            <el-input :clearable="true" v-model="dddd.form.assemblyMatNumber" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="总成描述" required>
            <el-input :clearable="true" v-model="dddd.form.assemblyDes" style="width:220px"></el-input>
          </el-form-item>
          <el-form-item label="用量" required>
            <el-input :clearable="true" v-model="dddd.form.num" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="工厂" required>
            <el-input :clearable="true" v-model="dddd.form.factory" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="份额" required>
            <el-input :clearable="true" v-model="dddd.form.carScale" style="width:150px"></el-input>
          </el-form-item>

          <el-form-item label="线体名称">
            <el-input :clearable="true" v-model="dddd.form.speLineName" style="width:150px" disabled></el-input>
          </el-form-item>
          <el-form-item label="代装厂">
            <el-input :clearable="true" v-model="dddd.form.buyLocation" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="产能检查">
            <el-input :clearable="true" v-model="dddd.form.capacityCheck" style="width:150px" disabled></el-input>
          </el-form-item>
          <el-form-item label="产品大类">
            <el-input :clearable="true" v-model="dddd.form.product" style="width:150px" disabled></el-input>
          </el-form-item>
          <el-form-item label="产品小类">
            <el-input :clearable="true" v-model="dddd.form.productSub" style="width:150px" disabled></el-input>
          </el-form-item>
          <el-form-item label="计划员">
            <el-input :clearable="true" v-model="dddd.form.planPerson" style="width:150px" disabled></el-input>
          </el-form-item>

          <el-form-item label="1月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale1" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="2月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale2" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="3月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale3" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="4月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale4" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="5月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale5" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="6月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale6" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="7月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale7" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="8月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale8" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="9月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale9" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="10月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale10" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="11月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale11" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="12月份额">
            <el-input :clearable="true" v-model="dddd.form.carScale12" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item label="特殊线体">
            <el-input :clearable="true" v-model="dddd.form.lineName" style="width:150px"></el-input>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="clickBack" :icon="IconBackpackOff">返回</el-button>
            <el-button type="primary" @click="clickConfirm" :icon="IconDoorEnter">确定</el-button>
          </el-form-item>
        </el-form>
      </div>
    </div>
  </div>
</template>

<style>
.rv_root_container_edit {
  display: flex;
  flex: 1;
  background-color: #f3f3f3;
  padding: 16px;
  overflow: hidden;
}
.rv_container_edit {
  flex: 1;
  background-color: white;
  border-radius: 5px;
  padding: 16px;
  overflow: auto;
}
</style>

<script setup>
import { IconBackpackOff, IconDoorEnter } from "@tabler/icons-vue";
import { sendPostReq } from "@/service/baseReq.js";
import { ApiPaths } from "@/service/Request.js";
import { ElMessage } from "element-plus";
import { onBeforeRouteLeave, useRoute, useRouter } from "vue-router"
import { reactive, onActivated } from "vue"

const dddd = reactive({
  form: {
    id: null
  }
})

const route = useRoute()
const router = useRouter()
onBeforeRouteLeave((to, from, next) => {
  to.meta.isBack = true
  next()
})

onActivated(() => {
  if (route.query && route.query.id) {
    dddd.form = route.query
  } else {
    dddd.form = {}
  }
})

if (route.query && route.query.id) {
  dddd.form = route.query
}

function clickConfirm() {
  if (dddd.form.edit == "update") {
    sendPostReq(ApiPaths.rvNeedCarBomUpdateOneById, dddd.form, null, true, true, false, (res) => {
        if (res && res.code == 200) {
          ElMessage.success("更新成功")
          clickBack()
        }
      }
    )
  } else {
    sendPostReq(ApiPaths.rvNeedCarBomSave, dddd.form, null, true, true, false, (res) => {
        if (res && res.code == 200) {
          ElMessage.success("新增成功")
          clickBack()
        }
      }
    )
  }
}

function clickBack() {
  router.back()
}

</script>


改变cell颜色

//
.el-table .warning-row {
  color: tomato;
}
.el-table .ws-normal .el-tooltip{
  white-space: pre-line;
}

//
:cell-class-name="tableCellClassName"

//
function tableCellClassName(item) {
  if (item.rowIndex % 5  == 3 && item.columnIndex == 15) {
    return 'ws-normal'
  } else if (item.rowIndex % 5  == 2) {
    for(var i = 0; i < dddd.titleList.length; i ++) {
      var curCell = dddd.titleList[i]
      if (item.columnIndex == 15 + i && item.row[curCell] < 0) {
        return 'warning-row'
      }
    }
  }
  return ''
}


原文地址:https://blog.csdn.net/liu1shi/article/details/140626164

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!