diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 8e39ead..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 www.uviewui.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/common/http.api.js b/common/http.api.js index 5b05a61..2553e49 100644 --- a/common/http.api.js +++ b/common/http.api.js @@ -121,6 +121,14 @@ const install = (Vue, vm) => { let tdevice = (data={}) => vm.$u.get(`/third/tdevice/`, data); //设备列表 let eventCateList = (data={}) => vm.$u.get(`/ecm/event_cate/`, data); //算法列表 let algoCreate = (data={}) => vm.$u.post(`/ecm/algo_vchannel/`, data); //算法列表 + + let getExamList = (data={})=>vm.$u.get('/edu/exam/', data);//考试列表 + let startExam = (id)=>vm.$u.post(`/edu/exam/${id}/attend/`);//开始考试 + let submitExam = (id,data={})=>vm.$u.post(`/edu/examrecord/${id}/submit/`,data);//提交 + let examRecord = (data={})=>vm.$u.get(`/edu/examrecord/`,data);//考试记录 + let examRecordDetail = (id,data={})=>vm.$u.get(`/edu/examrecord/${id}/`,data);//考试记录详情 + let paperDetail = (id,data={})=>vm.$u.get(`/edu/paper/${id}/`,data);//测试 + let questionList = (data={})=>vm.$u.get(`/edu/question/`,data);//题目 vm.$u.api = { getUserInfo , @@ -224,7 +232,15 @@ const install = (Vue, vm) => { tdevice, eventCateList, - algoCreate + algoCreate, + + getExamList, + startExam, + submitExam, + examRecord, + paperDetail, + questionList, + examRecordDetail, }; } diff --git a/manifest.json b/manifest.json index 79ace97..bf66a2e 100644 --- a/manifest.json +++ b/manifest.json @@ -2,8 +2,8 @@ "name" : "曲阳金隅EHS", "appid" : "__UNI__B00D419", "description" : "曲阳金隅EHS", - "versionName" : "2.01.03", - "versionCode" : 200103, + "versionName" : "2.01.11", + "versionCode" : 200104, "transformPx" : false, /* 5+App特有相关 */ "app-plus" : { @@ -128,7 +128,8 @@ "disableHostCheck" : true, "proxy" : { "/api" : { - "target" : "http://222.222.144.147:6013/api/", + "target" : "http://49.232.14.174:2226/api/", + // "target" : "http://222.222.144.147:6013/api/", "changeOrigin" : true, "secure" : true, "pathRewrite" : { diff --git a/package.json b/package.json deleted file mode 100644 index a01ec6c..0000000 --- a/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "id": "uView-UI", - "name": "uView UI已发布Sketch和Axure设计资源", - "version": "1.8.4", - "description": "uView正在研发2.0版本,将会全面兼容Nvue,并引入大量激动人心的创新功能", - "keywords": [ - "uView", - "uViewUI", - "UI", - "UI框架", - "uni-app" - ] -} diff --git a/pages.json b/pages.json index 00dede6..4642f95 100644 --- a/pages.json +++ b/pages.json @@ -2,46 +2,24 @@ "easycom": { "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue" }, - // "condition": { //模式配置,仅开发期间生效 - // "current": 0, //当前激活的模式(list 的索引项) - // "list": [{ - // "name": "test", //模式名称 - // "path": "pages/componentsC/test/index", //启动页面,必选 - // "query": "uuid=c4bba940-f69e-11ea-a419-6bafda9d095e&__id__=1" //启动参数,在页面的onLoad函数里面得到 - // }] - // }, + "pages": [{ "path": "pages/login/login_", "style": { - "navigationBarTitleText": "曲阳金隅EHS-密码登录", + "navigationBarTitleText": "密码登录", "enablePullDownRefresh": false } }, { "path": "pages/login/userRegister", "style": { - "navigationBarTitleText": "曲阳金隅EHS-新用户注册", + "navigationBarTitleText": "新用户注册", "enablePullDownRefresh": false } }, - // { - // "path" : "pages/login/login", - // "style" : - // { - // "navigationBarTitleText": "验证码登录", - // "enablePullDownRefresh": false - // } - // }, - // { - // "path": "pages/login/login_password", - // "style": { - // "navigationBarTitleText": "密码登录", - // "enablePullDownRefresh": false - // } - // }, { "path": "pages/home/home_", "style": { - "navigationBarTitleText": "曲阳金隅EHS主页", + "navigationBarTitleText": "主页", "enablePullDownRefresh": false } }, @@ -350,7 +328,7 @@ { "path": "pages/my/my", "style": { - "navigationBarTitleText": "曲阳金隅EHS-个人中心", + "navigationBarTitleText": "个人中心", "enablePullDownRefresh": false } }, @@ -444,6 +422,62 @@ } } + ,{ + "path" : "pages/exam/exam", + "style" : + { + "navigationBarTitleText": "考试列表", + "navigationStyle": "custom", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "pages/exam/preview", + "style" : + { + "navigationBarTitleText": "考前须知", + "navigationStyle": "custom", + "enablePullDownRefresh": false + } + + },{ + "path" : "pages/exam/main", + "style" : + { + "navigationBarTitleText": "考试", + // "navigationStyle": "custom", + "enablePullDownRefresh": false + } + + },{ + "path" : "pages/exam/record", + "style" : + { + "navigationBarTitleText": "考试记录", + "navigationStyle": "custom", + "enablePullDownRefresh": false + } + + },{ + "path" : "pages/exam/result", + "style" : + { + "navigationBarTitleText": "考试结果", + "navigationStyle": "custom", + "enablePullDownRefresh": false + } + + },{ + "path" : "pages/exam/detail", + "style" : + { + "navigationBarTitleText": "考试详情", + // "navigationStyle": "custom", + "enablePullDownRefresh": false + } + + } ,{ "path" : "pages/my/suanfa", "style" : diff --git a/pages/exam/detail.vue b/pages/exam/detail.vue new file mode 100644 index 0000000..977c3a8 --- /dev/null +++ b/pages/exam/detail.vue @@ -0,0 +1,341 @@ + + + + + \ No newline at end of file diff --git a/pages/exam/erroRrecord.vue b/pages/exam/erroRrecord.vue new file mode 100644 index 0000000..02409e3 --- /dev/null +++ b/pages/exam/erroRrecord.vue @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/pages/exam/exam.vue b/pages/exam/exam.vue new file mode 100644 index 0000000..ac30926 --- /dev/null +++ b/pages/exam/exam.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/pages/exam/index.vue b/pages/exam/index.vue new file mode 100644 index 0000000..cf60dc8 --- /dev/null +++ b/pages/exam/index.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/pages/exam/main.vue b/pages/exam/main.vue new file mode 100644 index 0000000..7a3dd7f --- /dev/null +++ b/pages/exam/main.vue @@ -0,0 +1,393 @@ + + + + + \ No newline at end of file diff --git a/pages/exam/preview.vue b/pages/exam/preview.vue new file mode 100644 index 0000000..9f97e3c --- /dev/null +++ b/pages/exam/preview.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/pages/exam/question.vue b/pages/exam/question.vue new file mode 100644 index 0000000..1513a2f --- /dev/null +++ b/pages/exam/question.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/pages/exam/record.vue b/pages/exam/record.vue new file mode 100644 index 0000000..6fb3d43 --- /dev/null +++ b/pages/exam/record.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/pages/exam/result.vue b/pages/exam/result.vue new file mode 100644 index 0000000..7348500 --- /dev/null +++ b/pages/exam/result.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/pages/exam/test.vue b/pages/exam/test.vue new file mode 100644 index 0000000..a36599a --- /dev/null +++ b/pages/exam/test.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/pages/exam/testDetail.vue b/pages/exam/testDetail.vue new file mode 100644 index 0000000..95ed8a3 --- /dev/null +++ b/pages/exam/testDetail.vue @@ -0,0 +1,294 @@ + + + + + \ No newline at end of file diff --git a/pages/home/detail/ticketHandle.vue b/pages/home/detail/ticketHandle.vue index 57f2854..2c4156b 100644 --- a/pages/home/detail/ticketHandle.vue +++ b/pages/home/detail/ticketHandle.vue @@ -376,8 +376,24 @@ + + + * + 审批图片 + + + + + + * + 开始图片 + + + - + * 审批意见 @@ -451,8 +467,10 @@ form: { suggestion: '', close_note: '', - close_dos: '' + close_dos: '', }, + audit_imgs:[], + work_imgs:[], ticketId: null, cateType: null, operation: null, @@ -461,7 +479,8 @@ detail: false, isDisabled: false, btnShow: true, - + work_imgs_show:false, + audit_imgs_show:true, ticketDetail: { intervene_type: 0 }, @@ -573,7 +592,10 @@ text: '其他' }, ], + header:{}, dosOption: [], + fileList:[], + fileList2:[], } }, computed: { @@ -594,6 +616,7 @@ that.type = params.type; }, mounted() { + this.getHeader(); this.$u.api.getTicketLog(this.ticketId).then((res) => { this.tLog = res; }); @@ -611,6 +634,13 @@ }, methods: { + getHeader() { + + this.header = { + Authorization: "Bearer " + this.vuex_token + } + console.log('this.header',this.header) + }, addNodeEnd() { this.$u.api.addNodeEnd(this.ticketId, {suggestion: this.form.suggestion}).then((res) => { uni.navigateBack() @@ -651,15 +681,41 @@ //许可证详情 getOpl() { + let that = this; this.$u.api.oplItem(this.projectId).then((res) => { // debugger; this.oplDetail = res; + that.audit_imgs = []; + that.fileList = []; + if(res.audit_imgs_!==null&&res.audit_imgs_.length>0){ + that.audit_imgs = res.audit_imgs; + res.audit_imgs_.forEach(item=>{ + that.fileList.push({ + url: that.vuex_host+item.path, + id:item.id, + }) + }) + } + }); }, //获取应有的流转 getBtns() { - this.$u.api.getTicketTransitions(this.ticketId).then(res => { - this.operationBtn = res; + let that = this; + that.work_imgs_show = false; + that.audit_imgs_show = false; + this.$u.api.getTicketTransitions(that.ticketId).then(res => { + that.operationBtn = res; + if(res.length>0){ + for (let i=0;i0){ + console.log(that.audit_imgs) + params.ticket_data.audit_imgs = that.audit_imgs; + }else{ + uni.showToast({ + title: '请上传审批图片', + icon: "none" + }) + return; + } + } + if(that.work_imgs.length>0){ + params.ticket_data.work_imgs = that.work_imgs; + } + console.log(params); uni.showLoading({ mask: true, title: '正在提交...' }) - this.$u.api.ticketHandle(this.ticketId, params).then(res => { + that.$u.api.ticketHandle(that.ticketId, params).then(res => { uni.hideLoading() uni.navigateBack() }).catch(e => { @@ -822,7 +895,23 @@ } }, - + imgRemove(index,list,inde){ + this.audit_imgs.splice(index,1); + }, + imgUpSuccess(data,index,list){ + console.log(data,index,list) + uni.showToast({ + title:index, + icon: "none", + }) + this.audit_imgs.push(data.id); + }, + imgRemove2(index,list,inde){ + this.work_imgs.splice(index,1); + }, + imgUpSuccess2(data,index,list){ + this.work_imgs.push(data.id); + }, } } @@ -939,7 +1028,7 @@ height: 179rpx; background-color: #f6f8fc; border: solid 1rpx #e5e5e5; - margin-top: 21rpx; + margin-top: 0; padding: 14rpx 24rpx; font-size: 26rpx; box-sizing: border-box; diff --git a/pages/home/home_.vue b/pages/home/home_.vue index a36eb2e..523c8ab 100644 --- a/pages/home/home_.vue +++ b/pages/home/home_.vue @@ -21,7 +21,48 @@ 事件提醒 - + + @@ -30,13 +71,18 @@ 待审批 + + + + + 查看更多 - + {{item.title}} @@ -71,7 +117,10 @@ - + + 展开查看 + + 暂无待办工单 @@ -85,13 +134,17 @@ 抄送我 + + + + 查看更多 - + {{item.title}} @@ -109,7 +162,10 @@ - + + 展开查看 + + 暂无待办工单 @@ -122,13 +178,17 @@ 最近发生 + + + + 查看更多 - + 事件类型: {{cate.name}} @@ -145,7 +205,10 @@ - + + 展开查看 + + 今日暂无事件 @@ -155,12 +218,6 @@ 下载中 请勿退出 {{percentVal}}% - @@ -190,6 +247,8 @@ eventCount: 0, ticketCount: 0, copyCount:0, + examCount:0, + recordCount:0, act_states: { 0: "草稿中", 1: "进行中", @@ -198,7 +257,9 @@ 4: "已完成", 5: "已关闭", }, - // 2022年2月18日 + daibanShow:true, + copyShow:true, + tongzhiShow:true, mytopimg: require("@/static/home/bgimg-top.jpg"), } }, @@ -220,11 +281,47 @@ this.getcopy(); this.getEventAgg(); this.getEvent(); + this.getExams(); + this.getExamRecord(); } }, methods: { closeP(){}, + getExams(){ + let that = this; + that.$u.api.getExamList({ + can_attend:true, + is_my:true, + page:1, + page_size:1, + }).then(res=>{ + if(res.count){ + that.examCount = res.count; + } + }) + }, + getExamRecord(){ + let that = this; + that.$u.api.examRecord({ + page:1, + page_size:1, + is_my:true, + }).then(res=>{ + if(res.count){ + that.recordCount = res.count; + } + }) + }, + daibanChange(){ + this.daibanShow = !this.daibanShow; + }, + copyChange(){ + this.copyShow = !this.copyShow; + }, + tongzhiChange(){ + this.tongzhiShow = !this.tongzhiShow; + }, checkVersion() { let that = this; uni.getSystemInfo({ @@ -351,6 +448,16 @@ }) }, goIntoTargetPage(type) { + if (type == "exam") { + uni.navigateTo({ + url: "/pages/exam/exam" + }) + } + if (type == "record") { + uni.navigateTo({ + url: "/pages/exam/record" + }) + } if(this.limitedVisit==true){ }else{ let params = `?type=${type}`; @@ -460,9 +567,6 @@ background-color: #ffffff; border-radius: 10rpx; margin: 0 auto; - margin-top: 88rpx; - } - .copy01{ margin-top: 20upx; } .title { diff --git a/pages/my/my.vue b/pages/my/my.vue index 078f450..70010ea 100644 --- a/pages/my/my.vue +++ b/pages/my/my.vue @@ -29,17 +29,23 @@ - - - 我的证书 - - 我的资料 + + + + 我的证书 + + @@ -152,6 +158,11 @@ url: '/pages/my/suanfa' }) } + else if (type == "exam") { + uni.navigateTo({ + url: '/pages/exam/record' + }) + } }, getUserInfo() { var promise; diff --git a/pages/workSpace/operation/oplDetail.vue b/pages/workSpace/operation/oplDetail.vue index a7f2e9a..db67445 100644 --- a/pages/workSpace/operation/oplDetail.vue +++ b/pages/workSpace/operation/oplDetail.vue @@ -75,11 +75,23 @@ - 现场照片 + 申请照片 + + 审批照片 + + + + + + 开始照片 + + + + 关闭照片 @@ -120,7 +132,9 @@ - 气体检测记录: + 气体检测记录: + 新增 + @@ -203,7 +217,74 @@ - + + + + 气体检测记录 + + +
+ + 检测时间: + + + + 检测部位: + + + + O2(%): + + + + CO: + + + + 可燃气体: + + + + h2s: + + + + 45℃: + + + + 检验结论: + + + + + + + 检测人: + + + {{checker_name}} + + + + + + + +
+
+
+
@@ -226,16 +307,27 @@ mtask_uid:null }, create_imgs_list: [], + audit_imgs: [], + work_imgs:[], close_imgs_list: [], msOptions:{ "REVOKED": "已停止", "STARTED": "进行中", "SUCCESS": "已完成" }, + gasForm: { + opl: '', + check_time: null, + check_place:'', + is_ok:true, + checker:'', + }, + checker_name:'', preImgSrc:'', workerItem:{}, preImg:false, detailLimited:false, + limitedDialog:false, workerList:[], gasList:[], act_states: { @@ -272,10 +364,22 @@ id:item.id, }) }) - res.close_imgs_.forEach(item=>{ + res.audit_imgs_.forEach(item2=>{ + that.audit_imgs.push({ + url: that.vuex_host+item2.path, + id:item2.id, + }) + }) + res.close_imgs_.forEach(item3=>{ that.close_imgs_list.push({ - url: that.vuex_host+item.path, - id:item.id, + url: that.vuex_host+item3.path, + id:item3.id, + }) + }) + res.work_imgs_.forEach(item4=>{ + that.work_imgs.push({ + url: that.vuex_host+item4.path, + id:item4.id, }) }) }); @@ -295,6 +399,34 @@ that.gasList =res; }) }, + gas_add(){ + console.log('gas_add') + this.limitedDialog = true; + }, + gas_add_close() { + this.limitedDialog = false; + }, + showCheckerPicker() { + let params='?type=checker&typeName=checker_name' + uni.navigateTo({ + url:"../../comm/userSelect/index"+params + }) + }, + + timeChange(e){ + this.gasForm.check_time = e.detail.value; + }, + gasformSubmit(val) { + let that = this; + that.gasForm.opl = that.oplId; + that.gasForm.checker = that.formData.checker; + that.$u.api.oplGasCreate(that.gasForm).then(res => { + if (res.err_msg) {} else { + that.getgasList(); + that.limitedDialog = false; + } + }) + }, mtaskStateChange(type){ let that = this; uni.showLoading({ @@ -473,6 +605,7 @@ .wrap-top{ line-height: 60upx; margin-top: 20upx; + position: relative; } .item { margin: 0rpx 32rpx; @@ -633,4 +766,79 @@ left: 50%; transform: translate(-50% ,-50%); } + .gasAdd{ + position: absolute; + right: 15rpx; + top: 26rpx; + } + .dialogWrap { + position: fixed; + width: 100vw; + height: 100vh; + background-color: rgba(0, 0, 0, .3); + top: 0; + left: 0; + z-index: 110; + } + + .dialogCont { + width: 92vw; + position: absolute; + top: 50%; + margin: auto; + background-color: #ffffff; + left: 4vw; + transform: translateY(-50%); + padding: 20rpx; + border-radius: 20rpx; + } + + .dialogTitle { + font-size: 36rpx; + padding-bottom: 20rpx; + border-bottom: 1upx solid #eeeeee; + display: flex; + justify-content: space-between; + } + + .uni-form-item { + padding: 10px 0; + display: flex; + border-bottom: 1upx solid #eeeeee; + } + + .uni-form-item>.title, + >>>uni-input, + >>>.uni-input, + >>>.uni-input-wrapper, + >>>.input-placeholder { + height: 80upx; + line-height: 80upx; + font-size: 32upx; + width: 160upx; + } + + >>>uni-input, + >>>.uni-input, + >>>.uni-input-wrapper, + >>>.input-placeholder { + width: 100%; + } + + .content { + flex: 1; + } + + .uni-btn-v { + text-align: center; + } + + .dialogCloseImg { + width: 52rpx; + height: 52rpx; + background-image: url('../../../static/my/my_apply/zuofei.png'); + background-repeat: no-repeat; + background-size: cover; + } + diff --git a/static/exam/cross.png b/static/exam/cross.png new file mode 100644 index 0000000..91c9d93 Binary files /dev/null and b/static/exam/cross.png differ diff --git a/static/exam/error.png b/static/exam/error.png new file mode 100644 index 0000000..5de2ceb Binary files /dev/null and b/static/exam/error.png differ diff --git a/static/home/fafang.png b/static/home/fafang.png new file mode 100644 index 0000000..f948b8c Binary files /dev/null and b/static/home/fafang.png differ diff --git a/static/home/kaoqin.png b/static/home/kaoqin.png new file mode 100644 index 0000000..3c9d1b3 Binary files /dev/null and b/static/home/kaoqin.png differ diff --git a/store/index.js b/store/index.js index 1e7f29a..20dbc10 100644 --- a/store/index.js +++ b/store/index.js @@ -39,14 +39,11 @@ const store = new Vuex.Store({ vuex_login: 'http://qyjy.ctc-zc.com/h5/', vuex_version: '1.00.08', vuex_host: 'http://222.222.144.147:6013', - // vuex_host: 'http://49.232.14.174:2226', vuex_api: 'http://222.222.144.147:6013/api', - // vuex_api: 'http://49.232.14.174:2226/api', vuex_apifile: 'http://222.222.144.147:6013/api/file/', - // vuex_api: 'http://127.0.0.1:8000/api', - // vuex_host: 'http://10.99.5.79:20309', - // vuex_api: 'http://10.99.5.79:20309/api', - // vuex_apifile: 'http://10.99.5.79:20309/api/file/', + // vuex_host: 'http://49.232.14.174:2226', + // vuex_api: 'http://49.232.14.174:2226/api', + // vuex_apifile: 'http://49.232.14.174:2226/api/file/', }, mutations: { $uStore(state, payload) { diff --git a/uni.scss b/uni.scss index 8c223a7..7746c68 100644 --- a/uni.scss +++ b/uni.scss @@ -5,3 +5,13 @@ */ @import 'uview-ui/theme.scss'; +>>>.uni-navbar__header, + >>>.uni-status-bar{ + background-image: linear-gradient(270deg, + #0ca7ee 0%, + #005aff 100%, + #2a8cff 100%, + #54bdff 100%), + linear-gradient(#e60012, + #e60012); + } \ No newline at end of file diff --git a/uview-ui/components/u-calendar/u-calendar.vue b/uview-ui/components/u-calendar/u-calendar.vue index 2b30184..70059cb 100644 --- a/uview-ui/components/u-calendar/u-calendar.vue +++ b/uview-ui/components/u-calendar/u-calendar.vue @@ -288,6 +288,10 @@ }, init() { let now = new Date(); + let minDate = new Date(this.minDate); + let maxDate = new Date(this.maxDate); + if (now < minDate) now = minDate; + if (now > maxDate) now = maxDate; this.year = now.getFullYear(); this.month = now.getMonth() + 1; this.day = now.getDate(); @@ -636,4 +640,4 @@ } } } - \ No newline at end of file + diff --git a/uview-ui/components/u-collapse-item/u-collapse-item.vue b/uview-ui/components/u-collapse-item/u-collapse-item.vue index 3b66bfa..6656657 100644 --- a/uview-ui/components/u-collapse-item/u-collapse-item.vue +++ b/uview-ui/components/u-collapse-item/u-collapse-item.vue @@ -110,7 +110,8 @@ this.parent = this.$u.$parent.call(this, 'u-collapse'); if(this.parent) { this.nameSync = this.name ? this.name : this.parent.childrens.length; - this.parent.childrens.push(this); + // 不存在时才添加本实例 + !this.parent.childrens.includes(this) && this.parent.childrens.push(this); this.headStyle = this.parent.headStyle; this.bodyStyle = this.parent.bodyStyle; this.arrowColor = this.parent.arrowColor; diff --git a/uview-ui/components/u-image/u-image.vue b/uview-ui/components/u-image/u-image.vue index c729c3c..8a890be 100644 --- a/uview-ui/components/u-image/u-image.vue +++ b/uview-ui/components/u-image/u-image.vue @@ -172,6 +172,7 @@ export default { this.loading = false; } else { this.isError = false; + this.loading = true; } } } diff --git a/uview-ui/components/u-input/u-input.vue b/uview-ui/components/u-input/u-input.vue index f2aea72..301e800 100644 --- a/uview-ui/components/u-input/u-input.vue +++ b/uview-ui/components/u-input/u-input.vue @@ -50,6 +50,7 @@ :selection-end="uSelectionEnd" :selection-start="uSelectionStart" :show-confirm-bar="showConfirmbar" + :adjust-position="adjustPosition" @focus="onFocus" @blur="handleBlur" @input="handleInput" @@ -213,6 +214,11 @@ export default { showConfirmbar:{ type:Boolean, default:true + }, + // 弹出键盘时是否自动调节高度,uni-app默认值是true + adjustPosition: { + type: Boolean, + default: true } }, data() { @@ -300,11 +306,12 @@ export default { handleBlur(event) { // 最开始使用的是监听图标@touchstart事件,自从hx2.8.4后,此方法在微信小程序出错 // 这里改为监听点击事件,手点击清除图标时,同时也发生了@blur事件,导致图标消失而无法点击,这里做一个延时 + let value = event.detail.value; setTimeout(() => { this.focused = false; }, 100) // vue 原生的方法 return 出去 - this.$emit('blur', event.detail.value); + this.$emit('blur', value); setTimeout(() => { // 头条小程序由于自身bug,导致中文下,每按下一个键(尚未完成输入),都会触发一次@input,导致错误,这里进行判断处理 // #ifdef MP-TOUTIAO @@ -312,7 +319,7 @@ export default { this.lastValue = value; // #endif // 将当前的值发送到 u-form-item 进行校验 - this.dispatch('u-form-item', 'on-form-blur', event.detail.value); + this.dispatch('u-form-item', 'on-form-blur', value); }, 40) }, onFormItemError(status) { diff --git a/uview-ui/components/u-number-box/u-number-box.vue b/uview-ui/components/u-number-box/u-number-box.vue index 54a679e..3b8e8bf 100644 --- a/uview-ui/components/u-number-box/u-number-box.vue +++ b/uview-ui/components/u-number-box/u-number-box.vue @@ -10,7 +10,7 @@
- + {{ item1[labelName] }} @@ -278,12 +278,13 @@ export default { let columnIndex = e.detail.value; // 由于后面是需要push进数组的,所以需要先清空数组 this.selectValue = []; + this.defaultSelector = columnIndex; if(this.mode == 'mutil-column-auto') { // 对比前后两个数组,寻找变更的是哪一列,如果某一个元素不同,即可判定该列发生了变化 this.lastSelectIndex.map((val, idx) => { if (val != columnIndex[idx]) index = idx; }); - this.defaultSelector = columnIndex; + for (let i = index + 1; i < this.columnNum; i++) { // 当前变化列的下一列的数据,需要获取上一列的数据,同时需要指定是上一列的第几个的children,再往后的 // 默认是队列的第一个为默认选项 @@ -333,6 +334,8 @@ export default { }, close() { this.$emit('input', false); + // 重置default-value默认值 + this.$set(this, 'defaultSelector', [0]); }, // 点击确定或者取消 getResult(event = null) { diff --git a/uview-ui/components/u-tabs/u-tabs.vue b/uview-ui/components/u-tabs/u-tabs.vue index 0c59658..3775fcd 100644 --- a/uview-ui/components/u-tabs/u-tabs.vue +++ b/uview-ui/components/u-tabs/u-tabs.vue @@ -3,9 +3,9 @@ background: bgColor }"> - + - + diff --git a/uview-ui/components/u-th/u-th.vue b/uview-ui/components/u-th/u-th.vue index 9fe5a16..c736b9b 100644 --- a/uview-ui/components/u-th/u-th.vue +++ b/uview-ui/components/u-th/u-th.vue @@ -39,7 +39,7 @@ style.padding = this.parent.padding; style.borderBottom = `solid 1px ${this.parent.borderColor}`; style.borderRight = `solid 1px ${this.parent.borderColor}`; - Object.assign(style, this.parent.style); + Object.assign(style, this.parent.thStyle); this.thStyle = style; } } diff --git a/uview-ui/components/u-upload/u-upload.vue b/uview-ui/components/u-upload/u-upload.vue index fc6f2c5..481dc9d 100644 --- a/uview-ui/components/u-upload/u-upload.vue +++ b/uview-ui/components/u-upload/u-upload.vue @@ -21,7 +21,7 @@ { - return val.url == value.url; - }) - // 如果内部没有这个图片(tmp为false),则添加到内部 - !tmp && this.lists.push({ url: value.url, error: false, progress: 100,id:value.id}); - }else{ - this.lists.push({ url: value, error: false, progress: 100}); - } - + let tmp = this.lists.some(val => { + return val.url == value.url; + }) + // 如果内部没有这个图片(tmp为false),则添加到内部 + !tmp && this.lists.push({ url: value.url, error: false, progress: 100 }); }); } }, @@ -431,7 +421,11 @@ export default { name: this.name, formData: this.formData, header: this.header, + // #ifdef MP-ALIPAY + fileType:'image', + // #endif success: res => { + console.log(res) // 判断是否json字符串,将其转为json格式 let data = this.toJson && this.$u.test.jsonString(res.data) ? JSON.parse(res.data) : res.data; if (![200, 201, 204].includes(res.statusCode)) { @@ -441,6 +435,7 @@ export default { this.lists[index].response = data; this.lists[index].progress = 100; this.lists[index].error = false; + console.log(this.lists) this.$emit('on-success', data, index, this.lists, this.index); } }, @@ -508,7 +503,7 @@ export default { // 执行移除图片的动作,上方代码只是判断是否可以移除 handlerDeleteItem(index) { // 如果文件正在上传中,终止上传任务,进度在0 < progress < 100则意味着正在上传 - if (this.lists[index].process < 100 && this.lists[index].process > 0) { + if (this.lists[index].progress < 100 && this.lists[index].progress > 0) { typeof this.lists[index].uploadTask != 'undefined' && this.lists[index].uploadTask.abort(); } this.lists.splice(index, 1); diff --git a/uview-ui/components/uview-v1/uview-v1.vue b/uview-ui/components/uview-v1/uview-v1.vue new file mode 100644 index 0000000..e69de29 diff --git a/uview-ui/libs/config/config.js b/uview-ui/libs/config/config.js index 44925a1..d77e971 100644 --- a/uview-ui/libs/config/config.js +++ b/uview-ui/libs/config/config.js @@ -1,5 +1,5 @@ -// 此版本发布于2020-03-17 -let version = '1.8.4'; +// 此版本发布于2022-04-19 +let version = '1.8.6'; export default { v: version, @@ -12,4 +12,4 @@ export default { 'error', 'warning' ] -} \ No newline at end of file +} diff --git a/uview-ui/libs/function/guid.js b/uview-ui/libs/function/guid.js index 8497664..e04190a 100644 --- a/uview-ui/libs/function/guid.js +++ b/uview-ui/libs/function/guid.js @@ -6,7 +6,7 @@ * v-for的时候,推荐使用后端返回的id而不是循环的index * @param {Number} len uuid的长度 * @param {Boolean} firstU 将返回的首字母置为"u" - * @param {Nubmer} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制 + * @param {Number} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制 */ function guid(len = 32, firstU = true, radix = null) { let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); @@ -29,7 +29,7 @@ function guid(len = 32, firstU = true, radix = null) { } } } - // 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class + // 移除第一个字符,并用u替代,因为第一个字符为数值时,该guid不能用作id或者class if (firstU) { uuid.shift(); return 'u' + uuid.join(''); diff --git a/uview-ui/libs/function/test.js b/uview-ui/libs/function/test.js index fd25e18..1fde462 100644 --- a/uview-ui/libs/function/test.js +++ b/uview-ui/libs/function/test.js @@ -2,7 +2,7 @@ * 验证电子邮箱格式 */ function email(value) { - return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value); + return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(value); } /** @@ -37,7 +37,7 @@ function dateISO(value) { * 验证十进制数字 */ function number(value) { - return /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value) + return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value) } /** diff --git a/uview-ui/libs/mixin/mixin.js b/uview-ui/libs/mixin/mixin.js index e388986..cb64545 100644 --- a/uview-ui/libs/mixin/mixin.js +++ b/uview-ui/libs/mixin/mixin.js @@ -48,7 +48,7 @@ module.exports = { uni.$emit('uOnReachBottom') }, beforeDestroy() { - // 判断当前页面是否存在parent和chldren,一般在checkbox和checkbox-group父子联动的场景会有此情况 + // 判断当前页面是否存在parent和children,一般在checkbox和checkbox-group父子联动的场景会有此情况 // 组件销毁时,移除子组件在父组件children数组中的实例,释放资源,避免数据混乱 if(this.parent && uni.$u.test.array(this.parent.children)) { // 组件销毁时,移除父组件中的children数组中对应的实例 diff --git a/uview-ui/libs/util/async-validator.js b/uview-ui/libs/util/async-validator.js index d7215b9..6183d0a 100644 --- a/uview-ui/libs/util/async-validator.js +++ b/uview-ui/libs/util/async-validator.js @@ -437,7 +437,7 @@ function range(rule, value, source, errors, options) { } if (str) { - // 处理码点大于U+010000的文字length属性不准确的bug,如"𠮷𠮷𠮷".lenght !== 3 + // 处理码点大于U+010000的文字length属性不准确的bug,如"𠮷𠮷𠮷".length !== 3 val = value.replace(spRegexp, '_').length; } diff --git a/uview-ui/package.json b/uview-ui/package.json index 431d585..f911d31 100644 --- a/uview-ui/package.json +++ b/uview-ui/package.json @@ -1,39 +1,31 @@ { - "name": "uview-ui", - "version": "1.8.4", - "description": "uView UI,是uni-app生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水", - "main": "index.js", - "keywords": [ - "uview", - "uView", - "uni-app", - "uni-app ui", - "uniapp", - "uviewui", - "uview ui", - "uviewUI", - "uViewui", - "uViewUI", - "uView UI", - "uni ui", - "uni UI", - "uniapp ui", - "ui", - "UI框架", - "uniapp ui框架", - "uniapp UI" - ], - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "" - }, - "devDependencies": { - "node-sass": "^4.14.0", - "sass-loader": "^8.0.2" - }, - "author": "uView", - "license": "MIT" -} + "name": "uView", + "version": "1.8.6", + "description": "uView UI,是uni-app生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水", + "main": "index.js", + "keywords": [ + "uview", + "ui", + "uni-app" + ], + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "" + }, + "devDependencies": { + "node-sass": "^4.14.0", + "sass-loader": "^8.0.2" + }, + "author": "uView", + "license": "MIT", + "id": "uview-v1", + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ] + } +} \ No newline at end of file