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.
330 lines
8.9 KiB
330 lines
8.9 KiB
<template> |
|
<view class="add"> |
|
<!-- 设备详情信息 --> |
|
<view class="main"> |
|
<u--form labelPosition="left" labelAlign="center" :model="form" ref="form1"> |
|
<u-form-item label="设备名称" prop="equipName" labelWidth="auto" borderBottom @click="showSb()"> |
|
<u--input v-model="form.equipName" border="none" placeholder="请选择设备" readonly></u--input> |
|
<u-icon slot="right" name="arrow-right"></u-icon> |
|
<u-picker :show="showName" :columns="columns" keyName="name" @cancel='showName=false' @confirm='confirm'></u-picker> |
|
</u-form-item> |
|
<u-form-item label="设备编号" prop="equipNo" labelWidth="auto" borderBottom> |
|
<u--input v-model="form.equipNo" border="none" readonly></u--input> |
|
</u-form-item> |
|
<u-form-item label="供应商" prop="supplierName" labelWidth="auto" borderBottom> |
|
<u--input v-model="form.supplierName" border="none" readonly></u--input> |
|
</u-form-item> |
|
<u-form-item label="采购数量" prop="num" labelWidth="auto" borderBottom> |
|
<u--input v-model="form.num" type="number" border="none" placeholder="请输入采购数量" |
|
:readonly="form.id!=null"></u--input> |
|
</u-form-item> |
|
<u-form-item label="采购价格" prop="price" labelWidth="auto" borderBottom> |
|
<u--input v-model="form.price" border="none" type="number" placeholder="请输入采购价格" |
|
:readonly="form.id!=null"> |
|
</u--input> |
|
</u-form-item> |
|
|
|
<u-form-item label="生产日期" prop="productionTime" labelWidth="auto" @click="scShow = true; " borderBottom |
|
ref="item1" v-if="form.id!=null"> |
|
<u--input v-model="form.productionTime" disabled disabledColor="#ffffff" placeholder="请选择生产日期" |
|
border="none"></u--input> |
|
<u-icon slot="right" name="arrow-right"></u-icon> |
|
<u-datetime-picker :show="scShow" v-model="pickerTime" mode="date" :closeOnClickOverlay="true" |
|
@close="scShow = false" @cancel="scShow = false" @confirm="dateConfirm"></u-datetime-picker> |
|
</u-form-item> |
|
|
|
<u-form-item label="采购日期" prop="purchaseTime" labelWidth="auto" @click="cgShow = true; " borderBottom |
|
ref="item1" v-if="form.id!=null"> |
|
<u--input v-model="form.purchaseTime" disabled disabledColor="#ffffff" placeholder="请选择采购日期" |
|
border="none"></u--input> |
|
<u-icon slot="right" name="arrow-right"></u-icon> |
|
<u-datetime-picker :show="cgShow" v-model="pickerTime" mode="date" :closeOnClickOverlay="true" |
|
@close="cgShow = false" @cancel="cgShow = false" @confirm="date2Confirm"></u-datetime-picker> |
|
</u-form-item> |
|
<u-form-item label="凭证照片" prop="pzImg" labelWidth="auto" borderBottom ref="item1" v-if="form.id!=null"> |
|
<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple |
|
:maxCount="10" :previewFullImage="true"></u-upload> |
|
</u-form-item> |
|
</u--form> |
|
</view> |
|
|
|
<view v-if="form.status!=2 &&form.status!=3"> |
|
<view class="submit" v-if='form.id!=null'> |
|
<u-button type="primary" @click="cgEquip" text="采 购 设 备"></u-button> |
|
</view> |
|
<view class="submit" v-else> |
|
<u-button type="primary" @click="submit" text="添 加 记 录"></u-button> |
|
</view> |
|
</view> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
export default { |
|
|
|
data() { |
|
return { |
|
show: true, |
|
scShow: false, |
|
cgShow: false, |
|
form: { |
|
id: null, |
|
equipNo: null, |
|
equipName: null, |
|
price: null, |
|
supplierId: null, |
|
supplierName: null, |
|
num: null, |
|
// 采购日期 |
|
purchaseTime: null, |
|
// 生产日期 |
|
productionTime: null, |
|
pzImg: null, |
|
batch: null, |
|
inTime: null, |
|
status: null, |
|
}, |
|
pickerTime: Number(new Date()), |
|
showName: false, |
|
deviceList: [], |
|
fileList1: [], |
|
pId: null, |
|
columns: [], |
|
} |
|
}, |
|
|
|
onLoad: function(options) { |
|
if (options.form) { |
|
let data = JSON.parse(options.form); |
|
this.form = data |
|
this.pId = data.id |
|
this.getVoucherList(); |
|
} |
|
}, |
|
onShow: function() { |
|
this.getList() |
|
|
|
}, |
|
created() {}, |
|
methods: { |
|
async getVoucherList() { |
|
const { |
|
data: res |
|
} = await this.$http('/app/voucherList', { |
|
pId: this.pId + '' |
|
}) |
|
if (res.code) return |
|
for (var i = 0; i < res.data.length; i++) { |
|
this.fileList1.push({ |
|
id: res.data[i].id, |
|
url: res.data[i].img |
|
}) |
|
} |
|
}, |
|
async getList() { |
|
const { |
|
data: res |
|
} = await this.$http('/app/equipList') |
|
if (res.code) return |
|
this.deviceList = res.data |
|
this.columns.push(this.deviceList) |
|
}, |
|
confirm(d){ |
|
this.form.equipName = d.value[0].name |
|
this.form.equipNo = d.value[0].eno |
|
this.form.supplierId = d.value[0].supplierId |
|
this.form.supplierName = d.value[0].supplierName |
|
this.showName = false; |
|
}, |
|
// 采购设备 |
|
async cgEquip() { |
|
let flag = true; |
|
if(this.form.purchaseTime==null || this.form.purchaseTime=='' ){ |
|
flag = false; |
|
} |
|
if(this.form.productionTime == null || this.form.productionTime==''){ |
|
flag = false; |
|
} |
|
if(this.fileList1 == null || this.fileList1.length==0){ |
|
flag = false; |
|
} |
|
if(!flag) return uni.showToast({ |
|
title: '请补充采购内容', |
|
icon: 'error' |
|
}) |
|
let url = []; |
|
for (var i = 0; i < this.fileList1.length; i++) { |
|
url.push(this.fileList1[i].url.slice(this.fileList1[i].url.indexOf("/profile"))) |
|
} |
|
this.form.pzImg = url.join(","); |
|
const { |
|
data: res |
|
} = await this.$http('/app/cg', this.form) |
|
if (res.code == 0) { |
|
uni.showToast({ |
|
title: '设备采购成功', |
|
icon: 'success' |
|
}); |
|
this.reset(); |
|
wx.navigateTo({ |
|
url: 'purchase_yg', |
|
}) |
|
} else { |
|
uni.showToast({ |
|
title: "设备采购失败", |
|
icon: 'error' |
|
}) |
|
} |
|
|
|
}, |
|
// 添加采购记录 |
|
async submit() { |
|
let flag = true; |
|
if(this.form.equipName==null || this.form.equipName=='' ){ |
|
flag = false; |
|
} |
|
if(this.form.num == null || this.form.equipName==''){ |
|
flag = false; |
|
} |
|
if(this.form.price == null || this.form.price==''){ |
|
flag = false; |
|
} |
|
if(!flag) return uni.showToast({ |
|
title: '请补充采购内容', |
|
icon: 'error' |
|
}) |
|
const { |
|
data: res |
|
} = await this.$http('/app/addPurchase', this.form) |
|
if (res.code == 0) { |
|
uni.showToast({ |
|
title: '添加成功', |
|
icon: 'success' |
|
}); |
|
this.reset(); |
|
uni.navigateTo({ |
|
url: 'purchase_sg', |
|
}) |
|
} else { |
|
uni.showToast({ |
|
title: "添加失败!", |
|
icon: 'error' |
|
}) |
|
} |
|
|
|
}, |
|
dateConfirm(e) { |
|
const timeFormat = uni.$u.timeFormat |
|
this.scShow = false; |
|
this.form.productionTime = timeFormat(e.value, 'yyyy-mm-dd'); |
|
}, |
|
date2Confirm(e) { |
|
const timeFormat = uni.$u.timeFormat |
|
this.cgShow = false; |
|
this.form.purchaseTime = timeFormat(e.value, 'yyyy-mm-dd'); |
|
}, |
|
showSb(){ |
|
if(this.form.id){ |
|
this.showName = false |
|
}else{ |
|
this.showName = true |
|
} |
|
}, |
|
reset() { |
|
this.form = { |
|
id: null, |
|
equipNo: null, |
|
equipName: null, |
|
price: null, |
|
supplierId: null, |
|
supplierName: null, |
|
num: null, |
|
// 采购日期 |
|
purchaseTime: null, |
|
// 生产日期 |
|
productionTime: null, |
|
pzImg: null, |
|
batch: null, |
|
inTime: null, |
|
} |
|
this.fileList1 = [] |
|
}, |
|
|
|
// 删除图片 |
|
deletePic(event) { |
|
this[`fileList${event.name}`].splice(event.index, 1) |
|
}, |
|
// 新增图片 |
|
async afterRead(event) { |
|
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式 |
|
let lists = [].concat(event.file) |
|
let fileListLen = this[`fileList${event.name}`].length |
|
lists.map((item) => { |
|
this[`fileList${event.name}`].push({ |
|
...item, |
|
status: 'uploading', |
|
message: '上传中' |
|
}) |
|
}) |
|
for (let i = 0; i < lists.length; i++) { |
|
const result = await this.uploadFilePromise(lists[i].url) |
|
let item = this[`fileList${event.name}`][fileListLen] |
|
this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, { |
|
status: 'success', |
|
message: '', |
|
url: result |
|
})) |
|
fileListLen++ |
|
} |
|
}, |
|
uploadFilePromise(url) { |
|
return new Promise((resolve, reject) => { |
|
let a = uni.uploadFile({ |
|
url: this.BASE_URL + '/app/upload', // 仅为示例,非真实的接口地址 |
|
filePath: url, |
|
name: 'file', |
|
success: (res) => { |
|
setTimeout(() => { |
|
let data = JSON.parse(res.data) |
|
console.log(data) |
|
resolve(this.BASE_URL + data.fileName) |
|
}, 1000) |
|
} |
|
}); |
|
}) |
|
}, |
|
|
|
|
|
|
|
} |
|
} |
|
</script> |
|
|
|
<style lang="scss"> |
|
.submit { |
|
margin: 1vh 2.667vw; |
|
} |
|
|
|
.add { |
|
background: #f6f6f6; |
|
padding: 2.667vw; |
|
height: 95vh; |
|
|
|
.main { |
|
background: #ffffff; |
|
margin-bottom: 2.667vw; |
|
padding: 2vw; |
|
border-radius: 8px; |
|
|
|
.u-form-item__body__right { |
|
padding-left: 20vw; |
|
} |
|
|
|
.u-button { |
|
border: none !important; |
|
padding: 0 !important; |
|
justify-content: flex-start; |
|
} |
|
} |
|
} |
|
</style>
|
|
|