zhang_li 11 months ago
parent
commit
fc1cc4abf2
  1. 198
      pages.json
  2. 88
      pages/device/index.vue
  3. 242
      pages/device/screen.vue
  4. 245
      pages/index.vue
  5. 204
      pages/login.vue
  6. 53
      pages/mine/aboutUs.vue
  7. 149
      pages/mine/changePassword.vue
  8. 200
      pages/mine/index.vue
  9. 22
      pages/mold/index.vue
  10. 139
      pages/notaic/index.vue
  11. 94
      pages/spareParts/index.vue
  12. 149
      pages/spareParts/screen.vue
  13. 283
      pages/sparePartsApplication/addForm.vue
  14. 149
      pages/sparePartsApplication/index.vue
  15. 188
      pages/sparePartsApplication/screen.vue
  16. 261
      pages/sparePartsServiceWorkOrderList/addForm.vue
  17. 88
      pages/sparePartsServiceWorkOrderList/index.vue
  18. 211
      pages/sparePartsServiceWorkOrderList/screen.vue
  19. 211
      pages/workOrderList/addForm.vue
  20. 349
      pages/workOrderList/detail.vue
  21. 159
      pages/workOrderList/index.vue
  22. 223
      pages/workOrderList/screen.vue
  23. 181
      pages/workOrderList/transfer.vue

198
pages.json

@ -1,174 +1,42 @@
{ {
"pages": [{ "pages": [{
"path": "pages/login",
"style": {
"navigationStyle": "custom"
}
}, {
"path": "pages/index", "path": "pages/index",
"style": { "style": {
"navigationBarTitleText": "首页", "navigationBarTitleText": "首页"
"navigationStyle": "custom"
}
}, {
"path": "pages/device/index",
"style": {
"navigationBarTitleText": "设备列表",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/device/screen",
"style": {
"navigationBarTitleText": "筛选",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/mold/index",
"style": {
"navigationBarTitleText": "模具"
}
}, {
"path": "pages/spareParts/index",
"style": {
"navigationBarTitleText": "备件",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/mine/index",
"style": {
"navigationBarTitleText": "我的",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/spareParts/screen",
"style": {
"navigationBarTitleText": "筛选",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/sparePartsApplication/index",
"style": {
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/sparePartsApplication/screen",
"style": {
"navigationBarTitleText": "筛选",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/sparePartsApplication/addForm",
"style": {
"navigationBarTitleText": "添加申请",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/sparePartsServiceWorkOrderList/index",
"style": {
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/sparePartsServiceWorkOrderList/screen",
"style": {
"navigationBarTitleText": "筛选",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/sparePartsServiceWorkOrderList/addForm",
"style": {
"navigationBarTitleText": "添加申请",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/notaic/index",
"style": {
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/workOrderList/index",
"style": {
"navigationStyle": "custom"
}
}, {
"path": "pages/workOrderList/screen",
"style": {
"navigationBarTitleText": "筛选",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/workOrderList/addForm",
"style": {
"navigationBarTitleText": "添加报修",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/workOrderList/detail",
"style": {
"navigationBarTitleText": "工单详情",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/mine/aboutUs",
"style": {
"navigationBarTitleText": "关于我们",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/mine/changePassword",
"style": {
"navigationBarTitleText": "修改密码",
"navigationBarBackgroundColor": "#409eff",
"navigationBarTextStyle": "white"
} }
}], }],
"tabBar": { // "tabBar": {
"color": "#8f9bb3", // "color": "#8f9bb3",
"selectedColor": "#409eff", // "selectedColor": "#409eff",
"borderStyle": "white", // "borderStyle": "white",
"backgroundColor": "#ffffff", // "backgroundColor": "#ffffff",
"list": [{ // "list": [{
"pagePath": "pages/index", // "pagePath": "pages/index",
"iconPath": "static/images/tabbar/tab_icon1.png", // "iconPath": "static/images/tabbar/tab_icon1.png",
"selectedIconPath": "static/images/tabbar/tab_act_icon1.png", // "selectedIconPath": "static/images/tabbar/tab_act_icon1.png",
"text": "首页" // "text": "首页"
}, { // }, {
"pagePath": "pages/device/index", // "pagePath": "pages/device/index",
"iconPath": "static/images/tabbar/tab_icon2.png", // "iconPath": "static/images/tabbar/tab_icon2.png",
"selectedIconPath": "static/images/tabbar/tab_act_icon2.png", // "selectedIconPath": "static/images/tabbar/tab_act_icon2.png",
"text": "设备" // "text": "设备"
}, { // }, {
"pagePath": "pages/mold/index", // "pagePath": "pages/mold/index",
"iconPath": "static/images/tabbar/tab_icon3.png", // "iconPath": "static/images/tabbar/tab_icon3.png",
"selectedIconPath": "static/images/tabbar/tab_act_icon3.png", // "selectedIconPath": "static/images/tabbar/tab_act_icon3.png",
"text": "模具" // "text": "模具"
}, { // }, {
"pagePath": "pages/spareParts/index", // "pagePath": "pages/spareParts/index",
"iconPath": "static/images/tabbar/tab_icon4.png", // "iconPath": "static/images/tabbar/tab_icon4.png",
"selectedIconPath": "static/images/tabbar/tab_act_icon4.png", // "selectedIconPath": "static/images/tabbar/tab_act_icon4.png",
"text": "备件" // "text": "备件"
}, { // }, {
"pagePath": "pages/mine/index", // "pagePath": "pages/mine/index",
"iconPath": "static/images/tabbar/tab_icon5.png", // "iconPath": "static/images/tabbar/tab_icon5.png",
"selectedIconPath": "static/images/tabbar/tab_act_icon5.png", // "selectedIconPath": "static/images/tabbar/tab_act_icon5.png",
"text": "我的" // "text": "我的"
}] // }]
}, // },
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"navigationBarTitleText": "RuoYi", "navigationBarTitleText": "RuoYi",

88
pages/device/index.vue

@ -1,88 +0,0 @@
<template>
<!-- 设备 -->
<view class="work-container">
<Search @search='search' @screen='screen'/>
<view class="list">
<view class="item" v-for="index in 6" :key='index'>
<u-image src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png" width='160' height="160">
<template v-slot:error>
<view class="image-error">
<u-icon name="photo" color="#c7c7c7" size="38"></u-icon>
<view style="font-size: 24rpx;">暂无图片</view>
</view>
</template>
</u-image>
<view class="text">
<view class="title">
电梯设备
</view>
<view class="dec1">
SB52225456
</view>
<view class="dec2">
四厂区二楼三车间
</view>
</view>
</view>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
//
search(keyWord) {
console.log(keyWord)
},
//
screen() {
console.log(222)
this.$tab.navigateTo(`/pages/device/screen`)
}
}
}
</script>
<style lang="scss" scoped>
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
.text{
margin-left: 20rpx;
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
}
.image-error{
text-align: center;
}
</style>

242
pages/device/screen.vue

@ -1,242 +0,0 @@
<template>
<!-- 设备 -->
<view class="add-form-container">
<Form :form='form' :data='data' ref="form1"></Form>
<view class="footer">
<view class="btns">
<button class="reset">重置</button>
<button class="sure" @click="submit">确定</button>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</view>
</template>
<script>
import Form from '@/components/form/index.vue'
export default {
components: {
Form
},
data() {
return {
form: {
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'text',
field: 'code',
label: '设备编号',
disabled: false,
required: true,
value: ''
}, {
type: 'text',
field: 'name',
label: '设备名称',
disabled: false,
required: true,
value: ''
}, {
type: 'singleColumn',
field: 'location',
label: '存放位置',
list: [{
label: '位置1',
value: 1
}, {
label: '位置2',
value: 2
}, {
label: '位置3',
value: 3
}]
}, {
type: 'singleColumn',
field: 'type',
label: '设备类型',
list: [{
label: '类型1',
value: 1
}, {
label: '类型2',
value: 2
}, {
label: '类型3',
value: 3
}]
}, {
type: 'singleColumn',
field: 'dept',
label: '所在部门',
list: [{
label: '部门1',
value: 1
}, {
label: '部门2',
value: 2
}, {
label: '部门3',
value: 3
}]
}, {
type: 'singleColumn',
field: 'fuzeren',
label: '负责人',
list: [{
label: '负责人1',
value: 1
}, {
label: '负责人2',
value: 2
}, {
label: '负责人3',
value: 3
}]
}, {
type: 'singleColumn',
field: 'status',
label: '当前状态',
list: [{
label: '全部',
value: 1
}, {
label: '报废',
value: 2
}, {
label: '停用',
value: 3
}, {
label: '故障',
value: 4
}, {
label: '正常运行',
value: 5
}]
}],
rules: {
// name
name: [
{
min: 5,
message: '简介不能少于5个字',
trigger: 'change'
},
// name
{
required: true,
message: '请填写姓名',
trigger: ['change', 'blur']
},
]
}
},
data: {
name: '',
sex: 2,
hobby: [1, 2],
open: true,
duoxuan: 3,
time: '2023-12-12 08:00:00'
}
}
},
methods: {
//
submit() {
console.log('表单数据信息1:', this.data);
this.$refs.form1.$refs.form.validate().then(res => {
console.log('表单数据信息:', res);
}).catch(err => {
console.log('表单错误信息:', err);
})
},
//
reset() {
console.log('表单数据信息1:', this.data);
this.data={}
},
}
}
</script>
<style lang="scss" scoped>
.add-form-container {
min-height: calc(100vh - 140rpx);
background: white;
padding: 0px 30rpx 140rpx;
}
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
image {
width: 160rpx;
height: 160rpx;
margin-right: 20rpx;
}
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
.footer {
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
}
.btns {
display: flex;
button {
flex: 1;
}
.sure {
background: #409eff;
color: white;
border-radius: 0px;
&::after {
border: 1px solid #409eff;
border-radius: 0px;
}
}
.reset {
background: #F5F5F5;
border-radius: 0px;
&::after {
border-radius: 0px;
}
}
}
</style>

245
pages/index.vue

@ -1,261 +1,24 @@
<template> <template>
<view class="index-content"> <view class="index-content">
<u-navbar back-icon-color='#fff' back-icon-name='' :background="{ background: 'rgba(64, 158,255,'+bgOpacity+')'}" back-text="" 1
title-color='#fff' :immersive='true' :border-bottom='false' title="首页">
<template v-slot:right>
<u-icon name="bell" color="#fff" size="36" style="padding-right: 30rpx;" @click="open('/pages/notaic/index')"></u-icon>
</template>
</u-navbar>
<view class="top">
<image src="../static/images/mobile_bg.png" class="bg" mode=""></image>
<view class="top-box">
<view class="number">
<view class="number-item">
<view>32</view>
<view>设备总数</view>
</view>
<view class="number-item">
<view>32</view>
<view>故障中设备</view>
</view>
<view class="number-item">
<view>32</view>
<view>已报修设备</view>
</view>
</view>
<view class="status">
<view class="status-item">
<view>32</view>
<view>待接单</view>
</view>
<view class="status-item">
<view>32</view>
<view>待验证</view>
</view>
<view class="status-item">
<view>32</view>
<view>待审核</view>
</view>
</view>
</view>
</view>
<view class="box">
<view class="title">设备维护</view>
<u-row gutter="16" style="padding:0px 20rpx ;">
<u-col span="3">
<view class="icon-item" @click="open('/pages/workOrderList/index?type=1')">
<image src="../static/images/icon4.svg" mode=""></image>
<view>设备报修</view>
</view>
</u-col>
<u-col span="3">
<view class="icon-item" @click="open('/pages/workOrderList/index?type=2')">
<image src="../static/images/icon5.svg" mode=""></image>
<view>维修工单</view>
</view>
</u-col>
<u-col span="3">
<view class="icon-item" @click="open('/pages/workOrderList/index?type=3')">
<image src="../static/images/icon3.svg" mode=""></image>
<view>检修工单</view>
</view>
</u-col>
<u-col span="3">
<view class="icon-item" @click="open('/pages/workOrderList/index?type=4')">
<image src="../static/images/icon2.svg" mode=""></image>
<view>点检工单</view>
</view>
</u-col>
<u-col span="3">
<view class="icon-item" @click="open('/pages/workOrderList/index?type=5')">
<image src="../static/images/icon1.svg" mode=""></image>
<view>保养工单</view>
</view>
</u-col>
</u-row>
<view class="title">模具维护</view>
<u-row gutter="16">
<u-col span="3">
<view class="icon-item" @click="open('/pages/device/deviceRepair/index')">
<image src="../static/images/icon4.svg" mode=""></image>
<view>设备报修</view>
</view>
</u-col>
<u-col span="3">
<view class="icon-item" @click="open('/pages/serviceWorkOrderList/index')">
<image src="../static/images/icon5.svg" mode=""></image>
<view>维修工单</view>
</view>
</u-col>
<u-col span="3">
<view class="icon-item" @click="open('/pages/overhaulWorkOrderList/index')">
<image src="../static/images/icon2.svg" mode=""></image>
<view>检修工单</view>
</view>
</u-col>
<u-col span="3">
<view class="icon-item" @click="open('/pages/maintenWorkOrderList/index')">
<image src="../static/images/icon1.svg" mode=""></image>
<view>保养工单</view>
</view>
</u-col>
</u-row>
<view class="title">备件管理</view>
<u-row gutter="16">
<u-col span="3">
<view class="icon-item" @click="open('/pages/sparePartsApplication/index')">
<image src="../static/images/icon6.png" mode=""></image>
<view>领用申请</view>
</view>
</u-col>
<u-col span="3">
<view class="icon-item" @click="open('/pages/sparePartsServiceWorkOrderList/index')">
<image src="../static/images/icon5.svg" mode=""></image>
<view>维修工单</view>
</view>
</u-col>
</u-row>
</view>
</view> </view>
</template> </template>
<script> <script>
export default { data() { export default { data() {
return { return {
bgOpacity: 0,
} }
}, },
methods: { methods: {
open(url) {
this.$tab.navigateTo(url)
},
}, },
onLoad: function() {}, onLoad: function() {},
onPageScroll(e) {
if (e.scrollTop > 0) {
this.bgOpacity = e.scrollTop / 200;
} else {
this.bgOpacity = 0
}
},
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.index-content {
background-color: white;
min-height: 100vh;
}
.bg {
width: 100%;
}
.top {
position: relative;
image {
height: 410rpx;
}
}
.top-box {
position: absolute;
width: 100%;
bottom: 0px;
.number {
padding: 30rpx 80rpx 50rpx;
display: flex;
align-items: center;
justify-content: space-between;
.number-item {
text-align: center;
view {
&:nth-child(1) {
color: white;
font-size: 40rpx;
font-weight: bold;
}
&:nth-child(2) {
color: rgba(255, 255, 255, 0.7);
font-size: 28rpx;
margin-top: 10rpx;
}
}
}
}
.status {
margin: 0px 40rpx;
padding: 40rpx 0rpx;
background: white;
border-radius: 20rpx 20rpx 0px 0px;
display: flex;
align-items: center;
justify-content: space-between;
.status-item {
text-align: center;
position: relative;
flex: 1;
view {
&:nth-child(1) {
color: black;
font-size: 40rpx;
font-weight: bold;
}
&:nth-child(2) {
color: rgba(0, 0, 0, 0.5);
font-size: 28rpx;
margin-top: 10rpx;
}
}
&::after {
content: "";
border-right: 1px solid #dedede;
position: absolute;
height: 60rpx;
right: 0px;
top: 50%;
margin-top: -30rpx;
}
&:nth-last-child(1)::after {
border: none;
}
}
}
}
.box{
.title{
font-size: 32rpx;
font-weight: bold;
padding: 50rpx 50rpx 30rpx;
}
.icon-item{
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
margin: 20rpx 0px;
image{
width: 80rpx;
height: 80rpx;
}
view{
margin-top: 20rpx;
color: #999999;
}
}
}
</style> </style>

204
pages/login.vue

@ -1,225 +1,23 @@
<template> <template>
<view class="normal-login-container"> <view class="normal-login-container">
<view class="logo-img">
<view class="logo-title">
<view>智慧设备管理综合系统</view>
<view>让设备管理更智能更高效</view>
</view>
<image src="../static/images/banner/logo-banner.png" mode="widthFix"></image>
</view>
<view class="box">
<view class="box-shadow">
</view>
<view class="logo-content">
<text class="title">您好欢迎登录</text>
</view>
<view class="login-form-content">
<view class="input-item-label">登录账号</view>
<view class="input-item flex align-center">
<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
</view>
<view class="input-item-label">登录密码</view>
<view class="input-item flex align-center">
<input v-model="loginForm.password" type="password" class="input" placeholder="请输入密码" maxlength="20" />
</view>
<Verify @success="pwdLogin" :mode="'pop'" :captchaType="'blockPuzzle'"
:imgSize="{ width: '330px', height: '155px' }" ref="verify"></Verify>
<view class="action-btn">
<button @click="handleLogin" class="login-btn cu-btn block bg-blue lg ">登录</button>
</view>
</view>
<view class="xieyi text-center">
<text class="text-grey1">登录即代表同意</text>
<text @click="handleUserAgrement" class="text-blue">用户协议</text>
<text @click="handlePrivacy" class="text-blue">隐私协议</text>
</view>
</view>
</view> </view>
</template> </template>
<script> <script>
import Verify from "@/components/verifition/Verify"
export default { export default {
name: 'Login', name: 'Login',
components: {
Verify
},
data() { data() {
return { return {
captchaEnabled: true, // TODO
globalConfig: getApp().globalData.config,
loginForm: {
username: "admin",
password: "admin123",
captchaVerification: ""
}
} }
}, },
methods: { methods: {
//
handlePrivacy() {
let site = this.globalConfig.appInfo.agreements[0]
this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
},
//
handleUserAgrement() {
let site = this.globalConfig.appInfo.agreements[1]
this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
},
//
async handleLogin(params) {
if (this.loginForm.username === "") {
this.$modal.msgError("请输入您的账号")
} else if (this.loginForm.password === "") {
this.$modal.msgError("请输入您的密码")
} else {
this.$tab.reLaunch('/pages/index')
//
// if (this.captchaEnabled) {
// this.$refs.verify.show()
// } else { //
// await this.pwdLogin({})
// }
}
},
//
async pwdLogin(captchaParams) {
this.$modal.loading("登录中,请耐心等待...")
//
this.loginForm.captchaVerification = captchaParams.captchaVerification
this.$store.dispatch('Login', this.loginForm).then(() => {
this.$modal.closeLoading()
this.loginSuccess()
})
},
//
loginSuccess(result) {
//
this.$store.dispatch('GetInfo').then(res => {
this.$tab.reLaunch('/pages/index')
})
}
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
page {
background-color: #ffffff;
}
.normal-login-container {
width: 100%;
.logo-content {
width: 100%;
font-size: 40rpx;
padding: 50rpx 80rpx 0rpx;
.title {
font-weight: bold;
color: #000000;
}
}
.box{
position: relative;
}
.box-shadow{
box-shadow: 0px -10rpx 16rpx rgba(64, 158, 254, 0.5);
width: 100%;
position: absolute;
height: 30rpx;
border-radius: 30rpx 30rpx 0px 0px ;
}
.logo-img {
background-color: #fafcff;
height: 400rpx;
position: relative;
.logo-title{
position: absolute;
left: 50rpx;
top: 50rpx;
z-index: 11;
view{
&:nth-child(1){
color: #409eff;
font-weight: bold;
font-size: 36rpx;
}
&:nth-child(2){
color: #999999;
font-size: 24rpx;
}
}
}
image {
width: 75%;
display: block;
position: absolute;
bottom: 0px;
right: 0px;
}
}
.login-form-content {
margin: 40rpx auto;
width: 80%;
.input-item-label {
font-size: 30rpx;
// font-weight: bold;
color: #888888;
}
.input-item {
margin: 20rpx auto 40rpx;
border: 1px solid #E4E4E4;
padding: 0px 20rpx;
height: 90rpx;
.icon {
font-size: 38rpx;
margin-left: 20rpx;
color: #999;
}
.input {
width: 100%;
font-size: 28rpx;
line-height: 40rpx;
text-align: left;
}
}
.login-btn {
margin-top: 80rpx;
height: 80rpx;
background: #409eff;
color: white;
}
}
.xieyi {
color: #333;
margin-top: 40rpx;
font-size: 24rpx;
}
.easyinput {
width: 100%;
}
}
.login-code-img {
height: 90rpx;
}
</style> </style>

53
pages/mine/aboutUs.vue

@ -1,53 +0,0 @@
<template>
<view class="">
<view class="u-padding-20">
<view class="box">
<u-parse :html="content"></u-parse>
</view>
</view>
<!-- <view class="u-padding-top-30 u-padding-bottom-30 u-padding-left-10 u-padding-right-10">
<image src="../../static/image/kefu.png" class="kefu" mode="" @click="$call(phone)"></image>
</view> -->
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</template>
<script>
export default {
data() {
return {
data:"",
content:"11111111111",
}
},
onShow() {
},
methods: {
},
onReachBottom() {
}
}
</script>
<style lang="scss">
page {
background: #f8f9fb;
}
.box {
border-radius: 20rpx;
background: white;
padding: 40rpx 30rpx;
box-shadow: 0px 0px 20rpx rgba(145, 165, 205, 0.5);
}
.kefu {
width: 100%;
height: 114rpx;
}
/deep/._img{
display: block!important;
}
</style>

149
pages/mine/changePassword.vue

@ -1,149 +0,0 @@
<template>
<view>
<view class="box">
<view class="item">
<!-- <image src="../../static/icon/user_password_icon_blue.png"></image> -->
<view class="item2 padd35">
<input type="text" v-model="old_password" placeholder="请输入原密码" />
</view>
</view>
<view class="item">
<!-- <image src="../../static/icon/user_password_icon_red.png"></image> -->
<view class="item2 padd35">
<input type="text" v-model="newpassword" placeholder="请输入新密码" />
</view>
</view>
<view class="item">
<!-- <image src="../../static/icon/user_password_icon.png"></image> -->
<view class="item2 padd35">
<input type="text" v-model="confirmpassword" placeholder="请确认新密码" />
</view>
</view>
</view>
<view class="btn" @click="submit">确认</view>
</view>
</template>
<script>
export default {
data() {
return {
newpassword: "",
old_password: "",
confirmpassword: "",
}
},
onLoad() {
},
onShow() {
},
methods: {
submit() {
if(!this.old_password){
this.$toast('请输入原密码');
return;
}
if(!this.newpassword){
this.$toast('请输入新密码');
return;
}
if(!this.confirmpassword){
this.$toast('请确认新密码');
return;
}
if(this.confirmpassword != this.newpassword){
this.$toast('两次输入的密码不一致,请重新输入');
return;
}
this.$ajax('editpassword', {
userToken: this.$getSync('userToken'),
newpassword:this.newpassword,
old_password:this.old_password,
confirmpassword:this.confirmpassword,
}).then(ret => {
this.$closeLoading()
if (ret.status == 0) {
this.$alert('修改成功',()=>{
this.$backT()
})
} else {
this.$toast(ret.message);
}
});
},
}
}
</script>
<style lang="scss">
page {
background-color: #f8f9fb;
}
.box {
width: 94vw;
margin: 20rpx auto;
border-radius: 20rpx;
overflow: hidden;
}
.item {
background-color: #FFFFFF;
padding: 0rpx 30rpx;
display: flex;
align-items: center;
image {
width: 44rpx;
height: 44rpx;
margin-right: 30rpx;
}
.item2 {
display: flex;
align-items: center;
justify-content: space-between;
flex: 1;
border-bottom: 1rpx solid #efefef;
padding: 25rpx 0rpx;
input {
font-size: 28rpx;
}
view {
color: #1a4f9f;
border: 1rpx solid #1a4f9f;
font-size: 30rpx;
border-radius: 50rpx;
padding: 10rpx 18rpx;
}
}
}
.btn {
width: calc(100vw - 80rpx);
position: fixed;
bottom: 200rpx;
left: 40rpx;
background-color: rgb(64, 158, 255);
color: #FFFFFF;
height: 90rpx;
line-height: 90rpx;
text-align: center;
border-radius: 50rpx;
font-size: 32rpx;
}
.noborder {
border-bottom: none !important;
}
.padd35 {
padding: 35rpx 0 !important;
}
</style>

200
pages/mine/index.vue

@ -1,200 +0,0 @@
<template>
<view class="mine-container" :style="{height: `${windowHeight}px`}">
<!--顶部个人信息栏-->
<view class="header-section">
<view class="flex padding justify-between">
<view class="flex align-center">
<view v-if="!avatar" class="cu-avatar xl round bg-white">
<view class="iconfont icon-people text-gray icon"></view>
</view>
<image v-if="avatar" @click="handleToAvatar" :src="avatar" class="cu-avatar xl round" mode="widthFix">
</image>
<!-- <view v-if="!name" @click="handleToLogin" class="login-tip">
点击登录
</view> -->
<view @click="handleToInfo" class="user-info">
<view class="u_title">
<span>用户名找刚子</span> 部门主任
</view>
<view class="u_dept">
生产部门
</view>
</view>
</view>
<!-- <view @click="handleToInfo" class="flex align-center">
<text>个人信息</text>
<view class="iconfont icon-right"></view>
</view> -->
</view>
</view>
<view class="content-section">
<view class="mine-actions grid col-4 text-center">
<view class="action-item" @click="handleJiaoLiuQun">
<image src="../../static/images/banner/icon1.png" mode="widthFix"></image>
<text class="text">我的报修</text>
</view>
<view class="action-item" @click="handleBuilding">
<image src="../../static/images/banner/icon2.png" mode="widthFix"></image>
<text class="text">我的维修</text>
</view>
<view class="action-item" @click="handleBuilding">
<image src="../../static/images/banner/icon3.png" mode="widthFix"></image>
<text class="text">我的保养</text>
</view>
<view class="action-item" @click="handleBuilding">
<image src="../../static/images/banner/icon4.png" mode="widthFix"></image>
<text class="text">巡检点检</text>
</view>
</view>
<view class="menu-list">
<view class="list-cell list-cell-arrow" @click="handleToEditInfo">
<view class="menu-item-box">
<u-icon name="lock" color="#2979ff" size="32"></u-icon>
<view style="margin-left: 10rpx;">修改密码</view>
</view>
</view>
<view class="list-cell list-cell-arrow" @click="handleHelp">
<view class="menu-item-box">
<!-- <view class="iconfont icon-help menu-icon"></view> -->
<u-icon name="info-circle" color="#2979ff" size="32"></u-icon>
<view style="margin-left: 10rpx;">版本更新</view>
</view>
</view>
<view class="list-cell list-cell-arrow" @click="handleAbout">
<view class="menu-item-box">
<u-icon name="heart" color="#2979ff" size="32"></u-icon>
<view style="margin-left: 10rpx;">关于我们</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import storage from '@/utils/storage'
export default {
data() {
return {
name: this.$store.state.user.name,
version: getApp().globalData.config.appInfo.version
}
},
computed: {
avatar() {
return this.$store.state.user.avatar
},
windowHeight() {
return uni.getSystemInfoSync().windowHeight - 50
}
},
methods: {
handleToInfo() {
this.$tab.navigateTo('/pages/mine/info/index')
},
handleToEditInfo() {
this.$tab.navigateTo('/pages/mine/changePassword')
},
handleToSetting() {
this.$tab.navigateTo('/pages/mine/setting/index')
},
handleToLogin() {
this.$tab.reLaunch('/pages/login')
},
handleToAvatar() {
this.$tab.navigateTo('/pages/mine/avatar/index')
},
handleLogout() {
this.$modal.confirm('确定注销并退出系统吗?').then(() => {
this.$store.dispatch('LogOut').then(() => {
this.$tab.reLaunch('/pages/index')
})
})
},
handleHelp() {
this.$tab.navigateTo('/pages/mine/help/index')
},
handleAbout() {
this.$tab.navigateTo('/pages/mine/aboutUs')
},
handleJiaoLiuQun() {
this.$modal.showToast('微信搜索 naidaguo 后,添加好友后拉你进技术交流群')
},
handleBuilding() {
this.$modal.showToast('模块建设中~')
}
}
}
</script>
<style lang="scss">
page {
background-color: #f5f6f7;
}
.mine-container {
width: 100%;
height: 100%;
.header-section {
padding: 30rpx 30rpx 90rpx 30rpx;
background-color: #409eff;
color: white;
.login-tip {
font-size: 36rpx;
margin-left: 20rpx;
}
.cu-avatar {
border: 4rpx solid #eaeaea;
.icon {
font-size: 80rpx;
}
}
.user-info {
margin-left: 30rpx;
.u_title {
line-height: 60rpx;
span{
font-size: 36rpx;
line-height: 60rpx;
margin-right: 20rpx;
}
}
}
}
.content-section {
position: relative;
top: -100rpx;
.mine-actions {
margin: 30rpx 30rpx;
padding: 40rpx 0px;
border-radius: 16rpx;
background-color: white;
.action-item {
image {
width: 60rpx;
}
.text {
display: block;
font-size: 26rpx;
margin: 16rpx 0px;
}
}
}
}
}
</style>

22
pages/mold/index.vue

@ -1,22 +0,0 @@
<template>
<view class="work-container">
1
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style lang="scss">
</style>

139
pages/notaic/index.vue

@ -1,139 +0,0 @@
<template>
<view class="notaic">
<u-navbar back-icon-color='#fff' :background="{ background: '#409eff'}" back-text="" title-color='#fff'
title="系统消息">
<template v-slot:right>
<view class="clear">清除未读</view>
</template>
</u-navbar>
<view class="tab">
<view class="tab-box">
<view class="tab-item" :class="tabIndex == 0 ? 'active' : ''" @click="tab(0)">
全部
</view>
<view class="tab-item" :class="tabIndex == 1 ? 'active' : ''" @click="tab(1)">
已读
</view>
<view class="tab-item" :class="tabIndex == 2 ? 'active' : ''" @click="tab(2)">
未读
</view>
</view>
</view>
<view class="list">
<view class="item">
<view class="time">
<view class="red"></view>
<view class="text">2024-12-12 08:00:00</view>
<u-icon name="arrow-right" color="#c1c1c1" size="28"></u-icon>
</view>
<view class="dec">
您有一个保养任务请及时处理
</view>
<view class="type">
消息类型 <span>保养任务</span>
</view>
<view class="type">
任务时间 <span>2023-06-02 09:00~2023-06-02 09:00</span>
</view>
</view>
</view>
</view>
</template>
<script>
import storage from '@/utils/storage'
export default {
data() {
return {
tabIndex: 0
}
},
methods: {
tab(index) {
this.tabIndex = index
}
}
}
</script>
<style lang="scss" scoped>
.clear {
color: white;
padding-right: 20rpx
}
.tab {
position: fixed;
width: 100%;
background: white;
padding: 20rpx 30rpx;
}
.tab-box {
border-radius: 16rpx;
border: 1px solid #409eff;
display: flex;
justify-content: space-between;
align-items: center;
overflow: hidden;
.tab-item {
flex: 1;
border-right: 1px solid #409eff;
color: #409eff;
height: 70rpx;
line-height: 70rpx;
text-align: center;
&:nth-last-child(1) {
border: none;
}
}
.active {
background: #409eff;
color: white;
}
}
.list{
padding: 140rpx 30rpx 20rpx ;
.item{
background: white;
border-radius: 16rpx;
.time{
display: flex;
padding: 20rpx 30rpx;
border-bottom: 1px solid #e4e4e4;
position: relative;
.red{
position: absolute;
left: 16rpx;
top: 50%;
width: 6rpx;
height: 6rpx;
background: red;
border-radius: 50%;
margin-top: -3rpx;
}
.text{
color: #717171;
width: 0px;
flex: 1;
}
}
.dec{
padding: 30rpx;
}
.type{
padding:0px 30rpx 20rpx;
color: #888888;
span{
color: #000;
margin-left: 20rpx;
}
}
}
}
</style>

94
pages/spareParts/index.vue

@ -1,94 +0,0 @@
<template>
<!-- 设备 -->
<view class="work-container">
<Search @search='search' @screen='screen'/>
<view class="list">
<view class="item" v-for="index in 6" :key='index'>
<u-image src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png" width='160' height="160">
<template v-slot:error>
<view class="image-error">
<u-icon name="photo" color="#c7c7c7" size="38"></u-icon>
<view style="font-size: 24rpx;">暂无图片</view>
</view>
</template>
</u-image>
<view class="text">
<view class="title">
备件025
</view>
<view class="dec1">
备件编码SB52225456
</view>
<view class="dec2">
规格型号SB52225456
</view>
<view class="dec2">
总库存25
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import Search from '../../components/search/index.vue'
export default {
components: {
Search
},
data() {
return {
}
},
methods: {
//
search(keyWord) {
console.log(keyWord)
},
//
screen() {
console.log(222)
this.$tab.navigateTo(`/pages/spareParts/screen`)
}
}
}
</script>
<style lang="scss" scoped>
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
.text{
margin-left: 20rpx;
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
}
.image-error{
text-align: center;
}
</style>

149
pages/spareParts/screen.vue

@ -1,149 +0,0 @@
<template>
<!-- 设备 -->
<view class="add-form-container">
<Form :form='form' :data='data'></Form>
</view>
</template>
<script>
import Form from '@/components/form/index.vue'
export default {
components: {
Form
},
data() {
return {
form: {
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'text',
field: 'code',
label: '备件编号',
disabled: false,
required: true,
value: ''
}, {
type: 'text',
field: 'name',
label: '备件名称',
disabled: false,
required: true,
value: ''
}, {
type: 'singleColumn',
field: 'type',
label: '设备类型',
list: [{
label: '类型1',
value: 1
}, {
label: '类型2',
value: 2
}, {
label: '类型3',
value: 3
}]
}, {
type: 'singleColumn',
field: 'dept',
label: '设备单位',
list: [{
label: '部门1',
value: 1
}, {
label: '部门2',
value: 2
}, {
label: '部门3',
value: 3
}]
}, {
type: 'range',
field: 'min',
label: '当前库存',
placeholder:'请输入'
}, {
type: 'range',
field: 'min',
label: '当前库存',
placeholder:'请输入'
}],
rules: {
// name
name: [
{
min: 5,
message: '简介不能少于5个字',
trigger: 'change'
},
// name
{
required: true,
message: '请填写姓名',
trigger: ['change', 'blur']
},
]
}
},
data: {
name: '',
sex: 2,
hobby: [1, 2],
open: true,
duoxuan: 3,
time: '2023-12-12 08:00:00'
}
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.add-form-container {
min-height: calc(100vh - 140rpx);
background: white;
padding: 0px 30rpx 140rpx;
}
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
image {
width: 160rpx;
height: 160rpx;
margin-right: 20rpx;
}
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
</style>

283
pages/sparePartsApplication/addForm.vue

@ -1,283 +0,0 @@
<template>
<!-- 设备 -->
<view class="add-form-container">
<Form :form='form' :data='data' ref="form1"></Form>
<SparePartsCard :subForm='subForm' :data='data' @addSubForm='addSubForm' @delSubFormItem='delSubFormItem'>
</SparePartsCard>
<view class="footer">
<view class="btns">
<button class="sure" @click="submit">提交</button>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
<u-popup v-model="isPopupShow" mode="center" border-radius="14">
<view class="popup-title">添加备件</view>
<view class="popup">
<Form :form='subForm' :data='data' ref="form2"></Form>
</view>
<view class="popup-footer">
<view @click="cancle">取消</view>
<view class="sure" @click="addSpare">确认</view>
</view>
</u-popup>
</view>
</template>
<script>
import Form from '@/components/form/index.vue'
import SparePartsCard from '@/components/sparePartsCard/index.vue'
export default {
components: {
Form,
SparePartsCard
},
data() {
return {
form: {
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'text',
field: 'code',
label: '申请主题',
disabled: false,
required: true,
value: ''
}, {
type: 'singleColumn',
field: 'type',
label: '申请类型',
disabled: false,
required: true,
list: [{
label: '类型1',
value: 1
}, {
label: '类型2',
value: 2
}, {
label: '类型3',
value: 3
}]
}],
},
data: {
name: '',
subList: [{
name: '备件111111',
stork: '1',
number: '30',
}, {
name: '备件111111',
stork: '1',
number: '30',
}]
},
subForm: {
formLabel: '申请备件',
formField: 'subList',
required: true,
isShowButton: true,
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'singleColumn',
field: 'name',
label: '备件名称',
disabled: false,
required: true,
span: 12,
list: [{
label: '类型1',
value: 1
}, {
label: '类型2',
value: 2
}, {
label: '类型3',
value: 3
}]
}, {
type: 'text',
field: 'stork',
label: '库存',
disabled: false,
required: true,
isList: true,
span: 6
}, {
type: 'text',
field: 'number',
label: '数量',
disabled: false,
required: true,
isList: true,
span: 6
}],
},
isPopupShow: false,
}
},
methods: {
//
submit() {
console.log('表单数据信息1:', this.data);
this.$refs.form1.$refs.form.validate().then(res => {
console.log('表单数据信息:', res);
}).catch(err => {
console.log('表单错误信息:', err);
})
console.log(this.data.subList)
let isTrue = this.data.subList.some(item => {
return !item.name || item.number === ''
})
if (isTrue) {
this.$modal.showToast('申请备件信息请填写完全')
return;
}
},
//
reset() {
console.log('表单数据信息1:', this.data);
this.data = {}
},
//
addSubForm() {
console.log(5)
this.isPopupShow = true
// this.data.subList.push({
// name:1,
// stork:2,
// number:'300'
// })
},
//
addSpare(){
// this.data.subList
this.$refs.form2.$refs.form.validate().then(res => {
console.log('表单数据信息:', res);
}).catch(err => {
console.log('表单错误信息:', err);
})
},
//
cancle(){
this.isPopupShow = false
},
delTableFormItem(index) {
this.data.subList.splice(index, 1)
}
}
}
</script>
<style lang="scss" scoped>
.add-form-container {
min-height: calc(100vh - 140rpx);
background: white;
padding: 0px 30rpx 140rpx;
}
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
image {
width: 160rpx;
height: 160rpx;
margin-right: 20rpx;
}
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
.footer {
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
background: white;
}
.btns {
display: flex;
padding: 20rpx;
box-shadow: 0px -2rpx 20rpx rgba(0, 0, 0, 0.1);
button {
flex: 1;
}
.sure {
background: #409eff;
color: white;
border-radius: 8rpx;
&::after {
border: 1px solid #409eff;
border-radius: 0px;
}
}
}
.popup-title {
text-align: center;
font-size: 32rpx;
font-weight: bold;
color: #409eff;
padding: 30rpx
}
.popup {
width: 600rpx;
padding: 0rpx 60rpx 0rpx;
}
.popup-footer{
display: flex;
border-top: 1px solid #e4e4e4;
view{
line-height: 100rpx;
flex: 1;
text-align: center;
&.sure{
color: #409eff;
}
}
}
</style>

149
pages/sparePartsApplication/index.vue

@ -1,149 +0,0 @@
<template>
<!-- 备件领用申请 -->
<view class="container">
<u-navbar back-icon-color='#fff' :background="{ background: '#409eff'}" back-text="" title-color='#fff'
title="备件领用申请">
<template v-slot:right>
<u-icon name="plus" color="#fff" size="36" style="padding-right: 30rpx;" @click="addForm"></u-icon>
</template>
</u-navbar>
<Search @search='search' @screen='screen' />
<view class="list">
<view class="item" v-for="(item,index) in data.list" :key="index">
<view class="title">
<view class="title-txt">
{{item.title}}
</view>
<view class="time" v-if="data.isShowTime">
2023-12-12 08:00:00
</view>
</view>
<view class="dec" v-for="(cur,key) in labelList" :key="key">
{{cur.label}}:<span>{{item[cur.field]}}</span>
</view>
<view class="bottom" v-if="data.isShowStatus">
<view class="status">
<u-tag text="待领取" v-if="item.status==1" bg-color='rgba(255,255,255,0)' color='#fe8463' border-color='#fe8463' type="primary" shape='circle'/>
<u-tag text="撤单" v-else-if="item.status==2" bg-color='rgba(255,255,255,0)' color='#d7d7d7' border-color='#d7d7d7 ' type="warning" shape='circle'/>
<u-tag text="待执行" v-else-if="item.status==3" bg-color='rgba(255,255,255,0)' color='#e01f54' border-color='#e01f54' type="success" shape='circle'/>
<u-tag text="维修中" v-else-if="item.status==4" bg-color='rgba(255,255,255,0)' color='#005eaa' border-color='#005eaa ' type="error" shape='circle'/>
<u-tag text="待验证" v-else-if="item.status==5" bg-color='rgba(255,255,255,0)' color='#2EC7C9' border-color='#2EC7C9' type="info" shape='circle'/>
<u-tag text="已完成" v-else-if="item.status==6" bg-color='rgba(255,255,255,0)' color='#2ba471' border-color='#2ba471' type="info" shape='circle'/>
</view>
</view>
</view>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</template>
<script>
export default {
data() {
return {
labelList: [{
label: '申请单号',
field: 'dec1',
}, {
label: '申请类型',
field: 'dec2',
}, {
label: ' 申 请 人',
field: 'dec3',
}],
data: {
isShowTime: true,
isShowStatus: true,
list: [{
title: '备件002领用',
dec1: '维修领用',
dec2: '刘冰雨',
status: 6
}, {
title: '设备报修205245',
dec1: 'BX-20224648',
dec2: 'BX-20224648',
dec3: 'BX-20224648',
dec4: 'BX-20224648',
dec5: 'BX-20224648',
time: '2023-12-12 06:00:00',
status: 2
}, {
title: '设备报修205245',
dec1: 'BX-20224648',
dec2: 'BX-20224648',
dec3: 'BX-20224648',
dec4: 'BX-20224648',
dec5: 'BX-20224648',
time: '2023-12-12 06:00:00',
status: 3
}, {
title: '设备报修205245',
dec1: 'BX-20224648',
dec2: 'BX-20224648',
dec3: 'BX-20224648',
dec4: 'BX-20224648',
dec5: 'BX-20224648',
time: '2023-12-12 06:00:00',
status: 4
}]
}
}
},
methods: {
//
screen() {
this.$tab.navigateTo(`/pages/sparePartsApplication/screen`)
},
addForm() {
this.$tab.navigateTo(`/pages/sparePartsApplication/addForm`)
}
}
}
</script>
<style lang="scss" scoped>
.list{
background: #f5f5f5;
margin-top: 20rpx;
.item{
padding: 30rpx 30rpx 0px 30rpx;
margin-top: 20rpx;
background: white;
position: relative;
.title{
display: flex;
align-items: center;
padding-bottom: 20rpx;
.title-txt{
color: #409eff;
font-weight: bold;
font-size: 36rpx;
width: 0px;
flex: 1;
}
.time{
color: #919191;
}
}
.dec{
padding-bottom: 20rpx;
span{
color: #999999;
}
}
.last{
padding-bottom: 30rpx;
}
.bottom{
position: absolute;
right: 30rpx;
bottom:40rpx;
}
}
}
</style>

188
pages/sparePartsApplication/screen.vue

@ -1,188 +0,0 @@
<template>
<!-- 设备 -->
<view class="add-form-container">
<Form :form='form' :data='data' ref="form1"></Form>
<view class="footer">
<view class="btns">
<button class="reset" @click="reset">重置</button>
<button class="sure" @click="submit">确定</button>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</view>
</template>
<script>
import Form from '@/components/form/index.vue'
export default {
components: {
Form
},
data() {
return {
form: {
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'text',
field: 'code',
label: '申请主题',
disabled: false,
required: true,
value: ''
}, {
type: 'singleColumn',
field: 'type',
label: '申请类型',
disabled: false,
required: true,
list: [{
label: '类型1',
value: 1
}, {
label: '类型2',
value: 2
}, {
label: '类型3',
value: 3
}]
}, {
type: 'singleColumn',
field: 'type1',
label: '备件类型',
list: [{
label: '类型1',
value: 1
}, {
label: '类型2',
value: 2
}, {
label: '类型3',
value: 3
}]
}, {
type: 'datetime',
field: 'datetime',
label: '申请时间',
}, {
type: 'singleColumn',
field: 'type',
label: '申请人',
disabled: false,
required: true,
list: [{
label: '申请人1',
value: 1
}, {
label: '申请人2',
value: 2
}, {
label: '申请人3',
value: 3
}]
}],
},
data: {
name: '',
sex: 2,
hobby: [1, 2],
open: true,
duoxuan: 3,
time: '2023-12-12 08:00:00'
}
}
},
methods: {
//
submit() {
},
//
reset() {
console.log('表单数据信息1:', this.data);
this.data={}
},
}
}
</script>
<style lang="scss" scoped>
.add-form-container {
min-height: calc(100vh - 140rpx);
background: white;
padding: 0px 30rpx 140rpx;
}
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
image {
width: 160rpx;
height: 160rpx;
margin-right: 20rpx;
}
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
.footer {
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
}
.btns {
display: flex;
button {
flex: 1;
}
.sure {
background: #409eff;
color: white;
border-radius: 0px;
&::after {
border: 1px solid #409eff;
border-radius: 0px;
}
}
.reset {
background: #F5F5F5;
border-radius: 0px;
&::after {
border-radius: 0px;
}
}
}
</style>

261
pages/sparePartsServiceWorkOrderList/addForm.vue

@ -1,261 +0,0 @@
<template>
<!-- 设备 -->
<view class="work-container">
<Form :form='form' :data='data' ref="form1" @tableFormSingleColumn='tableFormSingleColumn'
@addTableFormItem='addTableFormItem' @delTableFormItem='delTableFormItem'></Form>
<view class="footer">
<view class="btns">
<button class="reset" @click="reset">重置</button>
<button class="sure" @click="submit">确定</button>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</view>
</template>
<script>
import Form from '@/components/form/index.vue'
export default {
components: {
Form
},
data() {
return {
form: {
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'text',
field: 'code',
label: '申请主题',
disabled: false,
required: true,
value: ''
}, {
type: 'singleColumn',
field: 'type',
label: '申请类型',
disabled: false,
required: true,
list: [{
label: '类型1',
value: 1
}, {
label: '类型2',
value: 2
}, {
label: '类型3',
value: 3
}]
}, {
type: 'tableForm',
field: 'subList',
labelPosition: 'top',
label: '申请备件',
disabled: false,
required: true,
tableThlist: [{
label: '备用名称',
field: 'name',
type: 'singleColumn',
disabled: false,
required: true,
list: 'list'
}, {
label: '库存',
field: 'stork',
type: 'singleColumn',
disabled: false,
required: true,
list: 'list1'
}, {
label: '申请数量',
field: 'number',
type: 'number',
disabled: false,
required: true,
}]
}],
rules: {
// name
name: [{
min: 5,
message: '简介不能少于5个字',
trigger: 'change'
},
// name
{
required: true,
message: '请填写姓名',
trigger: ['change', 'blur']
},
]
}
},
data: {
name: '',
subList: [{
name: 1,
stork: '1',
number: '',
inputType: 'singleColumn',
list: [{
value: 1,
label: '哈哈'
}, {
value: 2,
label: '呵呵'
}],
list1: [{
value: 1,
label: '哈哈1111'
}, {
value: 2,
label: '呵呵111'
}],
}]
}
}
},
methods: {
//
submit() {
console.log('表单数据信息1:', this.data);
this.$refs.form1.$refs.form.validate().then(res => {
console.log('表单数据信息:', res);
}).catch(err => {
console.log('表单错误信息:', err);
})
console.log(this.data.subList)
let isTrue = this.data.subList.some(item => {
return !item.name || item.number === ''
})
if (isTrue) {
this.$modal.showToast('申请备件信息请填写完全')
return;
}
},
//
reset() {
console.log('表单数据信息1:', this.data);
this.data = {}
},
//
tableFormSingleColumn(field, tableFormField, tableFormVal) {
console.log(field)
console.log(tableFormField)
console.log(tableFormVal)
},
//
addTableFormItem() {
this.data.subList.push({
name: 1,
stork: 2,
number: '300',
inputType: 'singleColumn',
list: [{
value: 1,
label: '哈哈额'
}, {
value: 2,
label: '呵呵额'
}],
list1: [{
value: 1,
label: '哈哈222'
}, {
value: 2,
label: '呵呵333'
}],
})
},
delTableFormItem(index) {
this.data.subList.splice(index, 1)
}
}
}
</script>
<style lang="scss" scoped>
.add-form-container {
min-height: calc(100vh - 140rpx);
background: white;
padding: 0px 30rpx 140rpx;
}
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
image {
width: 160rpx;
height: 160rpx;
margin-right: 20rpx;
}
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
.footer {
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
}
.btns {
display: flex;
button {
flex: 1;
}
.sure {
background: #409eff;
color: white;
border-radius: 0px;
&::after {
border: 1px solid #409eff;
border-radius: 0px;
}
}
.reset {
background: #F5F5F5;
border-radius: 0px;
&::after {
border-radius: 0px;
}
}
}
</style>

88
pages/sparePartsServiceWorkOrderList/index.vue

@ -1,88 +0,0 @@
<template>
<!-- 备件维修工单 -->
<view class="container">
<u-navbar back-icon-color='#fff' :background="{ background: '#409eff'}" back-text="" title-color='#fff'
title="备件维修工单">
<template v-slot:right>
<u-icon name="plus" color="#fff" size="36" style="padding-right: 30rpx;" @click="addForm"></u-icon>
</template>
</u-navbar>
<Search @search='search' @screen='screen' />
<sparePartsApplicationList :data="data" :labelList='labelList'></sparePartsApplicationList>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</template>
<script>
import sparePartsApplicationList from '@/components/sparePartsApplicationList/index.vue'
export default {
components: {
sparePartsApplicationList
},
data() {
return {
labelList: [{
label: '申请单号',
field: 'dec1',
}, {
label: '申请类型',
field: 'dec2',
}, {
label: ' 申 请 人',
field: 'dec3',
}],
data: {
isShowTime: true,
isShowStatus: true,
list: [{
title: '备件002领用',
dec1: '维修领用',
dec2: '刘冰雨',
status: 6
}, {
title: '设备报修205245',
dec1: 'BX-20224648',
dec2: 'BX-20224648',
dec3: 'BX-20224648',
dec4: 'BX-20224648',
dec5: 'BX-20224648',
time: '2023-12-12 06:00:00',
status: 2
}, {
title: '设备报修205245',
dec1: 'BX-20224648',
dec2: 'BX-20224648',
dec3: 'BX-20224648',
dec4: 'BX-20224648',
dec5: 'BX-20224648',
time: '2023-12-12 06:00:00',
status: 3
}, {
title: '设备报修205245',
dec1: 'BX-20224648',
dec2: 'BX-20224648',
dec3: 'BX-20224648',
dec4: 'BX-20224648',
dec5: 'BX-20224648',
time: '2023-12-12 06:00:00',
status: 4
}]
}
}
},
methods: {
//
screen() {
this.$tab.navigateTo(`/pages/sparePartsApplication/screen`)
},
addForm() {
this.$tab.navigateTo(`/pages/sparePartsApplication/addForm`)
}
}
}
</script>
<style lang="scss" scoped>
</style>

211
pages/sparePartsServiceWorkOrderList/screen.vue

@ -1,211 +0,0 @@
<template>
<!-- 设备 -->
<view class="add-form-container">
<Form :form='form' :data='data' ref="form1"></Form>
<view class="footer">
<view class="btns">
<button class="reset" @click="reset">重置</button>
<button class="sure" @click="submit">确定</button>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</view>
</template>
<script>
import Form from '@/components/form/index.vue'
export default {
components: {
Form
},
data() {
return {
form: {
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'text',
field: 'code',
label: '申请主题',
disabled: false,
required: true,
value: ''
}, {
type: 'singleColumn',
field: 'type',
label: '申请类型',
disabled: false,
required: true,
list: [{
label: '类型1',
value: 1
}, {
label: '类型2',
value: 2
}, {
label: '类型3',
value: 3
}]
}, {
type: 'singleColumn',
field: 'type1',
label: '备件类型',
list: [{
label: '类型1',
value: 1
}, {
label: '类型2',
value: 2
}, {
label: '类型3',
value: 3
}]
}, {
type: 'datetime',
field: 'datetime',
label: '申请时间',
}, {
type: 'singleColumn',
field: 'type',
label: '申请人',
disabled: false,
required: true,
list: [{
label: '申请人1',
value: 1
}, {
label: '申请人2',
value: 2
}, {
label: '申请人3',
value: 3
}]
}],
rules: {
// name
name: [
{
min: 5,
message: '简介不能少于5个字',
trigger: 'change'
},
// name
{
required: true,
message: '请填写姓名',
trigger: ['change', 'blur']
},
]
}
},
data: {
name: '',
sex: 2,
hobby: [1, 2],
open: true,
duoxuan: 3,
time: '2023-12-12 08:00:00'
}
}
},
methods: {
//
submit() {
console.log('表单数据信息1:', this.data);
this.$refs.form1.$refs.form.validate().then(res => {
console.log('表单数据信息:', res);
}).catch(err => {
console.log('表单错误信息:', err);
})
},
//
reset() {
console.log('表单数据信息1:', this.data);
this.data={}
},
}
}
</script>
<style lang="scss" scoped>
.add-form-container {
min-height: calc(100vh - 140rpx);
background: white;
padding: 0px 30rpx 140rpx;
}
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
image {
width: 160rpx;
height: 160rpx;
margin-right: 20rpx;
}
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
.footer {
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
}
.btns {
display: flex;
button {
flex: 1;
}
.sure {
background: #409eff;
color: white;
border-radius: 0px;
&::after {
border: 1px solid #409eff;
border-radius: 0px;
}
}
.reset {
background: #F5F5F5;
border-radius: 0px;
&::after {
border-radius: 0px;
}
}
}
</style>

211
pages/workOrderList/addForm.vue

@ -1,211 +0,0 @@
<template>
<!-- 设备 -->
<view class="add-form-container">
<Form :form='form' :data='data' ref="form1"></Form>
<view class="footer">
<view class="btns">
<button class="reset" @click="reset">重置</button>
<button class="sure" @click="submit">确定</button>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</view>
</template>
<script>
import Form from '@/components/form/index.vue'
export default {
components: {
Form
},
data() {
return {
form: {
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'text',
field: 'code',
label: '报修主题',
disabled: false,
required: true,
value: ''
}, {
type: 'text',
field: 'name',
label: '设备名称',
disabled: false,
required: true,
value: '',
isRightButton: '扫描'
}, {
type: 'text',
field: 'location',
label: '存放位置',
}, {
type: 'singleColumn',
field: 'type',
label: '紧急程度',
required: true,
list: [{
label: '程度1',
value: 1
}, {
label: '程度2',
value: 2
}, {
label: '程度3',
value: 3
}]
}, {
type: 'text',
field: 'location',
label: '故障描述',
}],
},
data: {
name: '',
sex: 2,
hobby: [1, 2],
open: true,
duoxuan: 3,
time: '2023-12-12 08:00:00'
}
}
},
methods: {
//
submit() {
//
for (let i = 0; i < this.form.formData.length; i++) {
if (this.form.formData[i].required === true) {
if (!this.data[this.form.formData[i].field]) {
let placeholder = '请输入'
if (this.form.formData[i].type == 'text' || this.form.formData[i].type == 'textarea') {
placeholder = '请输入'
} else {
placeholder = '请选择'
}
this.$modal.showToast(placeholder + this.form.formData[i].label)
return;
}
}
}
console.log('表单数据信息1:', this.data);
},
//
reset() {
console.log('表单数据信息1:', this.data);
this.data = {}
},
},
onLoad(option) {
this.type = option.type
if(option.type == 1){
uni.setNavigationBarTitle({
title:'添加报修'
})
}else if(option.type == 2){
uni.setNavigationBarTitle({
title:'添加维修工单'
})
}else if(option.type == 3){
uni.setNavigationBarTitle({
title:'添加检修工单'
})
}else if(option.type == 4){
uni.setNavigationBarTitle({
title:'添加点检工单'
})
}else if(option.type == 5){
uni.setNavigationBarTitle({
title:'添加保养工单'
})
}
}
}
</script>
<style lang="scss" scoped>
.add-form-container {
min-height: calc(100vh - 140rpx);
background: white;
padding: 0px 30rpx 140rpx;
}
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
image {
width: 160rpx;
height: 160rpx;
margin-right: 20rpx;
}
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
.footer {
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
}
.btns {
display: flex;
button {
flex: 1;
}
.sure {
background: #409eff;
color: white;
border-radius: 0px;
&::after {
border: 1px solid #409eff;
border-radius: 0px;
}
}
.reset {
background: #F5F5F5;
border-radius: 0px;
&::after {
border-radius: 0px;
}
}
}
</style>

349
pages/workOrderList/detail.vue

@ -1,349 +0,0 @@
<template>
<!-- 详情 -->
<view class="detail-container">
<view class="info">
<view class="title">
<view>维修工单</view>
<view>转班</view>
</view>
<view class="dec">
<view class="dec-item">
<view>工单单号</view>
<view>WXDH2051351</view>
</view>
<view class="dec-item">
<view>工单主题</view>
<view>设备一维修2554</view>
</view>
<view class="dec-item">
<view>工单类型</view>
<view>报修工单</view>
</view>
<view class="dec-item">
<view>维修班组</view>
<view>维修班组一</view>
</view>
<view class="dec-item">
<view>工程师</view>
<view>橙子</view>
</view>
<view class="dec-item">
<view>维修工</view>
<view>香蕉</view>
</view>
</view>
</view>
<view class="info" style="padding-bottom: 130rpx;">
<view class="tab">
<u-tabs :list="list" :is-scroll="false" bar-height="2" bar-width="250" v-model="current"
@change="change"></u-tabs>
</view>
<view>
<view class="title">
<view>{{changeItem.name}}</view>
</view>
<view class="dec" v-if="current == 0">
<view class="dec-item">
<view>设备编号</view>
<view>WXDH2051351</view>
</view>
<view class="dec-item">
<view>设备名称</view>
<view>设备一维修2554</view>
</view>
<view class="dec-item">
<view>规格型号</view>
<view>报修工单</view>
</view>
<view class="dec-item">
<view>设备类型</view>
<view>维修班组一</view>
</view>
<view class="dec-item">
<view>存放位置</view>
<view>橙子</view>
</view>
<view class="dec-item">
<view>使用部门</view>
<view>香蕉</view>
</view>
</view>
<view class="dec" v-if="current == 1">
<view class="dec-item">
<view>设备编号</view>
<view>WXDH2051351</view>
</view>
<view class="dec-item">
<view>设备名称</view>
<view>设备一维修2554</view>
</view>
<view class="dec-item">
<view>规格型号</view>
<view>报修工单</view>
</view>
<view class="dec-item">
<view>设备类型</view>
<view>维修班组一</view>
</view>
<view class="dec-item">
<view>存放位置</view>
<view>橙子</view>
</view>
<view class="dec-item">
<view>使用部门</view>
<view>香蕉</view>
</view>
</view>
<view class="dec" v-if="current == 2">
<SparePartsCard :subForm='subForm' :data='data' @addSubForm='addSubForm' @delSubFormItem='delSubFormItem'>
</SparePartsCard>
</view>
</view>
</view>
<view class="footer">
<view class="btns">
<u-button type="primary">保存/接单</u-button>
<u-button type="primary">完成</u-button>
<u-button type="primary">验证完结</u-button>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
<u-popup v-model="isPopupShow" mode="center" border-radius="14">
<view class="popup-title">添加记录</view>
<view class="popup">
<Form :form='subForm' :data='data' ref="form2"></Form>
</view>
<view class="popup-footer">
<view @click="cancle">取消</view>
<view class="sure" @click="addSpare">确认</view>
</view>
</u-popup>
</view>
</template>
<script>
import Form from '@/components/form/index.vue'
import SparePartsCard from '@/components/sparePartsCard/index.vue'
export default {
components: {
Form,
SparePartsCard
},
data() {
return {
list: [{
name: '设备信息'
}, {
name: '报修信息'
}, {
name: '维修记录'
}],
current: 0,
changeItem: '',
data: {
name: '',
subList: [{
name: '备件111111',
stork: '1',
number: '30',
}, {
name: '备件111111',
stork: '1',
number: '30',
}]
},
isPopupShow:false,
subForm: {
formLabel: '',
formField: 'subList',
required: true,
isShowButton: true,
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'singleColumn',
field: 'name',
label: '模具',
disabled: false,
required: true,
span: 12,
list: [{
label: '类型1',
value: 1
}, {
label: '类型2',
value: 2
}, {
label: '类型3',
value: 3
}]
}, {
type: 'text',
field: 'stork',
label: '库存',
disabled: false,
required: true,
isList: true,
span: 6
}, {
type: 'text',
field: 'number',
label: '数量',
disabled: false,
required: true,
isList: true,
span: 6
}],
},
}
},
methods: {
change(index) {
console.log("index", index);
this.current = index
this.changeItem = this.list[this.current]
},
//
addSubForm() {
console.log(5)
this.isPopupShow = true
},
//
addSpare(){
//
for (let i = 0; i < this.subForm.formData.length; i++) {
if (this.subForm.formData[i].required === true) {
if (!this.data[this.subForm.formData[i].field]) {
let placeholder = '请输入'
if (this.subForm.formData[i].type == 'text' || this.subForm.formData[i].type == 'textarea') {
placeholder = '请输入'
} else {
placeholder = '请选择'
}
this.$modal.showToast(placeholder + this.subForm.formData[i].label)
return;
}
}
}
},
//
cancle(){
this.isPopupShow = false
},
},
onLoad() {
this.changeItem = this.list[this.current]
}
}
</script>
<style lang="scss" scoped>
.info {
background: white;
margin-bottom: 20rpx;
}
.tab {
border-bottom: 1px solid #e4e4e4;
}
.title {
display: flex;
align-items: center;
padding: 20rpx 30rpx;
border-bottom: 1px solid #e4e4e4;
view {
&:nth-child(1) {
flex: 1;
border-left: 10rpx solid #409eff;
padding-left: 20rpx;
font-weight: bold;
}
}
}
.dec {
padding: 30rpx;
.dec-item {
padding-bottom: 30rpx;
display: flex;
view {
&:nth-child(1) {
width: 160rpx;
}
&:nth-child(2) {
color: #888888;
flex: 1;
}
}
}
}
.popup-title {
text-align: center;
font-size: 32rpx;
font-weight: bold;
color: #409eff;
padding: 30rpx
}
.popup {
width: 600rpx;
padding: 0rpx 60rpx 0rpx;
}
.popup-footer{
display: flex;
border-top: 1px solid #e4e4e4;
view{
line-height: 100rpx;
flex: 1;
text-align: center;
&.sure{
color: #409eff;
}
}
}
.footer {
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
background: white;
z-index: 22;
}
.btns {
display: flex;
padding: 20rpx;
box-shadow: 0px -2rpx 20rpx rgba(0, 0, 0, 0.1);
button {
flex: 1;
margin: 0px 10rpx;
}
.sure {
background: #409eff;
color: white;
border-radius: 8rpx;
&::after {
border: 1px solid #409eff;
border-radius: 0px;
}
}
}
</style>

159
pages/workOrderList/index.vue

@ -1,159 +0,0 @@
<template>
<view class="container">
<u-navbar back-icon-color='#fff' :background="{ background: '#409eff'}" back-text="" title-color='#fff'
:title="title">
<template v-slot:right>
<u-icon name="plus" color="#fff" size="36" style="padding-right: 30rpx;" @click="addForm"></u-icon>
</template>
</u-navbar>
<Search @search='search' @screen='screen' />
<workOrderList :data="data" :labelList='labelList' @itemClick="itemClick"></workOrderList>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</template>
<script>
import workOrderList from '@/components/workOrderList/index.vue'
export default {
components: {
workOrderList
},
data() {
return {
title:'',
type:'',
labelList:[{
label: '报修单号',
field: 'dec1',
},{
label: '设备名称',
field: 'dec2',
},{
label: '设备编号',
field: 'dec3',
},{
label: '存放位置',
field: 'dec4',
},{
label: '紧急程度',
field: 'dec5',
}],
data: {
isShowTime: true,
list: [{
title: '设备报修205245',
dec1: 'BX-20224648',
dec2: 'BX-20224648',
dec3: 'BX-20224648',
dec4: 'BX-20224648',
dec5: 'BX-20224648',
time: '2023-12-12 06:00:00',
status: 6
}, {
title: '设备报修205245',
dec1: 'BX-20224648',
dec2: 'BX-20224648',
dec3: 'BX-20224648',
dec4: 'BX-20224648',
dec5: 'BX-20224648',
time: '2023-12-12 06:00:00',
status: 2
}, {
title: '设备报修205245',
dec1: 'BX-20224648',
dec2: 'BX-20224648',
dec3: 'BX-20224648',
dec4: 'BX-20224648',
dec5: 'BX-20224648',
time: '2023-12-12 06:00:00',
status: 3
}, {
title: '设备报修205245',
dec1: 'BX-20224648',
dec2: 'BX-20224648',
dec3: 'BX-20224648',
dec4: 'BX-20224648',
dec5: 'BX-20224648',
time: '2023-12-12 06:00:00',
status: 4
}]
}
}
},
methods: {
//
screen() {
this.$tab.navigateTo(`/pages/workOrderList/screen?type=${this.type}`)
},
itemClick(item,index){
this.$tab.navigateTo(`/pages/workOrderList/detail?type=${this.type}`)
},
addForm(){
this.$tab.navigateTo(`/pages/workOrderList/addForm?type=${this.type}`)
}
},
onLoad(option) {
this.type = option.type
if(option.type == 1){
this.title = '设备报修'
}else if(option.type == 2){
this.title = '维修工单'
}else if(option.type == 3){
this.title = '检修工单'
}else if(option.type == 4){
this.title = '点检工单'
}else if(option.type == 5){
this.title = '保养工单'
}
}
}
</script>
<style lang="scss" scoped>
.list{
background: #f5f5f5;
margin-top: 20rpx;
.item{
padding: 30rpx 30rpx 0px 30rpx;
margin-top: 20rpx;
background: white;
.title{
display: flex;
align-items: center;
padding-bottom: 20rpx;
.title-txt{
color: #409eff;
font-weight: bold;
font-size: 36rpx;
width: 0px;
flex: 1;
}
.time{
color: #919191;
}
}
.dec{
padding-bottom: 20rpx;
span{
color: #999999;
}
}
.last{
padding-bottom: 30rpx;
}
.bottom{
display: flex;
justify-content: space-between;
align-items: center;
border-top: 1px solid #E4E4E4;
padding: 20rpx 0px;
}
}
}
</style>

223
pages/workOrderList/screen.vue

@ -1,223 +0,0 @@
<template>
<!-- 设备 -->
<view class="add-form-container">
<Form :form='form' :data='data' ref="form1"></Form>
<view class="footer">
<view class="btns">
<button class="reset" @click="reset">重置</button>
<button class="sure" @click="submit">确定</button>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</view>
</template>
<script>
import Form from '@/components/form/index.vue'
export default {
components: {
Form
},
data() {
return {
type:'',
form: {
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'text',
field: 'code',
label: '报修主题',
disabled: false,
required: true,
value: ''
}, {
type: 'text',
field: 'name',
label: '设备名称',
disabled: false,
required: true,
value: '',
}, {
type: 'text',
field: 'location',
label: '存放位置',
}, {
type: 'singleColumn',
field: 'type',
label: '紧急程度',
list: [{
label: '程度1',
value: 1
}, {
label: '程度2',
value: 2
}, {
label: '程度3',
value: 3
}]
}, {
type: 'singleColumn',
field: 'type',
label: '工单状态',
list: [{
label: '状态1',
value: 1
}, {
label: '状态2',
value: 2
}, {
label: '状态3',
value: 3
}]
}],
},
data: {
name: '',
sex: 2,
hobby: [1, 2],
open: true,
duoxuan: 3,
time: '2023-12-12 08:00:00'
}
}
},
methods: {
//
submit() {
},
//
reset() {
console.log('表单数据信息1:', this.data);
this.data={}
},
},
onLoad(option) {
this.type = option.type
if(option.type == 1){
}else if(option.type == 2){
this.form.formData[0] = {
type: 'text',
field: 'code',
label: '维修主题',
disabled: false,
required: true,
value: ''
}
}else if(option.type == 3){
this.form.formData[0] = {
type: 'text',
field: 'code',
label: '检修主题',
disabled: false,
required: true,
value: ''
}
this.form.formData.pop()
}else if(option.type == 4){
this.form.formData[0] = {
type: 'text',
field: 'code',
label: '点检主题',
disabled: false,
required: true,
value: ''
}
this.form.formData.pop()
}else if(option.type == 5){
this.form.formData[0] = {
type: 'text',
field: 'code',
label: '保养主题',
disabled: false,
required: true,
value: ''
}
this.form.formData.pop()
}
}
}
</script>
<style lang="scss" scoped>
.add-form-container {
min-height: calc(100vh - 140rpx);
background: white;
padding: 0px 30rpx 140rpx;
}
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
image {
width: 160rpx;
height: 160rpx;
margin-right: 20rpx;
}
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
.footer {
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
}
.btns {
display: flex;
button {
flex: 1;
}
.sure {
background: #409eff;
color: white;
border-radius: 0px;
&::after {
border: 1px solid #409eff;
border-radius: 0px;
}
}
.reset {
background: #F5F5F5;
border-radius: 0px;
&::after {
border-radius: 0px;
}
}
}
</style>

181
pages/workOrderList/transfer.vue

@ -1,181 +0,0 @@
<template>
<!-- 设备 -->
<view class="add-form-container">
<Form :form='form' :data='data' ref="form1"></Form>
<view class="footer">
<view class="btns">
<button class="reset" @click="reset">重置</button>
<button class="sure" @click="submit">确定</button>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
</view>
</template>
<script>
import Form from '@/components/form/index.vue'
export default {
components: {
Form
},
data() {
return {
form: {
disabled: false,
visible: true,
loading: false,
labelWidth: '180rpx',
border: true,
errorType: ['toast'],
formData: [{
type: 'singleColumn',
field: 'type',
label: '模具',
list: [{
label: '程度1',
value: 1
}, {
label: '程度2',
value: 2
}, {
label: '程度3',
value: 3
}]
}, {
type: 'singleColumn',
field: 'type',
label: '维修工',
list: [{
label: '状态1',
value: 1
}, {
label: '状态2',
value: 2
}, {
label: '状态3',
value: 3
}]
}],
rules: {
// name
name: [
{
min: 5,
message: '简介不能少于5个字',
trigger: 'change'
},
// name
{
required: true,
message: '请填写姓名',
trigger: ['change', 'blur']
},
]
}
},
data: {
name: '',
sex: 2,
hobby: [1, 2],
open: true,
duoxuan: 3,
time: '2023-12-12 08:00:00'
}
}
},
methods: {
//
submit() {
console.log('表单数据信息1:', this.data);
this.$refs.form1.$refs.form.validate().then(res => {
console.log('表单数据信息:', res);
}).catch(err => {
console.log('表单错误信息:', err);
})
},
//
reset() {
console.log('表单数据信息1:', this.data);
this.data={}
},
}
}
</script>
<style lang="scss" scoped>
.add-form-container {
min-height: calc(100vh - 140rpx);
background: white;
padding: 0px 30rpx 140rpx;
}
.list {
padding-bottom: 20rpx;
.item {
margin-top: 20rpx;
background: white;
padding: 30rpx;
display: flex;
align-items: center;
image {
width: 160rpx;
height: 160rpx;
margin-right: 20rpx;
}
.title {
font-size: 32rpx;
font-weight: bold;
}
.dec1 {
font-size: 28rpx;
margin-top: 16rpx;
color: #acacac;
}
.dec2 {
font-size: 28rpx;
margin-top: 6rpx;
color: #acacac;
}
}
}
.footer {
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
}
.btns {
display: flex;
button {
flex: 1;
}
.sure {
background: #409eff;
color: white;
border-radius: 0px;
&::after {
border: 1px solid #409eff;
border-radius: 0px;
}
}
.reset {
background: #F5F5F5;
border-radius: 0px;
&::after {
border-radius: 0px;
}
}
}
</style>
Loading…
Cancel
Save