Просмотр исходного кода

初步完工入库管理编辑

shaogen1995 4 лет назад
Родитель
Сommit
9d6e887174

+ 20 - 0
src/apis/holding1.js

@@ -30,3 +30,23 @@ export const holding1submit = (data) => {
     data
   })
 }
+// 通过第一层的id获取详情
+export const getDetailById = (id) => {
+  return axios({
+    url: `/cms/storageIn/detail/${id}`
+  })
+}
+// 第一层点击删除
+export const delData = (id) => {
+  return axios({
+    url: `/cms/storageIn/remove/${id}`
+  })
+}
+// 从holding1_audit点击审核
+export const holding1Audit = (data) => {
+  return axios({
+    method: 'post',
+    url: '/cms/storageIn/audit',
+    data
+  })
+}

+ 4 - 1
src/views/holding/holding0_audit_Dia.vue

@@ -98,7 +98,10 @@ export default {
       default: false
     },
     myObj: {
-      type: Object
+      type: Object,
+      default: function () {
+        return {}
+      }
     }
   },
   data () {

+ 49 - 6
src/views/holding/holding1.vue

@@ -58,10 +58,10 @@
               </el-table-column>
               <el-table-column label="操作" width="195">
                 <template #default='{row}'>
-                  <el-button type="text" v-if="row.status==='已完成'||row.status==='待入库'||row.status==='审核不通过'" @click="$router.push('/layout/holding1_look')">查看</el-button>
-                  <el-button type="text" v-if="row.status==='待审核'" @click="$router.push('/layout/holding1_audit')">审核</el-button>
-                  <el-button type="text" v-if="row.status==='待办理'" @click="$router.push('/layout/holding1_add')">编辑</el-button>
-                  <el-button type="text" v-if="row.status!=='已完成'">删除</el-button>
+                  <el-button type="text" v-if="row.status==='已完成'||row.status==='待入库'||row.status==='审核不通过'" @click="myLook(row)">查看</el-button>
+                  <el-button type="text" v-if="row.status==='待审核'" @click="audit(row)">审核</el-button>
+                  <el-button type="text" v-if="row.status==='待办理'" @click="compile(row)">编辑</el-button>
+                  <el-button type="text" v-if="row.status!=='已完成'" @click="delData(row.id)">删除</el-button>
                 </template>
               </el-table-column>
             </el-table>
@@ -82,7 +82,7 @@
 </template>
 
 <script>
-import { getList, enterBank } from '@/apis/holding1'
+import { getList, enterBank, delData } from '@/apis/holding1'
 import TabList from '@/components/tabLeft.vue'
 export default {
   name: 'Holding1',
@@ -123,11 +123,54 @@ export default {
   },
   // 方法集合
   methods: {
+    // 点击查看
+    myLook (val) {
+      this.$router.push({
+        path: '/layout/holding1_look',
+        query: val
+      })
+    },
+    // 点击删除
+    async delData (id) {
+      this.$confirm('确定删除吗?', '提示', {
+        confirmButtonText: '删除',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        // 发请求删除
+        await delData(id)
+        // 发请求刷新页面
+        this.getList(this.myData)
+        this.$message({
+          type: 'success',
+          message: '删除成功!'
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消.'
+        })
+      })
+    },
+    // 点击编辑
+    compile (val) {
+      this.$router.push({
+        path: '/layout/holding1_add',
+        query: val
+      })
+    },
+    // 点击审核
+    audit (val) {
+      this.$router.push({
+        path: '/layout/holding1_audit',
+        query: val
+      })
+    },
     // 点击申请入库
     async enterBank () {
       const res = await enterBank()
       this.$router.push({
-        path: 'holding1_add',
+        path: '/layout/holding1_add',
         query: res.data
       })
     },

+ 40 - 4
src/views/holding/holding1_Dialog.vue

@@ -11,6 +11,7 @@
     </div>
     <!-- 表格 -->
     <el-table
+      ref="multipleTable"
       @selection-change="handleSelectionChange"
       :header-cell-style="{ background: '#eef1f6', color: '#606266' }"
       :data="tableData"
@@ -34,6 +35,7 @@
     <!-- 分页器 -->
     <div class="paging">
       <el-pagination
+        :current-page='myData.pageNum'
         @current-change="currentChange"
         @size-change="sizeChange"
         background
@@ -58,6 +60,12 @@ export default {
     dialogFormVisible: {
       type: Boolean,
       default: false
+    },
+    myTemp: {
+      type: Array,
+      default: function () {
+        return []
+      }
     }
   },
   data () {
@@ -76,7 +84,9 @@ export default {
       // 表格数据
       tableData: [],
       // 传递给父元素的表格数据
-      fatabList: []
+      fatabList: [],
+      tableObj: {}
+
     }
   },
   // 监听属性 类似于data概念
@@ -108,29 +118,55 @@ export default {
     },
     // 点击查询
     search () {
+      this.myData.pageNum = 1
       this.getListTow(this.myData)
     },
     // 表格的多选
     handleSelectionChange (rows) {
-      // console.log(666, rows)
-      this.fatabList = rows
+      // console.log(this.myData.pageNum)
+      const temp = []
+      this.tableObj[this.myData.pageNum] = rows
+      // console.log(666, this.tableObj)
+      for (const k in this.tableObj) {
+        this.tableObj[k].forEach(v => {
+          temp.push(v)
+        })
+      }
+      this.fatabList = temp
     },
     // 点击确定
     btnOK () {
       // 把选中的数据传给父组件
+
       this.$emit('getSonList', this.fatabList)
+
       this.cancel()
     },
     // 点击取消
     cancel () {
       this.$emit('update:dialogFormVisible', false)
       this.myData.searchKey = ''
+      this.myData.pageNum = 1
     },
     // 获取藏品列表---让父组件调用
     async getListTow (data) {
       const res = await getListTow(data)
-      // console.log(666, res)
       this.tableData = res.data.list
+      // 表格的默认选中
+      this.myTemp.forEach(v => {
+        this.tableData.forEach((i, ind) => {
+          if (v.id === i.id) {
+            this.$nextTick(() => {
+              this.$refs.multipleTable.toggleRowSelection(this.tableData[ind], true)
+            })
+          }
+        })
+      })
+      // 表格的默认选中
+      // this.myTemp.forEach(v => {
+      //   console.log(666, v)
+      // })
+
       this.total = res.data.total
     }
   },

+ 85 - 17
src/views/holding/holding1_add.vue

@@ -9,7 +9,7 @@
           <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">
@@ -43,12 +43,13 @@
             <h3>藏品信息</h3>
             <div class="btn">
               <el-button size="small" @click="addObject">添 加</el-button>
-              <el-button size="small">删 除</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
@@ -66,9 +67,9 @@
               </el-table-column>
               <el-table-column prop="name" label="藏品名称">
               </el-table-column>
-              <el-table-column prop="goodsTypeName" label="类别" width="130">
+              <el-table-column prop="goodsTypeId" label="类别" width="180">
               </el-table-column>
-              <el-table-column prop="integrity" label="完残程度" width="220">
+              <el-table-column prop="integrity" label="完残程度" width="130">
               </el-table-column>
               <el-table-column label="藏品位置" width="230">
                 <template #default>
@@ -90,12 +91,12 @@
       </div>
     </div>
     <!-- 点击添加出现弹窗 -->
-    <Holding1Dialog :dialogFormVisible.sync="isShow" ref="myDialog" @getSonList='getSonList'/>
+    <Holding1Dialog :dialogFormVisible.sync="isShow" ref="myDialog" @getSonList='getSonList' :myTemp='myTemp'/>
   </div>
 </template>
 
 <script>
-import { holding1submit } from '@/apis/holding1'
+import { holding1submit, getDetailById } from '@/apis/holding1'
 import axios from '@/utils/request'
 import TabList from '@/components/tabLeft.vue'
 import Holding1Dialog from './holding1_Dialog.vue'
@@ -107,6 +108,8 @@ export default {
   },
   data () {
     return {
+      // 传递给弹窗的表格数据,用来筛选
+      myTemp: [],
       // 处理从子组件拿到的数据的id集合数组
       goodsIds: [],
       // 服务器前缀地址
@@ -323,7 +326,9 @@ export default {
         textarea: [{ required: true, message: '不能为空', trigger: 'blur' }, { max: 255, message: '不能超过255个字符', trigger: 'blur' }]
       },
       // 表格数据
-      tableData: []
+      tableData: [],
+      // 表格选中后的暂存数据
+      delArr: []
     }
   },
   // 监听属性 类似于data概念
@@ -341,11 +346,12 @@ export default {
   methods: {
     // 从子组件哪里拿到选中的数据
     getSonList (data) {
-      // console.log(666, data)
-      this.tableData = data
-      this.tableData.forEach(v => {
-        v.integrity = this.spoil(v.integrity)
-      })
+      // 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)
@@ -353,28 +359,72 @@ export default {
       const temp2 = new Set(temp)
       this.goodsIds = [...temp2]
       // console.log(999, this.goodsIds)
+      this.tableData = data
+      this.tableData.forEach(v => {
+        v.integrity = this.spoil(v.integrity)
+        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) => {
+            item.id = item.id + ''
+            if (v.id === item.id) this.tableData.splice(index, 1)
+          })
+          // 改变发请求id
+          v.id = v.id + ''
+          temp.forEach((item, index) => {
+            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: 10 })
       this.isShow = true
     },
     // 点击返回
     goBack () {
+      if (this.fromData.textarea === '') return this.$message.warning('入库说明不能为空')
       const obj = { description: this.fromData.textarea, goodsIds: this.goodsIds.join(','), id: this.mydata.id, status: null }
-      // console.log(666, obj)
       this.$confirm('您需要保存这条数据吗?', '提示', {
         confirmButtonText: '保存',
         cancelButtonText: '放弃',
         type: 'warning'
       }).then(async () => {
         // 发请求
-        this.fromData.status = null
         await holding1submit(obj)
         this.$router.push('/layout/holding1')
         this.$message({
@@ -391,6 +441,7 @@ export default {
     },
     // 点击提交
     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 }
       await holding1submit(obj)
       this.$message.success('提交成功')
@@ -406,9 +457,22 @@ export default {
     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 () {}, // 生命周期 - 挂载之前
@@ -455,8 +519,8 @@ export default {
       justify-content: start;
     }
     .info {
-      max-height: 390px;
-      overflow: auto;
+      // max-height: 390px;
+      // overflow: auto;
       width: 86%;
       border: 1px solid #ccc;
       margin-left: 70px;
@@ -469,6 +533,10 @@ export default {
         padding: 0 30px;
       }
       .table {
+        /deep/.el-table__body-wrapper{
+          max-height: 360px;
+          overflow-y: auto;
+        }
         .smimg {
           border: 3px solid #ccc;
           height: 78px;

+ 52 - 35
src/views/holding/holding1_audit.vue

@@ -16,17 +16,17 @@
           <div>
             <h4>入库编号:</h4>
             <b>DJ</b>
-            <span>2021081701</span>
+            <span>{{myData.num}}</span>
           </div>
           <div>
             <h4>登记人员:</h4>
-            <span>Admin</span>
+            <span>{{myData.realName}}</span>
           </div>
         </div>
         <div class="explain">
           <p>
-            <span>登记说明:</span
-            >考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集
+            <span>登记说明:</span>
+            {{myData.description}}
           </p>
         </div>
         <!-- 表格 -->
@@ -41,20 +41,20 @@
             style="width: 100%"
           >
             <el-table-column label="缩略图" width="160">
-              <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="235">
+            <el-table-column prop="registerNum" label="总登记号" width="235">
             </el-table-column>
-            <el-table-column prop="address" label="藏品名称"> </el-table-column>
-            <el-table-column prop="name" label="类别" width="180">
+            <el-table-column prop="name" label="藏品名称"> </el-table-column>
+            <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="180">
             </el-table-column>
-            <el-table-column prop="name" label="藏品位置" width="300">
+            <el-table-column prop="registerNum" label="藏品位置" width="300">
             </el-table-column>
           </el-table>
         </div>
@@ -68,8 +68,8 @@
           >
             <el-form-item label="审核结果:" prop="result">
               <el-select v-model="fromData.result" placeholder="请选择">
-                <el-option label="通过" value="pass"></el-option>
-                <el-option label="不通过" value="NOpass"></el-option>
+                <el-option label="通过" :value="3"></el-option>
+                <el-option label="不通过" :value="2"></el-option>
               </el-select>
             </el-form-item>
 
@@ -88,7 +88,7 @@
         </div>
         <!-- 最下面的按钮 -->
         <div class="button">
-          <el-button type="primary">提交</el-button>
+          <el-button type="primary" @click="submit">提交</el-button>
           <el-button @click="$router.go(-1)">返回</el-button>
         </div>
       </div>
@@ -99,44 +99,35 @@
 </template>
 
 <script>
+import axios from '@/utils/request'
+import { getDetailById, holding1Audit } from '@/apis/holding1'
 import TabList from '@/components/tabLeft.vue'
 import Holding0AuditDia from './holding0_audit_Dia.vue'
 export default {
-  name: 'holding0_audit',
+  name: 'holding1_audit',
   // import引入的组件需要注入到对象中才能使用
   components: { Holding0AuditDia, TabList },
   data () {
     // 这里存放数据
     return {
+      // 服务器前缀地址
+      baseURL: '',
+      myData: {},
       // 点击查看显示弹窗
       isShow: false,
       fromData: {
         textarea: '',
-        result: ''
+        result: 3
       },
       rules: {
         textarea: [
           { required: true, message: '不能为空', trigger: 'blur' },
           { max: 255, message: '不能超过255个字符', trigger: 'blur' }
-        ],
-        result: [
-          { required: true, message: '请选择活动区域', trigger: 'change' }
         ]
       },
       auditResult: '',
       // 表格数据
-      tableData: [
-        {
-          date: '2016-05-03',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1518 弄'
-        },
-        {
-          date: '2016-05-02',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1518 弄'
-        }
-      ]
+      tableData: []
     }
   },
   // 监听属性 类似于data概念
@@ -145,12 +136,39 @@ export default {
   watch: {},
   // 方法集合
   methods: {
-
+    // 点击提交
+    async submit () {
+      try {
+        await this.$refs.fromData.validate()
+        const obj = { id: this.myData.id, reason: this.fromData.textarea, status: this.fromData.result }
+        const res = await holding1Audit(obj)
+        console.log(6666, res)
+        if (res.code === 0) {
+          this.$message.success('审核成功')
+          this.$router.push('/layout/holding1')
+        } else this.$message.warning(res.msg)
+      } catch (error) {
+        console.log(error)
+      }
+    }
   },
   // 生命周期 - 创建完成(可以访问当前this实例)
-  created () {},
+  created () {
+  },
   // 生命周期 - 挂载完成(可以访问DOM元素)
-  mounted () {},
+  async mounted () {
+    // 获取服务器前缀地址
+    this.baseURL = axios.defaults.baseURL
+    // 拿到路由传递过来的参数
+    this.myData = this.$route.query
+    // 通过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)
+    })
+  },
   beforeCreate () {}, // 生命周期 - 创建之前
   beforeMount () {}, // 生命周期 - 挂载之前
   beforeUpdate () {}, // 生命周期 - 更新之前
@@ -217,7 +235,6 @@ export default {
       .smimg {
         border: 3px solid #ccc;
         height: 60px;
-        padding: 0 15px;
         img {
           width: 100%;
           height: 100%;

+ 31 - 30
src/views/holding/holding1_look.vue

@@ -15,27 +15,25 @@
         <div class="info">
           <div>
             <h4>入库编号:</h4>
-            <span>
-              <b>DJ</b>
-              2021081701</span>
+            <span>{{myData.num}}</span>
           </div>
           <div>
             <h4>入库人员:</h4>
-            <span>Admin</span>
+            <span>{{myData.realName}}</span>
           </div>
           <div>
             <h4>入库说明:</h4>
-            <span>考古发掘与采集</span>
+            <span>{{myData.description}}</span>
           </div>
           <div>
             <h4>审核结果:</h4>
-            <span>通过</span>
+            <span>{{myData.status}}</span>
           </div>
         </div>
         <div class="explain">
           <p>
             <span>审核说明:</span
-            >考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集考古发掘与采集
+            >{{myData.reason}}
           </p>
         </div>
         <!-- 表格 -->
@@ -50,18 +48,18 @@
             style="width: 100%"
           >
             <el-table-column label="缩略图" width="160">
-              <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="235">
+            <el-table-column prop="registerNum" label="总登记号" width="235">
             </el-table-column>
-            <el-table-column prop="address" label="藏品名称"> </el-table-column>
-            <el-table-column prop="name" label="类别" width="180">
+            <el-table-column prop="name" label="藏品名称"> </el-table-column>
+            <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="180">
             </el-table-column>
             <el-table-column prop="name" label="藏品位置" width="300">
             </el-table-column>
@@ -77,13 +75,18 @@
 </template>
 
 <script>
+import { getDetailById } from '@/apis/holding1'
+import axios from '@/utils/request'
 import TabList from '@/components/tabLeft.vue'
 export default {
-  name: 'holding0_result',
+  name: 'holding1_result',
   components: { TabList },
   data () {
     // 这里存放数据
     return {
+      myData: {},
+      // 服务器初始地址前缀
+      baseURL: '',
       // 点击查看显示弹窗
       isShow: false,
       fromData: {
@@ -94,18 +97,7 @@ export default {
       },
       auditResult: '',
       // 表格数据
-      tableData: [
-        {
-          date: '2016-05-03',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1518 弄'
-        },
-        {
-          date: '2016-05-02',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1518 弄'
-        }
-      ]
+      tableData: []
     }
   },
   // 监听属性 类似于data概念
@@ -113,13 +105,22 @@ export default {
   // 监控data中的数据变化
   watch: {},
   // 方法集合
-  methods: {
-
-  },
+  methods: {},
   // 生命周期 - 创建完成(可以访问当前this实例)
   created () {},
   // 生命周期 - 挂载完成(可以访问DOM元素)
-  mounted () {},
+  async mounted () {
+    // 获取服务器前缀地址
+    this.baseURL = axios.defaults.baseURL
+    // 从第一层拿到传过来的数据
+    this.myData = this.$route.query
+    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)
+    })
+  },
   beforeCreate () {}, // 生命周期 - 创建之前
   beforeMount () {}, // 生命周期 - 挂载之前
   beforeUpdate () {}, // 生命周期 - 更新之前