From 508567cbb4a41070718afb1e2eaab1e489e784c6 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 14 一月 2025 09:47:40 +0800
Subject: [PATCH] 仓库管理、资产分类、资产管理
---
admin/src/views/stock/components/newWarehouse.vue | 54 +++-
admin/.env.test | 2
admin/src/api/ywMaterial.js | 28 ++
admin/src/views/stock/components/CateEdit.vue | 20 +-
admin/src/views/stock/components/newMaterial.vue | 196 ++++++++++---------
admin/src/views/stock/assetList.vue | 107 +++++-----
admin/src/api/ywWarehouse.js | 28 ++
admin/src/views/stock/assetCate.vue | 16
admin/src/views/stock/asset.vue | 93 ++++----
9 files changed, 317 insertions(+), 227 deletions(-)
diff --git a/admin/.env.test b/admin/.env.test
index 074e999..0e38ccc 100644
--- a/admin/.env.test
+++ b/admin/.env.test
@@ -4,7 +4,7 @@
# VUE_APP_API_URL = 'http://192.168.5.13/gateway_interface'
# 浠诲悍
-# VUE_APP_API_URL = 'http://192.168.0.137:10010/'
+# VUE_APP_API_URL = 'http://192.168.0.143:10010'
# 钀嶅
# VUE_APP_API_URL = 'http://192.168.0.108:10010/'
diff --git a/admin/src/api/ywMaterial.js b/admin/src/api/ywMaterial.js
new file mode 100644
index 0000000..e7da119
--- /dev/null
+++ b/admin/src/api/ywMaterial.js
@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywMaterial/page', data, {
+ trim: true
+ })
+}
+
+// 鍒涘缓
+export function create (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywMaterial/create', data)
+}
+
+// 鏍规嵁ID淇敼
+export function updateById (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywMaterial/updateById', data)
+}
+
+// 鏍规嵁ID淇敼鐘舵��
+export function updateStatus (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywMaterial/updateStatus', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+ return request.get(`/visitsAdmin/cloudService/business/ywMaterial/delete/${id}`)
+}
diff --git a/admin/src/api/ywWarehouse.js b/admin/src/api/ywWarehouse.js
new file mode 100644
index 0000000..aa5511c
--- /dev/null
+++ b/admin/src/api/ywWarehouse.js
@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywWarehouse/page', data, {
+ trim: true
+ })
+}
+
+// 鍒涘缓
+export function create (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywWarehouse/create', data)
+}
+
+// 鏍规嵁ID淇敼
+export function updateById (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywWarehouse/updateById', data)
+}
+
+// 鏍规嵁ID淇敼鐘舵��
+export function updateStatusById (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywWarehouse/updateStatusById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+ return request.get(`/visitsAdmin/cloudService/business/ywWarehouse/delete/${id}`)
+}
diff --git a/admin/src/views/stock/asset.vue b/admin/src/views/stock/asset.vue
index d3880e6..8f78846 100644
--- a/admin/src/views/stock/asset.vue
+++ b/admin/src/views/stock/asset.vue
@@ -5,16 +5,27 @@
<el-button type="primary" @click="$refs.newWarehouse.open('鏂板缓浠撳簱鍚嶇О')">鏂板</el-button>
</div>
<el-table v-loading="loading" :data="list" stripe>
- <el-table-column prop="platformName" label="浠撳簱鍚嶇О" min-width="120" show-overflow-tooltip />
- <el-table-column prop="platformGroupName" label="璐熻矗浜�" min-width="100" show-overflow-tooltip />
- <el-table-column prop="carCodeFront" label="浠撳簱浣嶇疆" min-width="100" show-overflow-tooltip />
- <el-table-column prop="carCodeBack" label="鎺掑簭鐮�" min-width="110" show-overflow-tooltip />
- <el-table-column prop="param1" label="澶囨敞" min-width="120" show-overflow-tooltip />
- <el-table-column prop="param2" label="鐘舵��" min-width="90" show-overflow-tooltip />
+ <el-table-column prop="name" label="浠撳簱鍚嶇О" min-width="120" show-overflow-tooltip />
+ <el-table-column prop="userName" label="璐熻矗浜�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="position" label="浠撳簱浣嶇疆" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="110" show-overflow-tooltip />
+ <el-table-column prop="remark" label="澶囨敞" min-width="120" show-overflow-tooltip />
+ <el-table-column label="鐘舵��" min-width="90">
+ <template v-slot="{ row }">
+ <el-switch
+ v-model="row.status"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ @change="changeStatus($event, row)"
+ :active-value="0"
+ :inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
<el-table-column prop="workTime" label="鎿嶄綔" min-width="100" show-overflow-tooltip>
<template v-slot="{ row }">
- <span class="primaryColor pointer">鏌ョ湅璇︽儏</span>
- <span class="red pointer">鍒犻櫎</span>
+ <el-button type="text" @click="$refs.newWarehouse.open('鏂板缓浠撳簱鍚嶇О', row)">缂栬緫</el-button>
+ <el-button type="text" @click="dele(row.id)">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
@@ -32,7 +43,7 @@
import dayjs from 'dayjs'
import duration from 'dayjs/plugin/duration'
dayjs.extend(duration)
-import { platformLogPage, getPlatformGroupList } from '@/api'
+import { fetchList, deleteById, updateStatusById } from '@/api/ywWarehouse'
export default {
components: {
Pagination,
@@ -53,15 +64,18 @@
queryFormConfig: {
formItems: [
{
- filed: 'carCodeFront',
+ filed: 'name',
type: 'input',
label: '浠撳簱鍚嶇О',
},
{
- filed: 'platformGroupId',
+ filed: 'status',
type: 'select',
label: '浠撳簱鐘舵��',
- options: []
+ options: [
+ { value: 0, label: '鍚敤' },
+ { value: 1, label: '绂佺敤' }
+ ]
}
],
online: true
@@ -69,50 +83,21 @@
}
},
created() {
- // this.getList()
- // this.getGroupList()
+ this.getList()
},
methods: {
- handleSub() {
- this.$refs.ruleForm.validate((valid) => {
- if (valid) {
- alert('submit!')
- }
- })
- },
- handleEx() { },
- getGroupList() {
- getPlatformGroupList({ queryData: 0, queryType: 0 }).then(res => {
- this.queryFormConfig.formItems[1].options = res.map(i => {
- return {
- value: i.id,
- label: i.name
- }
- })
- // this.queryFormConfig.formItems[1].options.unshift({ value: '', label: '鍏ㄩ儴鏈堝彴缁�' })
- })
- },
getList(page) {
const { pagination, filters } = this
this.loading = true
- platformLogPage({
+ fetchList({
model: {
- ...filters,
- queryStatus: '6,7,8',
- beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
- beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
+ ...filters
},
- sorts: [{ direction: 'DESC', property: 'param1' }],
capacity: pagination.pageSize,
page: page || pagination.page,
}).then(res => {
this.loading = false
this.list = res.records || []
- this.list.forEach(item => {
- item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
- item.taskOrigin = 'WMS鑾峰彇'
- item.workTime = dayjs.duration(item.param3, 'seconds').format('H鏃秏鍒唖绉�')
- })
this.pagination.total = res.total || 0
}, () => {
this.loading = false
@@ -124,6 +109,26 @@
this.pagination.page = 1
this.getList()
},
+ changeStatus(e, row) {
+ updateStatusById({ id: row.id, status: e })
+ .then(res => {
+ this.getList()
+ })
+ },
+ dele(id) {
+ this.$confirm('鏄惁纭鍒犻櫎璇ヤ粨搴�?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteById(id)
+ .then(res => {
+ this.getList()
+ })
+ }).catch(() => {
+
+ });
+ },
handleSizeChange(capacity) {
this.pagination.pageSize = capacity
this.getList()
diff --git a/admin/src/views/stock/assetCate.vue b/admin/src/views/stock/assetCate.vue
index 375678f..cfa31b6 100644
--- a/admin/src/views/stock/assetCate.vue
+++ b/admin/src/views/stock/assetCate.vue
@@ -1,16 +1,13 @@
<template>
<TableLayout>
<template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
- v-permissions="['business:category:create']">鏂板缓</el-button></li>
- <li v-permissions="['business:category:exportExcel']"><el-button type="primary"
- @click="exportExcel">瀵煎嚭</el-button></li>
+ <ul class="toolbar">
+ <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="exportExcel">瀵煎嚭</el-button></li>
</ul>
<el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search"
:data="dataList" stripe @selection-change="handleSelectionChange">
<el-table-column prop="name" label="璧勪骇鍒嗙被" min-width="100px"></el-table-column>
- <!-- <el-table-column prop="parentName" label="鎵�灞炲垎绫�" min-width="100px"></el-table-column> -->
<el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
<el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])" label="鎿嶄綔"
min-width="120" fixed="right">
@@ -46,6 +43,9 @@
filters: {
parentId: ''
},
+ form: {
+ type: 7
+ },
isShowEdit: false,
loading: false,
pagination: {
@@ -58,7 +58,7 @@
},
created() {
this.config({
- module: '杞﹁締淇℃伅琛�',
+ module: '鍒嗙被淇℃伅琛�',
api: '/business/category',
'field.id': 'id',
'field.main': 'id'
@@ -93,7 +93,7 @@
const { pagination, filters } = this
this.loading = true
fetchList({
- model: { ...filters, type: 5 },
+ model: { ...filters, type: 7 },
capacity: pagination.pageSize,
page: pagination.page,
}).then(res => {
diff --git a/admin/src/views/stock/assetList.vue b/admin/src/views/stock/assetList.vue
index b3b5894..1b28a25 100644
--- a/admin/src/views/stock/assetList.vue
+++ b/admin/src/views/stock/assetList.vue
@@ -7,19 +7,30 @@
<el-button>瀵煎叆</el-button>
</div>
<el-table v-loading="loading" :data="list" stripe>
- <el-table-column prop="platformName" label="璧勪骇缂栫爜" min-width="100" show-overflow-tooltip />
- <el-table-column prop="platformGroupName" label="璧勪骇鍚嶇О" min-width="100" show-overflow-tooltip />
- <el-table-column prop="carCodeFront" label="鏉$爜" min-width="100" show-overflow-tooltip />
- <el-table-column prop="carCodeBack" label="鍝佺墝" min-width="100" show-overflow-tooltip />
- <el-table-column prop="param1" label="瑙勬牸鍨嬪彿" min-width="100" show-overflow-tooltip />
- <el-table-column prop="param2" label="鍗曚綅" min-width="70" show-overflow-tooltip />
- <el-table-column prop="param2" label="瀹夊叏搴撳瓨(涓嬮檺)" min-width="120" show-overflow-tooltip />
- <el-table-column prop="param2" label="瀹夊叏搴撳瓨(涓婇檺)" min-width="120" show-overflow-tooltip />
- <el-table-column prop="param2" label="鐘舵��" min-width="80" show-overflow-tooltip />
+ <el-table-column prop="code" label="璧勪骇缂栫爜" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="name" label="璧勪骇鍚嶇О" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="qrcode" label="鏉$爜" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="brand" label="鍝佺墝" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="attr" label="瑙勬牸鍨嬪彿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="unitName" label="鍗曚綅" min-width="70" show-overflow-tooltip />
+ <el-table-column prop="minStock" label="瀹夊叏搴撳瓨(涓嬮檺)" min-width="120" show-overflow-tooltip />
+ <el-table-column prop="maxStock" label="瀹夊叏搴撳瓨(涓婇檺)" min-width="120" show-overflow-tooltip />
+ <el-table-column label="鐘舵��" min-width="80">
+ <template v-slot="{ row }">
+ <el-switch
+ v-model="row.status"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ @change="changeStatus($event, row)"
+ :active-value="0"
+ :inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
<el-table-column prop="workTime" label="鎿嶄綔" min-width="100" show-overflow-tooltip>
<template v-slot="{ row }">
- <span class="primaryColor pointer">缂栬緫</span>
- <span class="red pointer">鍒犻櫎</span>
+ <el-button type="text" @click="$refs.newMaterial.open('缂栬緫鐗╂枡', {...row, cateArr: [row.parentCateId, row.cateId] })">缂栬緫</el-button>
+ <el-button type="text" @click="dele(row.id)">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
@@ -37,7 +48,7 @@
import dayjs from 'dayjs'
import duration from 'dayjs/plugin/duration'
dayjs.extend(duration)
-import { platformLogPage, getPlatformGroupList } from '@/api'
+import { fetchList, updateStatus, deleteById } from '@/api/ywMaterial'
export default {
components: {
Pagination,
@@ -58,77 +69,61 @@
queryFormConfig: {
formItems: [
{
- filed: 'carCodeFront',
+ filed: 'code',
type: 'input',
- label: '璧勪骇淇℃伅',
- placeholder: '璇疯緭鍏ヨ祫浜у悕绉�/缂栫爜'
+ label: '鍚嶇О/缂栫爜',
+ placeholder: '璇疯緭鍏ュ悕绉�/缂栫爜'
},
{
- filed: 'carCodeFront',
+ filed: 'attr',
type: 'input',
label: '瑙勬牸鍨嬪彿',
- },
- {
- filed: 'platformGroupId',
- type: 'select',
- label: '鎵�灞為」鐩�',
- options: []
}
- ],
- online: true
+ ]
}
}
},
created() {
- // this.getList()
- // this.getGroupList()
+ this.getList()
},
methods: {
- handleSub() {
- this.$refs.ruleForm.validate((valid) => {
- if (valid) {
- alert('submit!')
- }
- })
- },
- handleEx() { },
- getGroupList() {
- getPlatformGroupList({ queryData: 0, queryType: 0 }).then(res => {
- this.queryFormConfig.formItems[1].options = res.map(i => {
- return {
- value: i.id,
- label: i.name
- }
- })
- // this.queryFormConfig.formItems[1].options.unshift({ value: '', label: '鍏ㄩ儴鏈堝彴缁�' })
- })
- },
getList(page) {
const { pagination, filters } = this
this.loading = true
- platformLogPage({
+ fetchList({
model: {
- ...filters,
- queryStatus: '6,7,8',
- beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
- beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
+ ...filters
},
- sorts: [{ direction: 'DESC', property: 'param1' }],
capacity: pagination.pageSize,
page: page || pagination.page,
}).then(res => {
this.loading = false
this.list = res.records || []
- this.list.forEach(item => {
- item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
- item.taskOrigin = 'WMS鑾峰彇'
- item.workTime = dayjs.duration(item.param3, 'seconds').format('H鏃秏鍒唖绉�')
- })
this.pagination.total = res.total || 0
}, () => {
this.loading = false
})
},
+ dele(id) {
+ this.$confirm('鏄惁纭鍒犻櫎璇ョ墿鏂�?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteById(id)
+ .then(res => {
+ this.getList()
+ })
+ }).catch(() => {
+
+ });
+ },
+ changeStatus(e, row) {
+ updateStatus({ id: row.id, status: e })
+ .then(res => {
+ this.getList()
+ })
+ },
clear() {
this.filters = {}
this.pagination.pageSize = 10
diff --git a/admin/src/views/stock/components/CateEdit.vue b/admin/src/views/stock/components/CateEdit.vue
index a066862..6ca3043 100644
--- a/admin/src/views/stock/components/CateEdit.vue
+++ b/admin/src/views/stock/components/CateEdit.vue
@@ -1,8 +1,13 @@
<template>
- <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @confirm="confirm">
+ <GlobalWindow
+ :title="title"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ width="600px"
+ @confirm="confirm">
<el-form :model="form" ref="form" :rules="rules">
<el-form-item label="鍒嗙被鍚嶇О" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" v-trim />
+ <el-input v-model="form.name" maxlength="30" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" v-trim />
</el-form-item>
<el-form-item label="鎵�灞炲垎绫�" prop="parentId">
<el-select :disabled="form.id" v-model="form.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
@@ -19,7 +24,7 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
-import { create, fetchCateList, getInfoById } from '@/api/business/category.js'
+import { fetchCateList, getInfoById } from '@/api/business/category.js'
export default {
name: 'OperaCategoryWindow',
extends: BaseOpera,
@@ -33,7 +38,7 @@
remark: '',
status: '',
sortnum: '',
- type: 5
+ type: 7
},
// 楠岃瘉瑙勫垯
rules: {
@@ -55,14 +60,9 @@
},
methods: {
getList() {
- fetchCateList({ type: 5 }).then(res => {
+ fetchCateList({ type: 7 }).then(res => {
this.dataList = res || []
-
})
- },
- close() {
- this.visible = false
- this.$emit('close')
},
getDetail(id) {
getInfoById(id).then(res => {
diff --git a/admin/src/views/stock/components/newMaterial.vue b/admin/src/views/stock/components/newMaterial.vue
index 519bf22..8557f6c 100644
--- a/admin/src/views/stock/components/newMaterial.vue
+++ b/admin/src/views/stock/components/newMaterial.vue
@@ -9,67 +9,47 @@
<div class="main_content">
<el-form :model="form" label-position="top" ref="form" :rules="rules">
<div class="list">
- <el-form-item label="鐗╂枡缂栫爜" prop="contractId">
- <el-input v-model="form.renterName" placeholder="涓嶈緭鍏ョ郴缁熶細鑷姩缂栫爜" v-trim />
+ <el-form-item label="鐗╂枡缂栫爜" prop="code">
+ <el-input v-model="form.code" placeholder="涓嶈緭鍏ョ郴缁熶細鑷姩缂栫爜" v-trim />
</el-form-item>
- <el-form-item label="鐗╂枡鍚嶇О" prop="renterName">
- <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+ <el-form-item label="鐗╂枡鍚嶇О" prop="name">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="鐗╂枡鍒嗙被" prop="ywContractRoomList">
- <el-select v-model="form.ywContractRoomList" placeholder="璇烽�夋嫨">
- <el-option
- v-for="(item, index) in houseList"
- :key="index"
- :value="item.id"
- :label="item.projectName + item.buildingName + item.floorName + item.roomName" />
- </el-select>
+ <el-form-item label="鐗╂枡鍒嗙被" prop="cateArr">
+ <el-cascader
+ v-model="form.cateArr"
+ :options="cateList"
+ @change="getCateVal"
+ :props="{ label: 'name', value: 'id', children: 'childCategoryList' }"
+ placeholder="璇烽�夋嫨" />
</el-form-item>
- <el-form-item label="鏉$爜" prop="costType">
- <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+ <el-form-item label="鏉$爜" prop="qrcode">
+ <el-input v-model="form.qrcode" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="鍝佺墝" prop="date">
- <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+ <el-form-item label="鍝佺墝" prop="brand">
+ <el-input v-model="form.brand" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="瑙勬牸鍨嬪彿" prop="totleFee">
- <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+ <el-form-item label="瑙勬牸鍨嬪彿" prop="attr">
+ <el-input v-model="form.attr" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="瀹夊叏搴撳瓨锛堜笅闄愶級" prop="planPayDate">
- <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+ <el-form-item label="瀹夊叏搴撳瓨锛堜笅闄愶級" prop="minStock">
+ <el-input v-model="form.minStock" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="瀹夊叏搴撳瓨锛堜笂闄愶級" prop="companyId">
- <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+ <el-form-item label="瀹夊叏搴撳瓨锛堜笂闄愶級" prop="maxStock">
+ <el-input v-model="form.maxStock" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="鍗曚綅" prop="companyId">
- <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+ <el-form-item label="鍗曚綅" prop="unitName">
+ <el-input v-model="form.unitName" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="鎵�灞為」鐩�" prop="companyId">
- <el-select v-model="form.ywContractRoomList" placeholder="璇烽�夋嫨">
- <el-option
- v-for="(item, index) in houseList"
- :key="index"
- :value="item.id"
- :label="item.projectName + item.buildingName + item.floorName + item.roomName" />
- </el-select>
- </el-form-item>
- <el-form-item label="鎵�灞炴埧婧�" prop="companyId">
- <el-select v-model="form.ywContractRoomList" placeholder="璇烽�夋嫨">
- <el-option
- v-for="(item, index) in houseList"
- :key="index"
- :value="item.id"
- :label="item.projectName + item.buildingName + item.floorName + item.roomName" />
- </el-select>
- </el-form-item>
- <el-form-item label="鐗╂枡鐓х墖" prop="companyId">
+ <el-form-item label="鐗╂枡鐓х墖" prop="multifile">
<el-upload
- class="upload-demo"
- :show-file-list="false"
- :data="uploadData"
:action="uploadImgUrl"
+ :file-list="fileList"
+ :data="uploadData"
+ list-type="picture-card"
:on-success="uploadAvatarSuccess"
- :before-upload="beforeUpload"
- :on-error="uploadError">
- <el-button icon="el-icon-plus" plain>涓婁紶</el-button>
+ :on-remove="dele">
+ <i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
<el-form-item style="width: 100%;" label="澶囨敞" prop="remark">
@@ -85,6 +65,7 @@
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
+ import { fetchList } from '@/api/business/category.js'
export default {
name: 'newMaterial',
components: {
@@ -92,68 +73,103 @@
},
extends: BaseOpera,
data () {
+ var validateCateArr = (rule, value, callback) => {
+ if (value.length === 0) {
+ callback(new Error('璇烽�夋嫨鐗╂枡鍒嗙被'));
+ } else {
+ callback();
+ }
+ };
return {
form: {
- contractId: '',
- renterName: '',
- renterId: '',
- costType: '',
- type: '',
- companyId: '',
+ id: null,
+ code: '',
+ name: '',
+ parentCateId: '',
+ cateId: '',
+ cateArr: [],
+ multifile: {},
remark: '',
- startDate: '',
- endDate: '',
- totleFee: '',
- planPayDate: '',
- multifileList: [],
- ywContractRoomList: [],
- date: [],
- RoomName: ''
+ unitName: '',
+ maxStock: '',
+ minStock: '',
+ attr: '',
+ brand: '',
+ qrcode: ''
},
- rules: [],
- loadingInstance: null,
+ rules: {
+ name: [
+ { required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉�', trigger: 'blur' }
+ ],
+ cateArr: [
+ { required: true, validator: validateCateArr, trigger: 'blur' }
+ ],
+ qrcode: [
+ { required: true, message: '璇疯緭鍏ユ潯鐮�', trigger: 'blur' }
+ ]
+ },
+ cateList: [],
uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
fileList: [],
uploadData: {
- folder: 'YW_CONTRACT_BILL'
- },
+ folder: 'YW_MATERIAL'
+ }
}
+ },
+ created () {
+ this.config({
+ api: '/ywMaterial'
+ })
},
methods: {
open (title, target) {
this.title = title
+ this.fileList = []
this.visible = true
- },
- dele (imgaddr) {
- this.form.multifileList.forEach((item, index) => {
- if (imgaddr === item.imgaddr) {
- this.form.multifileList.splice(index, 1)
+ this.getCategry()
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ if (this.form.multifile) {
+ this.fileList = [
+ { url: this.form.multifile.fileurlFull, ...this.form.multifile }
+ ]
}
})
},
- beforeUpload (file) {
- this.loadingInstance = Loading.service({
- lock: true,
- text: 'Loading',
- spinner: 'el-icon-loading',
- background: 'rgba(0, 0, 0, 0.7)'
+ getCateVal(e) {
+ this.form.parentCateId = e[0]
+ this.form.cateId = e[1]
+ },
+ getCategry() {
+ fetchList({
+ capacity: 1000,
+ model: {
+ type: 7
+ },
+ page: 1
+ }).then(res => {
+ this.cateList = res.records
})
},
- uploadError () {
- this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
- if (this.loadingInstance) {
- this.loadingInstance.close()
- }
- })
+ dele (e) {
+ this.fileList = []
+ this.form.multifile = {}
},
uploadAvatarSuccess (file) {
- this.$nextTick(() => {
- if (this.loadingInstance) {
- this.loadingInstance.close()
- }
- })
const item = file.data[0]
- this.form.multifileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() })
+ this.fileList.push({ ...item, fileurl: item.imgaddr, name: item.originname })
+ this.form.multifile = { ...item, fileurl: item.imgaddr, name: item.originname }
}
}
}
diff --git a/admin/src/views/stock/components/newWarehouse.vue b/admin/src/views/stock/components/newWarehouse.vue
index 70386ad..e2f076b 100644
--- a/admin/src/views/stock/components/newWarehouse.vue
+++ b/admin/src/views/stock/components/newWarehouse.vue
@@ -9,30 +9,33 @@
<el-form-item label="浠撳簱鍚嶇О" prop="name">
<el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="鎵�鍦ㄤ綅缃�" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim />
+ <el-form-item label="鎵�鍦ㄤ綅缃�" prop="position">
+ <el-input v-model="form.position" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="璐熻矗浜�" prop="name">
- <el-select v-model="form.name" placeholder="璇烽�夋嫨">
- <el-option label="寮犱笁" :value="1"></el-option>
- <el-option label="鏉庡洓" :value="1"></el-option>
- <el-option label="鐜嬩簩" :value="1"></el-option>
+ <el-form-item label="璐熻矗浜�" prop="userId">
+ <el-select v-model="form.userId" filterable placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in userList"
+ :key="item.id"
+ :label="item.realname"
+ :value="item.id">
+ </el-option>
</el-select>
</el-form-item>
- <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim />
+ <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+ <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim />
</el-form-item>
- <el-form-item label="鐘舵��" prop="name">
+ <el-form-item label="鐘舵��" prop="status">
<el-switch
- v-model="form.name"
+ v-model="form.status"
active-color="#13ce66"
inactive-color="#ff4949"
- active-value="100"
- inactive-value="0">
+ :active-value="0"
+ :inactive-value="1">
</el-switch>
</el-form-item>
- <el-form-item label="澶囨敞" prop="name">
- <el-input v-model="form.name" type="textarea" :autosize="{ minRows: 2, maxRows: 4}" placeholder="璇疯緭鍏�" v-trim />
+ <el-form-item label="澶囨敞" prop="remark">
+ <el-input v-model="form.remark" type="textarea" :autosize="{ minRows: 2, maxRows: 4}" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
</el-form>
</GlobalWindow>
@@ -41,6 +44,7 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+ import { getUserList } from '@/api/system/user'
export default {
name: 'newWarehouse',
extends: BaseOpera,
@@ -51,18 +55,32 @@
form: {
id: '',
name: '',
+ position: '',
+ userId: '',
+ sortnum: '',
+ remark: '',
+ status: 0
},
// 楠岃瘉瑙勫垯
rules: {
- name: [{ required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' }]
+ name: [{ required: true, message: '浠撳簱鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' }]
},
+ userList: []
}
},
created() {
this.config({
- api: '/project/ywProject',
- 'field.id': 'id'
+ api: '/ywWarehouse'
})
+ this.getUser()
+ },
+ methods: {
+ getUser() {
+ getUserList({})
+ .then(res => {
+ this.userList = res
+ })
+ }
}
}
</script>
--
Gitblit v1.9.3