Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/H5/threeSide
| | |
| | | export default { |
| | | BASE_URL: 'https://huacheng.psciio.com', |
| | | // BASE_URL: 'http://192.168.110.188:6194', |
| | | // BASE_URL: 'https://huacheng.psciio.com', |
| | | BASE_URL: 'http://192.168.110.188:6194', |
| | | imageUrl: 'https://huacheng.psciio.com/api/huacheng-applets/common/uploadimages', |
| | | } |
| | |
| | | <div id="app"><!--app-html--></div>
|
| | | <script type="module" src="/main.js"></script>
|
| | | <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&type=webgl&ak=5CVivDODPGwsWoqqrDxplq9hkfX5OEzs"></script>
|
| | | <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
|
| | | </body>
|
| | | </html> |
| | |
| | | { |
| | | "name" : "三个身边", |
| | | "appid" : "__UNI__4B73B99", |
| | | "appid" : "__UNI__DB035F5", |
| | | "description" : "", |
| | | "versionName" : "1.0.0", |
| | | "versionCode" : "100", |
| | |
| | | <template> |
| | | <view> |
| | | <view v-if="list.length == 0 && status == 'noMore'" class="mt-200"> |
| | | <view v-if="list.length == 0" class="mt-200"> |
| | | <image src="../../static/空空如也@2x.png" mode="widthFix" class="w100"></image> |
| | | <view class="txt-center mt-94 fs-27 color9"> |
| | | 暂无数据 |
| | |
| | | <view class="mt-38 br-19 bgColor3 shadow2 oh pb-31" v-for="(item,index) in list" :key="item.id"> |
| | | <view class="pt-21 px-31 flex a-center j-between font-bold"> |
| | | <view class="flex a-center"> |
| | | <view class="fs-31 mr-23">习婕海</view> |
| | | <view v-if="!index" class="flex a-center pr-19 border3"> |
| | | <view class="fs-31 lh-38 mr-23">{{item.name}}</view> |
| | | <view v-if="!item.gender" class="flex a-center pr-19 border3"> |
| | | <image src="@/static/man.png" class="w-38 h-38 shrink0" /> |
| | | <view class="fs-23 ml-12"> |
| | | 男 |
| | |
| | | </view> |
| | | </view> |
| | | <view class="color3 flex a-center fs-31"> |
| | | 待审核 |
| | | {{['待审核','审核通过','审核不通过'][item.auditStatus]}} |
| | | </view> |
| | | </view> |
| | | <view class="mt-38 mx-31 pt-12 pb-23 px-31 br-19 bgColor8"> |
| | | <view class="flex a-center j-between lh-38 mt-19 fs-27 color11"> |
| | | <view class="font-w400">身份证号</view> |
| | | <view class="font-bold">500000000000000000</view> |
| | | <view class="font-bold">{{item.idNumber}}</view> |
| | | </view> |
| | | <view class="flex a-center j-between lh-38 mt-19 fs-27 color11"> |
| | | <view class="font-w400">联系电话</view> |
| | | <view class="font-bold">15729765305</view> |
| | | <view class="font-bold">{{item.phone}}</view> |
| | | </view> |
| | | <view class="flex j-between lh-38 mt-19 fs-27 color11"> |
| | | <view class="font-w400">服务社区</view> |
| | | <view class="font-bold">仁和区-仁和镇-仁和街社区</view> |
| | | <view class="font-bold"> |
| | | {{item.districts}} |
| | | <span v-if="item.street">-</span> |
| | | {{item.street}} |
| | | <span v-if="item.community">-</span> |
| | | {{item.community}} |
| | | </view> |
| | | </view> |
| | | <view class="flex j-between lh-38 mt-19 fs-27 color11"> |
| | | <view class="font-w400">服务对象</view> |
| | | <view class="font-bold">文化小区一栋一单元</view> |
| | | <view class="font-bold">{{item.serviceTarget}}</view> |
| | | </view> |
| | | <view class="flex j-between lh-38 mt-19 fs-27 color11"> |
| | | <view class="font-w400">所在党组织</view> |
| | | <view class="font-bold max-w1">中共攀枝花市委组织部机关中共11攀枝花市委组织部机关</view> |
| | | <view class="font-bold max-w1 txt-aligin-r">{{item.partyOrganization}}</view> |
| | | </view> |
| | | <view class="flex wrap mt-19"> |
| | | <image src="/static/logo.png" class="w-142 h-142 mr-12 shrink0 br-19 mb-12" /> |
| | | <image @tap="viewImage(item.avatar)" :src="item.avatar" |
| | | class="w-142 h-142 mr-12 shrink0 br-19 mb-12" /> |
| | | </view> |
| | | </view> |
| | | <view class="mt-37 border1"> |
| | |
| | | 申请时间:{{ item.createTime | formatTime }} |
| | | </view> |
| | | <view class="flex a-center j-center fs-23 mt-29 txt-center"> |
| | | <view @click.stop="refuse" class="h-58 lh-58 bgColor5 w-192 br-29 color10 border2"> |
| | | <view @click.stop="auditPopup(item.id,2)" |
| | | class="h-58 lh-58 bgColor5 w-192 br-29 color10 border2"> |
| | | 拒绝 |
| | | </view> |
| | | <view @click.stop="pass" class="ml-38 h-58 lh-58 bgColor6 w-192 br-29 color8"> |
| | | <view @click.stop="auditPopup(item.id,1)" class="ml-38 h-58 lh-58 bgColor6 w-192 br-29 color8"> |
| | | 通过 |
| | | </view> |
| | | </view> |
| | |
| | | </view> |
| | | </view> |
| | | <view class="h-safe-b"></view> |
| | | |
| | | |
| | | <CustomPopup ref="tipPoput" @close="closePopup" @comfirm="comfirmPopup"> |
| | | <view class="mt-50" :class="suditStatus ? 'mb-38' : 'mb-60'"> |
| | | <view class="txt-center fs-31 lh-42 color12">确认审核{{suditStatus ? '拒绝' : '通过'}}所选信息吗?</view> |
| | | <view v-if="suditStatus" class="mt-38"> |
| | | <view class="mt-50" :class="form.result == 2 ? 'mb-38' : 'mb-60'"> |
| | | <view class="txt-center fs-31 lh-42 color12">确认审核{{form.result == 2 ? '拒绝' : '通过'}}所选信息吗?</view> |
| | | <view v-if="form.result == 2" class="mt-38"> |
| | | <view class="flex"> |
| | | <image src="/static/required.png" class="w-10 h-10 mt-12 mr-15 shrink0" /> |
| | | <view class="fs-31 lh-42 font-bold">拒绝理由:</view> |
| | | </view> |
| | | <view class="border5 br-19 mt-13 px-35 py-27 "> |
| | | <textarea v-model="reasonsRefusal" placeholder="请输入拒绝理由" class="fs-27 h-178 w100"></textarea> |
| | | <textarea v-model="form.reason" placeholder="请输入拒绝理由" class="fs-27 h-178 w100"></textarea> |
| | | <view v-if="showRequiredTip" class="fs-23 lh-33 color3">拒绝理由必填</view> |
| | | </view> |
| | | </view> |
| | |
| | | <script> |
| | | import dayjs from '@/uni_modules/uview-ui/libs/util/dayjs.js' |
| | | import { |
| | | getList |
| | | getList, |
| | | audit |
| | | } from './service.js' |
| | | export default { |
| | | data() { |
| | |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | }, |
| | | list: [{}, {}], |
| | | status: 'loadMore', |
| | | suditStatus: false, |
| | | reasonsRefusal: '', |
| | | showRequiredTip: false, |
| | | list: [], |
| | | isLoading: false, |
| | | showRequiredTip: false, //必填校验状态 |
| | | form: { |
| | | id: '', //党员id |
| | | reason: '', //原因 |
| | | result: null, //1 通过 2 不通过 |
| | | }, |
| | | clickAgain: false, |
| | | } |
| | | }, |
| | | filters: { |
| | |
| | | } |
| | | }, |
| | | onReachBottom() { |
| | | if (this.status == 'loadMore') { |
| | | this.searchParams.pageNum += 1 |
| | | this.fetchList(this.searchParams, (e) => { |
| | | this.list = [...this.list, ...e.records] |
| | | if (this.list.length == e.total) { |
| | | this.status = 'noMore' |
| | | } else { |
| | | this.status = 'loadMore' |
| | | } |
| | | }) |
| | | if (!this.isLoading) { |
| | | this.searchParams.pageNum = this.searchParams.pageNum + 1; |
| | | this.fetchList(); |
| | | } else { |
| | | return uni.showToast({ |
| | | title: "没有更多了", |
| | | duration: 2000, |
| | | icon: "none", |
| | | }); |
| | | } |
| | | }, |
| | | onShow() { |
| | | |
| | | this.searchParams.pageNum = 1 |
| | | this.list = [] |
| | | this.fetchList() |
| | | }, |
| | | onReady() {}, |
| | | methods: { |
| | | comfirmPopup() { |
| | | if (this.suditStatus) { |
| | | if (!this.reasonsRefusal) { |
| | | this.showRequiredTip = true |
| | | return |
| | | } |
| | | if (this.clickAgain) return |
| | | if (this.form.result == 2 && !this.form.reason) { |
| | | this.showRequiredTip = true |
| | | return |
| | | } |
| | | this.closePopup() |
| | | this.clickAgain = true |
| | | audit(this.form).then(res => { |
| | | this.searchParams.pageNum = 1 |
| | | this.list = [] |
| | | this.fetchList() |
| | | this.closePopup() |
| | | uni.showToast({ |
| | | title: this.form.result == 1 ? '当前党员信息审核已通过。' : '当前党员信息审核已拒绝。', |
| | | icon: 'none', |
| | | mask: true, |
| | | }) |
| | | }).catch(err => { |
| | | this.clickAgain = false |
| | | }) |
| | | }, |
| | | refuse() { |
| | | this.suditStatus = true |
| | | auditPopup(id, type) { |
| | | this.form.id = id |
| | | this.form.result = type |
| | | this.$refs.tipPoput.showPopup() |
| | | }, |
| | | pass() { |
| | | this.$refs.tipPoput.showPopup() |
| | | }, |
| | | fetchList(params, callback) { |
| | | if (this.status == 'loading') return |
| | | this.status = 'loading' |
| | | getList(params).then(res => { |
| | | fetchList() { |
| | | getList(this.searchParams).then(res => { |
| | | if (res.code == 200) { |
| | | res.data.records.map(item => { |
| | | if (item.images) { |
| | | item.images = item.images.split(',') |
| | | } |
| | | }) |
| | | callback(res.data) |
| | | if (res.data.records.length < 10) { |
| | | this.isLoading = true; |
| | | } else { |
| | | this.isLoading = false; |
| | | } |
| | | this.list = [...this.list, ...res.data.records]; |
| | | if (res.data.total == this.list.length) { |
| | | this.isLoading = true |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | closePopup() { |
| | | this.$refs.tipPoput.closePopup() |
| | | this.$nextTick(() => { |
| | | this.suditStatus = false |
| | | this.showRequiredTip = false |
| | | this.reasonsRefusal = '' |
| | | this.form = { |
| | | id: '', //党员id |
| | | reason: '', //原因 |
| | | result: null, //1 通过 2 不通过 |
| | | } |
| | | this.showRequiredTip = false //必填校验状态 |
| | | this.clickAgain = false |
| | | }) |
| | | |
| | | }, |
| | | viewImage(item) { |
| | | uni.previewImage({ |
| | | urls: [item] |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | |
| | | color: #4C4C4C; |
| | | } |
| | | |
| | | .color2 { |
| | | color: #232323; |
| | | } |
| | | |
| | | .color3 { |
| | | color: #FF4948; |
| | | } |
| | | |
| | | .color4 { |
| | | color: #929191; |
| | | } |
| | | |
| | | .color5 { |
| | |
| | | |
| | | .color6 { |
| | | color: #666666; |
| | | } |
| | | |
| | | .color7 { |
| | | color: #727272; |
| | | } |
| | | |
| | | .color8 { |
| | |
| | | color: rgba(0, 0, 0, 0.6); |
| | | } |
| | | |
| | | .bgColor1 { |
| | | background: linear-gradient(270deg, #FFB318 0%, #FF330D 100%); |
| | | width: 58rpx; |
| | | height: 12rpx; |
| | | border-radius: 6rpx; |
| | | position: absolute; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: -5rpx; |
| | | margin: auto; |
| | | } |
| | | |
| | | .bgColor2 { |
| | | background-color: #fff; |
| | | } |
| | | |
| | | .bgColor3 { |
| | | background: linear-gradient(180deg, #FFDCDB 0%, rgba(255, 255, 255, 0) 138rpx, #fff 100%); |
| | | } |
| | | |
| | | .bgColor4 { |
| | | background: linear-gradient( 270deg, rgba(255,241,0,0.5) 0%, rgba(255,249,172,0.25) 48%, rgba(255,255,255,0.2) 100%, #FFFFFF 100%); |
| | | } |
| | | |
| | | .bgColor5 { |
| | |
| | | |
| | | .bgColor6 { |
| | | background: linear-gradient(270deg, #FC8D55 0%, #FF4948 100%); |
| | | } |
| | | |
| | | .bgColor7 { |
| | | background: #FF4948; |
| | | } |
| | | |
| | | .bgColor8 { |
| | |
| | | import request from '@/utils/request.js' |
| | | // 工单列表 |
| | | export const getList =(params)=>{ |
| | | return request.post(`/api/huacheng-sangeshenbian/applet/complaint/list`,params) |
| | | } |
| | | |
| | | // 党员待审核列表 |
| | | export const getList = (params) => { |
| | | return request.post(`/api/huacheng-sangeshenbian/applet/party-member/pre-audit-list`, params) |
| | | } |
| | | |
| | | // 党员申请审核 |
| | | export const audit = (params) => { |
| | | return request.post(`/api/huacheng-sangeshenbian/applet/party-member/audit`, params, false, false) |
| | | } |
| | |
| | | <view class="allContent"> |
| | | <view class="fs-27 lh-38 font-bold">评价打分</view> |
| | | <view class="mt-25 flex j-between"> |
| | | <view class="evaluateItem" v-for="(item,index) in list" :key="index" @click="activeType=item.value" |
| | | :class="activeType==item.value && 'activeBg'"> |
| | | <view class="evaluateItem" v-for="(item,index) in list" :key="index" @click="rate=item.value" |
| | | :class="rate==item.value && 'activeBg'"> |
| | | <image :src="item.img" class="statusImg" /> |
| | | <view class="title">{{item.tit}}</view> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="mt-38"> |
| | | <view class="fs-27 lh-38 font-bold">评价内容</view> |
| | | <textarea v-model="describe" class="pt-25 pl-31 mt-27 fs-27 br-8 bgcolor4" |
| | | :class="(rulsFlag && !describe) && 'bgcolor-border'" |
| | | <textarea v-model="content" class="pt-25 pl-31 mt-27 fs-27 br-8 bgcolor4" |
| | | :class="(rulsFlag && !content) && 'bgcolor-border'" |
| | | style="height: 365rpx;width: calc(100% - 31rpx);" placeholder="请输入不超过200字评价" /> |
| | | <view v-if="rulsFlag && !describe" class="flex a-center mt-19"> |
| | | <view v-if="rulsFlag && !content" class="flex a-center mt-19"> |
| | | <image src="@/static/noNull.png" class="w-35 h-35 mr-13 shrink0" /> |
| | | <view class="fs-23 color99">评价内容不能为空</view> |
| | | </view> |
| | |
| | | <script> |
| | | import { |
| | | saveProcess, |
| | | getComplaintDetail |
| | | } from './service' |
| | | import config from '@/config/index.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | | complaintId: '', //诉求id |
| | | info: {}, //工单详情 |
| | | describe: '', //办理进度描述 |
| | | content: '', //评价内容 |
| | | localImageUrls: [], //本地回显的图片 |
| | | imgUrls: [], //传给后端的url |
| | | video: [], |
| | | againCklicFlag: true, |
| | | rulsFlag: false, |
| | | activeType: 1, |
| | | rate: null, //评价打分 |
| | | list: [{ |
| | | img: '../../static/detailImg/img1.png', |
| | | tit: '不满意', |
| | | value: 1 |
| | | value: 0 |
| | | }, { |
| | | img: '../../static/detailImg/img2.png', |
| | | tit: '一般', |
| | | value: 2 |
| | | value: 1 |
| | | }, { |
| | | img: '../../static/detailImg/img3.png', |
| | | tit: '满意', |
| | | value: 3 |
| | | value: 2 |
| | | }, { |
| | | img: '../../static/detailImg/img4.png', |
| | | tit: '非常满意', |
| | | value: 4 |
| | | value: 3 |
| | | }], |
| | | } |
| | | }, |
| | | onLoad(params) { |
| | | // this.complaintId = params.id |
| | | // getComplaintDetail({ |
| | | // id: params.id |
| | | // }).then(res => { |
| | | // this.info = res.data |
| | | // }) |
| | | this.complaintId = params.id |
| | | }, |
| | | methods: { |
| | | back() { |
| | |
| | | }) |
| | | }, |
| | | submit() { |
| | | if (!this.describe) { |
| | | this.rulsFlag = true |
| | | return uni.showToast({ |
| | | if (this.rate == null) { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: '请输入办理进度描述' |
| | | title: '请评价打分', |
| | | }) |
| | | return |
| | | } |
| | | let obj = { |
| | | complaintId: this.complaintId, |
| | | describe: this.describe, |
| | | content: this.content, |
| | | rate: this.rate, |
| | | imgUrl: this.imgUrls.join(','), |
| | | video: this.video.join(',') |
| | | } |
| | |
| | | }) |
| | | }, |
| | | uploadImg(type) { |
| | | // if (!this.againCklicFlag) return |
| | | this.againCklicFlag = false |
| | | if (type == 1) { |
| | | uni.chooseImage({ |
| | | count: 1, |
| | | count: 9 - this.imgUrls.length, |
| | | success: (chooseImageRes) => { |
| | | this.imgUrls.push('loading') |
| | | this.againCklicFlag = true |
| | | let imgPathList = chooseImageRes.tempFilePaths; |
| | | if (imgPathList.length > 0) { |
| | | uni.uploadFile({ |
| | |
| | | this.localImageUrls.push(imgPathList[0]) |
| | | }) |
| | | } else { |
| | | this.againCklicFlag = true |
| | | this.imgUrls = this.imgUrls.filter( |
| | | item => item != 'loading') |
| | | uni.showToast({ |
| | |
| | | } |
| | | }, |
| | | fail: (err) => { |
| | | this.againCklicFlag = true |
| | | this.imgUrls = this.imgUrls.filter( |
| | | item => item != 'loading') |
| | | uni.showToast({ |
| | |
| | | }) |
| | | } |
| | | }, |
| | | fail: () => { |
| | | this.againCklicFlag = true |
| | | } |
| | | }) |
| | | } else { |
| | | uni.chooseVideo({ |
| | | camera: 'back', |
| | | count: 9 - this.video.length, |
| | | success: (res) => { |
| | | this.video.push('loading') |
| | | this.againCklicFlag = true |
| | | const tempFilePath = res.tempFilePath; |
| | | uni.uploadFile({ |
| | | url: config.imageUrl, |
| | |
| | | timeout: 1000 * 45, |
| | | name: 'file', |
| | | header: { |
| | | Authorization: cuni.getStorageSync('token') |
| | | Authorization: uni.getStorageSync('token') |
| | | }, |
| | | success: (res) => { |
| | | if (JSON.parse(res.data).code == 200) { |
| | |
| | | this.video.push(JSON.parse(res.data).data) |
| | | }) |
| | | } else { |
| | | this.againCklicFlag = true |
| | | this.video = this.video.filter( |
| | | item => item != 'loading') |
| | | uni.showToast({ |
| | |
| | | } |
| | | }, |
| | | fail: (err) => { |
| | | this.againCklicFlag = true |
| | | this.video = this.video.filter( |
| | | item => item != 'loading') |
| | | uni.showToast({ |
| | |
| | | } |
| | | }) |
| | | }, |
| | | fail: () => { |
| | | this.againCklicFlag = true |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | |
| | | import request from '@/utils/request.js' |
| | | |
| | | |
| | | // 办理进度录入 |
| | | // 添加评论 |
| | | export const saveProcess = (params) => { |
| | | return request.post(`/api/huacheng-sangeshenbian/applet/complaint/save-process`, params, ) |
| | | } |
| | | |
| | | // 工单详情 |
| | | export const getComplaintDetail = (params) => { |
| | | return request.get('/api/huacheng-sangeshenbian/applet/complaint/detail', params) |
| | | return request.post(`/api/huacheng-sangeshenbian/applet/complaint/commentComplaint`, params, ) |
| | | } |
| | |
| | | <image src="/static/home/img5.png" mode="widthFix"></image> |
| | | </view> |
| | | <swiper class="swiper " :indicator-dots="false" :autoplay="true" :interval="3000"> |
| | | <swiper-item v-for="item,index in bannerlist" :key="index"> |
| | | <swiper-item v-for="item, index in bannerlist" :key="index"> |
| | | <image style="height: 270rpx;width: 688rpx;border-radius: 19rpx;" :src="item.url" mode=""> |
| | | </image> |
| | | </swiper-item> |
| | |
| | | <view class="pt-38 pl-31 pr-31 flex flex-column"> |
| | | <view class="flex j-between a-center"> |
| | | <text class="color1 fs-31 font-bold">工作台</text> |
| | | <text class="color2 fs-27" @click="showData =!showData">查看更多</text> |
| | | <text class="color2 fs-27" @click="showData = !showData">查看更多</text> |
| | | </view> |
| | | <view class="flex flex-wrap j-between"> |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center relative" |
| | |
| | | <image class="w-81 h-77 ml-38" src="/static/home/img8.png" mode=""></image> |
| | | <text class="ml-37 font-bold">统计分析</text> |
| | | </view> |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center" v-if="showData && userInfo.isAdmin == 1"> |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center" @tap.stop="toCertificationAudit" v-if="showData && userInfo.isAdmin == 1"> |
| | | <image class="w-81 h-77 ml-38" src="/static/home/Group 2@2x.png" mode=""></image> |
| | | <text class="ml-37 font-bold">党员审核</text> |
| | | </view> |
| | |
| | | </view> |
| | | <view class=" mt-15"> |
| | | <view class="flex a-center"> |
| | | <view class="msg mr-19" @click="changeActive(1)" :class="isactive==1? 'active':''"> |
| | | <view class="msg mr-19" @click="changeActive(1)" :class="isactive == 1 ? 'active' : ''"> |
| | | 消息 |
| | | <view class="tips"> |
| | | {{noreadlist.length}} |
| | | {{ noreadlist.length }} |
| | | </view> |
| | | </view> |
| | | <view class="representative" @click="changeActive(2)" :class="isactive==2? 'active':''"> |
| | | <view class="representative" @click="changeActive(2)" :class="isactive == 2 ? 'active' : ''"> |
| | | 待办 |
| | | <view class="tips"> |
| | | {{noreadlists.length}} |
| | | {{ noreadlists.length }} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="list mt-29"> |
| | | <view v-if="isactive==1?msgList.length == 0:msgLists.length == 0" class="txt-center"> |
| | | <view v-if="isactive == 1 ? msgList.length == 0 : msgLists.length == 0" class="txt-center"> |
| | | <image src="../../static/空空如也@2x.png" mode="widthFix" class="w80"></image> |
| | | <view class="fs-23 mt-20 mb-20 color4">暂无数据</view> |
| | | </view> |
| | | <view class="flex a-center mb-27" v-for="item in isactive==1?msgList:msgLists" :key="item.id"> |
| | | <view class="flex a-center mb-27" v-for="item in isactive == 1 ? msgList : msgLists" :key="item.id"> |
| | | <view class="avater pb-33"> |
| | | <image class="w-85 h-85 br50" src="/static/home/img9.png" mode=""></image> |
| | | <view class="tips" v-if="item.readStatus==2"></view> |
| | |
| | | <text class="fs-23 font-w400">{{item.time}}</text> |
| | | </view> |
| | | <view class="fs-27 flex j-between mt-8"> |
| | | <text style="color: rgba(102, 102, 102, 1);">{{item.promptType==1?'临期提醒':'超时提醒'}}</text> |
| | | <view class="read" v-if="item.readStatus==1">已读</view> |
| | | <text style="color: rgba(102, 102, 102, 1);">{{ item.promptType == 1 ? '临期提醒' : '超时提醒' |
| | | }}</text> |
| | | <view class="read" v-if="item.readStatus == 1">已读</view> |
| | | <view class="noread" v-else>未读</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <text v-if="isactive==1?msgList.length > 0:msgLists.length > 0" |
| | | <text v-if="isactive == 1 ? msgList.length > 0 : msgLists.length > 0" |
| | | class="flex j-center fs-27 color4 pb-48" @click="Allread">全部已读</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <popupCertificate :show="isClick" @onCancel="isClick=false"></popupCertificate> |
| | | <popupCertificate :show="isClick" @onCancel="isClick = false"></popupCertificate> |
| | | |
| | | <!-- 用户多个角色时切换角色弹窗 --> |
| | | <u-popup :show="changeRolePopup" round="16rpx" @close="closeChangeRole"> |
| | |
| | | getread, |
| | | getCurrentUserInfo, |
| | | changeIdentity, |
| | | confirmContent |
| | | confirmContent, |
| | | getSignature |
| | | } from './service.js' |
| | | export default { |
| | | components: { |
| | |
| | | |
| | | }, |
| | | onLoad(e) { |
| | | getSignature().then(res => { |
| | | wx.config({ |
| | | debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来 |
| | | appld: 'wx118de8a734d269f0', |
| | | timestamp: res.data.timestamp, // 必填,生成签名的 时间戳 |
| | | noncestr: res.data.nonceStr, // 必填,生成签名的随机串 |
| | | signature: res.data.signature, // 必填,签名 |
| | | jsApiList: [ |
| | | 'miniProgram.navigateBack', |
| | | 'miniProgram.navigateTo', |
| | | 'miniProgram.postMessage', |
| | | ] // 必填,需要使用的JS接口列表 |
| | | }) |
| | | wx.ready(() => { |
| | | // 在这里调用任何你需要的JS-SDK功能 |
| | | uni.showToast({ |
| | | title: '配置成功!' |
| | | }) |
| | | }); |
| | | |
| | | wx.error((err) => { |
| | | // 处理错误情况 |
| | | uni.showToast({ |
| | | title: '配置失败' |
| | | }); |
| | | uni.setClipboardData({ |
| | | data: JSON.stringify(err) |
| | | }) |
| | | }) |
| | | }) |
| | | if (e.token) { |
| | | uni.setStorageSync('token', 'Bearer ' + e.token) |
| | | } |
| | |
| | | closeChangeRole() { |
| | | this.getMessagelist() |
| | | this.getappletcinfo() |
| | | }, |
| | | closeH5() { |
| | | wx.miniProgram.navigateBack() |
| | | }, |
| | | changeRole(item) { |
| | | this.activeRole = item - 1 |
| | | this.changeRolePopup = false |
| | | }, |
| | | //确认冻结 |
| | |
| | | changeActive(value) { |
| | | this.isactive = value |
| | | if (value == 1) { |
| | | this.msgList = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item.promptType == |
| | | this.msgList = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item |
| | | .promptType == |
| | | 2) |
| | | this.noreadlist = this.msgList.filter(item => item.readStatus === 0) |
| | | } else { |
| | | |
| | | this.msgLists = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item.promptType == |
| | | this.msgLists = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item |
| | | .promptType == |
| | | 1) |
| | | this.noreadlists = this.msgLists.filter(item => item.readStatus === 0) |
| | | } |
| | |
| | | uni.navigateTo({ |
| | | url: '/pages/list/list' |
| | | }) |
| | | }, |
| | | toCertificationAudit() { |
| | | uni.navigateTo({ |
| | | url: '/pages/certificationAudit/certificationAudit' |
| | | }) |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | export const confirmContent =(params)=>{ |
| | | return request.get(`/api/huacheng-sangeshenbian/applet/home/confirm-content`,params) |
| | | } |
| | | } |
| | | export const getSignature=(params)=>{ |
| | | return request.get(`/api/huacheng-sangeshenbian/systemUser/getSignature`,params) |
| | | } |
| | |
| | | <view v-else class="noData">暂无数据</view> |
| | | </view> |
| | | |
| | | <!-- 详情/办理进度 --正在办理-延期-超时 显示--> |
| | | <!-- 详情/办理进度 -正在办理-延期-超时 显示--> |
| | | <view class="progress" v-if="[0, 1, 2].includes(orderInfo.status) && progressesList.length > 0"> |
| | | <view class="title">当前办理进度</view> |
| | | <view class="proCard"> |
| | |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 详情/诉求流转 --正在办理显示--> |
| | | <!-- 详情/诉求流转 -正在办理显示--> |
| | | <view class="careRequire" v-if="orderInfo.status == 0 && flowsList.length > 0"> |
| | | <view class="title">诉求流转</view> |
| | | <view class="proCard"> |
| | |
| | | |
| | | <!-- 上级显示 --> |
| | | <view class="btnButtom" |
| | | v-if="[0, 1, 2, 6].includes(orderInfo.status) && !isParty && orderInfo.auditButtonStatus == 1"> |
| | | v-if="[0, 1, 2, 6].includes(orderInfo.status) && !isParty && orderInfo.listControlsButtonStatus == 0"> |
| | | <view class="btnDown" @click.stop="toUp" v-if="userInfo.accountLevel > 1" |
| | | :class="[2, 3].includes(userInfo.accountLevel) ? '' : 'partyUp'">问题上报</view> |
| | | <view class="btnDown" @click.stop="toDown" v-if="userInfo.accountLevel < 4" |
| | |
| | | </view> |
| | | <!-- 党员显示 --> |
| | | <!-- v-if="[3].includes(orderInfo.status)" --> |
| | | <view class="btnButtom" v-if="[3].includes(orderInfo.status)"> |
| | | <view class="btnAdd evaluate" @click.stop="toEvaluate">评价</view> |
| | | <view class="btnButtom" v-if="[3].includes(orderInfo.status)&& orderInfo.evaluateButtonStatus == 0"> |
| | | <view class=" btnAdd evaluate" @click.stop="toEvaluate">评价</view> |
| | | </view> |
| | | |
| | | |
| | |
| | | .addressCard { |
| | | margin: 33rpx 10rpx; |
| | | padding: 33rpx 27rpx; |
| | | background: linear-gradient( 270deg, rgba(255,241,0,0.5) 0%, rgba(255,249,172,0.25) 48%, rgba(255,255,255,0.2) 100%, #FFFFFF 100%); |
| | | background: linear-gradient(270deg, rgba(255, 241, 0, 0.5) 0%, rgba(255, 249, 172, 0.25) 48%, rgba(255, 255, 255, 0.2) 100%, #FFFFFF 100%); |
| | | border-radius: 19rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | |
| | | export default { |
| | | dev: { |
| | | // SERVER_URL: 'http://192.168.110.188:6194', |
| | | SERVER_URL: 'https://huacheng.psciio.com', |
| | | SERVER_URL: 'http://192.168.110.188:6194', |
| | | // SERVER_URL: 'https://huacheng.psciio.com', |
| | | }, |
| | | test: { |
| | | SERVER_URL: '', |
| | |
| | | path: '/party', |
| | | // layout: false, |
| | | name: '党员管理', |
| | | // access: '/work_order_transaction_management', |
| | | access: '/party_member', |
| | | routes: [ |
| | | { |
| | | name: '党员管理', |
| | | path: '/party/manage', |
| | | component: './party/manage/index', |
| | | // access: '/work_order_transaction_management/work_order_item_configuration', |
| | | access: '/party_member/list', |
| | | }, |
| | | { |
| | | name: '添加党员', |
| | |
| | | name: '党员审核', |
| | | path: '/party/audit', |
| | | component: './party/audit/index', |
| | | // access: '/work_order_transaction_management/banner_management', |
| | | access: '/party_member_audit/list', |
| | | }, |
| | | ], |
| | | }, |
| | |
| | | path: '/appeal-management', |
| | | // layout: false, |
| | | name: '诉求管理', |
| | | // access: '/message_notification', |
| | | access: '/complaint', |
| | | routes: [ |
| | | { |
| | | name: '诉求管理', |
| | | path: '/appeal-management/list', |
| | | component: './appeal-management/index', |
| | | access: '/message_notification', |
| | | access: '/complaint/list', |
| | | }, |
| | | { |
| | | name: '述求详情', |
| | |
| | | const [unreadCount, setUnreadCount] = useState(0); |
| | | const { currentUser } = initialState || {}; |
| | | useEffect(() => { |
| | | const timer = setInterval(() => { |
| | | getUnreadCount().then((res: any) => { |
| | | setUnreadCount(res.data || 0); |
| | | }); |
| | | }, 1000 * 5) |
| | | // const timer = setInterval(() => { |
| | | // getUnreadCount().then((res: any) => { |
| | | // setUnreadCount(res.data || 0); |
| | | // }); |
| | | // }, 1000 * 5) |
| | | |
| | | return () => clearInterval(timer); |
| | | // return () => clearInterval(timer); |
| | | }, []); |
| | | |
| | | |
| | |
| | | "/system_setting", |
| | | "/system_setting/people_management", |
| | | "/work_order_transaction_management/work_order_item_configuration/save", |
| | | "/party_member", |
| | | "/party_member/list", |
| | | "/party_member/edit", |
| | | "/party_member/del", |
| | | "/party_member/detail", |
| | | "/party_member/add", |
| | | "/party_member/freeze", |
| | | "/party_member/import", |
| | | "/party_member/export", |
| | | "/party_member_audit/list", |
| | | "/party_member_audit/audit", |
| | | "/complaint", |
| | | "/complaint/list", |
| | | "/complaint/detail", |
| | | "/complaint/community-problem-export", |
| | | "/complaint/problem-handle-export", |
| | | "/complaint/notice-export", |
| | | "/complaint/export", |
| | | ]; |
| | | let accessObj: any = {}; |
| | | permissionList.map((item) => { |
| | |
| | | import { buildProTableDataSource, sendRequest, showDelConfirm } from '@/utils/antdUtils'; |
| | | import { PageContainer, ProTable } from '@ant-design/pro-components'; |
| | | import { Button, Card, Select, Space, Descriptions, Divider, Steps, message } from 'antd'; |
| | | import { useRef, useState } from 'react'; |
| | | import { Access, useAccess, history } from 'umi'; |
| | | // import { add, edit, del, getList } from './service'; |
| | | import { useRef, useState, useEffect } from 'react'; |
| | | import { Access, useAccess } from 'umi' |
| | | import { history, useLocation } from "@umijs/max" |
| | | import { getDetail } from './service'; |
| | | import moment from 'moment'; |
| | | import './index.less'; |
| | | import {downLoad } from '@/utils/utils'; |
| | | |
| | | const Account = () => { |
| | | const actionRef = useRef(); |
| | | const addViewRef = useRef(); |
| | | const [current, setCurrent] = useState(0); |
| | | const [detail, setDetail] = useState({}); |
| | | const searchParams = new URLSearchParams(useLocation().search); |
| | | const id = searchParams.get('id'); |
| | | |
| | | useEffect(() => { |
| | | getDetail({ id: id }).then((res) => { |
| | | setDetail(res.data); |
| | | }); |
| | | }, []); |
| | | |
| | | const items = [ |
| | | { |
| | | key: '1', |
| | | label: '述求状态', |
| | | children: 'Zhou Maomao', |
| | | children: ['正在办理', '延期办理', '超时办理', '已办结', '待审核', '上报待审核'][detail.status], |
| | | }, |
| | | { |
| | | key: '2', |
| | | label: '述求号', |
| | | children: '1810000000', |
| | | children: detail.serialNumber, |
| | | }, |
| | | { |
| | | key: '3', |
| | | label: '处理状态', |
| | | children: 'Pending', |
| | | label: '', |
| | | children: '', |
| | | }, |
| | | { |
| | | key: '4', |
| | | label: '处理进度', |
| | | children: 'In Progress', |
| | | label: '', |
| | | children: '', |
| | | }, |
| | | { |
| | | key: '5', |
| | | label: '发生时间', |
| | | children: 'Hangzhou, Zhejiang', |
| | | children: moment(detail.time).format('YYYY-MM-DD HH:mm:ss'), |
| | | }, |
| | | { |
| | | key: '6', |
| | | label: '问题类型', |
| | | children: 'empty', |
| | | children: detail.problemType, |
| | | }, |
| | | { |
| | | key: '7', |
| | | label: '群众姓名', |
| | | children: '张三', |
| | | children: detail.name, |
| | | }, |
| | | { |
| | | key: '8', |
| | | label: '联系电话', |
| | | children: '13800138000', |
| | | children: detail.contactNumber, |
| | | }, |
| | | { |
| | | key: '9', |
| | | label: '发生地点', |
| | | children: 'Hangzhou, Zhejiang', |
| | | children: detail.location, |
| | | }, |
| | | { |
| | | key: '10', |
| | | label: '详细地址', |
| | | children: 'empty', |
| | | children: detail.detailedAddress, |
| | | }, |
| | | { |
| | | key: '11', |
| | | label: '录入人', |
| | | children: '张三', |
| | | children: detail.reportUserName, |
| | | }, |
| | | { |
| | | key: '12', |
| | | label: '联系电话', |
| | | children: '13800138000', |
| | | children: detail.reportUserPhone, |
| | | }, |
| | | { |
| | | key: '13', |
| | | label: '问题描述', |
| | | children: '这是一段问题描述文字', |
| | | children: detail.descriptionContent, |
| | | span: 4, |
| | | }, |
| | | { |
| | | key: '14', |
| | | label: '上传图片', |
| | | children: <> |
| | | <img width={80} height={80} src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png" alt="example" /> |
| | | {detail.images && (detail.images || '').split(',').map((item, index) => ( |
| | | <img width={80} height={80} src={item} key={index} alt="example" /> |
| | | ))} |
| | | </>, |
| | | span: 4, |
| | | }, |
| | | { |
| | | key: '15', |
| | | label: '上传视频', |
| | | children: <><video width={280} src="https://www.w3schools.com/html/mov_bbb.mp4" controls></video></>, |
| | | children: <> |
| | | {detail.videos && (detail.videos || '').split(',').map((item, index) => ( |
| | | <video width={280} src={item} key={index} controls></video> |
| | | ))} |
| | | </>, |
| | | span: 4, |
| | | }, |
| | | ]; |
| | | |
| | | const items1 = [ |
| | | { |
| | | key: 'First', |
| | | title: 'First-content', |
| | | }, |
| | | { |
| | | key: 'Second', |
| | | title: 'Second-content', |
| | | }, |
| | | { |
| | | key: 'Last', |
| | | title: 'Last-content', |
| | | }, |
| | | |
| | | ]; |
| | | |
| | | return ( |
| | | <div> |
| | | <PageContainer header={{ breadcrumb: {} }} title="述求详情" > |
| | | <PageContainer className={'appeal-management-detail'} header={{ breadcrumb: {} }} title="述求详情" > |
| | | <Card> |
| | | <Descriptions column={4} title="基础信息" items={items} /> |
| | | <Divider /> |
| | | <Descriptions title="办理进度" column={1} > |
| | | <Descriptions.Item> |
| | | <Card style={{ width: '800px' }} title={'张三'} extra={'2021-01-01 15:00:00'}> |
| | | <Descriptions column={1} > |
| | | <Descriptions.Item> |
| | | 这是办理进度说明这是办理进度说明这是办理进度说明这是办理进度说明这是办理进度说明 |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传图片'}> |
| | | <img width={80} height={80} src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png" alt="example" /> |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传视频'}> |
| | | <video width={280} src="https://www.w3schools.com/html/mov_bbb.mp4" controls></video> |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | </Card> |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | <div> |
| | | <Descriptions title="办理进度" column={1}> |
| | | {detail.complaintProgresses?.length > 0 ? detail.complaintProgresses.map((item, index) => ( |
| | | <Descriptions.Item key={index}> |
| | | <Card style={{ width: '800px' }} title={item.createByName} extra={moment(item.createTime).format('YYYY-MM-DD HH:mm:ss')}> |
| | | <Descriptions column={1} > |
| | | <Descriptions.Item> |
| | | {item.describe} |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传图片'}> |
| | | {item.imgUrl && (item.imgUrl || '').split(',').map((item, index) => ( |
| | | <img width={80} style={{ marginRight: '10px' }} height={80} src={item} key={index} alt="example" /> |
| | | ))} |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传视频'}> |
| | | {item.videoUrl && (item.videoUrl || '').split(',').map((item, index) => ( |
| | | <video width={280} style={{ marginRight: '10px' }} src={item} key={index} controls></video> |
| | | ))} |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | </Card> |
| | | </Descriptions.Item> |
| | | )) : <Descriptions.Item span={4} >暂无办理进度</Descriptions.Item>} |
| | | </Descriptions> |
| | | </div> |
| | | |
| | | <Divider /> |
| | | <Descriptions title="述求流转" > |
| | | {detail.complaintFlows?.length > 0 && <><Descriptions title="述求流转" > |
| | | |
| | | <Descriptions.Item span={4}> |
| | | <div style={{ width: '100%', overflowX: 'auto' }} > |
| | | <Steps current={current} items={items1} /> |
| | | <Steps size="small" > |
| | | {detail.complaintFlows && detail.complaintFlows.map((item, index) => ( |
| | | <Steps.Item status={'process'} key={index} title={item.name} description={<span>{item.type == 1 ? '下派' : '上报'} <span>{moment(item.createTime).format('YYYY-MM-DD HH:mm:ss')}</span> </span>} /> |
| | | ))} |
| | | </Steps> |
| | | </div> |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | <Divider /> |
| | | <Descriptions title="办结情况" > |
| | | <Descriptions.Item span={4}> |
| | | <Card style={{ width: '800px' }} extra={<div style={{ width: '750px', display: 'flex', justifyContent: 'space-between' }}> |
| | | <span>办结时间:2021-01-01 15:00:00</span> |
| | | <span>办结人员:张三</span> |
| | | <span>联系电话:13588888888</span> |
| | | </div>}> |
| | | <Descriptions column={1} > |
| | | <Descriptions.Item> |
| | | 这是办理进度说明这是办理进度说明这是办理进度说明这是办理进度说明这是办理进度说明 |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传图片'}> |
| | | <img width={80} height={80} src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png" alt="example" /> |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传视频'}> |
| | | <video width={280} src="https://www.w3schools.com/html/mov_bbb.mp4" controls></video> |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | </Card> |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | <Descriptions title="办结评价" style={{ marginTop: '20px' }} > |
| | | <Descriptions.Item span={4}> |
| | | <Card style={{ width: '800px' }} extra={<div style={{ width: '750px', display: 'flex', justifyContent: 'flex-start' }}> |
| | | <span>评价打分:满意</span> |
| | | </div>}> |
| | | <Descriptions column={1} > |
| | | <Descriptions.Item> |
| | | 这是评价内容这是评价内容这是评价内容这是评价内容这是评价内容 |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传图片'}> |
| | | <img width={80} height={80} src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png" alt="example" /> |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传视频'}> |
| | | <video width={280} src="https://www.w3schools.com/html/mov_bbb.mp4" controls></video> |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | </Card> |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | <Divider /></>} |
| | | {[3, 4].includes(detail.status) && |
| | | <Descriptions title="办结情况" > |
| | | <Descriptions.Item span={4}> |
| | | <Card style={{ width: '800px' }} extra={<div style={{ width: '750px', display: 'flex', justifyContent: 'space-between' }}> |
| | | <span>办结时间:{moment(detail.completionTime).format('YYYY-MM-DD HH:mm:ss')}</span> |
| | | <span>办结人员:{detail.completionUsername}</span> |
| | | <span>联系电话:{detail.completionUserPhone}</span> |
| | | </div>}> |
| | | <Descriptions column={1} > |
| | | <Descriptions.Item> |
| | | {detail.completionDescription} |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传图片'}> |
| | | {detail.completionImages && detail.completionImages.split(',').map((item, index) => ( |
| | | <img width={80} height={80} style={{ marginRight: '10px' }} src={item} key={index} alt="example" /> |
| | | ))} |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传视频'}> |
| | | {detail.completionVideos && detail.completionVideos.split(',').map((item, index) => ( |
| | | <video width={280} style={{ marginRight: '10px' }} src={item} key={index} controls></video> |
| | | ))} |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | </Card> |
| | | </Descriptions.Item> |
| | | </Descriptions>} |
| | | {detail.complaintComment && |
| | | <Descriptions title="办结评价" style={{ marginTop: '20px' }} > |
| | | <Descriptions.Item span={4}> |
| | | <Card style={{ width: '800px' }} extra={<div style={{ width: '750px', display: 'flex', justifyContent: 'flex-start' }}> |
| | | <span>评价打分:{['不满意', '一般', '满意', '非常满意'][detail.complaintComment?.rate]}</span> |
| | | </div>}> |
| | | <Descriptions column={1} > |
| | | <Descriptions.Item> |
| | | {detail.complaintComment?.content} |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传图片'}> |
| | | {detail.complaintComment?.imgUrl && detail.complaintComment?.imgUrl.split(',').map((item, index) => ( |
| | | <img width={80} height={80} style={{ marginRight: '10px' }} src={item} key={index} alt="example" /> |
| | | ))} |
| | | </Descriptions.Item> |
| | | <Descriptions.Item label={'上传视频'}> |
| | | {detail.complaintComment?.videoUrl && detail.complaintComment?.videoUrl.split(',').map((item, index) => ( |
| | | <video width={280} style={{ marginRight: '10px' }} src={item} key={index} controls></video> |
| | | ))} |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | </Card> |
| | | </Descriptions.Item> |
| | | </Descriptions> |
| | | } |
| | | |
| | | |
| | | <div style={{ marginTop: '20px', display: 'flex', justifyContent: 'center' }}> |
| | | <Button onClick={() => { |
| | | <Button onClick={() => { |
| | | try { |
| | | history.go(-1); |
| | | } catch (error) { |
| | |
| | | console.error('Navigation error:', error); |
| | | } |
| | | }} style={{ marginRight: '20px' }} >关闭</Button> |
| | | <Button type="primary" onClick={() => { |
| | | <Button type="primary" onClick={() => { |
| | | try { |
| | | downLoad(`/api/huacheng-sangeshenbian/complaint/download-file/${id}/1`, '社区问题单导出.docx'); |
| | | // TODO: Implement export functionality |
| | | message.success('导出成功'); |
| | | } catch (error) { |
| | | message.error('导出失败,请重试'); |
| | | console.error('Export error:', error); |
| | | } |
| | | }} style={{ marginRight: '20px' }}>社区问题单导出</Button> |
| | | <Button type="primary" onClick={() => { |
| | | try { |
| | | }} style={{ marginRight: '20px' }}>社区问题单导出</Button> |
| | | <Button type="primary" onClick={() => { |
| | | try { |
| | | downLoad(`/api/huacheng-sangeshenbian/complaint/download-file/${id}/2`, '问题处理单导出.docx'); |
| | | // TODO: Implement export functionality |
| | | message.success('导出成功'); |
| | | } catch (error) { |
| | | message.error('导出失败,请重试'); |
| | | console.error('Export error:', error); |
| | | } |
| | | }} style={{ marginRight: '20px' }}>问题处理单导出</Button> |
| | | <Button type="primary" onClick={() => { |
| | | }} style={{ marginRight: '20px' }}>问题处理单导出</Button> |
| | | <Button type="primary" onClick={() => { |
| | | try { |
| | | downLoad(`/api/huacheng-sangeshenbian/complaint/download-file/${id}/3`, '协调通知单导出.docx'); |
| | | // TODO: Implement export functionality |
| | | message.success('导出成功'); |
| | | } catch (error) { |
| | | message.error('导出失败,请重试'); |
| | | console.error('Export error:', error); |
| | | } |
| | | }} >协调通知到导出</Button> |
| | | }} >协调通知单导出</Button> |
| | | </div> |
| | | </Card> |
| | | |
| | | |
| | | |
| | | </PageContainer> |
| | | </div> |
| | |
| | | import { buildProTableDataSource, sendRequest, showDelConfirm } from '@/utils/antdUtils'; |
| | | import { buildProTableDataSource } from '@/utils/antdUtils'; |
| | | import { PageContainer, ProTable } from '@ant-design/pro-components'; |
| | | import { Button, InputNumber, Select, Space } from 'antd'; |
| | | import { useRef, useState } from 'react'; |
| | | import { Access, useAccess } from 'umi'; |
| | | import { Button, Space } from 'antd'; |
| | | import { useRef } from 'react'; |
| | | import { Access, useAccess,history } from 'umi'; |
| | | import moment from 'moment'; |
| | | import { getList } from './service'; |
| | | import { exportExcell,downLoad } from '@/utils/utils'; |
| | | |
| | | // import { add, edit, del, getList } from './service'; |
| | | const Account = () => { |
| | | const actionRef = useRef(); |
| | | const addViewRef = useRef(); |
| | | const [modalVisible, handleModalVisible] = useState(false); |
| | | const access = useAccess(); |
| | | const formRef = useRef(); |
| | | |
| | | const columns = [ |
| | | { |
| | | title: '录入人', |
| | | dataIndex: 'name', |
| | | dataIndex: 'reportUserName', |
| | | }, |
| | | { |
| | | title: '录入联系方式', |
| | | dataIndex: 'name', |
| | | dataIndex: 'reportUserPhone', |
| | | }, |
| | | { |
| | | title: '群众姓名', |
| | |
| | | }, |
| | | { |
| | | title: '群众联系方式', |
| | | dataIndex: 'name', |
| | | dataIndex: 'contactNumber', |
| | | }, |
| | | { |
| | | title: '发生时间', |
| | | dataIndex: 'name', |
| | | dataIndex: 'time', |
| | | valueType:'dateRange', |
| | | render: (text, record) => { |
| | | return record.time ? moment(record.time).format('YYYY-MM-DD HH:mm:ss') : ''; |
| | | } |
| | | }, |
| | | { |
| | | title: '问题类型', |
| | | dataIndex: 'name', |
| | | valueEnum: { |
| | | 1: '正常', |
| | | 2: '冻结', |
| | | }, |
| | | dataIndex: 'problemType', |
| | | }, |
| | | { |
| | | title: '状态', |
| | | dataIndex: 'name', |
| | | dataIndex: 'status', |
| | | valueEnum: { |
| | | 1: '上报待审核', |
| | | 2: '正在办理', |
| | | 0: '正在办理', |
| | | 1: '延期办理', |
| | | 2: '超时办理', |
| | | 3: '已办结', |
| | | 4:'延期办理', |
| | | 5:'超时办理' |
| | | 4: '上报待审核', |
| | | }, |
| | | }, |
| | | { |
| | |
| | | return ( |
| | | <Space> |
| | | { |
| | | !record.admin && |
| | | <Access accessible={access['/system_setting/position_management/edit']}> |
| | | <Access accessible={access['/complaint/detail']}> |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | history.push('/appeal-management/detail') |
| | | history.push('/appeal-management/detail?id=' + record.id) |
| | | }} |
| | | > |
| | | 查看详情 |
| | | </Button> |
| | | </Access> |
| | | } |
| | | { |
| | | !record.admin && |
| | | <Access accessible={access['/system_setting/position_management/edit']}> |
| | | { |
| | | <Access accessible={access['/complaint/community-problem-export']}> |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | addViewRef.current.refreshData(record); |
| | | handleModalVisible(true); |
| | | downLoad(`/api/huacheng-sangeshenbian/complaint/download-file/${record.id}/1`, '社区问题单导出.docx'); |
| | | }} |
| | | > |
| | | 社区问题单导出 |
| | | </Button> |
| | | </Access> |
| | | } |
| | | { |
| | | !record.admin && |
| | | <Access accessible={access['/system_setting/position_management/edit']}> |
| | | { |
| | | <Access accessible={access['/complaint/problem-handle-export']}> |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | addViewRef.current.refreshData(record); |
| | | handleModalVisible(true); |
| | | downLoad(`/api/huacheng-sangeshenbian/complaint/download-file/${record.id}/2`, '问题处理单导出.docx'); |
| | | }} |
| | | > |
| | | 问题处理单导出 |
| | | </Button> |
| | | </Access> |
| | | } |
| | | { |
| | | !record.admin && |
| | | <Access accessible={access['/system_setting/position_management/edit']}> |
| | | { |
| | | <Access accessible={access['/complaint/notice-export']}> |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | addViewRef.current.refreshData(record); |
| | | handleModalVisible(true); |
| | | downLoad(`/api/huacheng-sangeshenbian/complaint/download-file/${record.id}/3`, '协调通知单导出.docx'); |
| | | }} |
| | | > |
| | | 协调通知单导出 |
| | |
| | | <div> |
| | | <PageContainer header={{ |
| | | breadcrumb: {}, |
| | | }}> |
| | | }} |
| | | title={'诉求管理'} |
| | | > |
| | | <ProTable |
| | | rowKey="id" |
| | | actionRef={actionRef} |
| | | columns={columns} |
| | | pagination={false} |
| | | formRef={formRef} |
| | | request={async (params) => { |
| | | |
| | | if(params.time && params.time.length > 0) { |
| | | params.startTime =moment(params.time[0]).format('YYYY-MM-DD HH:mm:ss'); |
| | | params.endTime = moment(params.time[1]).format('YYYY-MM-DD 23:59:59'); |
| | | delete params.time |
| | | }else{ |
| | | delete params.startTime |
| | | delete params.endTime |
| | | } |
| | | |
| | | |
| | | return buildProTableDataSource(getList, params); |
| | | }} |
| | | search={{ labelWidth: 'auto' }} |
| | | toolBarRender={(action, selectRows) => [ |
| | | <Space> |
| | | <Access accessible={access['/system_setting/position_management/add']}> |
| | | <Access accessible={access['/complaint/export']}> |
| | | <Button |
| | | type="primary" |
| | | onClick={() => { |
| | | |
| | | const params = { |
| | | ...formRef.current.getFieldsValue(), |
| | | }; |
| | | exportExcell('诉求管理.xlsx', params, '/api/huacheng-sangeshenbian/complaint/export'); |
| | | }} |
| | | > |
| | | 导出 |
New file |
| | |
| | | .appeal-management-detail{ |
| | | .ant-steps-item-description{ |
| | | max-width: 200px !important; |
| | | } |
| | | } |
| | |
| | | import { request } from '@umijs/max'; |
| | | |
| | | // 获取诉求列表 |
| | | export const getList = async (data) => { |
| | | return request(`/api/huacheng-sangeshenbian/complaint/page`, { |
| | | method: 'POST', |
| | | data |
| | | }); |
| | | } |
| | | |
| | | // 获取述求详情 |
| | | export const getDetail = async (data) => { |
| | | return request(`/api/huacheng-sangeshenbian/complaint/detail/${data.id}`, { |
| | | method: 'GET', |
| | | data |
| | | }); |
| | | } |
| | |
| | | import { Form, Input, Modal, Select, Upload, Space, Button, message, Row, Col, Divider } from 'antd'; |
| | | import { Form, Input, Modal, Image, Upload, Space, Cascader, message, Row, Col, Divider } from 'antd'; |
| | | import { sendRequest } from '@/utils/antdUtils'; |
| | | import { LoadingOutlined, PlusOutlined } from '@ant-design/icons'; |
| | | import { forwardRef, useEffect, useImperativeHandle, useState } from 'react'; |
| | | import { customRequest } from '@/utils/utils'; |
| | | import { add, Edit, getDetail } from '../service' |
| | | import { audit, getDetail, regionTree } from '../service' |
| | | |
| | | const formItemLayout = { |
| | | labelCol: { span: 8 }, |
| | |
| | | const [fileList, setFileList] = useState([])//banner图片 |
| | | const [loading, setLoading] = useState(false); |
| | | const [editData, setEditData] = useState({}) |
| | | const [userInfo, setUserInfo] = useState({})//党员信息 |
| | | const [items, setItems] = useState([]); |
| | | |
| | | const formItemLayout = { |
| | | labelCol: { span: 6 }, |
| | |
| | | useImperativeHandle(ref, () => { |
| | | return { |
| | | refreshData: (data) => { |
| | | |
| | | setEditData(data); |
| | | regionTree({}).then(res => { |
| | | setItems(() => res.data) |
| | | }) |
| | | if (data.id) { |
| | | // getDetail(data.id).then(res => { |
| | | // if (res.data.url) { |
| | | // let obj = [{ |
| | | // uid: 1, |
| | | // name: 'banner', |
| | | // url: res.data.url |
| | | // }] |
| | | // setFileList(obj) |
| | | // form.setFieldsValue({ image: obj }) |
| | | // } |
| | | // form.setFieldsValue({name: res.data.name}) |
| | | // }) |
| | | getDetail(data.id).then(res => { |
| | | res.data.community = [res.data.districtsCode, res.data.streetId, res.data.communityId.toString()] |
| | | setUserInfo(() => res.data) |
| | | form.setFieldsValue(res.data) |
| | | }) |
| | | } |
| | | }, |
| | | clean: () => { |
| | | form.resetFields(); |
| | | setUserInfo({}) |
| | | setFileList([]) |
| | | }, |
| | | }; |
| | |
| | | // 提交表单 |
| | | const submit = () => { |
| | | form.validateFields().then(async (values) => { |
| | | |
| | | values.url = fileList[0].url |
| | | delete values.image |
| | | if (editData.id) { |
| | | values.id = editData.id |
| | | onUpdate(values) |
| | | return |
| | | let params = { |
| | | id: editData.id, |
| | | auditStatus: editData.type == 'sure' ? 1 : 2, |
| | | } |
| | | onSave(values) |
| | | if (editData.type == 'refuse') { |
| | | params.refuseReason = values.refuseReason |
| | | } |
| | | onSave(params) |
| | | }) |
| | | } |
| | | |
| | |
| | | onCancel={() => onCancel(false)} |
| | | onOk={submit} |
| | | > |
| | | <div style={{ width: '100%', textAlign: 'center', margin: '20px 0', fontWeight: 'bold' }}>确认审核{editData.type == 'sure' ? '同意' : '拒绝'}所选信息么?</div> |
| | | <div style={{ width: '100%', textAlign: 'center', margin: '20px 0', fontWeight: 'bold', fontSize: "22px" }}>确认审核{editData.type == 'sure' ? '通过' : '拒绝'}所选信息么?</div> |
| | | <Form scrollToFirstError layout="horizontal" {...formItemLayout} form={form}> |
| | | <Row> |
| | | <Col span={8}> |
| | |
| | | <Input disabled placeholder='请输入'></Input> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name="name" |
| | | name="community" |
| | | label='所在社区' |
| | | required |
| | | > |
| | | <Input disabled placeholder='请输入'></Input> |
| | | <Cascader |
| | | disabled |
| | | options={items} |
| | | fieldNames={{ value: 'id', label: 'name' }} |
| | | placeholder="请选择" |
| | | // onChange={(value, label) => { |
| | | // setCommunity(() => label) |
| | | // }} |
| | | // displayRender={(label) => label[label.length - 1]} |
| | | // changeOnSelect={true} |
| | | /> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name="name" |
| | | name="avatar" |
| | | label='头像上传' |
| | | required |
| | | > |
| | | <Input disabled placeholder='请输入'></Input> |
| | | <Image src={userInfo.avatar} width={100} height={100} /> |
| | | </Form.Item> |
| | | </Col> |
| | | <Col span={8}> |
| | | <Form.Item |
| | | name="name" |
| | | name="phone" |
| | | label='联系电话' |
| | | required |
| | | > |
| | | <Input disabled placeholder='请输入'></Input> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name="name" |
| | | name="serviceTarget" |
| | | label='服务对象' |
| | | required |
| | | > |
| | |
| | | </Form.Item></Col> |
| | | <Col span={8}> |
| | | <Form.Item |
| | | name="name" |
| | | name="idNumber" |
| | | label='身份证号' |
| | | required |
| | | > |
| | | <Input disabled placeholder='请输入'></Input> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name="name" |
| | | name="partyOrganization" |
| | | label='所在党组织' |
| | | required |
| | | > |
| | |
| | | <Row> |
| | | <Col span={8}> |
| | | <Form.Item |
| | | name="remark" |
| | | name="refuseReason" |
| | | label='拒绝理由' |
| | | rules={[{ required: true, message: '拒绝理由必填' }]} |
| | | > |
| | |
| | | import { PageContainer, ProTable } from '@ant-design/pro-components'; |
| | | import { buildProTableDataSource, sendRequest, showDelConfirm } from '@/utils/antdUtils'; |
| | | import { Button, message, Space,Cascader } from 'antd'; |
| | | import { useRef, useState } from 'react'; |
| | | import { Button, message, Space, Cascader } from 'antd'; |
| | | import { useRef, useState, useEffect } from 'react'; |
| | | import { Access, history, useAccess } from 'umi'; |
| | | import AddAndEdit from './components/index'; |
| | | import { getList, updateStatus, deleteBanner, add, Edit } from './service' |
| | | import { getList, regionTree, audit } from './service' |
| | | const Banner = () => { |
| | | |
| | | const actionRef = useRef(); |
| | |
| | | { |
| | | title: '性别', |
| | | hideInSearch: true, |
| | | dataIndex: 'name' |
| | | dataIndex: 'gender', |
| | | valueEnum: { |
| | | 1: { text: '男' }, |
| | | 0: { text: '女' }, |
| | | } |
| | | }, |
| | | { |
| | | title: '联系电话', |
| | | hideInSearch: true, |
| | | dataIndex: 'name' |
| | | dataIndex: 'phone' |
| | | }, |
| | | { |
| | | title: '身份证号', |
| | | hideInSearch: true, |
| | | dataIndex: 'name' |
| | | dataIndex: 'idNumber' |
| | | }, |
| | | { |
| | | title: '所在社区', |
| | | dataIndex: 'name', |
| | | dataIndex: 'community', |
| | | renderFormItem: () => { |
| | | return ( |
| | | <Cascader |
| | | options={items} |
| | | fieldNames={{ value: 'key', label: 'name' }} |
| | | fieldNames={{ value: 'id', label: 'name' }} |
| | | placeholder="请选择" |
| | | displayRender={(label) => label[label.length - 1]} |
| | | changeOnSelect={true} |
| | | /> |
| | | ); |
| | | }, |
| | | render: (text, record) => { |
| | | return record.community |
| | | } |
| | | }, |
| | | { |
| | | title: '服务对象', |
| | | dataIndex: 'name' |
| | | dataIndex: 'serviceTarget', |
| | | render: (text, record) => { |
| | | return record.serviceTarget |
| | | } |
| | | }, |
| | | { |
| | | title: '所在党组织', |
| | | dataIndex: 'name' |
| | | dataIndex: 'partyOrganization' |
| | | }, |
| | | { |
| | | title: '申请时间', |
| | | dataIndex: 'status', |
| | | dataIndex: 'createTime', |
| | | hideInSearch: true, |
| | | }, |
| | | { |
| | |
| | | render: (text, record) => { |
| | | return ( |
| | | <Space> |
| | | {/* <Access accessible={access['/work_order_transaction_management/banner_management/del']}> */} |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | addViewRef.current.refreshData({type:'sure',id:record.id}); |
| | | handleModalVisible(true); |
| | | }} |
| | | > |
| | | 通过 |
| | | </Button> |
| | | {/* </Access> */} |
| | | {/* <Access accessible={access['/work_order_transaction_management/banner_management/del']}> */} |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | addViewRef.current.refreshData({type:'refuse',id:record.id}); |
| | | handleModalVisible(true); |
| | | }} |
| | | > |
| | | 拒绝 |
| | | </Button> |
| | | {/* </Access> */} |
| | | {record.auditStatus == 0 && ( |
| | | <> |
| | | <Access accessible={access['/party_member_audit/audit']}> |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | addViewRef.current.refreshData({ type: 'sure', id: record.id }); |
| | | handleModalVisible(true); |
| | | }} |
| | | > |
| | | 通过 |
| | | </Button> |
| | | </Access> |
| | | <Access accessible={access['/party_member_audit/audit']}> |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | addViewRef.current.refreshData({ type: 'refuse', id: record.id }); |
| | | handleModalVisible(true); |
| | | }} |
| | | > |
| | | 拒绝 |
| | | </Button> |
| | | </Access> |
| | | </> |
| | | )} |
| | | |
| | | </Space > |
| | | ); |
| | | }, |
| | | }, |
| | | ] |
| | | |
| | | useEffect(() => { |
| | | regionTree({}).then(res => { |
| | | setItems(() => res.data) |
| | | }) |
| | | }, []) |
| | | |
| | | return <div> |
| | | <PageContainer title='党员审核' header={{ |
| | |
| | | defaultPageSize: 10, |
| | | }} |
| | | request={(params) => { |
| | | params.auditStatus = 0 |
| | | params.communityId = params.community ? params.community[params.community.length - 1] : '' |
| | | return buildProTableDataSource(getList, params) |
| | | }} |
| | | toolBarRender={false} |
| | |
| | | visible={modalVisible} |
| | | onCancel={() => handleModalVisible(false)} |
| | | onSave={async (fileds) => { |
| | | // const success = await sendRequest(add, fileds); |
| | | // if (success) { |
| | | // handleModalVisible(false); |
| | | // actionRef.current.reload(); |
| | | // } |
| | | }} |
| | | onUpdate={async (fileds) => { |
| | | // const success = await sendRequest(Edit, fileds); |
| | | // if (success) { |
| | | // handleModalVisible(false); |
| | | // actionRef.current.reload(); |
| | | // } |
| | | const success = await sendRequest(audit, fileds); |
| | | if (success) { |
| | | handleModalVisible(false); |
| | | addViewRef.current.clean() |
| | | actionRef.current.reload(); |
| | | } |
| | | }} |
| | | /> |
| | | </PageContainer> |
| | |
| | | |
| | | // 列表 |
| | | export const getList = async (data) => { |
| | | return request(`/api/huacheng-sangeshenbian/banner/list`, { |
| | | return request(`/api/huacheng-sangeshenbian/party-member/list`, { |
| | | method: 'POST', |
| | | data:data |
| | | }); |
| | | } |
| | | |
| | | export const regionTree = async (data) => { |
| | | return request('/api/huacheng-sangeshenbian/systemUser/regionTree', { |
| | | method: 'GET', |
| | | params:data |
| | | data, |
| | | }); |
| | | } |
| | | export const audit = async (data) => { |
| | | return request(`/api/huacheng-sangeshenbian/party-member/audit`, { |
| | | method: 'POST', |
| | | data |
| | | }); |
| | | } |
| | | // 详情 |
| | | export const getDetail = async (id) => { |
| | | return request(`/api/huacheng-sangeshenbian/banner/getBannerInfo/${id}`, { |
| | | return request(`/api/huacheng-sangeshenbian/party-member/${id}`, { |
| | | method: 'GET', |
| | | // data |
| | | }); |
| | | } |
| | | |
| | | |
| | | // 删除 |
| | | export const deleteBanner = async (id) => { |
| | | return request(`/api/huacheng-sangeshenbian/banner/delete/${id}`, { |
| | | method: 'delete', |
| | | // params |
| | | }); |
| | | } |
| | | |
| | | // 添加 编辑 |
| | | export const add = async (data) => { |
| | | return request('/api/huacheng-sangeshenbian/banner/add', { |
| | | method: 'POST', |
| | | data, |
| | | }); |
| | | } |
| | | |
| | | // 添加 编辑 |
| | | export const Edit = async (data) => { |
| | | return request('/api/huacheng-sangeshenbian/banner/edit', { |
| | | method: 'POST', |
| | | data, |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | import { PageContainer, } from '@ant-design/pro-components'; |
| | | import { Button, Select, Row, Col, Input, Card, Space, Form, Upload, Spin, message, Cascader, InputNumber } from 'antd'; |
| | | import { useState, useEffect } from 'react'; |
| | | import { add, Edit, getDetail } from '../service'; |
| | | import { add, Edit, getDetail, regionTree, verifyPhone } from '../service'; |
| | | import { history, useLocation, useSearchParams } from 'umi'; |
| | | import { customRequest } from '@/utils/utils'; |
| | | |
| | | const AddOrEditOrDetail = () => { |
| | | const [form] = Form.useForm(); |
| | | const [loading, setLoading] = useState(false); |
| | |
| | | const [adminLevel, setAdminLevel] = useState(1) |
| | | |
| | | const [fileList, setFileList] = useState([]) |
| | | const [community, setCommunity] = useState([])//社区 |
| | | const [userInfo, setUserInfo] = useState({}) |
| | | |
| | | const formItemLayout = { |
| | | labelCol: { span: 6 }, |
| | |
| | | name: 'file', |
| | | action: 'https://huacheng.psciio.com/api/huacheng-communitybackstage/communitypartybuilding/uploadimage', |
| | | headers: { |
| | | Authorization: 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0MjE4MjgwODU4Mzc4MjYsInR5cGUiOjEsImV4cCI6MTc0MTY1OTg5MywiY3JlYXRlZCI6MTc0MDM2Mzg5MzE2MH0.o3Gc0g1LAo_kkL3X3QrC6qKwztxsp6psoTcpTreDzQUXGqPzUXw89fNSR5YKz8gzhtSuSKI2d6TJJYPX1IQCgw', |
| | | Authorization: `Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE2MTc2LCJ0eXBlIjoxLCJleHAiOjE3NDM0OTM5NzYsImNyZWF0ZWQiOjE3NDIxOTc5NzY5NDB9.Lph5ktdjynkIhOdkfFa6pgPM9rQJ2bcGJdk8i9_GOs-ZRR79PrqWWgwgAXsUwOdYUInEDdP90uBXxvBV8SJhvA`, |
| | | }, |
| | | }; |
| | | |
| | | useEffect(() => { |
| | | let adminInfo = JSON.parse(localStorage.getItem('userInfo')) |
| | | setAdminLevel(() => adminInfo.accountLevel)//角色权限1市级2区县3街道4社区5党员 |
| | | |
| | | regionTree({}).then(res => { |
| | | setItems(() => res.data) |
| | | }) |
| | | if (searchParams.get('id')) { |
| | | getDetail(searchParams.get('id')).then(res => { |
| | | setUserInfo(() => res.data) |
| | | res.data.community = [res.data.districtsCode, res.data.streetId, res.data.communityId.toString()] |
| | | setCommunity(() => res.data.community) |
| | | if (res.data.avatar) { |
| | | setFileList(() => [{ url: res.data.avatar, uid: '1' }]) |
| | | } |
| | | form.setFieldsValue(res.data) |
| | | }) |
| | | } |
| | | }, []) |
| | | // 上传前 |
| | | const beforeUpload = (file, type) => { |
| | | return new Promise(async (resolve, reject) => { |
| | | const beforeUpload = (file) => { |
| | | return new Promise((resolve, reject) => { |
| | | if (file.name.includes(',')) { |
| | | message.warning('上传图片名字不能包含英文逗号(,)'); |
| | | return Upload.LIST_IGNORE; |
| | | } |
| | | console.log('============================================') |
| | | setLoading(false) |
| | | |
| | | setLoading(true) |
| | | resolve(file); |
| | | }); |
| | | }; |
| | | const handleChange = ({ file: file, fileList: newFileList }, type) => { |
| | | console.log(file, 'newfilelist', newFileList, 'type', type) |
| | | if (file.status == 'error') { |
| | | const handleChange = ({ file, fileList: newFileList }) => { |
| | | if (file.status == 'error' || (file.status == 'done' && file.response.code != 200)) { |
| | | setLoading(false) |
| | | // setFileList([]) |
| | | message.error('上传失败') |
| | | return |
| | | } |
| | | if (file.status == 'done') { |
| | | if (file.status == 'done' && file.response.code == 200) { |
| | | setLoading(false) |
| | | message.success('上传成功') |
| | | } |
| | |
| | | } |
| | | return item.url |
| | | }); |
| | | console.log('newFileList', newFileList, 'list', list) |
| | | // if (type == 1) { |
| | | // setImageUrl1(newFileList) |
| | | // } else if (type == 2) { |
| | | // setImageUrl(newFileList) |
| | | // } |
| | | setFileList(() => newFileList) |
| | | }; |
| | | |
| | | const submit = () => { |
| | | form.validateFields().then(async (values) => { |
| | | if (fileList.length == 0) { |
| | | message.warning('请上传头像') |
| | | return |
| | | } |
| | | let params = { ...values } |
| | | let adminInfo = JSON.parse(localStorage.getItem('userInfo')) |
| | | params.communityId = params.community.length > 0 ? params.community[params.community.length - 1] : '' |
| | | params.streetId = params.community.length > 1 ? params.community[params.community.length - 2] : adminInfo.streetId |
| | | params.districtsCode = params.community.length == 3 ? params.community[0] : adminInfo.districtsCode |
| | | delete params.community |
| | | params.avatar = fileList[0].url |
| | | if (searchParams.get('id')) { |
| | | params.id = searchParams.get('id') |
| | | let res = await Edit(params) |
| | | if (res.code == 200) { |
| | | message.success('编辑成功') |
| | | history.back() |
| | | } |
| | | } else { |
| | | let res = await add(params) |
| | | if (res.code == 200) { |
| | | message.success('添加成功') |
| | | history.back() |
| | | } |
| | | } |
| | | |
| | | }) |
| | | } |
| | |
| | | return Promise.resolve(); |
| | | }; |
| | | const checkPhoneUse = (e) => { |
| | | console.log('eeeeeeeeee', e.target.value) |
| | | if (Object.keys(userInfo).length > 0 && userInfo.phone == e.target.value) { |
| | | return Promise.resolve() |
| | | } |
| | | verifyPhone({ phone: e.target.value }).then(res => { |
| | | if (res.code != 200) { |
| | | message.warning('该手机号已注册党员信息') |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | |
| | | <Input disabled={searchParams.get('detail')} placeholder='请输入'></Input> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name="name" |
| | | name="phone" |
| | | label='联系电话' rules={[{ required: true, message: '请输入党员联系电话' }, { validator: checkPhone }]} |
| | | > |
| | | <Input disabled={searchParams.get('detail')} placeholder='请输入' maxLength={11} onBlur={checkPhoneUse} ></Input> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name="idcard" |
| | | name="idNumber" |
| | | label='身份证号' rules={[{ required: true, message: '请输入党员身份证号' }, { validator: checkIdCard }]} |
| | | > |
| | | <Input disabled={searchParams.get('detail')} placeholder='请输入' maxLength={18}></Input> |
| | | </Form.Item> |
| | | |
| | | <Form.Item |
| | | name="name" |
| | | name="community" |
| | | label='所在社区' |
| | | rules={[{ required: true, message: '请选择所在社区' }]} |
| | | > |
| | | <Cascader |
| | | disabled={searchParams.get('detail') || adminLevel == 4} |
| | | options={items} |
| | | fieldNames={{ value: 'key', label: 'name' }} |
| | | fieldNames={{ value: 'id', label: 'name' }} |
| | | placeholder="请选择" |
| | | displayRender={(label) => label[label.length - 1]} |
| | | changeOnSelect={true} |
| | | onChange={(value, label) => { |
| | | setCommunity(() => label) |
| | | }} |
| | | // displayRender={(label) => label[label.length - 1]} |
| | | // changeOnSelect={true} |
| | | /> |
| | | </Form.Item> |
| | | |
| | | <Form.Item |
| | | name="name" |
| | | name="serviceTarget" |
| | | label='服务对象' |
| | | // rules={[ { required: true,message: '请输入服务对象'}]} |
| | | > |
| | | <Input disabled={searchParams.get('detail')} placeholder='请输入'></Input> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name="name" |
| | | name="partyOrganization" |
| | | label='所在党组织' |
| | | // rules={[ { required: true,message: '请输入所在党组织'}]} |
| | | > |
| | |
| | | </Form.Item> |
| | | |
| | | <Form.Item |
| | | name="image" |
| | | name="avatar" |
| | | label="头像上传" |
| | | // extra={ |
| | | // <div> |
| | |
| | | onRemove={() => { |
| | | setFileList([]) |
| | | form.setFieldsValue({ |
| | | image: '' |
| | | avatar: null |
| | | }) |
| | | form.validateFields(['avatar']) |
| | | }} |
| | | showUploadList={{ |
| | | showPreviewIcon: false, |
| | |
| | | const [form] = Form.useForm(); |
| | | const [status, setStatus] = useState(true); |
| | | const okHandle = () => { |
| | | onSave() |
| | | // form.validateFields().then((values) => { |
| | | // onSave(values.file.file); |
| | | // }); |
| | | // onSave() |
| | | form.validateFields().then((values) => { |
| | | if(status){ |
| | | message.warning('请上传文件') |
| | | return |
| | | } |
| | | onSave(values.file.file); |
| | | }); |
| | | }; |
| | | |
| | | const downLod = () => { |
| | | // downLoad('/tCheck/import-template', '检查项导入模版'); |
| | | downLoad('/api/huacheng-sangeshenbian/party-member/download', '导入模版'); |
| | | }; |
| | | |
| | | const onChange = (e) => { |
| | |
| | | return { |
| | | refreshData: (data) => {}, |
| | | clean: () => { |
| | | setStatus(true) |
| | | form.resetFields(); |
| | | }, |
| | | }; |
| | |
| | | import { Form, Input, Modal, Select, Upload, Space, Button, message } from 'antd'; |
| | | import { PageContainer, ProTable } from '@ant-design/pro-components'; |
| | | import { forwardRef, useEffect, useImperativeHandle, useState,useRef } from 'react'; |
| | | import { forwardRef, useEffect, useImperativeHandle, useState, useRef, useMemo } from 'react'; |
| | | |
| | | const AddEditView = ({ visible, onSave, onUpdate, onCancel, }, ref) => { |
| | | const actionRef = useRef(); |
| | |
| | | { |
| | | title: '联系电话', |
| | | hideInSearch: true, |
| | | dataIndex: 'name' |
| | | dataIndex: 'phone' |
| | | }, |
| | | { |
| | | title: '身份证号', |
| | | dataIndex: 'name' |
| | | dataIndex: 'idNumber' |
| | | }, |
| | | { |
| | | title: '所在社区', |
| | | dataIndex: 'name', |
| | | dataIndex: 'community', |
| | | }, |
| | | { |
| | | title: '服务对象', |
| | | dataIndex: 'name' |
| | | dataIndex: 'serviceTarget' |
| | | }, |
| | | { |
| | | title: '所在党组织', |
| | | dataIndex: 'name' |
| | | dataIndex: 'partyOrganization' |
| | | }, |
| | | { |
| | | title: '失败原因', |
| | | dataIndex: 'status', |
| | | dataIndex: 'failReason', |
| | | }, |
| | | ] |
| | | |
| | | useImperativeHandle(ref, () => { |
| | | return { |
| | | refreshData: (data) => { |
| | | |
| | | |
| | | setTableListData(()=>data) |
| | | }, |
| | | clean: () => { |
| | | |
| | | setTableListData(()=>[]) |
| | | }, |
| | | }; |
| | | }); |
| | | |
| | | |
| | | // 提交表单 |
| | | const submit = () => { |
| | | |
| | | } |
| | | |
| | | return ( |
| | | <Modal |
| | | getContainer={false} |
| | | width="65%" |
| | | destroyOnClose |
| | | title={'数据导入失败提示'} |
| | | title="数据导入失败提示" |
| | | open={visible} |
| | | onCancel={() => onCancel(false)} |
| | | footer={ |
| | | [ |
| | | <Button |
| | | key="submit" |
| | | type="primary" |
| | | onClick={() => onCancel(false)} |
| | | > |
| | | 确认 |
| | | </Button>, |
| | | ] |
| | | } |
| | | footer={[ |
| | | <Button |
| | | key="submit" |
| | | type="primary" |
| | | onClick={() => onCancel(false)} |
| | | > |
| | | 确认 |
| | | </Button>, |
| | | ]} |
| | | > |
| | | <div> |
| | | <div style={{width:'100%',textAlign:'center',marginBottom:'20px',fontWeight:'bold'}}>以下信息导入失败</div> |
| | | <div |
| | | style={{ |
| | | width: '100%', |
| | | textAlign: 'center', |
| | | marginBottom: '20px', |
| | | fontWeight: 'bold' |
| | | }} |
| | | > |
| | | 以下信息导入失败 |
| | | </div> |
| | | <ProTable |
| | | rowKey='id' |
| | | search={false} |
| | | actionRef={actionRef} |
| | | columns={columns} |
| | | dataSource={tableListData} |
| | | pagination={{ |
| | | showSizeChanger: true, |
| | | showQuickJumper: true, |
| | | defaultPageSize: 10, |
| | | }} |
| | | toolBarRender={false} |
| | | /> |
| | | |
| | | rowKey="id" |
| | | search={false} |
| | | actionRef={actionRef} |
| | | columns={columns} |
| | | dataSource={tableListData} |
| | | pagination={{ |
| | | showSizeChanger: true, |
| | | showQuickJumper: true, |
| | | defaultPageSize: 10, |
| | | }} |
| | | toolBarRender={false} |
| | | /> |
| | | </div> |
| | | </Modal> |
| | | ); |
| | |
| | | import { PageContainer, ProTable } from '@ant-design/pro-components'; |
| | | import { buildProTableDataSource, sendRequest, showDelConfirm } from '@/utils/antdUtils'; |
| | | import { buildProTableDataSource, sendRequest, showDelConfirm, showDelConfirm1 } from '@/utils/antdUtils'; |
| | | import { Button, message, Space, Cascader } from 'antd'; |
| | | import { useRef, useState } from 'react'; |
| | | import { useRef, useState, useEffect } from 'react'; |
| | | import { Access, history, useAccess } from 'umi'; |
| | | import AddAndEdit from './components/index'; |
| | | import ImportExcell from './components/export'; |
| | | import { getList, updateStatus, deleteBanner, add, Edit } from './service' |
| | | import { getList, deleteBanner, freeze, regionTree, enterList } from './service' |
| | | import { exportExcell } from '@/utils/utils' |
| | | const Banner = () => { |
| | | |
| | | const actionRef = useRef(); |
| | | const access = useAccess(); |
| | | const addViewRef = useRef(); |
| | | const modalExportRef = useRef(); |
| | | const [modalVisible, handleModalVisible] = useState(false); |
| | | const [items, setItems] = useState([]); |
| | | const [excelParams, setExcelParams] = useState({}); |
| | |
| | | { |
| | | title: '性别', |
| | | hideInSearch: true, |
| | | dataIndex: 'name' |
| | | dataIndex: 'gender', |
| | | valueEnum: { |
| | | 1: { text: '男' }, |
| | | 0: { text: '女' }, |
| | | } |
| | | }, |
| | | { |
| | | title: '所在社区', |
| | | dataIndex: 'name', |
| | | dataIndex: 'community', |
| | | renderFormItem: () => { |
| | | return ( |
| | | <Cascader |
| | | options={items} |
| | | fieldNames={{ value: 'key', label: 'name' }} |
| | | fieldNames={{ value: 'id', label: 'name' }} |
| | | placeholder="请选择" |
| | | displayRender={(label) => label[label.length - 1]} |
| | | changeOnSelect={true} |
| | | // changeOnSelect={true} |
| | | /> |
| | | ); |
| | | }, |
| | | render: (text, record) => { |
| | | return record.community |
| | | } |
| | | }, |
| | | { |
| | | title: '服务对象', |
| | | dataIndex: 'name' |
| | | dataIndex: 'serviceTarget', |
| | | render: (text, record) => { |
| | | return record.serviceTarget |
| | | } |
| | | }, |
| | | { |
| | | title: '所在党组织', |
| | | dataIndex: 'name' |
| | | dataIndex: 'partyOrganization', |
| | | render: (text, record) => { |
| | | return record.partyOrganization |
| | | } |
| | | }, |
| | | { |
| | | title: '状态', |
| | | dataIndex: 'status', |
| | | dataIndex: 'freezeStatus', |
| | | valueEnum: { |
| | | 0: { text: '全部' }, |
| | | 1: { text: '正常中' }, |
| | | 2: { text: '已冻结' }, |
| | | // 'all': { text: '全部' }, |
| | | '1': { text: '已冻结' }, |
| | | '0': { text: '正常中' }, |
| | | } |
| | | }, |
| | | { |
| | |
| | | render: (text, record) => { |
| | | return ( |
| | | <Space> |
| | | {/* <Access accessible={access['/work_order_transaction_management/banner_management/edit']}> */} |
| | | <Access accessible={access['/party_member/edit']}> |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | |
| | | > |
| | | 编辑 |
| | | </Button> |
| | | {/* </Access> */} |
| | | {/* <Access accessible={access['/work_order_transaction_management/banner_management/del']}> */} |
| | | </Access> |
| | | <Access accessible={access['/party_member/del']}> |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | showDelConfirm(async () => { |
| | | // let status = await sendRequest(deleteBanner, record.id) |
| | | // if (status) { |
| | | // actionRef.current.reload(); |
| | | // } |
| | | let status = await sendRequest(deleteBanner, {id:record.id}) |
| | | if (status) { |
| | | actionRef.current.reload(); |
| | | } |
| | | }, '确认删除所选信息吗?'); |
| | | }} |
| | | > |
| | | 删除 |
| | | </Button> |
| | | {/* </Access> */} |
| | | {/* <Access accessible={access['/work_order_transaction_management/banner_management/del']}> */} |
| | | </Access> |
| | | <Access accessible={access['/party_member/detail']}> |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | |
| | | > |
| | | 查看详情 |
| | | </Button> |
| | | {/* </Access> */} |
| | | {/* <Access accessible={access['/work_order_transaction_management/banner_management/del']}> */} |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | showDelConfirm(async () => { |
| | | // let status = await sendRequest(deleteBanner, record.id) |
| | | // if (status) { |
| | | // actionRef.current.reload(); |
| | | // } |
| | | }, '确认冻结该党员信息吗?'); |
| | | }} |
| | | > |
| | | 冻结 |
| | | </Button> |
| | | {/* </Access> */} |
| | | {/* <Access accessible={access['/work_order_transaction_management/banner_management/del']}> */} |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | showDelConfirm(async () => { |
| | | // let status = await sendRequest(deleteBanner, record.id) |
| | | // if (status) { |
| | | // actionRef.current.reload(); |
| | | // } |
| | | }, '确认解冻该党员信息吗?'); |
| | | }} |
| | | > |
| | | 解冻 |
| | | </Button> |
| | | {/* </Access> */} |
| | | </Access> |
| | | <Access accessible={access['/party_member/freeze']}> |
| | | {record.freezeStatus == 0 && ( |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | showDelConfirm1(async () => { |
| | | let status = await sendRequest(freeze, { id: record.id }) |
| | | if (status) { |
| | | actionRef.current.reload(); |
| | | } |
| | | }, '确认冻结该党员信息吗?', '冻结', '', '确认冻结该党员信息吗?'); |
| | | }} |
| | | > |
| | | 冻结 |
| | | </Button> |
| | | )} |
| | | |
| | | </Access> |
| | | <Access accessible={access['/party_member/freeze']}> |
| | | {record.freezeStatus == 1 && ( |
| | | <Button |
| | | type="link" |
| | | onClick={() => { |
| | | showDelConfirm1(async () => { |
| | | let status = await sendRequest(freeze, { id: record.id }) |
| | | if (status) { |
| | | actionRef.current.reload(); |
| | | } |
| | | }, '确认解冻该党员信息吗?', '解冻', '', '确认解冻该党员信息吗?'); |
| | | }} |
| | | > |
| | | 解冻 |
| | | </Button> |
| | | )} |
| | | |
| | | </Access> |
| | | </Space > |
| | | ); |
| | | }, |
| | | }, |
| | | ] |
| | | useEffect(() => { |
| | | regionTree({}).then(res => { |
| | | setItems(() => res.data) |
| | | }) |
| | | }, []) |
| | | |
| | | return <div> |
| | | <PageContainer title='党员管理' header={{ |
| | |
| | | defaultPageSize: 10, |
| | | }} |
| | | request={(params) => { |
| | | params.status = (params.status && params.status != 0) ? params.status : ''; |
| | | params.communityId = params.community ? params.community[params.community.length - 1] : '' |
| | | params.auditStatus = 1 |
| | | setExcelParams(() => params) |
| | | return buildProTableDataSource(getList, params) |
| | | }} |
| | | toolBarRender={(action, selectRows) => [ |
| | | <Space> |
| | | {/* <Access accessible={access['/work_order_transaction_management/banner_management/add']}> */} |
| | | <Access accessible={access['/party_member/add']}> |
| | | <Button |
| | | type="primary" |
| | | onClick={() => { |
| | |
| | | > |
| | | 添加 |
| | | </Button> |
| | | {/* </Access> */} |
| | | {/* <Access accessible={access['/work_order_transaction_management/banner_management/add']}> */} |
| | | </Access> |
| | | <Access accessible={access['/party_member/export']}> |
| | | <Button |
| | | type="primary" |
| | | onClick={() => { |
| | | // exportExcell('党员列表', excelParams, '/promotion/mgt/coupon/receive-detail/export') |
| | | exportExcell('党员列表', excelParams, '/api/huacheng-sangeshenbian/party-member/export') |
| | | }} |
| | | > |
| | | 导出 |
| | | </Button> |
| | | {/* </Access> */} |
| | | {/* <Access accessible={access['/work_order_transaction_management/banner_management/add']}> */} |
| | | </Access> |
| | | <Access accessible={access['/party_member/import']}> |
| | | <Button |
| | | type="primary" |
| | | onClick={() => { |
| | | // history.push('/party/manage/add?type=add') |
| | | handleModalExport(true) |
| | | modalExportRef.current.clean() |
| | | }} |
| | | > |
| | | 导入 |
| | | </Button> |
| | | {/* </Access> */} |
| | | </Access> |
| | | </Space> |
| | | ]} |
| | | /> |
| | | {/* 导入失败弹窗 */} |
| | | <AddAndEdit |
| | | ref={addViewRef} |
| | | visible={modalVisible} |
| | | onCancel={() => handleModalVisible(false)} |
| | | onSave={async (fileds) => { |
| | | // const success = await sendRequest(add, fileds); |
| | | // if (success) { |
| | | handleModalVisible(false); |
| | | // actionRef.current.reload(); |
| | | // } |
| | | handleModalVisible(false); |
| | | }} |
| | | onUpdate={async (fileds) => { |
| | | // const success = await sendRequest(Edit, fileds); |
| | | // if (success) { |
| | | handleModalVisible(false); |
| | | // actionRef.current.reload(); |
| | | // } |
| | | handleModalVisible(false); |
| | | }} |
| | | /> |
| | | |
| | | <ImportExcell |
| | | ref={modalExportRef} |
| | | visible={modalExport} |
| | | onSave={async (fileds) => { |
| | | console.log('上传文件数据', fileds); |
| | | handleModalExport(false); |
| | | handleModalVisible(true) |
| | | // const success = await sendRequest(enable, fileds); |
| | | // if (success) { |
| | | // handleModalExport(false); |
| | | |
| | | // // actionRef.current.reload(); |
| | | // // listCheck({ checkType: checktype, }).then(res => { |
| | | // // console.log('一键导入数据', res) |
| | | |
| | | // // }) |
| | | // } |
| | | enterList(fileds).then(res => { |
| | | if (res.code == 200) { |
| | | if (res.data.length > 0) { |
| | | message.error('导入失败') |
| | | handleModalExport(false); |
| | | handleModalVisible(true) |
| | | actionRef.current.reload() |
| | | addViewRef.current.refreshData(res.data) |
| | | } else { |
| | | message.success('导入成功') |
| | | handleModalExport(false); |
| | | actionRef.current.reload() |
| | | } |
| | | } |
| | | }) |
| | | }} |
| | | onCancel={() => handleModalExport(false)} |
| | | /> |
| | |
| | | |
| | | // 列表 |
| | | export const getList = async (data) => { |
| | | return request(`/api/huacheng-sangeshenbian/banner/list`, { |
| | | method: 'GET', |
| | | params:data |
| | | return request(`/api/huacheng-sangeshenbian/party-member/list`, { |
| | | method: 'POST', |
| | | data:data |
| | | }); |
| | | } |
| | | // 详情 |
| | | export const getDetail = async (id) => { |
| | | return request(`/api/huacheng-sangeshenbian/banner/getBannerInfo/${id}`, { |
| | | return request(`/api/huacheng-sangeshenbian/party-member/${id}`, { |
| | | method: 'GET', |
| | | // data |
| | | }); |
| | |
| | | |
| | | |
| | | // 删除 |
| | | export const deleteBanner = async (id) => { |
| | | return request(`/api/huacheng-sangeshenbian/banner/delete/${id}`, { |
| | | export const deleteBanner = async (params) => { |
| | | return request(`/api/huacheng-sangeshenbian/party-member/${params.id}`, { |
| | | method: 'delete', |
| | | // params |
| | | params |
| | | }); |
| | | } |
| | | |
| | | // 添加 编辑 |
| | | export const add = async (data) => { |
| | | return request('/api/huacheng-sangeshenbian/banner/add', { |
| | | return request('/api/huacheng-sangeshenbian/party-member/save', { |
| | | method: 'POST', |
| | | data, |
| | | }); |
| | |
| | | |
| | | // 添加 编辑 |
| | | export const Edit = async (data) => { |
| | | return request('/api/huacheng-sangeshenbian/banner/edit', { |
| | | return request('/api/huacheng-sangeshenbian/party-member/save', { |
| | | method: 'POST', |
| | | data, |
| | | }); |
| | | } |
| | | |
| | | // 导出 |
| | | export const exportList = async (data) => { |
| | | return request('/api/huacheng-sangeshenbian/party-member/export', { |
| | | method: 'POST', |
| | | data, |
| | | }); |
| | | } |
| | | export const freeze = async (data) => { |
| | | console.log('冻结') |
| | | return request(`/api/huacheng-sangeshenbian/party-member/freeze/${data.id}`, { |
| | | method: 'GET', |
| | | // data, |
| | | }); |
| | | } |
| | | |
| | | // 导入 |
| | | export async function enable(data) { |
| | | const formData = new FormData() |
| | | formData.append('file',data.originFileObj) |
| | | return request(`/tCheck/importContract`, { |
| | | method: 'POST', |
| | | data: formData |
| | | }); |
| | | } |
| | | export const enterList = async (data) => { |
| | | const formData = new FormData() |
| | | formData.append('file',data.originFileObj) |
| | | return request('/api/huacheng-sangeshenbian/party-member/import', { |
| | | method: 'POST', |
| | | data: formData |
| | | }); |
| | | } |
| | | |
| | | // 获取社区 |
| | | export const regionTree = async (data) => { |
| | | return request('/api/huacheng-sangeshenbian/systemUser/regionTree', { |
| | | method: 'GET', |
| | | data, |
| | | }); |
| | | } |
| | | |
| | | // 校验手机号是否存在 |
| | | export const verifyPhone = async (data) => { |
| | | return request(`/api/huacheng-sangeshenbian/party-member/verify/${data.phone}`, { |
| | | method: 'GET', |
| | | data, |
| | | }); |
| | | } |
| | |
| | | <div> |
| | | <PageContainer header={{ |
| | | breadcrumb: {}, |
| | | }}> |
| | | }} |
| | | title={'职位管理'} |
| | | > |
| | | <ProTable |
| | | rowKey="id" |
| | | actionRef={actionRef} |
| | |
| | | ...params, |
| | | }), |
| | | headers: { |
| | | Authorization: localStorage.getItem('token'), |
| | | Authorization:'Bearer ' + localStorage.getItem('token'), |
| | | 'ConTent-Type': 'application/json;charset=UTF-8', |
| | | timestamp: new Date().getTime(), |
| | | client: localStorage.getItem('client') |
| | |
| | | method: 'get', |
| | | responseType: 'blob', |
| | | headers: { |
| | | Authorization: localStorage.getItem('token'), |
| | | Authorization:'Bearer ' + localStorage.getItem('token'), |
| | | 'ConTent-Type': 'application/json;charset=UTF-8', |
| | | timestamp: new Date().getTime(), |
| | | client: localStorage.getItem('client') |