Commit 2556818b authored by wu's avatar wu

ceshi

parent e92e4bff
import * as Mock from 'mockjs'; export const SERVER_API_URL = '/shfrdj';// export const SERVER_API_URL = 'http://61.152.117.206/shfrdj'; export const SERVER_API_WEB = '/shfrdjweb'; // export const SERVER_API_WEB = 'http://61.152.117.206/'; // export const SERVER_API_BBWX = '/bbwx'; export const SERVER_API_BBWX = 'https://www.cesdj.cn/bbwx'; Mock.setup( { timeout: 50, } ); export const institutionalNature = [ {label: '挂牌机构', value: '8'}, {label: '内设机构', value: '7'}, {label: '派驻机关', value: '6'}, {label: '派出机构', value: '5'}, {label: '分支机构', value: '4'}, {label: '临时机构', value: '3'}, {label: '议事协调机构', value: '2'}, {label: '挂靠机构', value: '1'}, ]
\ No newline at end of file
import * as Mock from 'mockjs';
let hostname = window.location.hostname
export const SERVER_API_URL = hostname === 'localhost' ? '/shfrdj' : 'http://61.152.117.206/shfrdj';
// export const SERVER_API_URL = 'http://61.152.117.206/shfrdj';
export const SERVER_API_WEB = hostname === 'localhost' ? '/shfrdjweb' : 'http://61.152.117.206/';
// export const SERVER_API_WEB = 'http://61.152.117.206/';
// export const SERVER_API_BBWX = '/bbwx';
export const SERVER_API_BBWX = 'https://www.cesdj.cn/bbwx';
Mock.setup(
{
timeout: 50,
}
);
export const institutionalNature = [
{label: '挂牌机构', value: '8'},
{label: '内设机构', value: '7'},
{label: '派驻机关', value: '6'},
{label: '派出机构', value: '5'},
{label: '分支机构', value: '4'},
{label: '临时机构', value: '3'},
{label: '议事协调机构', value: '2'},
{label: '挂靠机构', value: '1'},
]
......@@ -11,6 +11,7 @@ import {VideojsComponent} from "./videojs/videojs";
import {SearchPersonComponent} from './search-person/search-person';
import {EchartDataComponent} from './echart-data/echart-data';
import {FilterComponent} from './filter/filter';
import {SearchFilterComponent} from './search-filter/search-filter';
@NgModule({
......@@ -27,6 +28,7 @@ import {FilterComponent} from './filter/filter';
SearchPersonComponent,
EchartDataComponent,
FilterComponent,
SearchFilterComponent,
],
imports: [
IonicPageModule
......@@ -44,6 +46,7 @@ import {FilterComponent} from './filter/filter';
SearchPersonComponent,
EchartDataComponent,
FilterComponent,
SearchFilterComponent,
],
providers: [
CommentComponent,
......@@ -59,6 +62,7 @@ import {FilterComponent} from './filter/filter';
VideojsComponent,
SearchPersonComponent,
FilterComponent,
SearchFilterComponent,
],
schemas: [NO_ERRORS_SCHEMA]
})
......
<!-- Generated template for the SearchSidebarComponent component -->
<div class="search-sidebar">
<div class="all-address">
<div>
<p>隶属</p>
<span (click)="selectArea(item)" *ngFor="let item of areaList"
[ngClass]="{'selectItem': item.active}">{{item.name}}</span>
</div>
<div *ngIf="unitType == '1'">
<p>行业</p>
<span (click)="selectIndustry(item)" *ngFor="let item of industryList"
[ngClass]="{'selectItem': item.active}">{{item.name}}</span>
</div>
<div *ngIf="unitType == '0'">
<p>行业</p>
<span (click)="selectLawIndustry(item)" *ngFor="let item of lawIndustryList"
[ngClass]="{'selectItem':lawIndustryObj?.code == item.code}">{{item.name}}</span>
</div>
<div *ngIf="unitType == '1'">
<p>经费</p>
<span (click)="selectFunding(item)" *ngFor="let item of fundingList"
[ngClass]="{'selectItem': item.active}">{{item.name}}</span>
</div>
<div *ngIf="unitType == '1'">
<p>单位</p>
<span (click)="selectCause(item)" *ngFor="let item of causeList"
[ngClass]="{'selectItem': item.active}">{{item.name}}</span>
</div>
<div *ngIf="unitType == '1'">
<p>参公</p>
<span (click)="selectMale(item)" *ngFor="let item of maleList"
[ngClass]="{'selectItem':maleObj?.code == item.code}">{{item.name}}</span>
</div>
<div *ngIf="unitType == '0'">
<p>规格</p>
<span (click)="selectSpecifications(item)" *ngFor="let item of specificationsList"
[ngClass]="{'selectItem': item.active}">{{item.name}}</span>
</div>
<div *ngIf="unitType == '2'">
<p>性质</p>
<span (click)="selectNature(item)" *ngFor="let item of natureList"
[ngClass]="{'selectItem': item.active}">{{item.name}}</span>
</div>
<div *ngIf="unitType == '2'">
<p>类别</p>
<span (click)="selectCategory(item)" *ngFor="let item of categoryList"
[ngClass]="{'selectItem': item.active}">{{item.name}}</span>
</div>
</div>
<div class="footer">
<div tappable (click)="reset()">重置</div>
<div tappable (click)="confirm()">确定</div>
</div>
</div>
search-filter {
.search-sidebar {
position: relative;
height: 100%;
width: 90%;
background-color: #fff;
padding: 16px 16px 60px 20px;
overflow: scroll;
> p {
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(51, 51, 51, 1);
line-height: 22px;
margin: 15px 0;
}
.address, .teacher {
background: rgba(238, 238, 238, 1);
border-radius: 15px;
padding-left: 10px;
}
.footer {
position: fixed;
left: 0;
bottom: 0;
width: 90%;
height: 58px;
background: rgba(255, 255, 255, 1);
display: flex;
align-items: center;
justify-content: center;
div {
width: 100px;
height: 32px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 32px;
text-align: center;
}
div:first-child {
border-top-left-radius: 16px;
border-bottom-left-radius: 16px;
background: linear-gradient(100deg, #b2cce4 0%, #86aed3 100%);
}
div:last-child {
border-top-right-radius: 16px;
border-bottom-right-radius: 16px;
background-color: #5c92c8;
//background: linear-gradient(100deg, #fed675 0%, rgba(255, 201, 45, 1) 100%);
}
}
}
.time {
display: flex;
align-items: center;
padding: 0;
position: relative;
.heng {
font-size: 40px;
font-weight: 200;
padding: 0 2px;
}
}
ion-datetime.datetime-ios {
background-color: #eee;
border-radius: 15px;
width: 48%;
padding: 11px 3px 11px 11px;
}
ion-datetime + {
margin-left: 5px;
}
.time2 {
.item-cover {
right: 0;
left: auto;
width: 50%;
}
}
.time1 {
.item-cover {
left: 0;
width: 50%;
}
}
.all-address {
p {
font-family: PingFangSC-Regular, PingFang SC;
font-weight: bold;
color: #333;
line-height: 16px;
margin-bottom: 10px;
width: 100%;
}
>div{
margin-bottom: 10px;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
>span{
width: 31%;
background-color: #F2F2F2;
border: 1px solid #f2f2f2;
border-radius: 4px;
padding: 5px 0;
text-align: center;
margin-bottom: 10px;
display: inline-block;
vertical-align: text-top;
}
}
>div:after{
content: '';
width: 30%;
}
}
.selectItem {
color: #ffffff;
background: linear-gradient(242deg, #b2cce4 0%, #5c92c8 100%);
}
}
import {Component} from '@angular/core';
import {NavParams, ViewController} from "ionic-angular";
import {LoginService} from "../../pages/login/login.service";
import {HomeService} from "../../pages/home/home.service";
import {GlobalData} from "../../core/GlobleData";
import {Storage} from "@ionic/storage";
import { shiftInitState } from '@angular/core/src/view';
@Component({
selector: 'search-filter',
templateUrl: 'search-filter.html'
})
export class SearchFilterComponent {
text: string;
areaObj;
industryObj;
fundingObj;
causeObj;
specificationsObj;
natureObj;
categoryObj;
maleObj;
lawIndustryObj;
areaList = [];
industryList = [];
fundingList = [];
causeList = [];
specificationsList = [];
natureList = []
categoryList = []
maleList = [{name: '全部',code: ''},{name: '是',code: '1'},{name: '否',code: '0'}];
lawIndustryList = [{code: '交通', name: '交通'},{code: '环境', name: '环境'},{code: '文化', name: '文化'},{code: '旅游', name: '旅游'},{code: '民政', name: '民政'}]
unitType = '';
constructor(private viewCtrl: ViewController, private params: NavParams,
private globle: GlobalData,
private storage: Storage,
private loginSer: LoginService,
private HomeSer: HomeService) {
this.areaObj = this.params.get("area");
this.industryObj = this.params.get("industry");
this.fundingObj = this.params.get("funding");
this.causeObj = this.params.get("cause");
this.maleObj = this.params.get("male");
this.lawIndustryObj = this.params.get("lawIndustry");
this.areaList = this.params.get("areaList");
this.industryList = this.params.get("industryList");
this.fundingList = this.params.get("fundingList");
this.causeList = this.params.get("causeList");
this.specificationsList = this.params.get("specificationsList");
this.natureList = this.params.get("natureList");
this.categoryList = this.params.get("categoryList");
this.unitType = this.params.get("unitType");
console.log(this.areaList, this.industryList, this.fundingList, this.causeList, this.unitType)
}
//区域选择
selectArea(item) {
item.active = !item.active
}
//行业选择
selectIndustry(item) {
item.active = !item.active
}
//经费来源选择
selectFunding(item) {
item.active = !item.active
}
//单位类别选择
selectCause(item) {
item.active = !item.active
}
//单位类别选择 --- 单选
selectMale(item) {
this.maleObj = item
}
//行业选择 --- 单选
selectLawIndustry(item) {
this.lawIndustryObj = item
}
// 规格选择
selectSpecifications(item) {
item.active = !item.active
}
//机构性质选择
selectNature(item) {
item.active = !item.active
}
//机构类别选择
selectCategory(item) {
item.active = !item.active
}
//重置
reset() {
this.maleObj = {code: ''}
this.lawIndustryObj = {code: ''}
this.areaList.map(x => x.active = false)
this.industryList.map(x => x.active = false)
this.fundingList.map(x => x.active = false)
this.causeList.map(x => x.active = false)
this.specificationsList.map(x => x.active = false)
this.natureList.map(x => x.active = false)
this.categoryList.map(x => x.active = false)
}
//确定
confirm() {
this.areaObj = this.areaList.filter(x => x.active)
this.industryObj = this.industryList.filter(x => x.active)
this.fundingObj = this.fundingList.filter(x => x.active)
this.causeObj = this.causeList.filter(x => x.active)
this.specificationsObj = this.specificationsList.filter(x => x.active)
this.natureObj = this.natureList.filter(x => x.active)
this.categoryObj = this.categoryList.filter(x => x.active)
const data = {
area: this.areaObj,
industry: this.industryObj,
funding: this.fundingObj,
cause: this.causeObj,
specifications: this.specificationsObj,
nature: this.natureObj,
category: this.categoryObj,
male: this.maleObj,
lawIndustry: this.lawIndustryObj,
};
console.log(data)
this.viewCtrl.dismiss(data);
}
}
import {Injectable} from '@angular/core'; /** * 全局变量 */ @Injectable()export class GlobalData { private _videoNum: number = 1; // 播放器状态 private _token: string; private _userObj: any; private _area: any; private _roles: any; get videoNum(): number { return this._videoNum; } set videoNum(value: number) { this._videoNum = value; } //token get token(): string { return this._token; } set token(value: string) { this._token = value; } //用户信息 get userObj(): any { return this._userObj; } set userObj(value: any) { this._userObj = value; } //区属or市属 get area(): any { return this._area; } set area(value: any) { this._area = value; } //权限 get roles(): any { return this._roles; } set roles(value: any) { this._roles = value; } }
\ No newline at end of file
import {Injectable} from '@angular/core'; /** * 全局变量 */ @Injectable()export class GlobalData { private _videoNum: number = 1; // 播放器状态 private _token: string; private _userObj: any; private _area: any; private _roles: any; private _history: Array<String>; get videoNum(): number { return this._videoNum; } set videoNum(value: number) { this._videoNum = value; } //token get token(): string { return this._token; } set token(value: string) { this._token = value; } //用户信息 get userObj(): any { return this._userObj; } set userObj(value: any) { this._userObj = value; } //区属or市属 get area(): any { return this._area; } set area(value: any) { this._area = value; } //权限 get roles(): any { return this._roles; } set roles(value: any) { this._roles = value; } //搜索的历史记录 get history(): any { return this._history; } set history(value: any) { this._history = value; } }
\ No newline at end of file
......
import {AlertController, App, Events} from 'ionic-angular';import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from '@angular/common/http';import {Injectable} from '@angular/core';import {Storage} from '@ionic/storage'; import {Observable} from 'rxjs';import {_throw} from 'rxjs/observable/throw';import {CommonService} from "./common.service";import {GlobalData} from "./GlobleData"; /** * http拦截器 增加token信息 */ @Injectable()export class InterceptorProvider implements HttpInterceptor { constructor(private storage: Storage, private alertCtrl: AlertController, private events: Events, private commonSer: CommonService, private app: App, private globle: GlobalData) { } // Intercepts all HTTP requests! intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { const data = this.storage.get(''); return Observable.fromPromise(data) .mergeMap(data => { let clonedReq = this.addToken(request, data); return next.handle(clonedReq).do(res => { if (res instanceof HttpResponse) { this.message(res.body); } }, (error) => { let msg = error.message; this.errorMessage(error); // Pass the error to the caller of the function return _throw(error); }, () => { }) }); } // Adds the token to your headers if it exists private addToken(request: HttpRequest<any>, token: any) { let body; if (request.method == "POST") { body = Object.assign(request.body, {}); if (this.globle.token) { body = Object.assign(body, {"token": this.globle.token}); } if (this.globle.userObj && this.globle.userObj.userid) { body = Object.assign(body, {"userid": this.globle.userObj.userid}); } } if (token) { let clone: HttpRequest<any>; if (request.method == "POST") { clone = request.clone({ setHeaders: { // "Accept": `application/json`, 'Content-Type': `application/json;charset=UTF-8`, }, body: body }); } else { clone = request.clone({ setHeaders: { // "Accept": `application/json`, 'Content-Type': `application/json;charset=UTF-8`, }, }); } return clone; } return request; } //code message message(data) { if (data.code) { let code = data.code; if (code == "401") { this.commonSer.toast("登录已过期"); this.storage.clear(); this.events.publish('toLogin'); } else if (code == "-1") { let alert = this.alertCtrl.create({ title: "提示", message: `${data.msg}。`, buttons: ['确定'] }); alert.present(); } if (code == 500) { let alert = this.alertCtrl.create({ title: "提示", message: `${data.msg}。`, buttons: ['确定'] }); alert.present(); } } } //error message errorMessage(data) { if (data.status) { let code = data.status; if (code != 200) { let alert = this.alertCtrl.create({ title: "错误", message: `错误码:${code}。`, buttons: ['确定'] }); alert.present(); } } } }
\ No newline at end of file
import {AlertController, App, Events} from 'ionic-angular';
import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from '@angular/common/http';
import {Injectable} from '@angular/core';
import {Storage} from '@ionic/storage';
import {Observable} from 'rxjs';
import {_throw} from 'rxjs/observable/throw';
import {CommonService} from "./common.service";
import {GlobalData} from "./GlobleData";
/**
* http拦截器 增加token信息
*/
@Injectable()
export class InterceptorProvider implements HttpInterceptor {
constructor(private storage: Storage, private alertCtrl: AlertController, private events: Events,
private commonSer: CommonService, private app: App,
private globle: GlobalData) {
}
// Intercepts all HTTP requests!
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const data = this.storage.get('');
return Observable.fromPromise(data)
.mergeMap(data => {
let clonedReq = this.addToken(request, data);
return next.handle(clonedReq).do(res => {
if (res instanceof HttpResponse) {
this.message(res.body);
}
}, (error) => {
let msg = error.message;
this.errorMessage(error);
// Pass the error to the caller of the function
return _throw(error);
}, () => {
})
});
}
// Adds the token to your headers if it exists
private addToken(request: HttpRequest<any>, token: any) {
let body;
if (request.method == "POST") {
body = Object.assign(request.body, {});
if (this.globle.token) {
body = Object.assign(body, {"token": this.globle.token});
}
if (this.globle.userObj && this.globle.userObj.userid) {
body = Object.assign(body, {"userid": this.globle.userObj.userid});
}
}
if (token) {
let clone: HttpRequest<any>;
if (request.method == "POST") {
clone = request.clone({
setHeaders: {
// "Accept": `application/json`,
'Content-Type': `application/json;charset=UTF-8`,
},
body: body
});
} else {
clone = request.clone({
setHeaders: {
// "Accept": `application/json`,
'Content-Type': `application/json;charset=UTF-8`,
},
});
}
return clone;
}
return request;
}
//code message
message(data) {
if (data.code) {
let code = data.code;
if (code == "401") {
this.commonSer.toast("登录已过期");
this.storage.clear();
this.events.publish('toLogin');
} else if (code == "-1") {
let alert = this.alertCtrl.create({
title: "提示",
message: `${data.msg}。`,
// message: `网络错误`,
buttons: ['确定']
});
alert.present();
}
if (code == 500) {
let alert = this.alertCtrl.create({
title: "提示",
message: `${data.msg}。`,
buttons: ['确定']
});
alert.present();
}
}
}
//error message
errorMessage(data) {
if (data.status) {
let code = data.status;
if (code != 200) {
let alert = this.alertCtrl.create({
title: "错误",
message: `错误码:${code}。`,
buttons: ['确定']
});
alert.present();
}
}
}
}
......@@ -211,7 +211,7 @@
</div>
</div>
</div>
<button class="submit-btn submit" (click)="sureSubmit()">确定</button>
<button class="submit-btn submit" (click)="sureSubmit()" *ngIf="roles.indexOf('7') !== -1">确定</button>
</ng-container>
<ng-container *ngIf="!isShow">
<p class="tips">提示:请至PC端操作</p>
......
......@@ -15,6 +15,7 @@ import {CommonService} from "../../../core/common.service";
import {AppService} from "../../../app/app.service";
import {institutionalNature} from "../../../app/app.constants";
import {Detail6Page} from "../detail6/detail6";
import {Storage} from "@ionic/storage";
@Component({
selector: 'page-deal-detail',
......@@ -28,6 +29,7 @@ export class DealDetailPage {
* flow : String (1-设立,2-变更 ,3-注销,4-补领,0-全部)
*/
itemInfo;
roles = [];
obj = {
opinion: "",
flag: 0, //0-全部 1-督办 2-审核
......@@ -69,9 +71,10 @@ export class DealDetailPage {
constructor(public navCtrl: NavController, public navParams: NavParams,
private globle: GlobalData,
private appSer: AppService,
private commonSer: CommonService,
private commonSer: CommonService, private storage: Storage,
private dealSer: DealService, private modalCtrl: ModalController) {
this.itemInfo = this.navParams.get("item");
this.storage.get('roles').then(value => this.roles = value || [])
this.area = this.globle.area;
if (this.itemInfo.status == '4' || this.itemInfo.status == '5') {
this.isShow = false;
......
......@@ -28,7 +28,7 @@
</div>
</div>
</ion-item>
<ion-item>
<ion-item *ngIf="personInfo.role != 4">
<div class="info-item">
<span class="info-span">手机号</span>
<div class="info-item-content">
......@@ -56,7 +56,7 @@
</ion-list>
<button class="call-btn" (click)="call(personInfo?.telPhone)">拨打座机</button>
<button class="call-btn" *ngIf="personInfo.role != 4" (click)="call(personInfo?.telPhone)">拨打座机</button>
<button class="call-btn" (click)="call(personInfo?.mobilePhone)">拨打手机</button>
<button class="call-btn" *ngIf="personInfo.role != 4" (click)="call(personInfo?.mobilePhone)">拨打手机</button>
</ion-content>
......@@ -17,7 +17,7 @@
<span class="contact-name">{{person.name}}</span>
</div>
<div>
<span class="contact-handphone">手机:{{person.mobilePhone || "-"}}</span>
<span *ngIf="role != 4" class="contact-handphone">手机:{{person.mobilePhone || "-"}}</span>
<span class="contact-telphone">座机:{{person.telPhone || "-"}}</span>
</div>
</div>
......
......@@ -40,9 +40,12 @@ export class ContactListPage {
areacode: this.area.code,
role: this.role,
};
// debugger
console.log(` 查看role: + ${this.role}`)
this.homeSer.getOrgList(data).subscribe(
(res) => {
this.page.list = res.list.user.filter(e => e.orderNum != "" && e.areacode == this.area.code);
res.list.user.map(x=> x.role == 4 ? x.telPhone = x.telPhone.replace(/^(.*).{4}$/, "$1****") : '')
this.page.noNumList = res.list.user.filter(e => e.orderNum == "" && e.areacode == this.area.code);
this.page.list.sort((a, b) => a.orderNum - b.orderNum);
console.log(this.page.list);
......
......@@ -8,17 +8,14 @@ import {ContactListPage} from "../contact-list/contact-list";
})
export class ContactRolePage {
roleList = [
{value: 0, label: '管理员'},
{value: 1, label: '单位领导'},
{value: 2, label: '工作人员'},
{value: 3, label: '其他人员'},
];
roleList = [];
area;
constructor(public navCtrl: NavController, public navParams: NavParams) {
this.area = this.navParams.get('area');
this.roleList = this.area.code == '310000' ? [{value: 0, label: '管理员'},{value: 4, label: '办领导'},{value: 1, label: '处领导'},{value: 2, label: '工作人员'},{value: 3, label: '其他人员'}] : [{value: 4, label: '办领导'},{value: 2, label: '工作人员'},{value: 3, label: '其他人员'}]
console.log('管理role权限:' + JSON.stringify(this.area))
}
ionViewDidLoad() {
......
......@@ -32,6 +32,7 @@ export class ContactPage {
(res) => {
if (res.list) {
this.areaList = res.list;
this.areaList.map(x => { if(x.code == '310000') x.role = 4 })
}
}
)
......
......@@ -7,7 +7,7 @@
<ion-content>
<div class="echart-title">
<span>数据报表分类</span>
<ion-select [(ngModel)]="dataType" cancelText="取消" okText="确定" placeholder="选择">
<ion-select [(ngModel)]="dataType" cancelText="取消" okText="确定" placeholder="选择" (ngModelChange)="changeType(dataType)">
<ion-option value="事业单位总览信息">事业单位总览信息</ion-option>
<ion-option value="事业单位分类信息">事业单位分类信息</ion-option>
<ion-option value="实名制上报率">实名制上报率</ion-option>
......@@ -96,6 +96,48 @@
<div class="echart">
<div #echartPie class="echart-pie"></div>
</div>
<div class="data">
<div class="table">
<table border="1">
<thead>
<tr>
<th>隶属</th>
<th>行政<br/></th>
<th>参照<br/>行政类</th>
<th>公益<br/>一类</th>
<th>公益<br/>二类</th>
<th>经营<br/></th>
<th>暂缓<br/>分类</th>
<th>小计</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of pieData">
<td>{{item.geoApp}}</td>
<td>{{type1 == '单位数(个)' ? item.unitCount1 : type1 == '编制人数(人)' ? item.bzrs1 : item.syrs1}}</td>
<td>{{type1 == '单位数(个)' ? item.unitCount2 : type1 == '编制人数(人)' ? item.bzrs2 : item.syrs2}}</td>
<td>{{type1 == '单位数(个)' ? item.unitCount3 : type1 == '编制人数(人)' ? item.bzrs3 : item.syrs3}}</td>
<td>{{type1 == '单位数(个)' ? item.unitCount4 : type1 == '编制人数(人)' ? item.bzrs4 : item.syrs4}}</td>
<td>{{type1 == '单位数(个)' ? item.unitCount5 : type1 == '编制人数(人)' ? item.bzrs5 : item.syrs5}}</td>
<td>{{type1 == '单位数(个)' ? item.unitCount6 : type1 == '编制人数(人)' ? item.bzrs6 : item.syrs6}}</td>
<td>{{type1 == '单位数(个)' ? item.unitTotal : type1 == '编制人数(人)' ? item.bzrsTotal : item.syrsTotal}}</td>
</tr>
<tr>
<td>合计</td>
<td>{{count.count1}}</td>
<td>{{count.count2}}</td>
<td>{{count.count3}}</td>
<td>{{count.count4}}</td>
<td>{{count.count5}}</td>
<td>{{count.count6}}</td>
<td>{{count.countTotal}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</ng-container>
<ng-container >
......
......@@ -25,6 +25,9 @@ export class DataReportPage {
count1: 0,
count2: 0,
count3: 0,
count4: 0,
count5: 0,
count6: 0,
countTotal: 0,
};
......@@ -52,6 +55,13 @@ export class DataReportPage {
this.getPie();
}
// 切换主信息
changeType(value) {
if(value == '事业单位分类信息'){
this.drawPie();
}
}
//单位信息总览
getUnits() {
const data = {
......@@ -72,11 +82,15 @@ export class DataReportPage {
}
countInfo() {
this.count.count1 = 0
this.count.count2 = 0
this.count.count3 = 0
this.count.countTotal = 0
if (this.type == 'unit') {
this.unitsInfo.forEach(e => {
this.count.count1 += e.unitCount1;
this.count.count2 += e.unitCount1;
this.count.count3 += e.unitCount1;
this.count.count2 += e.unitCount2;
this.count.count3 += e.unitCount3;
this.count.countTotal += e.unitTotal;
})
}
......@@ -99,6 +113,7 @@ export class DataReportPage {
}
switchEchart() {
this.countInfo();
this.echartData1 = {
grid: {
left: "5%",
......@@ -108,10 +123,23 @@ export class DataReportPage {
height: "70%",
containLabel: true
},
legend: {
icon: 'rect',
itemWidth: 14,
itemHeight: 5,
itemGap: 13,
data: ['编制人数(人)', '实有人数(人)'],
right: '4%',
textStyle: {
fontSize: 12,
color: '#999'
},
show: this.type !== 'unit'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
type: this.type == 'unit' ? 'cross' : 'linear',
crossStyle: {
color: '#999'
}
......@@ -124,11 +152,12 @@ export class DataReportPage {
return e.geoApp;
}),
axisPointer: {
type: 'shadow'
type: this.type == 'unit' ? 'shadow' : 'line',
snap: true,
},
axisLabel: {
interval: 0,
formatter: function (value) {
formatter:function (value) {
return value.split("").join("\n")
}
}
......@@ -138,10 +167,10 @@ export class DataReportPage {
type: 'value',
min: 0,
},
series: [
series: this.type == 'unit' ? [
{
name: this.type == 'unit' ? '单位数(个)' : this.type == 'syrs' ? '实有人数(人)' : '编制人数(人)',
type: 'bar',
type: this.type == 'unit' ? 'bar' : 'line',
data: this.unitsInfo.map(e => {
let d;
if (this.type == 'unit') {
......@@ -155,8 +184,21 @@ export class DataReportPage {
}
return d;
}),
color: ['#feda66']
color: ['#feda66'],
}
] : [
{
name: '编制人数(人)',
type: 'line',
data: this.unitsInfo.map(e => e.bzrsTotal),
color: ['#fad049'],
},
{
name: '实有人数(人)',
type: 'line',
data: this.unitsInfo.map(e => e.syrsTotal),
color: ['#0000ff'],
}
]
};
echarts.init(this.echart1.nativeElement).setOption(this.echartData1, true);
......@@ -223,7 +265,7 @@ export class DataReportPage {
)
}
//
// 事业单位分类信息
getPie() {
const data = {
yearmonth: this.yearmonth1
......@@ -231,21 +273,56 @@ export class DataReportPage {
this.homeSer.statisticUnitcatetory(data).subscribe(
(res) => {
this.pieData = res.data;
this.drawPie();
}
)
}
drawPie() {
this.count = {
count1: 0,
count2: 0,
count3: 0,
count4: 0,
count5: 0,
count6: 0,
countTotal: 0,
}
let keyword = '';
if (this.type1 == '单位数(个)') {
keyword = 'unitCount';
this.pieData.forEach(e => {
this.count.count1 += e.unitCount1;
this.count.count2 += e.unitCount2;
this.count.count3 += e.unitCount3;
this.count.count4 += e.unitCount4;
this.count.count5 += e.unitCount5;
this.count.count6 += e.unitCount6;
this.count.countTotal += e.unitTotal;
})
}
if (this.type1 == '编制人数(人)') {
keyword = 'bzrs';
this.pieData.forEach(e => {
this.count.count1 += e.bzrs1;
this.count.count2 += e.bzrs2;
this.count.count3 += e.bzrs3;
this.count.count4 += e.bzrs4;
this.count.count5 += e.bzrs5;
this.count.count6 += e.bzrs6;
this.count.countTotal += e.bzrsTotal;
})
}
if (this.type1 == '实有人数(人)') {
keyword = 'syrs';
this.pieData.forEach(e => {
this.count.count1 += e.syrs1;
this.count.count2 += e.syrs2;
this.count.count3 += e.syrs3;
this.count.count4 += e.syrs4;
this.count.count5 += e.syrs5;
this.count.count6 += e.syrs6;
this.count.countTotal += e.syrsTotal;
})
}
const data = [
{
......@@ -296,6 +373,7 @@ export class DataReportPage {
type: 'pie',
radius: '55%',
center: ['50%', '60%'],
color: ['#d74e67', '#0092ff', '#21b6b9','#60a900','#01949b','#f17677', '#eba954'],
data: data,
emphasis: {
itemStyle: {
......
import {HttpClient} from "@angular/common/http";import {Injectable} from "@angular/core";import {Observable} from "rxjs/Observable";import {SERVER_API_URL, SERVER_API_WEB} from "../../app/app.constants";import {HTTP} from "@ionic-native/http";import {DataFormatService} from "../../core/dataFormat.service"; @Injectable()export class HomeService { constructor(private http: HttpClient, private nativeHttp: HTTP, private dataFormat: DataFormatService) { } //单位信息总揽 units(data): Observable<any> { return this.http.post(SERVER_API_URL + '/statis/units.do', data); } //通讯录 getOrgList(data): Observable<any> { return this.http.post(SERVER_API_URL + '/user/addressinfo.do',data); } //部门人员 getPersonList(data): Observable<any> { return this.http.post(SERVER_API_URL + '/user/getPersonList.do',data); } //事项督办 searchDb(data): Observable<any> { return this.http.post(SERVER_API_URL + '/schedule/search_db.do', data); } //督办操作 dbSuper(data): Observable<any> { return this.http.post(SERVER_API_URL + '/schedule/super.do', data); } //获取附件信息接口 fileAttach(data): Observable<any> { return this.http.post(SERVER_API_URL + '/user/Attach.do', data); } //获取系统中区划信息的接口 getArea(data): Observable<any> { return this.http.post(SERVER_API_URL + '/user/area.do', data); } //实名制上报率排行榜 shangbaolv(data): Observable<any> { return this.http.post(SERVER_API_URL + '/statis/shangbaolv.do', data); } //事业单位信息查询 unitfind(data): Observable<any> { return this.http.post(SERVER_API_WEB + '/infomation/unitfind.do', data); } //机关群团信息查询 creditorgan(data): Observable<any> { return this.http.post(SERVER_API_WEB + '/infomation/creditorgan.do', data); } //年度报告 yearreportdetail(data): Observable<any> { return this.http.post(SERVER_API_WEB + '/infomation/yearreportdetail.do', data); } //事业单位查询 人员信息情况 statisticPerson(data): Observable<any> { return this.http.post(SERVER_API_URL + '/statis/statisticPerson.do', data); } //数据报表 statisticUnitcatetory(data): Observable<any> { return this.http.post(SERVER_API_URL + '/statis/statisticUnitcatetory.do', data); } }
\ No newline at end of file
import {HttpClient} from "@angular/common/http";
import {Injectable} from "@angular/core";
import {Observable} from "rxjs/Observable";
import {SERVER_API_URL, SERVER_API_WEB} from "../../app/app.constants";
import {HTTP} from "@ionic-native/http";
import {DataFormatService} from "../../core/dataFormat.service";
@Injectable()
export class HomeService {
constructor(private http: HttpClient, private nativeHttp: HTTP,
private dataFormat: DataFormatService) {
}
//单位信息总揽
units(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/statis/units.do', data);
}
//通讯录
getOrgList(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/user/addressinfo.do',data);
}
//部门人员
getPersonList(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/user/getPersonList.do',data);
}
//事项督办
searchDb(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/schedule/search_db.do', data);
}
//督办操作
dbSuper(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/schedule/super.do', data);
}
//获取附件信息接口
fileAttach(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/user/Attach.do', data);
}
//获取系统中区划信息的接口
getArea(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/user/area.do', data);
}
//实名制上报率排行榜
shangbaolv(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/statis/shangbaolv.do', data);
}
//事业单位信息查询
unitfind(data): Observable<any> {
return this.http.post(SERVER_API_WEB + '/infomation/unitfind.do', data);
}
//机关群团信息查询
creditorgan(data): Observable<any> {
return this.http.post(SERVER_API_WEB + '/infomation/creditorgan.do', data);
}
//年度报告
yearreportdetail(data): Observable<any> {
return this.http.post(SERVER_API_WEB + '/infomation/yearreportdetail.do', data);
}
//事业单位查询 人员信息情况
statisticPerson(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/statis/statisticPerson.do', data);
}
//数据报表
statisticUnitcatetory(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/statis/statisticUnitcatetory.do', data);
}
//行业分类
getIndustryList(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/user/industry_classification.do', data);
}
//经费形式
getFundingList(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/user/jfxs.do', data);
}
//事业单位
getCauseList(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/user/unit_type.do', data);
}
//规格
getSpecificationsList(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/user/jggg.do', data);
}
//机构性质
getNatureList(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/user/jgxz.do', data);
}
//机构类别
getCategoryList(data): Observable<any> {
return this.http.post(SERVER_API_URL + '/user/jglb.do', data);
}
}
\ No newline at end of file
......@@ -51,7 +51,8 @@ export class HomePage {
yearList = [];
isToggle;
constructor(public navCtrl: NavController, public homeSer: HomeService, private loadCtrl: LoadingController,
constructor(public navCtrl: NavController, public homeSer: HomeService,
private loadCtrl: LoadingController,
private commonSer: CommonService, private storage: Storage,
private appSer: AppService, public statusBar: StatusBar,
private global: GlobalData,
......@@ -59,9 +60,7 @@ export class HomePage {
private mineSer: MineService, private tabSer: TabService, private inAppBrowser: InAppBrowser,
private renderer: Renderer2) {
this.mineInfo = this.global.userObj;
this.storage.get('roles').then((value) => {
this.roles = value || [];
});
this.storage.get('roles').then(value => this.roles = value || []);
const yearmonth = new Date().getFullYear() + '-' + new Date().getMonth();
this.yearmonth = this.datePipe.transform(yearmonth, 'yyyy-MM');
const year = new Date().getFullYear();
......@@ -155,10 +154,23 @@ export class HomePage {
height: "70%",
containLabel: true
},
legend: {
icon: 'rect',
itemWidth: 14,
itemHeight: 5,
itemGap: 13,
data: ['编制人数(人)', '实有人数(人)'],
right: '4%',
textStyle: {
fontSize: 12,
color: '#999'
},
show: this.type !== 'unit'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
type: this.type == 'unit' ? 'cross' : 'linear',
crossStyle: {
color: '#999'
}
......@@ -171,7 +183,8 @@ export class HomePage {
return e.geoApp;
}),
axisPointer: {
type: 'shadow'
type: this.type == 'unit' ? 'shadow' : 'line',
snap: true,
},
axisLabel: {
interval: 0,
......@@ -185,10 +198,10 @@ export class HomePage {
type: 'value',
min: 0,
},
series: [
series: this.type == 'unit' ? [
{
name: this.type == 'unit' ? '单位数(个)' : this.type == 'syrs' ? '实有人数(人)' : '编制人数(人)',
type: 'bar',
type: this.type == 'unit' ? 'bar' : 'line',
data: this.unitsInfo.map(e => {
let d;
if (this.type == 'unit') {
......@@ -202,8 +215,21 @@ export class HomePage {
}
return d;
}),
color: ['#feda66']
color: ['#feda66'],
}
] : [
{
name: '编制人数(人)',
type: 'line',
data: this.unitsInfo.map(e => e.bzrsTotal),
color: ['#fad049'],
},
{
name: '实有人数(人)',
type: 'line',
data: this.unitsInfo.map(e => e.syrsTotal),
color: ['#0000ff'],
}
]
};
echarts.init(this.echart.nativeElement).setOption(this.echartData, true);
......
......@@ -6,7 +6,7 @@
<ion-content>
<div class="content">
<ng-container *ngIf="type == 1">
<ng-container *ngIf="type == 1 || type == 0">
<div class="item-box">
<div class="left">统一社会信用代码:</div>
<div class="right">
......@@ -32,18 +32,18 @@
</div>
</div>
<div class="item-box">
<div class="left">法定代表人:</div>
<div class="left">{{type != 0 ? '法定代表人': '负责人'}}:</div>
<div class="right">
<span>{{ infoObj.frmc}}</span>
</div>
</div>
<div class="item-box">
<div class="item-box" *ngIf="type != 0">
<div class="left">经费来源:</div>
<div class="right">
<span>{{ infoObj.jfxsLabel}}</span>
</div>
</div>
<div class="item-box">
<div class="item-box" *ngIf="type != 0">
<div class="left">开办资金:</div>
<div class="right">
<span>{{ infoObj.kbzj}}万元</span>
......@@ -62,18 +62,24 @@
</div>
</div>
<div class="item-box">
<div class="left">原事证号:</div>
<div class="left">{{type != 0 ? '原事证号' : '归档号'}}:</div>
<div class="right">
<span>{{ infoObj.zsh}}</span>
</div>
</div>
<div class="item-box">
<div class="left">批准文号:</div>
<div class="left">设立文号:</div>
<div class="right">
<span>{{ infoObj.pzwh}}</span>
</div>
</div>
<div class="item-box">
<div class="left">批准文号:</div>
<div class="right">
<span>{{ infoObj.newpw}}</span>
</div>
</div>
<div class="item-box">
<div class="left">机构类别:</div>
<div class="right">
<span>{{ infoObj.unitCatetory}}</span>
......@@ -245,6 +251,12 @@
<span>{{infoObj?.issueDateStr || "-"}}</span>
</div>
</div>
<div class="item-box" *ngIf="infoObj?.jgxzStr == '事业单位非法人'">
<div class="left">有效期至:</div>
<div class="right">
<span>{{infoObj?.endDateStr || "-"}}</span>
</div>
</div>
<div class="item-box">
<div class="left">联系人:</div>
<div class="right">
......
......@@ -29,7 +29,7 @@ export class InfoDetailPage {
}
ionViewDidLoad() {
if(this.type == 1){
if(this.type == 1 || this.type == 0){
this.getPersonInfo();
}
}
......
......@@ -14,31 +14,56 @@
</ion-navbar>
<ion-navbar class="input-search">
<div class="search-input">
<ion-input type="text" placeholder="请输入统一社会信用代码或者单位名称" [(ngModel)]="info.search"></ion-input>
<span class="clear" tappable (click)="getList()">搜索</span>
<!--选择-->
<ion-item class="select">
<ion-select [(ngModel)]="info.type" (ngModelChange)="switchType()" interface="popover" placeholder="请选择">
<div *ngFor="let typeData of info.typeDataArr">
<ion-option [value]="typeData?.id">{{typeData?.lable}}</ion-option>
</div>
</ion-select>
</ion-item>
<!--input框-->
<ion-input type="text" placeholder="请输入" [(ngModel)]="info.search"></ion-input>
<span *ngIf="option.type != '3'" class="clear search" [ngStyle]="{'right': option.type != '3' ? '19%' : '7%'}" tappable (click)="getList()">
<img src="./assets/icon/search.png" />
</span>
<span *ngIf="option.type != '3'" class="clear filter" tappable (click)="filterConditions()">筛选</span>
</div>
</ion-navbar>
<p [ngStyle]="{'display': searchState ? 'block': 'none'}" style="background: #fff;text-align: center;color: #999;padding: 10px 0;">共查询到{{info.totalCount}}条</p>
</ion-header>
<ion-content>
<ion-refresher (ionRefresh)="getList($event)">
<ion-refresher-content pullingText="下拉刷新"
refreshingSpinner="bubbles">
</ion-refresher-content>
</ion-refresher>
<div class="list">
<div *ngFor="let item of info.list" (click)="goToDetail(item)">
<div class="group">
<div class="inner-group">
<p *ngIf="option.viewType == '1'" class="person-name">{{item?.mc}}</p>
<p *ngIf="option.viewType == '2'" class="person-name">{{item?.name}}</p>
<ul *ngIf="!searchState && option.type != '3'" class="history">
<h6>历史记录</h6>
<li *ngFor="let item of option.history" (click)="historyField(item)">{{item}}</li>
</ul>
<div *ngIf="searchState || info.list && option.type != '3'">
<ion-refresher (ionRefresh)="getList($event)">
<ion-refresher-content pullingText="下拉刷新" refreshingSpinner="bubbles"></ion-refresher-content>
</ion-refresher>
<div class="list">
<div *ngFor="let item of info.list" (click)="goToDetail(item)">
<div class="group">
<div class="inner-group">
<p *ngIf="option.viewType == '1'" class="person-name">{{item?.mc}}</p>
<!-- <ion-icon *ngIf="option.type == '3'" name="build-outline" style="color:chartreuse;"></ion-icon>-->
<!--<ion-icon [name]="item.filenumber ? 'close-circle-outline' : 'checkmark-circle-outline'" ></ion-icon>-->
<p *ngIf="option.viewType == '2'" class="person-name">{{item?.name}}</p>
<span [ngStyle]="{'color': item.filenumber ? 'gray' : '#008000', 'border-color': item.filenumber ? 'gray' : '#008000a8' }">{{item.filenumber ? '撤销' : '正常'}}</span>
</div>
</div>
</div>
</div>
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content loadingSpinner="bubbles" loadingText="加载中"></ion-infinite-scroll-content>
</ion-infinite-scroll>
</div>
<div *ngIf="option.type == '3'" style="display: flex;width: 100%;height: 100%;align-items: center;justify-content: center;flex-direction: column;">
<img src="./assets/imgs/construction.png" style="width: 100px;height: 100px;"/>
<p style="font-size: 24px;color: #999;">建设中...</p>
</div>
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content
loadingSpinner="bubbles"
loadingText="加载中"></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>
page-info-list {
.infinite-loading {
}
*{box-sizing: border-box;}
ul,li{list-style: none;box-sizing: border-box;margin: 0;padding:0;}
.infinite-loading {}
.search-input {
display: flex;
......@@ -11,18 +13,68 @@ page-info-list {
width: 95%;
margin-left: 10px;
// 下拉select选择
.select{
margin: 0;
padding-left: 5px;
border-radius: 15px 0 0 15px;
font-size: 14px;
width: auto;
height: 40px;
min-height: auto;
.select-text{
overflow: initial;
}
.select-ios .select-placeholder,.select-ios .select-text,.select-ios .select-icon .select-icon-inner {
color: #000;
}
}
// input框
ion-input {
border-bottom: 1px solid #ffffff;
background-color: #fff;
border-radius: 5px;
// border-radius: 0 15px 15px 0;
height: 40px;
padding-left: 4px;
// margin-right: 5px;
}
// 搜索按钮
.search{
// width: 20px;
width: 30px;
height: 40px;
background: #fff;
border-radius: 0 15px 15px 0;
display: flex;
align-items: center;
margin-right: 10px;
}
.search img{
width: 20px;
}
// 筛选按钮
.filter{
display: flex;
color: #797979;
height: 40px;
padding-left: 10px;
margin-right: 5px;
align-items: center;
}
.filter::after{
content: "";
background: url("../assets/icon/filter.png") no-repeat;
background-size: 100%;
width: 15px;
height: 15px;
display: inline-block;
}
}
.select-ios .select-icon .select-icon-inner {
color: #ffffff;
color: #fff;
}
ion-select {
......@@ -53,9 +105,25 @@ page-info-list {
}
}
.history{
display: flex;
flex-wrap: wrap;
padding: 3px 15px;
>h6{width: 100%;margin: 5px 0 8px;}
>li{
background: #e4e4e4;
color: #999;
padding: 6px 8px;
border-radius:45%;
margin: 3% 3% 0 0;
min-width: 11%;
text-align: center;
}
}
.list {
background-color: #fff;
margin-top: 40px;
> div {
padding: 20px 10px;
}
......@@ -70,6 +138,22 @@ page-info-list {
flex-direction: row;
align-items: center;
box-sizing: border-box;
.inner-group{
width: 100%;
display: flex;
justify-content: space-between;
span{
display: flex;
white-space: nowrap;
min-width: 35px;
align-items: center;
font-size: 12px;
padding: 2px 5px;
height: 24px;
border: 1px solid;
border-radius: 4px;
}
}
}
.toolbar-signUp {
......
......@@ -27,6 +27,7 @@ export class PersonInfoPage {
})
this.personInfo.age_segment.forEach(e => {
this.list.age_segment[`${e.EDUCATION_CN}_${e.AGE_SEGMENT_CN}`] = e.NUM;
console.log(JSON.stringify(this.list.age_segment))
})
this.personInfo.workage_segment.forEach(e => {
this.list.workage_segment[`${e.EDUCATION_CN}_${e.WORKAGE_SEGMENT_CN}`] = e.NUM;
......
......@@ -12,6 +12,7 @@ import {GlobalData} from "../../core/GlobleData";
import {DealService} from "../deal/deal.service";
import {AppService} from "../../app/app.service";
import {NewsService} from "../news/news.service";
import {Storage} from "@ionic/storage";
@Component({
templateUrl: 'tabs.html'
......@@ -22,6 +23,7 @@ export class TabsPage {
tabParams = {
test: 'test'
};
roles = new Array()
tabRoots = [
{
......@@ -64,8 +66,9 @@ export class TabsPage {
private globle: GlobalData,
private dealSer: DealService,
private appSer: AppService,
private newSer: NewsService,
private newSer: NewsService, private storage: Storage,
private events: Events, private nav: NavController, private tabSer: TabService) {
this.storage.get('roles').then(value => this.roles = value || [])
this.searchDeal("1");
this.searchNotice();
this.platform.ready().then(() => {
......@@ -103,9 +106,7 @@ export class TabsPage {
};
this.dealSer.searchSchedule(data).subscribe(
(res) => {
if (res.page.list) {
this.tabRoots[1].badge = res.page.totalCount;
}
if (res.page) if (res.page.list) this.tabRoots[1].badge = this.roles.indexOf('7') !== -1 ? res.page.totalCount : "";
}
)
}
......@@ -118,7 +119,7 @@ export class TabsPage {
};
this.newSer.noticeSearch(data).subscribe(
(res) => {
if (res.page.list.notice && res.page.list.notice.length > 0) {
if (res.page.list) if (res.page.list.notice && res.page.list.notice.length > 0) {
this.tabRoots[2].badge = res.page.list.notice.length;
}
}
......
//tab切换头 .scroll-tab { overflow: hidden; position: relative; } .news-content { overflow-y: hidden; overflow-x: scroll; width: 100%; .tabs-parent { position: relative; font-size: 1.4rem; white-space: nowrap; padding: .5rem 0; transition: all 500ms; } .tabs-parent::-webkit-scrollbar { display: none; } .selectTab { color: #e42417; padding: 6px 2px; -webkit-transition: background-color 500ms; -moz-transition: background-color 500ms; -ms-transition: background-color 500ms; -o-transition: background-color 500ms; transition: background-color 500ms; } .tabs-children { text-align: center; cursor: pointer; height: 3rem; padding: .5rem 1.2rem; display: inline-block; color: #747378; } #tips, .tips { position: absolute; bottom: 1px; height: 4px; width: 3rem; background-image: linear-gradient(to right, #fece50, #fff4d9); -webkit-transition: left 500ms; -moz-transition: left 500ms; -ms-transition: left 500ms; -o-transition: left 500ms; transition: left 500ms; } } .news-content::-webkit-scrollbar { display: none; } .color-fff { color: #ffffff; } .color-red { color: red; } .focus { float: right; font-size: 1.3rem; width: 6rem; height: 2.5rem; border-radius: 3rem; text-align: center; line-height: 2.5rem; font-weight: normal; } .focus-blue { background: #addae9; border: 0.08rem solid #addae9; } span.noFocus-blue { background-color: #cccccc; border: 0.08rem solid #cccccc; color: #fff; } .focus-yellow { background: linear-gradient(241deg, rgba(255, 247, 203, 1) 0%, rgba(255, 201, 45, 1) 100%); } //勋章 .badge { display: flex; > span.badgeSpan { display: flex; align-items: center; position: relative; height: 28px; > span { display: inline-block; font-size: 12px; transform: scale(0.9); font-family: PingFangSC-Semibold, PingFang SC; font-weight: 600; color: rgba(0, 0, 0, .7); background: rgba(250, 216, 114, 1); border-radius: 9px; line-height: 18px; padding: 2px 10px 2px 25px; margin-left: 2px; } img { position: absolute; top: 0; left: 0; z-index: 9; width: 28px; height: 28px; } } } .item-left { text-align: right; width: 20%; font-weight: bold; font-size: 1.4rem; flex: none; } .item-ios.item-block .item-inner { border-bottom: 0.55px solid #eeeeee; } .choose { text-align: right; margin-right: 20px; font-size: 1.5rem; color: #999; } .flowDetail .choose, .handle .choose { color: #5991CA; } .flowDetail .item-left { text-align: left; width: 80%; } ion-label { overflow: auto; white-space: normal; } .item-box { display: flex; border-bottom: 0.55px solid #eeeeee; background-color: #fff; .left { text-align: right; width: 30%; font-weight: bold; font-size: 1.4rem; margin: 11px 8px 11px 2px; } .right { width: 80%; padding: 11px 8px 11px 16px; .div-tag { padding: 10px 0; span { display: inline-block; margin-right: 10px; white-space: initial; border: 1px solid #eee; font-size: 1rem; margin-bottom: 5px; border-radius: 4px; width: 60px; height: 25px; text-align: center; line-height: 25px; ion-icon { margin-left: 3px; color: #666666; font-size: 1rem; } } } button { margin: 0; } ion-textarea { padding: 6px; height: 100px; border: 1px solid #ddd; } .tag { border: 1px solid #ccc; margin: 0 5px 10px 0; display: inline-block; border-radius: 4px; font-size: 1.2rem; width: 60px; height: 25px; text-align: center; line-height: 25px; } span.selectLead { background-color: #fdf8f2; border: 1px solid #e42417; color: #e42417; } } } page-detail1.ion-page > ion-content, page-detail2.ion-page > ion-content, page-detail3.ion-page > ion-content, page-detail4.ion-page > ion-content, page-file-list.ion-page > ion-content, page-history.ion-page > ion-content, page-approvals.ion-page > ion-content, page-detail5.ion-page > ion-content { background-color: #fff; }
\ No newline at end of file
//tab切换头 .scroll-tab { overflow: hidden; position: relative; } .news-content { overflow-y: hidden; overflow-x: scroll; width: 100%; .tabs-parent { position: relative; font-size: 1.4rem; white-space: nowrap; padding: .5rem 0; transition: all 500ms; } .tabs-parent::-webkit-scrollbar { display: none; } .selectTab { color: #e42417; padding: 6px 2px; -webkit-transition: background-color 500ms; -moz-transition: background-color 500ms; -ms-transition: background-color 500ms; -o-transition: background-color 500ms; transition: background-color 500ms; } .tabs-children { text-align: center; cursor: pointer; height: 3rem; padding: .5rem 1.2rem; display: inline-block; color: #747378; } #tips, .tips { position: absolute; bottom: 1px; height: 4px; width: 3rem; background-image: linear-gradient(to right, #fece50, #fff4d9); -webkit-transition: left 500ms; -moz-transition: left 500ms; -ms-transition: left 500ms; -o-transition: left 500ms; transition: left 500ms; } } .news-content::-webkit-scrollbar { display: none; } .color-fff { color: #ffffff; } .color-red { color: red; } .focus { float: right; font-size: 1.3rem; width: 6rem; height: 2.5rem; border-radius: 3rem; text-align: center; line-height: 2.5rem; font-weight: normal; } .focus-blue { background: #addae9; border: 0.08rem solid #addae9; } span.noFocus-blue { background-color: #cccccc; border: 0.08rem solid #cccccc; color: #fff; } .focus-yellow { background: linear-gradient(241deg, rgba(255, 247, 203, 1) 0%, rgba(255, 201, 45, 1) 100%); } //勋章 .badge { display: flex; > span.badgeSpan { display: flex; align-items: center; position: relative; height: 28px; > span { display: inline-block; font-size: 12px; transform: scale(0.9); font-family: PingFangSC-Semibold, PingFang SC; font-weight: 600; color: rgba(0, 0, 0, .7); background: rgba(250, 216, 114, 1); border-radius: 9px; line-height: 18px; padding: 2px 10px 2px 25px; margin-left: 2px; } img { position: absolute; top: 0; left: 0; z-index: 9; width: 28px; height: 28px; } } } .item-left { text-align: right; width: 20%; font-weight: bold; font-size: 1.4rem; flex: none; } .item-ios.item-block .item-inner { border-bottom: 0.55px solid #eeeeee; } .choose { text-align: right; margin-right: 20px; font-size: 1.5rem; color: #999; } .flowDetail .choose, .handle .choose { color: #5991CA; } .flowDetail .item-left { text-align: left; width: 80%; } ion-label { overflow: auto; white-space: normal; } .item-box { display: flex; border-bottom: 0.55px solid #eeeeee; background-color: #fff; .left { text-align: right; width: 30%; font-weight: bold; font-size: 1.4rem; margin: 11px 8px 11px 2px; } .right { width: 80%; padding: 11px 8px 11px 16px; .div-tag { padding: 10px 0; span { display: inline-block; margin-right: 10px; white-space: initial; border: 1px solid #eee; font-size: 1rem; margin-bottom: 5px; border-radius: 4px; width: 60px; height: 25px; text-align: center; line-height: 25px; ion-icon { margin-left: 3px; color: #666666; font-size: 1rem; } } } button { margin: 0; } ion-textarea { padding: 6px; height: 100px; border: 1px solid #ddd; } .tag { border: 1px solid #ccc; margin: 0 5px 10px 0; display: inline-block; border-radius: 4px; font-size: 1.2rem; width: 60px; height: 25px; text-align: center; line-height: 25px; } span.selectLead { background-color: #fdf8f2; border: 1px solid #e42417; color: #e42417; } } } page-detail1.ion-page > ion-content, page-detail2.ion-page > ion-content, page-detail3.ion-page > ion-content, page-detail4.ion-page > ion-content, page-file-list.ion-page > ion-content, page-history.ion-page > ion-content, page-approvals.ion-page > ion-content, page-detail5.ion-page > ion-content { background-color: #fff; } // 搜索页-popover ion-popover { .radio-ios .radio-icon{opacity: 0;width: 0} .input-wrapper{font-size: 14px;} }
\ No newline at end of file
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment