| | |
| | | meta: { |
| | | title: 'helloWorld', |
| | | }, |
| | | }, |
| | | } |
| | | |
| | | |
| | | ] |
| | |
| | | let BASE_URL = 'http://192.168.1.68:9918/jeecg-boot' |
| | | let BASE_URL = '' |
| | | if (process.env.NODE_ENV == 'development') { |
| | | |
| | | BASE_URL = 'http://192.168.1.68:9918/jeecg-boot' // 开发环境 |
| | | BASE_URL = '/jeecg-boot' // 开发环境 |
| | | } else { |
| | | BASE_URL = 'http://192.168.1.68:9918/jeecg-boot' // 生产环境 |
| | | BASE_URL = '/jeecg-boot' // 生产环境 |
| | | } |
| | | let staticDomainURL ='/sys/common/static'; |
| | | let staticURL ='http://125.76.225.53:8086/jeecg-boot/sys/common/static/'; |
| | | // let staticURL ='http://125.76.225.53:8086/jeecg-boot/sys/common/static/'; |
| | | let staticURL ='https://fastwoke.cn:8087/jeecg-boot/sys/common/static/'; |
| | | |
| | | const configService = { |
| | | apiUrl: BASE_URL, |
| | | staticDomainURL: staticDomainURL, |
| | |
| | | }, |
| | | "h5" : { |
| | | "title" : "设备管理", |
| | | "domain" : "houjie.xalxzn.com", |
| | | "domain" : "fastwoke.cn", |
| | | "router" : { |
| | | "mode" : "hash", |
| | | "base" : "/h5/" |
| | | }, |
| | | // "devServer" : { |
| | | // "port" : "8866", |
| | | // "https" : false, |
| | | // "proxy" : { |
| | | // /**配置服务器路径**/ |
| | | // "/jeecg-boot" : { |
| | | // "target" : "http://houjie.xalxzn.com:8866", |
| | | // "changeOrigin" : true, |
| | | // "secure": false |
| | | // } |
| | | // } |
| | | // }, |
| | | "devServer" : { |
| | | "port" : 8086, |
| | | "https" : false, |
| | | "proxy" : { |
| | | /**配置服务器路径**/ |
| | | "/jeecg-boot" : { |
| | | "target" : "https://192.168.4.20:8086", |
| | | "changeOrigin" : true, |
| | | "secure" : false |
| | | } |
| | | } |
| | | }, |
| | | "optimization" : { |
| | | "treeShaking" : { |
| | | "enable" : false |
| | |
| | | { |
| | | "requires": true, |
| | | "name": "da-dropdown 下拉筛选菜单(支持主题色、功能丰富,Vue2版)", |
| | | "version": "2.2.1", |
| | | "lockfileVersion": 1, |
| | | "requires": true, |
| | | "dependencies": { |
| | | "@dcloudio/uni-ui": { |
| | | "version": "1.5.7", |
| | |
| | | "@zxing/text-encoding": { |
| | | "version": "0.9.0", |
| | | "resolved": "https://registry.npmmirror.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", |
| | | "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", |
| | | "optional": true |
| | | "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==" |
| | | }, |
| | | "file-saver": { |
| | | "version": "2.0.5", |
| | |
| | | "resolved": "https://registry.npmmirror.com/html5-qrcode/-/html5-qrcode-2.3.8.tgz", |
| | | "integrity": "sha512-jsr4vafJhwoLVEDW3n1KvPnCCXWaQfRng0/EEYk1vNcQGcG/htAdhJX0be8YyqMoSz7+hZvOZSTAepsabiuhiQ==" |
| | | }, |
| | | "openai": { |
| | | "version": "5.8.3", |
| | | "resolved": "https://registry.npmmirror.com/openai/-/openai-5.8.3.tgz", |
| | | "integrity": "sha512-IdotKmquCnpouTRvF9xRXVhMx6K5Sc8zkD6Usf+so+NTQ+qiJ8bLSCd7LBb8b/Rof7uYltlSxJhNp+spphKI4Q==" |
| | | }, |
| | | "ts-custom-error": { |
| | | "version": "3.3.1", |
| | | "resolved": "https://registry.npmmirror.com/ts-custom-error/-/ts-custom-error-3.3.1.tgz", |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | ], |
| | | "globalStyle": { |
| | | "mp-alipay": { |
| | |
| | | "allowsBounceVertical": "NO" |
| | | }, |
| | | "navigationBarBackgroundColor": "#0081ff", |
| | | "navigationBarTitleText": "MDC", |
| | | "navigationBarTitleText": "设备管理", |
| | | "navigationStyle": "custom", |
| | | "navigationBarTextStyle": "white" |
| | | }, |
| | |
| | | this.partTakeAdviceDetailList.forEach(item => { |
| | | item.restle = [{ |
| | | text: "正常", |
| | | value: 1 |
| | | value: "1" |
| | | }, |
| | | { |
| | | text: "异常", |
| | | value: 2 |
| | | value: "2" |
| | | } |
| | | ]; // 新字段,值为一个空数组 |
| | | item.type = [{ |
| | | text: "否", |
| | | value: 0 |
| | | value: "0" |
| | | }, |
| | | { |
| | | text: "是", |
| | | value: 1 |
| | | value: "1" |
| | | } |
| | | ]; // 新字段,值为一个空数组 |
| | | item.istrue = true; |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | @click="onClickProductionTask(item)"> |
| | | <view class="flex"> |
| | | <view class="flex-sub text-light bg-white padding-xs margin-xs radius">流程分类:</view> |
| | | <view class="flex-sub bg-white padding-xs margin-xs text-bold text-blue radius text-right"> |
| | | <view |
| | | class="flex-sub bg-white padding-xs margin-xs text-bold text-blue radius text-right"> |
| | | {{item.category_dictText}} |
| | | </view> |
| | | </view> |
| | | <view class="flex"> |
| | | <!-- <view class="flex"> |
| | | <view class="flex-sub text-light bg-white padding-xs margin-xs radius">流程名称:</view> |
| | | <view class="flex-sub bg-white padding-xs margin-xs text-bold radius text-right"> |
| | | {{item.procDefName}} |
| | | </view> |
| | | </view> |
| | | </view> --> |
| | | <view class="flex"> |
| | | <view class="flex-sub text-light bg-white padding-xs margin-xs radius">任务名称:</view> |
| | | <view class="flex-sub bg-white padding-xs margin-xs text-orange radius text-right"> |
| | |
| | | case (name === '维修执行' && type === '设备维修'): |
| | | url = '/pages/ToDoList/ToDoSpareParts/ToDoSpareParts'; |
| | | break; |
| | | case (name === '维修工接单' && type === '设备维修'): |
| | | url = '/pages/ToDoList/ToDoSpareParts/ToDoSpareParts'; |
| | | break; |
| | | case (name === '点检工单' && type === '设备点检'): |
| | | url = '/pages/ToDoList/ToDoListCheckSure/ToDoListCheckSure'; |
| | | break; |
| | |
| | | } |
| | | |
| | | if (url) { |
| | | uni.redirectTo({ |
| | | uni.navigateTo({ |
| | | |
| | | url: `${url}?item=${encodeURIComponent(JSON.stringify(item))}&flag=${flag}` |
| | | }); |
| | | // uni.redirectTo({ |
| | | |
| | | // url: `${url}?item=${encodeURIComponent(JSON.stringify(item))}&flag=${flag}` |
| | | // }); |
| | | } |
| | | }, |
| | | |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 45px; |
| | | margin-top: 55px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | ]; // 新字段,值为一个空数组 |
| | | item.type = [{ |
| | | text: "否", |
| | | value: 0 |
| | | value: "0" |
| | | }, |
| | | { |
| | | text: "是", |
| | | value: 1 |
| | | value: "1" |
| | | } |
| | | ]; // 新字段,值为一个空数组 |
| | | item.istrue = true; |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | |
| | |
| | | title: '提交成功', |
| | | duration: 2000 |
| | | }); |
| | | // this.$Router.replace({ |
| | | // name: 'ToDoList' |
| | | // }) |
| | | this.$Router.replaceAll({ |
| | | name: 'ToDoList' |
| | | }) |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | |
| | |
| | | <uni-easyinput v-model="formData.num" placeholder="请输入设备编号" /> |
| | | </uni-forms-item> |
| | | </uni-group> |
| | | </uni-forms> |
| | | <uni-forms-item> |
| | | <view class="flex"> |
| | | |
| | | <view |
| | | class="cuIcon-search flex-sub bg-blue padding-sm margin-xs margin-left-lg margin-right-lg text-sm text-center" |
| | | class="cuIcon-search flex-sub bg-blue radius padding-sm margin-xs margin-left-lg margin-right-lg text-sm text-center" |
| | | @click="getSera">查询 |
| | | </view> |
| | | <view |
| | | class="cuIcon-refresh flex-sub bg-white solids padding-sm margin-xs radius text-sm text-center margin-left-lg margin-right-lg" |
| | | @click="resetTask">重置</view> |
| | | </view> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | |
| | | |
| | | </view> |
| | | </uni-popup> |
| | |
| | | {{item.category_dictText}} |
| | | </view> |
| | | </view> |
| | | <view class="flex"> |
| | | <!-- <view class="flex"> |
| | | <view class="flex-sub text-light bg-white padding-xs margin-xs radius">流程名称:</view> |
| | | <view class="flex-sub bg-white padding-xs margin-xs text-bold radius text-right"> |
| | | {{item.flowName}} |
| | | </view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <view class="flex"> |
| | | <view class="flex-sub text-light bg-white padding-xs margin-xs radius">之前处理人:</view> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | |
| | | import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js"; |
| | | export default { |
| | | mixins: [MescrollMixin], // 使用mixin |
| | |
| | | case (name === '设能部终验' && type === '设备周保'): |
| | | url = '/pages/ToDoList/ToDoBaoZhouSure/ToDoBaoZhouSure'; |
| | | break; |
| | | case (name === '管理员领用备件' && type === '设备维修'): |
| | | case (name === '等待备件中' && type === '设备维修'): |
| | | url = '/pages/ToDoList/ToDoSpareParts/ToDoSpareParts'; |
| | | break; |
| | | case (name === '操作工确认' && type === '设备维修'): |
| | |
| | | break; |
| | | case (name === '点检工单' && type === '设备点检'): |
| | | url = '/pages/ToDoList/ToDoListDeils/ToDoCheckDetils'; |
| | | case (name === '点检工单' && type === '设备点检'): |
| | | url = '/pages/ToDoList/ToDoListDeils/ToDoCheckDetils'; |
| | | |
| | | break; |
| | | default:ToDoCheckDetils |
| | |
| | | } |
| | | |
| | | if (url) { |
| | | uni.redirectTo({ |
| | | |
| | | uni.navigateTo({ |
| | | url: `${url}?item=${encodeURIComponent(JSON.stringify(item))}` |
| | | }); |
| | | // uni.redirectTo({ |
| | | // url: `${url}?item=${encodeURIComponent(JSON.stringify(item))}` |
| | | // }); |
| | | } |
| | | }, |
| | | |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | <view class="flex"> |
| | | <view class="flex-sub text-light bg-white padding-xs margin-xs radius">异常是否报修:</view> |
| | | <view class="flex-sub bg-white padding-xs text-right margin-xs radius"> |
| | | <uni-data-select :localdata="item.type" v-model="item.reportFlag" |
| | | <uni-data-select :localdata="item.type" @change="handleType($event, index)" v-model="item.reportFlag" |
| | | :disabled="item.istrue" /> |
| | | </view> |
| | | </view> |
| | |
| | | taskId: '', |
| | | imageFilesList: [], |
| | | inspectionResult: '', |
| | | reportFlag:'', |
| | | upOption: { |
| | | page: { |
| | | num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始 |
| | |
| | | changeEquipmentList(e) { |
| | | this.formData.num = e; |
| | | }, |
| | | handleType(e, index) { |
| | | console.log(e); |
| | | }, |
| | | handleCode(e, index) { |
| | | console.log(index); |
| | | // 根据 e 的值来判断是否需要更新 isTrue 的状态 |
| | |
| | | ]; // 新字段,值为一个空数组 |
| | | item.type = [{ |
| | | text: "否", |
| | | value: 0 |
| | | value: "0" |
| | | }, |
| | | { |
| | | text: "是", |
| | | value: 1 |
| | | value: "1" |
| | | } |
| | | ]; // 新字段,值为一个空数组 |
| | | item.istrue = true; |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | |
| | |
| | | ]; // 新字段,值为一个空数组 |
| | | item.type = [{ |
| | | text: "否", |
| | | value: 0 |
| | | value: "0" |
| | | }, |
| | | { |
| | | text: "是", |
| | | value: 1 |
| | | value: "1" |
| | | } |
| | | ]; // 新字段,值为一个空数组 |
| | | item.istrue = true; |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | <uni-forms-item :label-width="100" name="installationPosition_dictText" label="安装位置:"> |
| | | <uni-easyinput v-model="formData.installationPosition_dictText" :disabled="true" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="faultName" label="故障简称:"> |
| | | <uni-easyinput v-model="formData.faultName" :disabled="true" /> |
| | | <uni-forms-item :label-width="100" name="faultType" label="故障简称:"> |
| | | <uni-easyinput v-model="formData.faultType_dictText" :disabled="true" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="faultDescription" label="故障描述:"> |
| | | <uni-easyinput v-model="formData.faultDescription" :disabled="true" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="outNum" label="报修图片:"> |
| | | <uni-file-picker limit="9" :value="fileList" :image-styles="imageStyles" @select="select" |
| | | :sourceType="sourceType" @progress="progress" @success="success" @fail="fail" |
| | | @delete="deletea" :readonly="readonly" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="remark" label="故障开始时间:"> |
| | | <uni-easyinput v-model="formData.faultStartTime" :disabled="true" /> |
| | |
| | | <uni-forms-item :label-width="100" name="repairerPhone_dictText" label="维修人电话:"> |
| | | <uni-easyinput v-model="formData.repairerPhone_dictText" :disabled="true" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="remark" label="备注:"> |
| | | <!-- <uni-forms-item :label-width="100" name="remark" label="备注:"> |
| | | <uni-easyinput v-model="formData.remark" :disabled="true" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="outNum" label="报修图片:"> |
| | | </uni-forms-item> --> |
| | | |
| | | <uni-file-picker limit="9" :value="fileList" :image-styles="imageStyles" @select="select" |
| | | :sourceType="sourceType" @progress="progress" @success="success" @fail="fail" |
| | | @delete="deletea" :readonly="readonly" /> |
| | | </uni-forms-item> |
| | | |
| | | <view class="divider"><text>是否需要领用备件</text></view> |
| | | <uni-forms-item :label-width="140" required name="num" label="是否需要领用备件:"> |
| | |
| | | this.formData.repairCode = this.announcement1.repairCode |
| | | this.formData.installationPosition_dictText = this.announcement1 |
| | | .installationPosition_dictText |
| | | this.formData.faultName = this.announcement1.faultName |
| | | this.formData.faultType_dictText = this.announcement1.faultType_dictText |
| | | this.formData.repairer_dictText = this.announcement1.repairer_dictText |
| | | this.formData.repairerPhone_dictText = this.announcement1.repairerPhone_dictText |
| | | this.formData.reporter_dictText = this.announcement1.reporter_dictText |
| | | this.formData.reporterPhone_dictText = this.announcement1.reporterPhone_dictText |
| | | this.formData.faultStartTime = this.announcement1.faultStartTime |
| | | this.formData.faultDescription=this.announcement1.faultDescription |
| | | this.formData.remark = this.announcement1.remark |
| | | this.formData.repairDescription = this.announcement1.repairDescription |
| | | this.formData.faultReason = this.announcement1.faultReason |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | </cu-custom> |
| | | <view class="container"> |
| | | |
| | | <uni-search-bar @confirm="search" :focus="true" v-model="searchValue" placeholder="请通过名称检索" |
| | | <uni-search-bar @confirm="search" :focus="true" v-model="searchValue" placeholder="请通过设备名称检索" |
| | | @input="input" @cancel="cancel()" cancelButton="always"> |
| | | </uni-search-bar> |
| | | <mescroll-uni ref="mescrollRef" @init="mescrollInit" :top="top" @down="downCallback" @up="upCallback"> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | |
| | |
| | | <cu-custom :bgColor="NavBarColor" :isBack="true" backRouterName="productionTask"> |
| | | <block slot="backText">返回</block> |
| | | <block slot="content">设备详情</block> |
| | | <block slot="right"> |
| | | <!-- <block slot="right"> |
| | | <view @click="goHome"> |
| | | <image class="search" src="/static/icon/icon_home.png" style="width: 25px; height: 25px;" alt="" /> |
| | | </view> |
| | | </block> |
| | | </block> --> |
| | | </cu-custom> |
| | | <view class="container"> |
| | | |
| | | |
| | | <uni-forms ref="form" :modelValue="formData" validate-trigger="bind" err-show-type="undertext"> |
| | | <uni-group top="1"> |
| | | |
| | | <uni-forms-item :label-width="100" required name="num" label="设备编号:"> |
| | | <uni-easyinput v-model="formData.equipmentCode" :disabled="true" /> |
| | | </uni-forms-item> |
| | |
| | | <uni-forms-item :label-width="100" name="remark" label="设备名称:"> |
| | | <uni-easyinput v-model="formData.equipmentName" :disabled="true" /> |
| | | </uni-forms-item> |
| | | <!-- <uni-forms-item :label-width="100" name="outNum" label="关键设备标识:"> |
| | | <uni-easyinput v-model="formData.equipmentImportance" :disabled="true" /> |
| | | </uni-forms-item> --> |
| | | <view class="text-gray margin-bottom-lg">—————————— 基本信息 ——————————</view> |
| | | <uni-forms-item :label-width="100" name="taskCode" label="维修状态:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.repairStatus_dictText" /> |
| | |
| | | <uni-forms-item :label-width="100" name="endLocation" label="出厂日期:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.leaveFactoryDate" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="outNum" label="设备文档:"> |
| | | <uni-file-picker v-model="fileLists" :extension="['.pdf']" @fail="uploadFail" |
| | | :list-styles="listStyles" :delIcon="del" :max-count="5" file-mediatype="all" |
| | | @downloadFile="downloadFile" @select="onFileSelect" @delete="onFileDelete"> |
| | | <button size="mini" type="primary">点击上传</button> |
| | | </uni-file-picker> |
| | | </uni-forms-item> |
| | | </uni-group> |
| | | </uni-forms> |
| | | <view class="file-list margin-sm"> |
| | |
| | | </view> |
| | | </view> |
| | | <view class="flex margin-bottom-xs"> |
| | | <button v-if="authIncludes('eam:reportRepair:add')" class="flex-sub cu-btn bg-blue margin-sm lg" hover-class="is-hover" |
| | | @click="goReportRepair()">报修</button> |
| | | <button v-if="authIncludes('eam:reportRepair:add')" class="flex-sub cu-btn bg-blue margin-sm lg" |
| | | hover-class="is-hover" |
| | | @click="goReportRepair()">报修 |
| | | </button> |
| | | <button class="flex-sub cu-btn bg-blue margin-sm lg" hover-class="is-hover" |
| | | @click="goCheck()">点检</button> |
| | | @click="goCheck()">点检 |
| | | </button> |
| | | <button class="flex-sub cu-btn bg-blue margin-sm lg" hover-class="is-hover" |
| | | @click="goBaoZhou()">周保</button> |
| | | @click="goBaoZhou()">周保 |
| | | </button> |
| | | <button class="flex-sub cu-btn bg-blue margin-sm lg" hover-class="is-hover" |
| | | @click="goMaintenance()">维修</button> |
| | | @click="goMaintenance()">维修 |
| | | </button> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | import { |
| | | stringify |
| | | } from "querystring"; |
| | | import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js"; |
| | | import { |
| | | saveAs |
| | | } from 'file-saver'; // 引入 file-saver 库 |
| | | export default { |
| | | mixins: [MescrollMixin], // 使用mixin |
| | | data() { |
| | | return { |
| | | |
| | | listStyles: { |
| | | "borderStyle": { |
| | | "width": "0", // 边框宽度 |
| | | }, |
| | | "border": false, // 是否显示边框 |
| | | "dividline": false |
| | | }, |
| | | formData: { |
| | | fileLists: [] |
| | | equipmentCode: '', |
| | | equipmentName: '', |
| | | repairStatus_dictText: '', |
| | | maintenanceStatus_dictText: '', |
| | | orgId_dictText: '', |
| | | installationPosition: '', |
| | | technologyStatus_dictText: '', |
| | | equipmentManager_dictText: '', |
| | | leaveFactoryDate: '' |
| | | }, |
| | | fileLists: [], |
| | | NavBarColor: this.NavBarColor, |
| | |
| | | downloadFile: 'eam/equipmentAttachment/downloadFile' |
| | | }, |
| | | id: '', |
| | | upOption: { |
| | | page: { |
| | | num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始 |
| | | size: 10 // 每页数据的数量 |
| | | }, |
| | | noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5 |
| | | empty: { |
| | | tip: '~ 暂无数据 ~', // 提示 |
| | | }, |
| | | loading: '', |
| | | text: '全部', |
| | | isShowNoMore: false, |
| | | textNoMore: '我是有底线的 >_<' |
| | | }, |
| | | styles: { |
| | | color: '#2979FF', |
| | | borderColor: '#2979FF' |
| | |
| | | return style |
| | | }, |
| | | }, |
| | | // onLoad(options) { |
| | | // const decodedEquipmentId = decodeURIComponent(options.equipmentId); |
| | | // this.id = decodedEquipmentId; |
| | | // console.log(this.id) |
| | | // if (!this.id) { |
| | | // uni.showModal({ |
| | | // title: '提示', |
| | | // content: "错误不存在", |
| | | // showCancel: false |
| | | // }); |
| | | // } |
| | | // |
| | | // }, |
| | | onUnload() { |
| | | this.id = null; |
| | | this.formData = {}; // 清空数据 |
| | | this.fileLists = []; |
| | | }, |
| | | onLoad(options) { |
| | | const decodedEquipmentId = decodeURIComponent(options.equipmentId); |
| | | this.id = decodedEquipmentId; |
| | |
| | | showCancel: false |
| | | }); |
| | | } else { |
| | | this.upCallback(); |
| | | this.getData(); // ✅ 只执行一次 |
| | | } |
| | | }, |
| | | |
| | | created() { |
| | | |
| | | this.getFileList(); |
| | | }, |
| | | onShow() { |
| | | // 从路由参数中获取equipmentId |
| | | const equipmentIdFromRoute = this.$router.query.equipmentId; |
| | | if (equipmentIdFromRoute) { |
| | | // 如果存在,更新this.id |
| | | this.id = equipmentIdFromRoute; |
| | | // 重新获取设备详情数据 |
| | | this.upCallback(); |
| | | } |
| | | }, |
| | | watch: { |
| | | // 监听$route变化 |
| | | $route(to, from) { |
| | | // 更新equipmentId参数 |
| | | this.id = to.query.equipmentId; |
| | | console.log('更新后的equipmentId:', this.equipmentId); |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: { |
| | | getData() { |
| | | this.$http.get(this.url.stallList, { |
| | | params: { |
| | | pageNo: 999, |
| | | pageSize: 1, |
| | | order: 'asc', |
| | | column: 'createTime', |
| | | id: this.id |
| | | }, |
| | | |
| | | }).then(res => { |
| | | this.announcement1 = res.data.result |
| | | console.log("url", res) |
| | | //设置列表数据 |
| | | if (res.data.success) { |
| | | console.log("res", res.data.result.equipmentCode) |
| | | this.formData = this.announcement1 |
| | | } |
| | | }).catch(() => { |
| | | //联网失败, 结束加载 |
| | | }) |
| | | }, |
| | | authIncludes(code) { |
| | | return this.authList.some(auth => auth.action === code) |
| | | }, |
| | |
| | | uploadFail(e) { |
| | | console.log('上传失败:', e) |
| | | }, |
| | | |
| | | |
| | | |
| | | onFileSelect(e) { |
| | |
| | | console.error('提交失败:', err); |
| | | }); |
| | | }, |
| | | goHome() { |
| | | uni.reLaunch({ |
| | | url: '/pages/index/index' |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * 报修 |
| | | */ |
| | |
| | | url: `/pages/maintenanceReport/maintenanceReport?equipmentId=${encodeURIComponent(this.id)}` |
| | | }); |
| | | }, |
| | | upCallback() { |
| | | console.log("id", this.id) |
| | | this.$http.get(this.url.stallList, { |
| | | params: { |
| | | pageNo: 999, |
| | | pageSize: 1, |
| | | order: 'asc', |
| | | column: 'createTime', |
| | | id: this.id |
| | | }, |
| | | |
| | | }).then(res => { |
| | | this.announcement1 = res.data.result |
| | | console.log("url", res) |
| | | //设置列表数据 |
| | | if (res.data.success) { |
| | | console.log("res", res.data.result.equipmentCode) |
| | | this.formData = this.announcement1 |
| | | } |
| | | }).catch(() => { |
| | | //联网失败, 结束加载 |
| | | }) |
| | | }, |
| | | |
| | | mescrollInit(mescroll) { |
| | | console.log('mescrollInit') |
| | | this.mescroll = mescroll; |
| | | }, |
| | | }, |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | .content { |
| | | margin-top: 5px; |
| | | } |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | <view class="cu-item animation-slide-bottom" :style="[{animationDelay: (index + 1)*0.1 + 's'}]" |
| | | v-for="(item,index) in osList" :key="index" @tap="goPage(item.page)"> |
| | | <view class="padding text-center"> |
| | | <image :src="item.icon" style="width:28px;height:28px;" /> |
| | | <image :src="item.icon" style="width:28px;height:28px;"> |
| | | <view class="cu-tag badge margin-top-sm" style="margin-left:1.2em" |
| | | v-if="getTtemDotInfo(item)"></view> |
| | | </image> |
| | | <view class="margin-top-xs">{{item.title}}</view> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="cu-item animation-slide-bottom" :style="[{animationDelay: (index + 1)*0.1 + 's'}]" |
| | | v-for="(item,index) in wsList" :key="index" @tap="goPage(item.page)"> |
| | | <view class="padding text-center"> |
| | | <image :src="item.icon" style="width:28px;height:28px;" /> |
| | | <image :src="item.icon" style="width:28px;height:28px;"> |
| | | <view class="cu-tag badge margin-top-sm" style="margin-left:1.2em" |
| | | v-if="getTtemDotInfo(item)"></view> |
| | | </image> |
| | | <view class="margin-top-xs">{{item.title}}</view> |
| | | </view> |
| | | </view> |
| | |
| | | props: { |
| | | cur: String, |
| | | }, |
| | | // watch: { |
| | | // cur: { |
| | | // immediate: true, |
| | | // handler: function(val, oldVal) { |
| | | // console.log('cur', val, oldVal) |
| | | // this.initMenu() |
| | | // }, |
| | | // }, |
| | | // }, |
| | | watch: { |
| | | cur: { |
| | | immediate: true, |
| | | handler: function(val, oldVal) { |
| | | console.log('cur', val, oldVal) |
| | | // 即使值没有变化,也主动调用 initMenu |
| | | this.initMenu() |
| | | }, |
| | | }, |
| | |
| | | return { |
| | | url: { |
| | | bindingThirdPhone: '/sys/permission/getUserPermissionByToken', |
| | | countItem: '/assign/flow/taskCountBySelf' |
| | | countItem: '/assign/flow/taskCountBySelf', |
| | | waitTiem: 'eam/dashboard/pendingExecOrderCountBySelf' |
| | | }, |
| | | swiperList: [{ |
| | | id: 1, |
| | | type: 'image', |
| | | url: '/static/banner/eam_banner1.png', |
| | | url: '/static/banner/fashite-banner.png', |
| | | link: '' |
| | | }, |
| | | { |
| | | id: 2, |
| | | type: 'image', |
| | | url: '/static/banner/eam_banner2.png', |
| | | url: '/static/banner/eam_banner3.png', |
| | | link: '' |
| | | }, |
| | | { |
| | | id: 3, |
| | | type: 'image', |
| | | url: '/static/banner/eam_banner3.png', |
| | | link: '' |
| | | }, |
| | | { |
| | | id: 4, |
| | | type: 'image', |
| | | url: '/static/banner/eam_banner4.png', |
| | | link: '' |
| | | }, |
| | | } |
| | | ], |
| | | middleApps: [{ |
| | | icon: 'line2_icon1.png', |
| | |
| | | wsList: ws.data, |
| | | msgCount: 0, |
| | | toDomsgCount: 0, |
| | | |
| | | unExecRepairOrderCount: 0, |
| | | unExecInspectionOrderCount: 0, |
| | | unExecMaintenanceOrderCount: 0, |
| | | dot: { |
| | | mailHome: false |
| | | } |
| | |
| | | this.onSocketReceive() |
| | | this.saveClientId() |
| | | this.taskCountBySelf(); |
| | | this.getItemCount(); |
| | | this.loadCount(0); |
| | | }, |
| | | goPage(page) { |
| | |
| | | this.toDomsgCount = res.data.result |
| | | }) |
| | | }, |
| | | |
| | | getItemCount() { |
| | | this.$http.get(this.url.waitTiem).then(res => { |
| | | const { |
| | | unExecRepairOrderCount, |
| | | unExecInspectionOrderCount, |
| | | unExecMaintenanceOrderCount |
| | | } = res.data.result; |
| | | |
| | | // 或者单独赋值给不同的数据属性 |
| | | this.unExecRepairOrderCount = unExecRepairOrderCount; |
| | | this.unExecInspectionOrderCount = unExecInspectionOrderCount; |
| | | this.unExecMaintenanceOrderCount = unExecMaintenanceOrderCount; |
| | | }); |
| | | }, |
| | | |
| | | loadCount(flag) { |
| | | console.log("loadCount::flag", flag) |
| | | let url = '/sys/annountCement/listByUser'; |
| | |
| | | }, |
| | | getTtemDotInfo(item) { |
| | | if (item.page === 'ToDoList' && this.toDomsgCount > 0) { |
| | | // return this.toDomsgCount |
| | | return true |
| | | return true; |
| | | } else if (item.page === 'maintenanceReport' && this.unExecRepairOrderCount > 0) { |
| | | return true; |
| | | } else if (item.page === 'checkList' && this.unExecInspectionOrderCount > 0) { |
| | | return true; |
| | | } else if (item.page === 'baoZhou' && this.unExecMaintenanceOrderCount > 0) { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | ++this.commponent3Key |
| | | }, |
| | | methods: { |
| | | NavChange: function(e) { |
| | | this.PageCur = e.currentTarget.dataset.cur |
| | | NavChange(e) { |
| | | const cur = e.currentTarget.dataset.cur |
| | | // 如果切换到首页,手动更新 cur 值,触发 watch |
| | | if (cur === 'home') { |
| | | // 假设 home 组件已挂载,可通过 ref 调用方法或更新 prop |
| | | this.$refs.home && this.$refs.home.$emit('update:cur', 'home') |
| | | } |
| | | this.PageCur = cur |
| | | } |
| | | |
| | | // NavChange: function(e) { |
| | | // this.PageCur = e.currentTarget.dataset.cur |
| | | // } |
| | | |
| | | } |
| | | } |
| | |
| | | <view class="zai-box"> |
| | | <!-- 登录加载弹窗 --> |
| | | <view class="cu-load load-modal"> |
| | | <image src="https://static.jeecg.com/upload/test/login4_1595818039175.png" mode="aspectFit" |
| | | <image src="../../static/logo-lx.png" mode="aspectFit" |
| | | class="round"></image> |
| | | <view class="gray-text">正在登录中...</view> |
| | | </view> |
| | |
| | | /** 后台构造oauth2登录地址 */ |
| | | sysOAuth2Login(source) { |
| | | let domainURL = configService.apiUrl; |
| | | let url = `http://houjie.xalxzn.com:8866/jeecg-boot/sys/thirdLogin/oauth2/${source}/login`; |
| | | let url = `https://fastwoke.cn:8087/jeecg-boot/sys/thirdLogin/oauth2/${source}/login`; |
| | | let state = window.location.origin + window.location.search |
| | | url += `?state=${encodeURIComponent(state)}`; |
| | | console.log('sysOAuth2Login====》', url) |
| | |
| | | </view> |
| | | </view> |
| | | <view class="flex"> |
| | | <view class="flex-sub text-light bg-white padding-xs margin-xs radius">故障描述:</view> |
| | | <view class="flex-sub bg-white padding-xs margin-xs text-green radius text-right"> |
| | | {{item.faultDescription}} |
| | | </view> |
| | | </view> |
| | | <view class="flex"> |
| | | <view class="flex-sub text-light bg-white padding-xs margin-xs radius">故障开始时间:</view> |
| | | <view class="flex-sub bg-white padding-xs margin-xs text-blue radius text-right"> |
| | | {{item.faultStartTime}} |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="flex"> |
| | | <view v-if="authIncludes('eam:repair:collect')" class="flex"> |
| | | <view class="flex-sub text-light bg-white padding-xs margin-xs radius">操作:</view> |
| | | <view v-if="authIncludes('eam:repair:collect')" |
| | | class="flex-sub bg-blue padding-xs margin-xs radius text-sm text-center" |
| | | <view class="flex-sub bg-blue padding-xs margin-xs radius text-sm text-center" |
| | | @click.stop="handleStartWork(item)" hover-class="is-hover">领取</view> |
| | | |
| | | </view> |
| | | </uni-card> |
| | | </view> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | <uni-forms-item required :label-width="100" name="faultDescription" label="故障描述:"> |
| | | <uni-easyinput v-model="formData.faultDescription" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item name="outNum" label="报修图片:"> |
| | | <uni-file-picker limit="9" :value="fileLists" :image-styles="imageStyles" :sourceType="sourceType" |
| | | @select="select" @progress="progress" @success="success" @fail="fail" @delete="deletea" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item required name="name" :label-width="100" label="是否停机:"> |
| | | <uni-data-select v-model="formData.breakdownFlag" :localdata="isTrueList" @change="changeisTrueList" |
| | | placeholder="请选择" /> |
| | |
| | | <uni-datetime-picker type="datetime" v-model="formData.loadTime" /> |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item name="outNum" label="报修图片:"> |
| | | <uni-file-picker limit="9" :value="fileLists" :image-styles="imageStyles" :sourceType="sourceType" |
| | | @select="select" @progress="progress" @success="success" @fail="fail" @delete="deletea" /> |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item name="faultDescription" label="备注:"> |
| | | <!-- <uni-forms-item name="faultDescription" label="备注:"> |
| | | <uni-easyinput type="textarea" v-model="formData.remark" /> |
| | | </uni-forms-item> |
| | | </uni-forms-item> --> |
| | | </uni-group> |
| | | </uni-forms> |
| | | |
| | |
| | | for (let i = 0; i < this.formData.faultNameList.length; i++) { |
| | | if (this.formData.faultNameList[i].id === value) { |
| | | this.formData.faultType = this.formData.faultNameList[i].faultCategory_dictText |
| | | this.formData.faultDescription = this.formData.faultNameList[i].faultDescription |
| | | // this.formData.faultDescription = this.formData.faultNameList[i].faultDescription |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | .popupView { |
| | | margin-top: 85px; |
| | | margin-top: 45px; |
| | | height: auto; |
| | | } |
| | | </style> |
| | |
| | | methods: { |
| | | navigateToDeviceDetails(equipmentId) { |
| | | this.hasNavigated = true; // 标记已经跳转 |
| | | uni.navigateTo({ |
| | | uni.redirectTo({ |
| | | url: `/pages/device/deviceWebDeils/deviceWebDeils?equipmentId=${encodeURIComponent(equipmentId)}`, |
| | | success: () => { |
| | | console.log('Navigated to device details'); |
| | |
| | | <view class="text-xl text-orange">{{personalList.username}}</view> |
| | | <view class="margin-top-sm"><text class="cuIcon-people"></text> 用户</view> |
| | | </view> |
| | | |
| | | <view class="flex flex-sub flex-direction animation-slide-top" :style="[{animationDelay: '0.2s'}]"> |
| | | <view class="text-xl text-blue">{{personalList.workNo?personalList.workNo:'工号'}}</view> |
| | | <view class="margin-top-sm"><text class="cuIcon-activity"></text> 工号</view> |
| | | </view> |
| | | <view class="flex flex-sub flex-direction animation-slide-top" :style="[{animationDelay: '0.2s'}]"> |
| | | <view class="text-xl text-green">{{personalList.post?personalList.post:'员工'}}</view> |
| | | <view class="margin-top-sm"><text class="cuIcon-news"></text> 职务</view> |
| | |
| | | avatar:'', |
| | | realname:'', |
| | | username:'', |
| | | post:'' |
| | | post:'', |
| | | workNo:'' |
| | | }, |
| | | positionUrl:'/sys/position/list', |
| | | departUrl:'/sys/user/userDepartList', |
| | |
| | | |
| | | // let avatar=(perArr.avatar && perArr.avatar.length > 0)? api.getFileAccessHttpUrl(perArr.avatar):'/static/avatar_boy.png' |
| | | this.personalList.avatar =res.data.result.avatar |
| | | |
| | | this.personalList.workNo =res.data.result.workNo |
| | | // this.personalList.realname = perArr.realname |
| | | this.personalList.username = res.data.result.realname |
| | | // this.personalList.depart = perArr.departIds |
| | |
| | | const userInfo = result.userInfo |
| | | uni.setStorageSync(ACCESS_TOKEN, result.token); |
| | | uni.setStorageSync(USER_INFO, userInfo); |
| | | uni.setStorageSync("userId", userInfo.id); |
| | | uni.setStorageSync(X_TENANT_ID, userInfo.loginTenantId); |
| | | |
| | | commit('SET_TOKEN', result.token) |