|
@@ -25,9 +25,58 @@
|
|
|
</ul>
|
|
|
</div>
|
|
|
<!-- 右侧主要内容 -->
|
|
|
- <div class="con_right">
|
|
|
- <div class="search">
|
|
|
- <span>创建时间:</span>
|
|
|
+ <div class="con_right" v-loading="loading">
|
|
|
+ <div class="search" @keyup.enter="searchBtn">
|
|
|
+ <span>  名称:</span>
|
|
|
+ <el-input
|
|
|
+ maxlength="25"
|
|
|
+ show-word-limit
|
|
|
+ v-model="formData.searchKey"
|
|
|
+ placeholder="请输入关键字"
|
|
|
+ style="width: 240px"
|
|
|
+ ></el-input>
|
|
|
+ <span class="search_k">  类别:</span>
|
|
|
+ <el-select v-model="formData.dictTextureId" placeholder="请选择类别">
|
|
|
+ <el-option
|
|
|
+ v-for="i in dictTextureArr"
|
|
|
+ :key="i.value"
|
|
|
+ :label="i.label"
|
|
|
+ :value="i.value"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <span class="search_k">年代:</span>
|
|
|
+ <el-select v-model="formData.dictAgeId" placeholder="请选择类别">
|
|
|
+ <el-option
|
|
|
+ v-for="i in dictAgeArr"
|
|
|
+ :key="i.value"
|
|
|
+ :label="i.label"
|
|
|
+ :value="i.value"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <span class="search_k">级别:</span>
|
|
|
+ <el-select v-model="formData.dictLevelId" placeholder="请选择类别">
|
|
|
+ <el-option
|
|
|
+ v-for="i in dictLevelArr"
|
|
|
+ :key="i.value"
|
|
|
+ :label="i.label"
|
|
|
+ :value="i.value"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="search" @keyup.enter="searchBtn">
|
|
|
+ <span>总登记号:</span>
|
|
|
+ <el-input
|
|
|
+ maxlength="25"
|
|
|
+ show-word-limit
|
|
|
+ v-model="formData.registerNum"
|
|
|
+ placeholder="请输入关键字"
|
|
|
+ style="width: 240px"
|
|
|
+ ></el-input>
|
|
|
+
|
|
|
+ <span class="search_k">创建时间:</span>
|
|
|
<el-date-picker
|
|
|
style="width: 240px"
|
|
|
v-model="time"
|
|
@@ -37,18 +86,21 @@
|
|
|
end-placeholder="结束日期"
|
|
|
>
|
|
|
</el-date-picker>
|
|
|
- <span class="search_k">名称:</span>
|
|
|
- <el-input
|
|
|
- maxlength="20"
|
|
|
- show-word-limit
|
|
|
- v-model="formData.searchKey"
|
|
|
- placeholder="请输入关键字"
|
|
|
- style="width: 240px"
|
|
|
- ></el-input>
|
|
|
+
|
|
|
<!-- 右侧按钮 -->
|
|
|
<div class="search_btn">
|
|
|
<el-button type="primary" @click="searchBtn">查 询</el-button>
|
|
|
<el-button @click="resetBtn">重 置</el-button>
|
|
|
+ <download-excel
|
|
|
+ :before-generate="derive"
|
|
|
+ class="export-excel-wrapper"
|
|
|
+ :data="json_data"
|
|
|
+ :fields="json_fields"
|
|
|
+ :name="`文物信息清单${nowTime}.xls`"
|
|
|
+ >
|
|
|
+ <!-- 上面可以自定义自己的样式,还可以引用其他组件button -->
|
|
|
+ <el-button>批量导出</el-button>
|
|
|
+ </download-excel>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!-- 表格 -->
|
|
@@ -62,6 +114,52 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="名称" prop="name"> </el-table-column>
|
|
|
+ <el-table-column label="总登记号">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span
|
|
|
+ style="cursor: pointer"
|
|
|
+ :title="row.registerNum"
|
|
|
+ v-if="row.registerNum"
|
|
|
+ >{{
|
|
|
+ row.registerNum.length > 10
|
|
|
+ ? row.registerNum.substring(0, 10) + "..."
|
|
|
+ : row.registerNum
|
|
|
+ }}</span
|
|
|
+ >
|
|
|
+ <span v-else>(空)</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="类别">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span v-if="row.dictTextureName">{{
|
|
|
+ row.dictTextureName
|
|
|
+ }}</span>
|
|
|
+ <span v-else>(空)</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="年代">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span v-if="row.dictAgeFront">{{ row.dictAgeFront }}</span>
|
|
|
+ <span v-else>(空)</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="级别">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span v-if="row.dictLevelName">{{ row.dictLevelName }}</span>
|
|
|
+ <span v-else>(空)</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="说明">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span
|
|
|
+ style="cursor: pointer"
|
|
|
+ :title="handTxt(row.description)"
|
|
|
+ v-if="handTxt(row.description)"
|
|
|
+ >{{handTxt(row.description).length > 10?handTxt(row.description).substring(0, 10) + "...":handTxt(row.description)}}</span
|
|
|
+ >
|
|
|
+ <span v-else>(空)</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="图片" width="120">
|
|
|
<template #default="{ row }">
|
|
|
<img
|
|
@@ -74,23 +172,9 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="createTime" label="创建时间">
|
|
|
</el-table-column>
|
|
|
- <!-- <el-table-column label="是否显示">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-switch
|
|
|
- v-model="row.display"
|
|
|
- active-color="#b9412e"
|
|
|
- :active-value="1"
|
|
|
- :inactive-value="0"
|
|
|
- @change="changeSwit($event, row.id)"
|
|
|
- >
|
|
|
- </el-switch>
|
|
|
- </template>
|
|
|
- </el-table-column> -->
|
|
|
<el-table-column label="操作">
|
|
|
<template #default="{ row }">
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- @click="editGood(row.id)"
|
|
|
+ <el-button type="text" @click="editGood(row.id)"
|
|
|
>编辑</el-button
|
|
|
>
|
|
|
<el-button
|
|
@@ -98,7 +182,7 @@
|
|
|
style="color: #d9001b"
|
|
|
:disabled="!!row.display"
|
|
|
@click="delGoods(row.id)"
|
|
|
- :class="{disNo:row.display}"
|
|
|
+ :class="{ disNo: row.display }"
|
|
|
>删除</el-button
|
|
|
>
|
|
|
</template>
|
|
@@ -109,7 +193,7 @@
|
|
|
</div>
|
|
|
<!-- 分页 -->
|
|
|
<div class="paging">
|
|
|
- <span>共 {{total}} 条</span>
|
|
|
+ <span>共 {{ total }} 条</span>
|
|
|
<el-pagination
|
|
|
layout="sizes,prev, pager, next,jumper"
|
|
|
:total="total"
|
|
@@ -124,13 +208,42 @@
|
|
|
|
|
|
<script>
|
|
|
import axios from '@/utils/request'
|
|
|
-import { goodsList, goodsRemove, goodsDisplay } from '@/apis/tab2'
|
|
|
+import { goodsList, goodsRemove, goodsDisplay, dictGetTree } from '@/apis/tab2'
|
|
|
+import dayjs from 'dayjs'
|
|
|
+import relativeTime from 'dayjs/plugin/relativeTime'
|
|
|
+import 'dayjs/locale/zh-cn'
|
|
|
+dayjs.extend(relativeTime)
|
|
|
+
|
|
|
export default {
|
|
|
name: 'tab2',
|
|
|
components: {},
|
|
|
data () {
|
|
|
// 这里存放数据
|
|
|
return {
|
|
|
+ loading: false,
|
|
|
+ nowTime: '',
|
|
|
+ // 导出表格的数据
|
|
|
+ json_fields: {
|
|
|
+ 名称: 'name', // 常规字段
|
|
|
+ 总登记号: 'registerNum', // 支持嵌套属性
|
|
|
+ 类别: 'dictTextureName',
|
|
|
+ 年代: 'dictAgeName',
|
|
|
+ 级别: 'dictLevelName',
|
|
|
+ 长: 'sizeLength',
|
|
|
+ 宽: 'sizeWidth',
|
|
|
+ 高: 'sizeHeight',
|
|
|
+ 说明: 'description'
|
|
|
+ },
|
|
|
+ json_data: [],
|
|
|
+ json_meta: [
|
|
|
+ [
|
|
|
+ {
|
|
|
+ ' key ': ' charset ',
|
|
|
+ ' value ': ' utf- 8 '
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ ],
|
|
|
+
|
|
|
baseURL: '',
|
|
|
total: 0,
|
|
|
time: '',
|
|
@@ -144,9 +257,16 @@ export default {
|
|
|
pageNum: 1,
|
|
|
pageSize: 10,
|
|
|
searchKey: '',
|
|
|
+ registerNum: '',
|
|
|
+ dictTextureId: '',
|
|
|
+ dictLevelId: '',
|
|
|
+ dictAgeId: '',
|
|
|
type: 'model'
|
|
|
},
|
|
|
- tableData: []
|
|
|
+ tableData: [],
|
|
|
+ dictLevelArr: [],
|
|
|
+ dictTextureArr: [],
|
|
|
+ dictAgeArr: []
|
|
|
}
|
|
|
},
|
|
|
// 监听属性 类似于data概念
|
|
@@ -159,12 +279,56 @@ export default {
|
|
|
},
|
|
|
// 方法集合
|
|
|
methods: {
|
|
|
+ // 处理说明的文本
|
|
|
+ handTxt (val) {
|
|
|
+ let temp = val.replaceAll(' ', ' ')
|
|
|
+ temp = temp.replaceAll('<br/>', '/')
|
|
|
+ return temp
|
|
|
+ },
|
|
|
+ // 点击导出
|
|
|
+ async derive () {
|
|
|
+ this.searchBtn()
|
|
|
+ this.json_data = []
|
|
|
+ this.loading = true
|
|
|
+ this.nowTime = dayjs().format('YYYYMMDD')
|
|
|
+ // 封装获取列表的函数
|
|
|
+ const res = await goodsList({
|
|
|
+ ...this.formData,
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 9999
|
|
|
+ })
|
|
|
+ if (res.code === 0) {
|
|
|
+ if (res.data.records.length === 0) {
|
|
|
+ this.$message.warning('没有符合条件的数据')
|
|
|
+ this.loading = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.json_data = res.data.records.map((v) => {
|
|
|
+ return {
|
|
|
+ name: v.name,
|
|
|
+ registerNum: v.registerNum,
|
|
|
+ dictTextureName: v.dictTextureName,
|
|
|
+ dictAgeName: v.dictAgeName,
|
|
|
+ sizeLength: v.sizeLength.replace(',', ''),
|
|
|
+ sizeWidth: v.sizeWidth.replace(',', ''),
|
|
|
+ sizeHeight: v.sizeHeight.replace(',', ''),
|
|
|
+ description: v.description
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.loading = false
|
|
|
+ } else this.$message.warning(res.msg)
|
|
|
+ },
|
|
|
// 点击重置
|
|
|
resetBtn () {
|
|
|
this.formData.searchKey = ''
|
|
|
this.time = ''
|
|
|
this.formData.pageNum = 1
|
|
|
this.formData.startTime = this.formData.endTime = ''
|
|
|
+ this.formData.registerNum =
|
|
|
+ this.formData.dictTextureId =
|
|
|
+ this.formData.dictLevelId =
|
|
|
+ this.formData.dictAgeId =
|
|
|
+ ''
|
|
|
this.goodsList(this.formData)
|
|
|
},
|
|
|
// 点击查询
|
|
@@ -204,6 +368,9 @@ export default {
|
|
|
const res = await goodsRemove(id)
|
|
|
if (res.code === 0) {
|
|
|
this.$message.success('删除成功')
|
|
|
+ if (this.tableData.length === 1 && this.formData.pageNum > 1) {
|
|
|
+ this.formData.pageNum -= 1
|
|
|
+ }
|
|
|
this.goodsList(this.formData)
|
|
|
} else this.$message.warning(res.msg)
|
|
|
})
|
|
@@ -274,7 +441,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
// 生命周期 - 创建完成(可以访问当前this实例)
|
|
|
- created () {
|
|
|
+ async created () {
|
|
|
// 获取服务器前缀地址
|
|
|
this.baseURL = axios.defaults.baseURL
|
|
|
// 判断是第一次进来还是修改或者新增或者查看后返回
|
|
@@ -285,6 +452,29 @@ export default {
|
|
|
const k = this.$route.query.k
|
|
|
if (k) this.formData.pageNum = Number(k)
|
|
|
this.goodsList(this.formData)
|
|
|
+ // 几个下拉框的数据
|
|
|
+ // --------年代
|
|
|
+ const res = await dictGetTree({ type: 'age' })
|
|
|
+ const temp = []
|
|
|
+ res.data.forEach((v) => {
|
|
|
+ v.children.forEach((p) => {
|
|
|
+ temp.push({ value: p.id, label: p.name })
|
|
|
+ })
|
|
|
+ })
|
|
|
+ temp.unshift({ value: '', label: '全部' })
|
|
|
+ this.dictAgeArr = [...temp]
|
|
|
+ // -------类别
|
|
|
+ const res2 = await dictGetTree({ type: 'texture' })
|
|
|
+ this.dictTextureArr = res2.data.map((v) => {
|
|
|
+ return { value: v.id, label: v.name }
|
|
|
+ })
|
|
|
+ this.dictTextureArr.unshift({ value: '', label: '全部' })
|
|
|
+ // -------级别
|
|
|
+ const res3 = await dictGetTree({ type: 'level' })
|
|
|
+ this.dictLevelArr = res3.data.map((v) => {
|
|
|
+ return { value: v.id, label: v.name }
|
|
|
+ })
|
|
|
+ this.dictLevelArr.unshift({ value: '', label: '全部' })
|
|
|
},
|
|
|
// 生命周期 - 挂载完成(可以访问DOM元素)
|
|
|
mounted () {},
|
|
@@ -344,6 +534,12 @@ export default {
|
|
|
position: relative;
|
|
|
margin-top: 12px;
|
|
|
height: 40px;
|
|
|
+ /deep/.el-input__inner {
|
|
|
+ padding-right: 50px;
|
|
|
+ }
|
|
|
+ /deep/.el-select {
|
|
|
+ width: 150px;
|
|
|
+ }
|
|
|
.search_k {
|
|
|
margin-left: 30px;
|
|
|
}
|
|
@@ -351,7 +547,7 @@ export default {
|
|
|
margin-left: 50px;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
- width: 180px;
|
|
|
+ width: 300px;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -360,7 +556,7 @@ export default {
|
|
|
// max-width: 1370px;
|
|
|
// }
|
|
|
/deep/.el-table__body-wrapper {
|
|
|
- max-height: 485px;
|
|
|
+ max-height: 440px;
|
|
|
overflow-y: auto;
|
|
|
}
|
|
|
.paging {
|
|
@@ -369,12 +565,12 @@ export default {
|
|
|
position: absolute;
|
|
|
bottom: 15px;
|
|
|
right: 50px;
|
|
|
- &>span{
|
|
|
+ & > span {
|
|
|
margin-right: 15px;
|
|
|
font-size: 13px;
|
|
|
}
|
|
|
}
|
|
|
- .disNo{
|
|
|
+ .disNo {
|
|
|
color: #ccc !important;
|
|
|
}
|
|
|
}
|