You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

522 lines
16 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<xy-dialog ref="dialog" :width='70' :is-show.sync="isShow" type="form" :title="titleName" :form="form"
:rules="rules" @submit="submit">
<template v-slot:wuzibianma>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>物资编码
</div>
<div class="xy-table-item-content">
<el-input v-model="form.wuzibianma" placeholder="请填写物资编码" clearable style="width: 300px;"></el-input>
</div>
</div>
</template>
<template v-slot:zichanmingcheng>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>资产名称:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.zichanmingcheng" placeholder="请填写资产名称" clearable style="width: 300px;"></el-input>
</div>
</div>
</template>
<template v-slot:wuzileixing>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>物资类型:
</div>
<div class="xy-table-item-content">
<el-select :disabled="type==='editor'?true:false" v-model="form.wuzileixing" style="width: 300px;" placeholder="请选择物资类型">
<el-option
v-for="item in lexingList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:guigexinghao>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>规格型号:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.guigexinghao" placeholder="请填写规格型号" clearable style="width: 300px;"></el-input>
</div>
</div>
</template>
<template v-slot:fenlei>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>分类:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.fenlei" placeholder="请填写分类" clearable style="width: 300px;"></el-input>
</div>
</div>
</template>
<!-- <template v-slot:zhuangtai>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>状态:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.zhuangtai" placeholder="请填写状态" clearable style="width: 300px;"></el-input>
</div>
</div>
</template> -->
<template v-slot:jiliangdanwei>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>计量单位:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.jiliangdanwei" placeholder="请填写计量单位" clearable style="width: 300px;"></el-input>
</div>
</div>
</template>
<template v-slot:suozaicangku_id>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>所在仓库:
</div>
<div class="xy-table-item-content">
<el-select v-model="form.suozaicangku_id" style="width: 300px;" placeholder="请选择所在仓库">
<el-option
v-for="item in cangkuList"
:key="item.id"
:label="item.cangkumingcheng"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<!-- <template v-slot:suozaihuojia>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>所在货架:
</div>
<div class="xy-table-item-content">
<el-select v-model="form.suozaihuojia" style="width: 300px;" placeholder="请选择所在货架">
<el-option
v-for="item in huojiaList"
:key="item.huojiamingcheng"
:label="item.huojiamingcheng"
:value="item.huojiamingcheng">
</el-option>
</el-select>
</div>
</div>
</template> -->
<template v-slot:rukushijian>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>入库时间:
</div>
<div class="xy-table-item-content">
<el-date-picker style="width: 300px;" v-model="form.rukushijian" type="date" placeholder="选择入库时间"
value-format="yyyy-MM-dd">
</el-date-picker>
</div>
</div>
</template>
<!-- <template v-slot:zichanyuanzhi>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>资产原值:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.zichanyuanzhi" placeholder="请填写资产原值" clearable style="width: 300px;"></el-input>
</div>
</div>
</template> -->
<template v-slot:shiyongnianxian>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>使用年限:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.shiyongnianxian" placeholder="请填写使用年限" clearable style="width: 300px;"></el-input>
</div>
</div>
</template>
<!-- <template v-slot:shiyongbumen>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>使用部门:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.shiyongbumen" placeholder="请填写使用部门" clearable style="width: 300px;"></el-input>
</div>
</div>
</template> -->
<template v-slot:shifouweigudingzichan>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>是否为固定资产:
</div>
<div class="xy-table-item-content">
<el-select v-model="form.shifouweigudingzichan" style="width: 300px;" placeholder="请选择是否为固定资产">
<el-option
v-for="item in isGuding"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:gudingzichanbianma v-if="form.shifouweigudingzichan==='是'">
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>固定资产编码:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.gudingzichanbianma" placeholder="请填写固定资产编码" clearable style="width: 300px;"></el-input>
</div>
</div>
</template>
<template v-slot:jishuziliao v-if="form.shifouweigudingzichan==='是'">
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>技术资料:
</div>
<div class="xy-table-item-content">
<el-upload
class="upload-demo"
:action="action"
:on-success="handleSuccess"
:on-remove="handleRemove"
multiple
:limit="10"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件且不超过500kb</div>
</el-upload>
</div>
</div>
</template>
<template v-slot:beizhu>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>备注:
</div>
<div class="xy-table-item-content">
<el-input type="textarea" v-model="form.beizhu" placeholder="请输入备注" clearable
style="width: 300px;"></el-input>
</div>
</div>
</template>
</xy-dialog>
</div>
</template>
<script>
import {
save,
index,
show
} from "@/api/system/baseForm.js"
import {
getWzbm
} from "@/api/mater.js"
import {
Message
} from 'element-ui'
export default {
data() {
return {
isShow: false,
type: 'add',
id: '',
webType:'',
titleName: '',
action:`${process.env.VUE_APP_UPLOAD_API}`,
fileList:[],
tableName: 'material_infos',
cangkuList:[],
huojiaList:[],
isGuding: [{
label: '是',
value: '是'
}, {
label: '否',
value: '否'
}],
lexingList:[{
label: '一类一码',
value: '一类一码'
}, {
label: '一物一码',
value: '一物一码'
}],
form: {
wuzibianma:'',
zichanmingcheng:'',
wuzileixing:'',
guigexinghao:'',
fenlei:'',
zhuangtai:'',
jiliangdanwei:'',
suozaicangku:'',
suozaicangku_id:'',
suozaihuojia:'',
rukushijian:'',
zichanyuanzhi:'',
shiyongnianxian:'',
shiyongbumen:'',
shifouweigudingzichan:'',
gudingzichanbianma:'',
jishuziliao:[],
beizhu:''
},
rules: {
wuzibianma: [{
required: true,
message: '请输入物资编码'
}],
zichanmingcheng: [{
required: true,
message: '请输入资产名称'
}],
wuzileixing: [{
required: true,
message: '请输入物资类型'
}]
}
}
},
created() {
this.getCangku()
this.getHuojia()
},
methods: {
// 获取物资编码
async getWzbms(){
const res = await getWzbm()
this.form.wuzibianma = res
},
async getHuojia() {
let res = await index({
page_size: 999,
page: 1,
table_name: 'shelfs',
})
this.huojiaList = res.data
},
async getCangku() {
let res = await index({
page_size: 999,
page: 1,
table_name: 'materialstorages',
})
this.cangkuList = res.data
},
async getDetail() {
const res = await show({
id: this.id,
table_name: this.tableName
})
this.form = {
wuzibianma:res?.wuzibianma,
zichanmingcheng:res?.zichanmingcheng,
wuzileixing:res?.wuzileixing,
guigexinghao:res?.guigexinghao,
fenlei:res?.fenlei,
zhuangtai:res?.zhuangtai,
jiliangdanwei:res?.jiliangdanwei,
suozaicangku:res?.suozaicangku,
suozaicangku_id:res.suozaicangku_id?parseInt(res.suozaicangku_id):'',
suozaihuojia:res?.suozaihuojia,
rukushijian:res?.rukushijian,
zichanyuanzhi:res?.zichanyuanzhi,
shiyongnianxian:res?.shiyongnianxian,
shiyongbumen:res?.shiyongbumen,
shifouweigudingzichan:res?.shifouweigudingzichan,
gudingzichanbianma:res?.gudingzichanbianma,
jishuziliao:res?.jishuziliao,
beizhu:res?.beizhu
}
if(res.jishuziliao_upload_details){
for(var j of res.jishuziliao_upload_details){
this.fileList.push({
id:j.id,
name:j.original_name,
url:j.url
})
}
}
},
submit() {
// return
console.log(this.fileList)
this.form.jishuziliao = []
if (this.fileList.length > 0) {
for (var g of this.fileList) {
if (g.response) {
this.form.jishuziliao.push(g.response.id)
} else {
this.form.jishuziliao.push(g.id)
}
}
} else {
this.form.jishuziliao = []
}
// return
if (this.type === 'add') {
save({
table_name: this.tableName,
...this.form
}).then(res => {
Message({
type: 'success',
message: '新增成功'
})
this.isShow = false
this.$emit('refresh')
if(this.webType=='insert'){
this.$emit('insert',this.form)
}
})
return
}
if (this.type === 'editor') {
save({
id: this.id,
table_name: this.tableName,
...this.form
}).then(res => {
Message({
type: 'success',
message: '编辑成功'
})
this.isShow = false
this.$emit('refresh')
})
}
},
handleRemove(file, fileList) {
this.fileList = fileList
},
handleSuccess(response, file, fileList) {
this.fileList = fileList
},
},
watch: {
isShow(newVal) {
if (newVal) {
this.titleName = this.type === 'add' ? `新增物资` : `编辑物资`
if (this.type === 'editor') {
this.getDetail()
}else{
this.getWzbms()
}
// if(this.webType=='insert'){
// console.log("insert")
// }
} else {
this.id = ''
this.type = ''
this.fileList = []
this.webType = ''
this.$refs['dialog'].reset()
}
}
}
}
</script>
<style scoped lang="scss">
.mingxiwrap {
display: flex;
flex-wrap: wrap;
}
.mingxiwrap .xy-table-item {
margin-bottom: 10px
}
.searchCompanys {
display: flex;
justify-content: space-between;
margin-bottom: 15px;
}
::v-deep .searchCompanys .el-input {
width: 82%
}
.xy-table-item-label {
width: 160px;
}
.img__delete {
transform: scale(0.8, 0.8);
position: absolute;
top: 4px;
right: 4px;
}
::v-deep .avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
::v-deep .avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
::v-deep .el-upload--picture-card {
font-size: 28px;
color: #8c939d;
width: 80px !important;
height: 80px !important;
line-height: 80px !important;
text-align: center;
}
::v-deep .avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 80px !important;
height: 80px !important;
line-height: 80px !important;
text-align: center;
}
::v-deep .avatar {
width: 80px !important;
display: block;
border-radius: 6px;
}
::v-deep .xy-table-item-label {
width: 160px !important;
}
::v-deep .el-date-editor .el-range-separator {
width: auto !important;
}
::v-deep .el-input-number .el-input__inner {
text-align: left !important;
}
</style>