|
|
@@ -1,14 +1,15 @@
|
|
|
<!-- -->
|
|
|
<template>
|
|
|
- <div class="holding2Add">
|
|
|
- <TabList :ind="2" />
|
|
|
+ <div class="holdingAdd">
|
|
|
+ <TabList :ind='2'/>
|
|
|
<div class="right">
|
|
|
<div class="top">
|
|
|
<el-breadcrumb separator="/">
|
|
|
+ <!-- <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item> -->
|
|
|
<el-breadcrumb-item to="">首页</el-breadcrumb-item>
|
|
|
<el-breadcrumb-item to="">馆藏管理</el-breadcrumb-item>
|
|
|
<el-breadcrumb-item>出库管理</el-breadcrumb-item>
|
|
|
- <el-breadcrumb-item id="mytitle">编辑</el-breadcrumb-item>
|
|
|
+ <el-breadcrumb-item id="mytitle">{{mydata.description?'编辑':'新增'}}</el-breadcrumb-item>
|
|
|
</el-breadcrumb>
|
|
|
</div>
|
|
|
<div class="conten">
|
|
|
@@ -20,26 +21,30 @@
|
|
|
class="demo-ruleForm"
|
|
|
>
|
|
|
<div class="one_row">
|
|
|
- <el-form-item label="出库编号" prop="number" style="width: 45%">
|
|
|
+ <el-form-item label="出库编号:" prop="number" style="width: 45%">
|
|
|
<el-input v-model="fromData.number" disabled></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="登记人" prop="people" style="width: 45%">
|
|
|
+ <el-form-item label="登记人员:" prop="people" style="width: 45%">
|
|
|
<el-input v-model="fromData.people" disabled></el-input>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
- <div class="tow_row">
|
|
|
- <el-form-item label="出库类型" prop="source" style="width: 45%">
|
|
|
+ <div class="one_row">
|
|
|
+ <el-form-item label="出库类型:" style="width: 45%">
|
|
|
<el-select
|
|
|
v-model="fromData.source"
|
|
|
placeholder="请选择"
|
|
|
style="width: 100%"
|
|
|
>
|
|
|
<el-option label="展览" value="exhibition"></el-option>
|
|
|
- <el-option label="其他" value="else"></el-option>
|
|
|
+ <el-option label="研究" value="study"></el-option>
|
|
|
+ <el-option label="修复" value="repair"></el-option>
|
|
|
+ <el-option label="复制" value="copy"></el-option>
|
|
|
+ <el-option label="文创" value="cultural"></el-option>
|
|
|
+ <el-option label="其他" value="other"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="出库说明" style="width: 45%">
|
|
|
- <el-input v-model="fromData.unit" placeholder="请输入"></el-input>
|
|
|
+ <el-form-item label="出库说明:" prop='textarea' style="width: 45%">
|
|
|
+ <el-input v-model="fromData.textarea"></el-input>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
</el-form>
|
|
|
@@ -48,13 +53,14 @@
|
|
|
<div class="title">
|
|
|
<h3>藏品信息</h3>
|
|
|
<div class="btn">
|
|
|
- <el-button size="small" >添 加</el-button>
|
|
|
- <el-button size="small">删 除</el-button>
|
|
|
+ <el-button size="small" @click="addObject">添 加</el-button>
|
|
|
+ <el-button size="small" @click="deleteS">删 除</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!--表格 -->
|
|
|
<div class="table">
|
|
|
<el-table
|
|
|
+ @selection-change="handleSelectionChange"
|
|
|
:header-cell-style="{ background: '#eef1f6', color: '#606266' }"
|
|
|
:data="tableData"
|
|
|
border
|
|
|
@@ -62,25 +68,25 @@
|
|
|
>
|
|
|
<el-table-column type="selection" width="40"> </el-table-column>
|
|
|
<el-table-column label="缩略图" width="146">
|
|
|
- <template #default>
|
|
|
+ <template #default='{row}'>
|
|
|
<div class="smimg">
|
|
|
- <img src="../../assets/img/user.png" alt="" />
|
|
|
+ <img :src="baseURL+row.thumb" alt="" />
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="name" label="总登记号" width="200">
|
|
|
+ <el-table-column prop="registerNum" label="总登记号" width="235">
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="address" label="藏品名称">
|
|
|
+ <el-table-column prop="name" label="藏品名称">
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="name" label="类别" width="130">
|
|
|
+ <el-table-column prop="goodsTypeId" label="类别" width="180">
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="name" label="完残程度" width="180">
|
|
|
+ <el-table-column prop="integrity" label="完残程度" width="130">
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="name" label="藏品年代" width="130">
|
|
|
+ <el-table-column prop="age" label="藏品年代" width="130">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="藏品位置" width="200">
|
|
|
+ <el-table-column label="出库位置" width="230">
|
|
|
<template #default>
|
|
|
- <el-input v-model="location" placeholder="请输入"></el-input>
|
|
|
+
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
@@ -88,63 +94,200 @@
|
|
|
</div>
|
|
|
<!-- 最下面的2个按钮 -->
|
|
|
<div class="bot_btn">
|
|
|
- <el-button type="primary">提 交</el-button>
|
|
|
- <el-button @click="$router.go(-1)">返 回</el-button>
|
|
|
+ <el-button type="primary" @click="submit">提 交</el-button>
|
|
|
+ <el-button @click="goBack">返 回</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <!-- 点击添加出现弹窗 -->
|
|
|
+ <Holding2Dialog :dialogFormVisible.sync="isShow" ref="myDialog" @getSonList='getSonList' :myTemp='myTemp'/>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { holding1submit, getDetailById } from '@/apis/holding2'
|
|
|
+import axios from '@/utils/request'
|
|
|
import TabList from '@/components/tabLeft.vue'
|
|
|
+import Holding2Dialog from './holding2_Dialog.vue'
|
|
|
export default {
|
|
|
- name: 'Holding2Add',
|
|
|
- // import引入的组件需要注入到对象中才能使用
|
|
|
- components: { TabList },
|
|
|
+ name: 'HoldingAdd2',
|
|
|
+ components: {
|
|
|
+ Holding2Dialog,
|
|
|
+ TabList
|
|
|
+ },
|
|
|
data () {
|
|
|
- // 这里存放数据
|
|
|
return {
|
|
|
+ // 传递给弹窗的表格数据,用来筛选
|
|
|
+ myTemp: [],
|
|
|
+ // 处理从子组件拿到的数据的id集合数组
|
|
|
+ goodsIds: [],
|
|
|
+ // 服务器前缀地址
|
|
|
+ baseURL: '',
|
|
|
+ mydata: {},
|
|
|
+ // 控制弹出层显示隐藏
|
|
|
+ isShow: false,
|
|
|
// 表单数据
|
|
|
- location: '',
|
|
|
fromData: {
|
|
|
- number: 'DJ2021081701',
|
|
|
- people: 'Admin',
|
|
|
- source: '',
|
|
|
- unit: ''
|
|
|
+ number: '',
|
|
|
+ people: '',
|
|
|
+ textarea: '',
|
|
|
+ source: 'exhibition'
|
|
|
},
|
|
|
// 表单验证
|
|
|
rules: {
|
|
|
number: [{ required: true, message: '不能为空', trigger: 'blur' }],
|
|
|
people: [{ required: true, message: '不能为空', trigger: 'blur' }],
|
|
|
- source: [{ required: true, message: '不能为空', trigger: 'blur' }]
|
|
|
+ textarea: [{ required: true, message: '不能为空', trigger: 'blur' }]
|
|
|
},
|
|
|
// 表格数据
|
|
|
- tableData: [
|
|
|
- {
|
|
|
- date: '2016-05-03',
|
|
|
- name: '王小虎',
|
|
|
- address: '上海市普陀区金沙江路 1518 弄'
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-02',
|
|
|
- name: '王小虎',
|
|
|
- address: '上海市普陀区金沙江路 1518 弄'
|
|
|
- }
|
|
|
- ]
|
|
|
-
|
|
|
+ tableData: [],
|
|
|
+ // 表格选中后的暂存数据
|
|
|
+ delArr: []
|
|
|
}
|
|
|
},
|
|
|
// 监听属性 类似于data概念
|
|
|
computed: {},
|
|
|
// 监控data中的数据变化
|
|
|
- watch: {},
|
|
|
+ watch: {
|
|
|
+ isShow (val) {
|
|
|
+ // if (!val) {
|
|
|
+ // console.log(77777)
|
|
|
+ // this.getSonList()
|
|
|
+ // }
|
|
|
+ }
|
|
|
+ },
|
|
|
// 方法集合
|
|
|
- methods: {},
|
|
|
+ methods: {
|
|
|
+ // 从子组件哪里拿到选中的数据
|
|
|
+ getSonList (data) {
|
|
|
+ // console.log(9999999, data)
|
|
|
+
|
|
|
+ // data.forEach(v => {
|
|
|
+ // v.integrity = this.spoil(v.integrity)
|
|
|
+ // v.goodsTypeId = this.category(v.goodsTypeId)
|
|
|
+ // })
|
|
|
+ const temp = []
|
|
|
+ data.forEach(v => {
|
|
|
+ temp.push(v.id)
|
|
|
+ })
|
|
|
+ const temp2 = new Set(temp)
|
|
|
+ this.goodsIds = [...temp2]
|
|
|
+ // console.log(999, this.goodsIds)
|
|
|
+ this.tableData = data
|
|
|
+ this.tableData.forEach(v => {
|
|
|
+ if (v.integrity.length <= 2) v.integrity = this.spoil(v.integrity)
|
|
|
+ if (v.goodsTypeId.length <= 2) v.goodsTypeId = this.category(v.goodsTypeId)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 多层选择器的事件
|
|
|
+ handleChange (value) {
|
|
|
+ console.log(value)
|
|
|
+ },
|
|
|
+ // 表格的多选
|
|
|
+ handleSelectionChange (val) {
|
|
|
+ this.delArr = val
|
|
|
+ },
|
|
|
+ // 点击删除
|
|
|
+ deleteS () {
|
|
|
+ if (this.delArr.length === 0) return this.$message.warning('至少选中一条!')
|
|
|
+ this.$confirm('确定删除吗?', '提示', {
|
|
|
+ confirmButtonText: '删除',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(async () => {
|
|
|
+ const temp = this.goodsIds
|
|
|
+ this.delArr.forEach(v => {
|
|
|
+ // 删除数据,刷新页面
|
|
|
+ this.tableData.forEach((item, index) => {
|
|
|
+ // eslint-disable-next-line
|
|
|
+ if (v.id == item.id) this.tableData.splice(index, 1)
|
|
|
+ })
|
|
|
+ // 改变发请求id
|
|
|
+ temp.forEach((item, index) => {
|
|
|
+ // eslint-disable-next-line
|
|
|
+ if (v.id == item) temp.splice(index, 1)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ this.goodsIds = temp
|
|
|
+ // console.log(99999, this.goodsIds)
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '删除成功!'
|
|
|
+ })
|
|
|
+ }).catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: 'info',
|
|
|
+ message: '已取消.'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 点击添加
|
|
|
+ addObject () {
|
|
|
+ // 把当前表格的数据传递过去,防止重复选择
|
|
|
+ this.myTemp = this.tableData
|
|
|
+ // 调用子组件方法
|
|
|
+ this.$refs.myDialog.getListTow({ pageNum: 1, pageSize: 99999 })
|
|
|
+ this.isShow = true
|
|
|
+ },
|
|
|
+ // 点击返回
|
|
|
+ goBack () {
|
|
|
+ const obj = { description: this.fromData.textarea, goodsIds: this.goodsIds.join(','), id: this.mydata.id, status: null, type: this.fromData.source }
|
|
|
+ this.$confirm('您需要保存这条数据吗?', '提示', {
|
|
|
+ confirmButtonText: '保存',
|
|
|
+ cancelButtonText: '放弃',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(async () => {
|
|
|
+ if (this.fromData.textarea === '') return this.$message.warning('出库说明不能为空')
|
|
|
+ // 发请求
|
|
|
+ await holding1submit(obj)
|
|
|
+ this.$router.push('/layout/holding2')
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '保存成功!'
|
|
|
+ })
|
|
|
+ }).catch(() => {
|
|
|
+ this.$router.push('/layout/holding2')
|
|
|
+ this.$message({
|
|
|
+ type: 'info',
|
|
|
+ message: '放弃保存.'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 点击提交
|
|
|
+ async submit () {
|
|
|
+ if (this.fromData.textarea === '') return this.$message.warning('出库说明不能为空')
|
|
|
+ const obj = { description: this.fromData.textarea, goodsIds: this.goodsIds.join(','), id: this.mydata.id, status: 1, type: this.fromData.source }
|
|
|
+ await holding1submit(obj)
|
|
|
+ this.$message.success('提交成功')
|
|
|
+ this.$router.push('/layout/holding2')
|
|
|
+ }
|
|
|
+ },
|
|
|
// 生命周期 - 创建完成(可以访问当前this实例)
|
|
|
- created () {},
|
|
|
+ created () {
|
|
|
+ // 获取服务器前缀地址
|
|
|
+ this.baseURL = axios.defaults.baseURL
|
|
|
+ // 从第一层拿到传过来的数据
|
|
|
+ this.mydata = this.$route.query
|
|
|
+ this.mydata.id = Number(this.mydata.id)
|
|
|
+ this.fromData.people = this.mydata.realName
|
|
|
+ this.fromData.number = this.mydata.num
|
|
|
+ this.fromData.textarea = this.mydata.description
|
|
|
+ },
|
|
|
// 生命周期 - 挂载完成(可以访问DOM元素)
|
|
|
- mounted () {},
|
|
|
+ async mounted () {
|
|
|
+ // 如果是编辑
|
|
|
+ if (this.mydata.goodsIds) {
|
|
|
+ // 通过id获取列表详情
|
|
|
+ const res = await getDetailById(this.mydata.id)
|
|
|
+ this.tableData = res.data.goods
|
|
|
+ this.tableData.forEach(v => {
|
|
|
+ v.integrity = this.spoil(v.integrity)
|
|
|
+ v.goodsTypeId = this.category(v.goodsTypeId)
|
|
|
+ })
|
|
|
+
|
|
|
+ this.goodsIds = this.mydata.goodsIds.split(',')
|
|
|
+ }
|
|
|
+ },
|
|
|
beforeCreate () {}, // 生命周期 - 创建之前
|
|
|
beforeMount () {}, // 生命周期 - 挂载之前
|
|
|
beforeUpdate () {}, // 生命周期 - 更新之前
|
|
|
@@ -156,7 +299,7 @@ export default {
|
|
|
</script>
|
|
|
<style lang='less' scoped>
|
|
|
//@import url(); 引入公共css类
|
|
|
-.holding2Add {
|
|
|
+.holdingAdd {
|
|
|
/deep/#mytitle > span {
|
|
|
font-weight: 800;
|
|
|
}
|
|
|
@@ -189,13 +332,13 @@ export default {
|
|
|
display: flex;
|
|
|
justify-content: start;
|
|
|
}
|
|
|
- .info{
|
|
|
- max-height: 390px;
|
|
|
- overflow: auto;
|
|
|
+ .info {
|
|
|
+ // max-height: 390px;
|
|
|
+ // overflow: auto;
|
|
|
width: 86%;
|
|
|
border: 1px solid #ccc;
|
|
|
margin-left: 70px;
|
|
|
- .title{
|
|
|
+ .title {
|
|
|
color: black;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
@@ -203,8 +346,12 @@ export default {
|
|
|
align-items: center;
|
|
|
padding: 0 30px;
|
|
|
}
|
|
|
- .table{
|
|
|
- .smimg{
|
|
|
+ .table {
|
|
|
+ /deep/.el-table__body-wrapper{
|
|
|
+ max-height: 360px;
|
|
|
+ overflow-y: auto;
|
|
|
+ }
|
|
|
+ .smimg {
|
|
|
border: 3px solid #ccc;
|
|
|
height: 78px;
|
|
|
img {
|
|
|
@@ -214,7 +361,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- .bot_btn{
|
|
|
+ .bot_btn {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
position: absolute;
|