detection-business/pages/manage/informationAdd.vue
2024-12-17 16:07:08 +08:00

456 lines
9.4 KiB
Vue

<!-- 发起订单 -->
<template>
<view class="content">
<view class="c-top">
<view class="" @click="getback()">
<uni-icons type="left" size="18"></uni-icons>
</view>
<view class="c-title" v-if="type == 'add'">新增设备</view>
<view class="c-title" v-if="type == 'edit'">编辑设备</view>
<view class=""></view>
</view>
<view class="dil">
<view class="tinput">
<view class="text1">
<text class="hong1">*</text>
设备名称
</view>
<view class="you">
<input type="text" placeholder="请输入设备名称" v-model="box.equName">
</view>
</view>
<view class="tinput">
<view class="text1">
<text class="hong1">*</text>
设备型号
</view>
<view class="you">
<input type="text" placeholder="请输入设备型号" v-model="box.equModel">
</view>
</view>
<view class="tinput">
<view class="text1">
<text class="hong1">*</text>
设备编号
</view>
<view class="you">
<input type="text" placeholder="请输入设备编号" v-model="box.equNumber">
</view>
</view>
<view class="tinput" @click="typeShow = true">
<view class="text1">
设备类别
</view>
<view class="you">
<input type="text" placeholder="请选择设备类别" v-model="typeName">
</view>
</view>
<view class="tinput">
<view class="text1">
<text class="hong1">*</text>
设备检定周期
</view>
<view class="you">
<input type="text" placeholder="请输入设备检定周期" v-model="box.equZq">
</view>
</view>
<view class="tinput">
<view class="text1">
<text class="hong1">*</text>
上次检定单位
</view>
<view class="you">
<input type="text" placeholder="请输入上次检定单位" v-model="box.lastUnit">
</view>
</view>
<view class="tinput">
<view class="text1">
<text class="hong1">*</text>
有效期
</view>
<!-- validTime -->
<view class="you" @click="show = true ">
<text>{{ time || '' }}</text>
</view>
</view>
<view class="tinput">
<view class="text1">
<text class="hong1">*</text>
下次检定时间
</view>
<!-- nextCheckTime -->
<view class="you" @click="show1 = true ">
<text>{{ time1 || '' }}</text>
</view>
</view>
<u-datetime-picker
:show="show"
v-model="box.validTime"
@cancel="cancels"
@confirm="confirms"
mode="date"
return-type='string'
></u-datetime-picker>
<u-datetime-picker
:show="show1"
v-model="box.nextCheckTime"
@cancel="cancels1"
@confirm="confirms1"
mode="date"
return-type='string'
></u-datetime-picker>
<u-picker :show="typeShow" :columns="columns" @confirm="confirmsType" @cancel="typeShow = false"
keyName="label"></u-picker>
<view class="anniu" @click="getnewsadd()">
<text>保存</text>
</view>
<view style="width: 100%; height: 60px;"></view>
</view>
</view>
</template>
<script>
import request from '../../utils/request'
import config from '@/config'
import {getToken} from '@/utils/auth'
import upload from '@/utils/upload.js'
import {getDictDataByType} from "../../utils/utils";
var wvCurrent;
export default {
data() {
return {
time: '请选择有效期',
time1: '请选择下次检定时间',
value1: '2023-10-10',
baseUrl: this.$baseUrl,
show: false,
show1: false,
fileId: null,
id: '',
type: 'add',
box: {},
typeShow: false,
columns: [],
typeName: null,
}
},
onLoad(option) {
this.type = option.type
if (option.type == 'edit') {
this.box.id = option.id
}
this.getInsType()
},
onShow() {
if (this.type == 'edit') this.getDetail();
},
methods: {
confirmsType(e){
console.log(e)
this.box.type = e.value[0].value
this.typeName = e.value[0].label
this.typeShow = false
},
getInsType(){
if (!this.columns || this.columns.length === 0){
this.columns = [getDictDataByType("ins_equ_type")]
}
console.log(this.columns)
},
async getDetail() {
let res = await request({
url: '/system/equInfo/' + this.box.id,
method: 'get'
})
if (res.code == 200) {
this.box = res.data
// this.maneizhi = this.box.type
this.time = this.box.validTime
this.time1 = this.box.nextCheckTime
}
if (this.box.type){
const data = this.columns[0]
const index = data.findIndex(item => item.value === this.box.type)
if (index !== -1){
this.typeName = data[index].label
}
}
},
cancels() {
this.show = false
},
cancels1() {
this.show1 = false
},
confirms(e) {
var timestamp = e.value;
var date = new Date(timestamp);
var year = date.getFullYear();
var month = ("0" + (date.getMonth() + 1)).slice(-2);
var day = ("0" + date.getDate()).slice(-2);
var formattedDate = year + "-" + month + "-" + day;
this.box.validTime = formattedDate
this.time = formattedDate
this.show = false
},
confirms1(e) {
var timestamp = e.value;
var date = new Date(timestamp);
var year = date.getFullYear();
var month = ("0" + (date.getMonth() + 1)).slice(-2);
var day = ("0" + date.getDate()).slice(-2);
var formattedDate = year + "-" + month + "-" + day;
this.box.nextCheckTime = formattedDate
this.time1 = formattedDate
this.show1 = false
},
//发布按钮
async getnewsadd() {
// if(this.box.filePath==''||this.box.fileName==''||this.box.warnTime==''){
// uni.showToast({
// title:'必填项不能有空!',
// icon:'none'
// })
if (this.type == 'add') {
let res = await request({
url: '/system/equInfo/add',
method: 'post',
data: this.box
})
if (res.code == 200) {
uni.showToast({
title: '发布成功'
})
setTimeout(() => {
uni.navigateBack({
delta: 1
});
}, 1000);
}
}
if (this.type == 'edit') {
let res = await request({
url: '/system/equInfo/edit',
method: 'post',
data: this.box
})
if (res.code == 200) {
uni.showToast({
title: '发布成功'
})
setTimeout(() => {
uni.navigateBack({
delta: 1
});
}, 1000);
}
}
},
getback() {
uni.navigateBack({
delta: 1,
})
},
}
}
</script>
<style scoped lang="scss">
.content {
width: 100%;
height: calc(100vh);
background-color: #F6F6F6;
box-sizing: border-box;
// padding-top: 45px;
}
.dil {
box-sizing: border-box;
background-color: #F6F6F6;
padding: 0px 12px;
}
.top-icon {
margin-bottom: 45px;
}
.c-top {
width: 100%;
box-sizing: border-box;
padding: 15px;
display: flex;
justify-content: space-between;
align-items: center;
background-color: white;
padding-top: 40px;
}
.c-title {
font-size: 18px;
font-weight: bold
}
.top {
box-sizing: border-box;
padding: 0px 15px;
width: 100%;
background-color: white;
}
.top-box {
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
padding: 20px 0px;
}
.tb-left {
height: 100%;
width: 80%;
display: flex;
align-items: center;
}
.uicon {
width: 18px;
height: 18px;
border-radius: 4px;
color: white;
background: orangered;
display: flex;
justify-content: center;
align-items: center;
font-size: 12px;
font-weight: bold;
margin-right: 6px;
}
.tb-right {
width: 20px;
height: 26px;
image {
width: 100%;
height: 100%;
}
}
.text1 {
font-size: 16px;
font-weight: bold;
color: #363636;
}
.hong1 {
margin-top: 5px;
font-size: 12px;
font-weight: 400;
color: #FF5453;
}
.hong2 {
margin-top: 5px;
font-size: 12px;
font-weight: 400;
}
.tinput {
width: 100%;
display: flex;
background: white;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 16px;
margin-top: 14px;
margin-bottom: 14px;
}
.xinput {
width: 100%;
background: white;
box-sizing: border-box;
padding: 16px;
margin-top: 14px;
}
.you {
text-align: right;
}
.xz {
margin-top: 10px;
display: flex;
align-items: center;
}
.kuang {
width: 80px;
height: 23px;
background: #ECECEC;
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
color: #666666;
font-size: 14px;
margin-right: 15px;
}
.xlan {
background: #CDE7FF !important;
color: #1D62FF !important;
border: 1px solid #2A96FE;
}
.anniu {
width: 100%;
background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%);
border-radius: 50px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
color: #542F0E;
margin-top: 20px;
color: white;
}
button::after {
border: none;
}
</style>