pages.json
@@ -135,6 +135,20 @@ "navigationBarTitleText" : "申请详情", "navigationStyle": "custom" } }, { "path" : "translate/translate", "style" : { "navigationBarTitleText" : "执法审批" } }, { "path" : "translateRecord/translateRecord", "style" : { "navigationBarTitleText" : "" } } ] } pages/registerCompany/registerCompany.vue
@@ -63,7 +63,7 @@ <input type="text" placeholder="请输入" v-model="form.companyAddress"/> </view> </view> --> <u-button @click="register"> <u-button @click="register" class="u-reset-button"> 注册 </u-button> </view> policy/applyRecordDetails/applyRecordDetails.scss
@@ -63,11 +63,20 @@ } .view-step{ padding: 0 24rpx; .step-content{ position: relative; padding-left: 64rpx; &::after{ height: 100rpx; padding-bottom: 64rpx; &::before{ content: ''; display: block; height: 100%; width: 4rpx; background-color: #E7F8F0; position: absolute; left: 19rpx; } .icon{ position: absolute; @@ -94,6 +103,12 @@ } } .none{ &::before{ display: none; } padding-bottom: 0; } } } policy/applyRecordDetails/applyRecordDetails.vue
@@ -116,7 +116,27 @@ <view class="view-step"> <view class="step-content"> <image class="icon" src="/static/policy/icon.png" mode="widthFix"></image> <view class="top-title"> 提交申请 </view> <view class="down-tips"> <view>提交人:<text>林小零</text></view> <view class="time">2024-06-07 12:14</view> </view> </view> <view class="step-content"> <image class="icon" src="/static/policy/icon.png" mode="widthFix"></image> <view class="top-title"> 提交申请 </view> <view class="down-tips"> <view>提交人:<text>林小零</text></view> <view class="time">2024-06-07 12:14</view> </view> </view> <view class="step-content none"> <!-- <image class="icon" src="/static/policy/icon.png" mode="widthFix"></image> --> <image src="/static/policy/refject.png" mode="widthFix" class="icon"></image> <view class="top-title"> 提交申请 </view> policy/components/index.vue
@@ -2,11 +2,11 @@ <view class="page-content"> <view class="banner"> <image src="https://picsum.photos/200/200" mode=""></image> <image src="/static/head.png" mode=""></image> </view> <view class="main-page-box"> <view class="second-box"> <image src="/static/index.png" class="icon"></image> <image src="/static/hqzc.png" class="icon"></image> <view class="driver"></view> <view class="right-box"> <view> @@ -19,11 +19,12 @@ </view> </view> <view class="policy-list"> <u-button @click="applyPulicy">执法申请</u-button> <u-button v-if="isJudge">执法审批</u-button> <u-button @click="report">执法结果上报</u-button> <u-button @click="applyRecord">记录查询</u-button> <u-button @click="goDataLook">数据看板</u-button> <!-- v-if="isJudge" --> <image src="/static/policy/zhi1.png" @click="applyPulicy" mode="widthFix"></image> <image src="/static/policy/zhi2.png" @click="recordZhifa" mode="widthFix"></image> <image src="/static/policy/zhi3.png" @click="report" mode="widthFix"></image> <image src="/static/policy/zhi4.png" @click="applyRecord" mode="widthFix"></image> <image src="/static/policy/zhi5.png" @click="goDataLook" mode="widthFix"></image> </view> </view> </view> @@ -70,6 +71,11 @@ uni.navigateTo({ url: '/policy/applyRecord/applyRecord' }) }, recordZhifa() { uni.navigateTo({ url: '/policy/translate/translate' }) } } } @@ -79,7 +85,7 @@ .page-content{ .banner{ width: 100%; height: 400rpx; height: 520rpx; image{ width: 100%; height: 100%; @@ -127,6 +133,14 @@ } .policy-list{ margin: 22rpx 32rpx; image{ width: 100%; height: 160rpx; margin-bottom: 20rpx; } image::last-child{ margin-bottom: 0; } } } </style> policy/components/mine.vue
@@ -125,7 +125,7 @@ width: calc(100% - 64rpx); left: 32rpx; position: fixed; bottom: 140rpx; bottom: 180rpx; } } </style> policy/components/popup.vue
New file @@ -0,0 +1,89 @@ <template> <u-popup :show="show" @close="close" @open="open" mode="bottom" round="10" closeable> <view class="page-box"> <view class="title"> 执法申请审批 </view> <view class="border"></view> <view class="padding"> <view> <u-radio-group placement="row"> <u-radio active-color="#3EB47A" label="通过" name="3"></u-radio> <u-radio active-color="#3EB47A" label="拒绝" name="3"></u-radio> </u-radio-group> </view> <view class="margin-top"> <u-textarea placeholder="请输入拒绝理由..."></u-textarea> </view> </view> <view class="down"> <view class="cancel button" @click="close">取消</view> <view class="enter" @entery="entery">确认</view> </view> </view> </u-popup> </template> <script> export default { data() { return { show: false } }, methods: { open() { this.show = true }, close(){ this.show = false this.$emit('cancel') }, entery(){ this.$emit('entery') } } } </script> <style scoped lang="scss"> .page-box{ padding: 24rpx 0; .title{ font-size: 36rpx; font-weight: 700; padding: 0 32rpx; border-bottom: 2rpx solid #F4F4F4; padding-bottom: 24rpx; margin-bottom: 48rpx; } .padding{ padding: 0 24rpx; } .margin-top{ margin-top: 50rpx; } .down{ padding: 34rpx 30rpx 30rpx; display: flex; justify-content: space-between; >view{ display: inline-block; } .button{ padding: 20rpx 40rpx; background: #F7F7F7; border-radius: 20rpx; } .enter{ width: 65%; background: #1171E0; color: white; border-radius: 20rpx; padding: 20rpx 40rpx; text-align: center; } } } </style> policy/components/tabs.vue
@@ -1,12 +1,16 @@ <template> <view class="fixed-down"> <view @click="activeClick(0)" :class="{ active: active == 0}"> <image src="/static/policy/main.png" mode="heightFix" v-if="active != 0"></image> <image src="/static/policy/main-select.png" mode="heightFix" v-if="active == 0"></image> <view>工作台</view> </view> <view @click="scode"> 扫码 <view @click="scode" class="relative"> <image class="code" src="/static/policy/scode.png" mode="heightFix"></image> </view> <view @click="activeClick(1)" :class="{ active: active == 1}"> <image src="/static/policy/user.png" mode="heightFix" v-if="active != 1"></image> <image src="/static/policy/user-select.png" mode="heightFix" v-if="active == 1"></image> <view>我的</view> </view> </view> @@ -46,12 +50,30 @@ justify-content: space-around; align-items: center; padding-bottom: 29rpx; padding-top: 20rpx; background-color: white; font-size: 20rpx; color: #7E8596FF; &>view{ text-align: center; } .active{ color: #1171E0FF; } image{ height: 58rpx; width: 58rpx; } .code{ width: 108rpx; height: 108rpx; position: absolute; top: -20rpx; left: 0; } .relative{ position: relative; width: 108rpx; height: 108rpx; } } </style> policy/policyIndex/policyIndex.scss
@@ -0,0 +1,3 @@ .padding-bottom{ padding-bottom: 100rpx; } policy/policyIndex/policyIndex.vue
@@ -1,5 +1,5 @@ <template> <view> <view class="padding-bottom"> <policyIndexVue v-if="activeNumber == 0"></policyIndexVue> <minePage v-if="activeNumber == 1"></minePage> <tabsCom :activeNumber.sync="activeNumber"></tabsCom> policy/translate/translate.scss
New file @@ -0,0 +1,125 @@ .page-box{ .list{ margin: 20rpx 32rpx; .select-image{ margin-right: 28rpx; } image{ width: 40rpx; height: 40rpx; } .select-box{ display: flex; justify-content: flex-start; align-items: center; } .start{ .list-item{ width: calc(100% - 68rpx); } } .list-item{ width: 100%; padding: 24rpx; background-color: white; border-radius: 10rpx; margin-bottom: 20rpx; .top-title{ display: flex; justify-content: space-between; align-items: center; font-size: 32rpx; margin-bottom: 28rpx; .status{ font-size: 28rpx; color: #FE7B32; } } .user-info{ font-size: 28rpx; color: #4A4E60; display: flex; justify-content: flex-start; align-items: center; .driver{ width: 2rpx; height: 20rpx; background: #F1F1F1; margin: 0 20rpx; } } .set-line{ font-size: 26rpx; color: #4A4E60; margin-top: 12rpx; text{ color: #C3C6CD; } } .line{ border-bottom: 3rpx dotted #F4F4F4; margin: 24rpx 0; } .set-line1{ font-size: 24rpx; color: #4A4E60; margin-top: 12rpx; text{ color: #C3C6CD; } } .button{ background-color: #1171E0; display: inline-block; color: white; padding: 10rpx 36rpx; border-radius: 10rpx; } .set-start{ align-items: flex-end; } } } .down{ position: fixed; background: white; width: 100%; bottom: 0; padding: 32rpx 22rpx 40rpx; text-align: center; box-sizing: border-box; display: flex; justify-content: space-between; align-items: center; .button{ border-radius: 20rpx; border: 2rpx solid #ABD2FF; background: #F0F8FF; color: #1171E0; padding: 20rpx 30rpx; } .more-options{ width: 60%; background: #1171E0; color: #F0F8FF; } .start-option{ width: calc(100% - 98rpx) !important; } } .show-check{ font-size: 26rpx; color: #202D44; } .judge{ .select-image{ margin-right: 28rpx; width: 70rpx; } image{ width: 40rpx; height: 40rpx; } } } policy/translate/translate.vue
New file @@ -0,0 +1,144 @@ <template> <view class="page-box"> <view class="list"> <view class="select-box" v-for="(item,index) in list" :key="index" :class="{start: isJudege}"> <view class="select-image" v-if="isJudege" @click="setIsSelect(index)"> <image src="/static/policy/checkbox.png" mode="widthFix" v-show="item.isSelect"></image> <image src="/static/policy/none-checkbox.png" mode="widthFix" v-show="!item.isSelect"></image> </view> <view class="list-item"> <view class="top-title"> <text>24年5月突击检查消防安全</text> <text class="status">待审批</text> </view> <view class="user-info"> <text>王思雨</text> <view class="driver"></view> <text>执法一大队</text> </view> <view class="set-line"> <text>执法对象:</text>河南觉醒科技有限公司 </view> <view class="line"></view> <view class="set-flex set-start set-flex-content-between"> <view> <view class="set-line1"> <text>执法时间:</text>2024-05-12 12:00 </view> <view class="set-line1"> <text>申请时间:</text>2024-05-12 12:00:12 </view> </view> <view class="button" v-if="!isJudege" @click="goStartJudeg"> 审批 </view> </view> </view> </view> </view> <view class="down" v-if="!isJudege"> <view class="button" @click="goRecord">审批记录</view> <view class="button more-options" @click="moreJudeg">批量审批</view> </view> <view class="down judge" v-else> <view class="select-image" @click="allSelect()"> <image src="/static/policy/checkbox.png" mode="widthFix" v-show="isAllSelect"></image> <image src="/static/policy/none-checkbox.png" mode="widthFix" v-show="!isAllSelect"></image> <view class="show-check">全选</view> </view> <view class="button more-options start-option" @click="moreStart">立即审批</view> </view> <popupCom ref="popup" @entery="entery" @cancel="cancelSelect"></popupCom> </view> </template> <script> import popupCom from '@/policy/components/popup.vue' export default { components: { popupCom }, data() { return { list1: [{ name: '待上报', }, { name: '已上报', }], isJudege: false, list: [ { isSelect: false } ], } }, computed: { isAllSelect(){ const value = this.list.every(item => item.isSelect) return value } }, methods: { goRecord() { uni.navigateTo({ url: `/policy/translateRecord/translateRecord` }) }, click() { }, goStartJudeg() { this.$refs.popup.open() }, // 批量审批 moreJudeg() { if(!this.list.length){ return } this.isJudege = true }, setIsSelect(index){ this.list[index].isSelect = !this.list[index].isSelect }, allSelect() { this.list.map(item => item.isSelect = !this.isAllSelect) }, moreStart() { const value = this.list.some(item => item.isSelect) if(value) { this.goStartJudeg() } else { uni.showToast({ title: '请选择审批', icon: 'none' }) } }, entery() { this.isJudege = false }, cancelSelect() { this.isJudege = false this.list.map(item => item.isSelect = false) } } } </script> <style> page { background-color: #F4F4F4; } </style> <style lang="scss" scoped> @import "./translate.scss"; /deep/ .u-radio { margin-right: 84rpx !important; } /deep/ .u-textarea { background-color: #F4F4F4 !important; border: none; } </style> policy/translateRecord/translateRecord.scss
New file @@ -0,0 +1,104 @@ .page-box{ padding-bottom: 40rpx; .list{ margin: 20rpx 32rpx; .list-item{ padding: 24rpx; background-color: white; border-radius: 10rpx; margin-bottom: 20rpx; .top-title{ display: flex; justify-content: space-between; align-items: center; font-size: 32rpx; margin-bottom: 28rpx; .status{ font-size: 28rpx; color: #B4B9BF; } .status1{ color: #FE7B32; } .status2{ color: #3EB47A; } .status3{ color: #1171E0; } .status4{ color: #EB4746; } } .user-info{ font-size: 28rpx; color: #4A4E60; display: flex; justify-content: flex-start; align-items: center; .driver{ width: 2rpx; height: 20rpx; background: #F1F1F1; margin: 0 20rpx; } } .set-line{ font-size: 26rpx; color: #4A4E60; margin-top: 12rpx; text{ color: #C3C6CD; } } .line{ border-bottom: 3rpx dotted #F4F4F4; margin: 24rpx 0; } .set-line1{ font-size: 24rpx; color: #4A4E60; margin-top: 12rpx; text{ color: #C3C6CD; } } .button{ background-color: #1171E0; display: inline-block; color: white; padding: 10rpx 36rpx; border-radius: 10rpx; } .set-start{ align-items: flex-end; } } } .down{ position: fixed; background: white; width: 100%; bottom: 0; padding: 32rpx 22rpx 40rpx; text-align: center; box-sizing: border-box; .button{ border-radius: 20rpx; border: 2rpx solid #ABD2FF; background: #F0F8FF; color: #1171E0; padding: 20rpx 0; } } .set-search{ margin: 0 32rpx 0; padding-top: 26rpx; } .border{ border-bottom: 2rpx solid #F6F6F6; margin: 20rpx 0 0; } } policy/translateRecord/translateRecord.vue
New file @@ -0,0 +1,74 @@ <template> <view class="page-box"> <u-sticky bgColor="white"> <view class="set-search"> <u-search placeholder="请输入执法主题 " shape="square" :showAction="false"></u-search> </view> <view class="border"></view> <u-tabs :list="list1" @click="click" :scrollable="false" bgColor="white"></u-tabs> </u-sticky> <view class="list"> <view class="list-item" @click="goReport"> <view class="top-title"> <text>24年5月突击检查消防安全</text> <text class="status status2">通过</text> <text class="status status4">拒绝</text> </view> <view class="user-info"> <text>王思雨</text> <view class="driver"></view> <text>执法一大队</text> </view> <view class="set-line"> <text>执法对象:</text>河南觉醒科技有限公司 </view> <view class="line"></view> <view class="set-flex set-start set-flex-content-between"> <view> <view class="set-line1"> <text>执法时间:</text>2024-05-12 12:00 </view> <view class="set-line1"> <text>申请时间:</text>2024-05-12 12:00:12 </view> </view> </view> </view> </view> </view> </template> <script> export default { data() { return { list1: [{ name: '全部', }, { name: '通过', }, { name: '拒绝', }] } }, methods: { goReport() { }, click() { } } } </script> <style> page { background-color: #F4F4F4; } </style> <style lang="scss" scoped> @import "./translateRecord.scss"; </style> static/index.pngBinary files differ
static/policy/checkbox.png
static/policy/main-select.png
static/policy/main.png
static/policy/none-checkbox.png
static/policy/refject.png
static/policy/scode.png
static/policy/user-select.png
static/policy/user.png
static/policy/zhi1.png
static/policy/zhi2.png
static/policy/zhi3.png
static/policy/zhi4.png
static/policy/zhi5.png