Merge branch 'master' of https://e.coding.net/ctcdevteam/cma_search
This commit is contained in:
commit
b452d91b9f
|
@ -114,8 +114,8 @@
|
|||
</el-card>
|
||||
|
||||
|
||||
<el-card style="float:left;width: 30%;">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="adddept">增加巡检组织</el-button>
|
||||
<el-card style="float:left;width: 30%;margin-top:4px">
|
||||
<!-- <el-button type="primary" icon="el-icon-plus" @click="adddept">增加巡检组织</el-button> -->
|
||||
<el-table
|
||||
:data="recordList"
|
||||
max-height="300"
|
||||
|
@ -126,8 +126,7 @@
|
|||
@row-click="recorclickRow"
|
||||
>
|
||||
<el-table-column
|
||||
label="组织名称"
|
||||
width="180">
|
||||
label="组织名称">
|
||||
<template slot-scope="scope">
|
||||
|
||||
{{ scope.row.dept__name }}
|
||||
|
@ -135,8 +134,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="检查状态"
|
||||
width="180">
|
||||
label="检查状态">
|
||||
<template slot-scope="scope">
|
||||
|
||||
<el-tag size="medium">{{ scope.row.state }}</el-tag>
|
||||
|
@ -155,8 +153,8 @@
|
|||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
<el-card class="box-card" style="float:right;width: 70%;">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="dialogFormVisible=true">指派任务</el-button>
|
||||
<el-card class="box-card" style="float:right;width: 70%;margin-top:4px;">
|
||||
<el-button type="primary" @click="dialogFormVisible=true">指派任务</el-button>
|
||||
<el-table
|
||||
:data="inspectitemList"
|
||||
max-height="300"
|
||||
|
@ -170,8 +168,7 @@
|
|||
width="55">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="检查类别"
|
||||
width="180">
|
||||
label="检查类别">
|
||||
<template slot-scope="scope">
|
||||
|
||||
{{ scope.row.item_.cate_name }}
|
||||
|
@ -179,8 +176,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="检查要点"
|
||||
width="180">
|
||||
label="检查要点">
|
||||
<template slot-scope="scope">
|
||||
|
||||
{{ scope.row.item_.name }}
|
||||
|
@ -188,8 +184,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="检查类型"
|
||||
width="180">
|
||||
label="检查类型">
|
||||
<template slot-scope="scope">
|
||||
|
||||
{{ scope.row.item_.type }}
|
||||
|
@ -197,8 +192,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="检查人"
|
||||
width="180">
|
||||
label="检查人">
|
||||
<template slot-scope="scope" v-if="scope.row.checker_">
|
||||
|
||||
{{ scope.row.checker_.name }}
|
||||
|
@ -206,8 +200,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="是否检查"
|
||||
width="180">
|
||||
label="是否检查">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.checked" effect="plain">是</el-tag>
|
||||
<el-tag type="danger" effect="plain" v-else>否</el-tag>
|
||||
|
|
|
@ -34,7 +34,11 @@ const install = (Vue, vm) => {
|
|||
|
||||
let checkInspectRecord = (id, params)=> vm.$u.put(`/quality/inspectrecord/${id}/check/`, params);
|
||||
|
||||
let upInspectDept = (id, params)=>vm.$u.put(`/quality/inspectdept/${id}/up/`, params);
|
||||
let startInspectDept = (id, params)=>vm.$u.put(`/quality/inspectdept/${id}/start/`, params);//开始检查
|
||||
|
||||
let upInspectDept = (id, params)=>vm.$u.put(`/quality/inspectdept/${id}/up/`, params);//提交记录
|
||||
|
||||
let appointChecker = (params) => vm.$u.post('/quality/inspectrecord/appoint/', params);//检查指派
|
||||
vm.$u.api = {getUserInfo,
|
||||
getCode,
|
||||
codeLogin,
|
||||
|
@ -46,7 +50,9 @@ const install = (Vue, vm) => {
|
|||
getSubtaskDept,
|
||||
getInspectRecord,
|
||||
checkInspectRecord,
|
||||
upInspectDept
|
||||
upInspectDept,
|
||||
appointChecker,
|
||||
startInspectDept
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,6 @@ const install = (Vue, vm) => {
|
|||
// 请求拦截,配置Token等参数
|
||||
Vue.prototype.$u.http.interceptor.request = (config) => {
|
||||
config.header.Authorization = 'Bearer ' + vm.vuex_token;
|
||||
|
||||
// 方式一,存放在vuex的token,假设使用了uView封装的vuex方式,见:https://uviewui.com/components/globalVariable.html
|
||||
// config.header.token = vm.token;
|
||||
|
||||
|
@ -47,9 +46,9 @@ const install = (Vue, vm) => {
|
|||
}
|
||||
else if(res.code === 401){
|
||||
vm.$u.toast('验证失败,请重新登录');
|
||||
// uni.reLaunch({
|
||||
// url:'/pages/login/login'
|
||||
// })
|
||||
uni.reLaunch({
|
||||
url:'/pages/login/login'
|
||||
})
|
||||
return false;
|
||||
}
|
||||
else{
|
||||
|
|
|
@ -0,0 +1,141 @@
|
|||
<template>
|
||||
<view :class="[styleType === 'text'?'segmented-control--text' : 'segmented-control--button' ]" :style="{ borderColor: styleType === 'text' ? '' : activeColor }"
|
||||
class="segmented-control">
|
||||
<view v-for="(item, index) in values" :class="[ styleType === 'text'?'segmented-control__item--text': 'segmented-control__item--button' , index === currentIndex&&styleType === 'button'?'segmented-control__item--button--active': '' , index === 0&&styleType === 'button'?'segmented-control__item--button--first': '',index === values.length - 1&&styleType === 'button'?'segmented-control__item--button--last': '' ]"
|
||||
:key="index" :style="{
|
||||
backgroundColor: index === currentIndex && styleType === 'button' ? activeColor : '',borderColor: index === currentIndex&&styleType === 'text'||styleType === 'button'?activeColor:'transparent'
|
||||
}"
|
||||
class="segmented-control__item" @click="_onClick(index)">
|
||||
<text :style="{color:
|
||||
index === currentIndex
|
||||
? styleType === 'text'
|
||||
? activeColor
|
||||
: '#fff'
|
||||
: styleType === 'text'
|
||||
? '#000'
|
||||
: activeColor}"
|
||||
class="segmented-control__text">{{ item }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
/**
|
||||
* SegmentedControl 分段器
|
||||
* @description 用作不同视图的显示
|
||||
* @tutorial https://ext.dcloud.net.cn/plugin?id=54
|
||||
* @property {Number} current 当前选中的tab索引值,从0计数
|
||||
* @property {String} styleType = [button|text] 分段器样式类型
|
||||
* @value button 按钮类型
|
||||
* @value text 文字类型
|
||||
* @property {String} activeColor 选中的标签背景色与边框颜色
|
||||
* @property {Array} values 选项数组
|
||||
* @event {Function} clickItem 组件触发点击事件时触发,e={currentIndex}
|
||||
*/
|
||||
|
||||
export default {
|
||||
name: 'UniSegmentedControl',
|
||||
props: {
|
||||
current: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
values: {
|
||||
type: Array,
|
||||
default () {
|
||||
return []
|
||||
}
|
||||
},
|
||||
activeColor: {
|
||||
type: String,
|
||||
default: '#007aff'
|
||||
},
|
||||
styleType: {
|
||||
type: String,
|
||||
default: 'button'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
currentIndex: 0
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
current(val) {
|
||||
if (val !== this.currentIndex) {
|
||||
this.currentIndex = val
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.currentIndex = this.current
|
||||
},
|
||||
methods: {
|
||||
_onClick(index) {
|
||||
if (this.currentIndex !== index) {
|
||||
this.currentIndex = index
|
||||
this.$emit('clickItem', {
|
||||
currentIndex: index
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
.segmented-control {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
box-sizing: border-box;
|
||||
/* #endif */
|
||||
flex-direction: row;
|
||||
height: 36px;
|
||||
overflow: hidden;
|
||||
/* #ifdef H5 */
|
||||
cursor: pointer;
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.segmented-control__item {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: inline-flex;
|
||||
box-sizing: border-box;
|
||||
/* #endif */
|
||||
position: relative;
|
||||
flex: 1;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.segmented-control__item--button {
|
||||
border-style: solid;
|
||||
border-top-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-left-width: 0;
|
||||
}
|
||||
|
||||
.segmented-control__item--button--first {
|
||||
border-left-width: 1px;
|
||||
border-top-left-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
}
|
||||
|
||||
.segmented-control__item--button--last {
|
||||
border-top-right-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
}
|
||||
|
||||
.segmented-control__item--text {
|
||||
border-bottom-style: solid;
|
||||
border-bottom-width: 3px;
|
||||
}
|
||||
|
||||
.segmented-control__text {
|
||||
font-size: 16px;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
|
@ -79,7 +79,7 @@
|
|||
"quickapp" : {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "wx126bdbf0c683c357",
|
||||
"appid" : "wx0605643660b9b2ec",
|
||||
"setting" : {
|
||||
"urlCheck" : false,
|
||||
"minified" : true
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
"path" : "pages/home/home",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "主页",
|
||||
"navigationBarTitleText": "",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
||||
|
@ -103,9 +103,9 @@
|
|||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTextStyle": "white",
|
||||
"navigationBarTitleText": "uView",
|
||||
"navigationBarBackgroundColor": "#FFFFFF",
|
||||
"navigationBarBackgroundColor": "#2b85e4",
|
||||
"backgroundColor": "#FFFFFF"
|
||||
},
|
||||
"tabBar": {
|
||||
|
|
|
@ -1,25 +1,33 @@
|
|||
<template>
|
||||
<view>
|
||||
<!-- <view :style="{background: 'url('+imageURL+')'}">
|
||||
</view> -->
|
||||
<view style="background-color: #0074ba;">
|
||||
<u-image :src="imageURL" mode="widthFix"></u-image>
|
||||
<view style="background-color: #2b85e4;font-weight: bold;font-size: 30rpx;color:white;padding-left:8rpx">欢迎您:{{vuex_user.name}}</view>
|
||||
</view>
|
||||
|
||||
<!-- <u-swiper @change="change" :height="250" :list="swiper_list" :title="swtitle" :effect3d="effect3d"
|
||||
:indicator-pos="indicatorPos" :mode="mode" :interval="3000" @click="click"></u-swiper> -->
|
||||
<view style="margin-top:12rpx;margin-bottom: 12rpx;">
|
||||
|
||||
<view style="margin-bottom: 12rpx;">
|
||||
<u-grid :col="3" :border="false">
|
||||
<u-grid-item v-for="(item, index) in grids" v-bind:key="index" @click="clickGrid(item)">
|
||||
<u-icon :name="item.icon" :size="60"></u-icon>
|
||||
<u-icon :name="item.icon" :size="60" color="#2b85e4" size="72"></u-icon>
|
||||
<view class="grid-text">{{item.name}}</view>
|
||||
</u-grid-item>
|
||||
</u-grid>
|
||||
</view>
|
||||
<view style="margin-bottom: 12rpx;margin-left: 6rpx;">
|
||||
|
||||
<view style="margin-bottom: 12rpx;margin-left: 6rpx;" v-if="myinspecttaskList.length>0">
|
||||
<u-section title="最近任务" :right="false" ></u-section>
|
||||
</view>
|
||||
<u-card v-for="(item, index) in myinspecttaskList" v-bind:key="index" :title="item.name" margin="12rpx"
|
||||
:border="false" :foot-border-top="false" border-radius="2rpx" :head-style="headstyle"
|
||||
:border="false" :foot-border-top="false" border-radius="8rpx" :head-style="headstyle"
|
||||
@body-click="taskClick" :index="item.id" padding="10">
|
||||
<view class="" slot="body">
|
||||
<view class="u-body-item-title">
|
||||
<span style="color:#2979FF;font-weight: bold;margin-right: 8rpx;">{{item.state}}</span>
|
||||
<span class="itemstate">{{item.state}}</span>
|
||||
{{item.name}}
|
||||
</view>
|
||||
<view class="u-body-item">
|
||||
|
@ -33,9 +41,9 @@
|
|||
</view>
|
||||
<view class="u-body-item">
|
||||
涉及单位:
|
||||
<span style="color:blue;">{{item.depts_count}}</span>家
|
||||
<span style="color:darkblue;">{{item.depts_count}}</span>家
|
||||
巡查组:
|
||||
<span style="color:blue;">{{item.members.length}}</span>人
|
||||
<span style="color:darkblue;">{{item.members.length}}</span>人
|
||||
</view>
|
||||
</view>
|
||||
</u-card>
|
||||
|
@ -46,7 +54,7 @@
|
|||
export default {
|
||||
data() {
|
||||
return {
|
||||
imageURL: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
|
||||
imageURL: 'http://testsearch.ctc.ac.cn:8000/media/default/banner3.jpg',
|
||||
swiper_list: [{
|
||||
image: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
|
||||
title: '昨夜星辰昨夜风,画楼西畔桂堂东'
|
||||
|
@ -164,4 +172,9 @@
|
|||
color: #333;
|
||||
}
|
||||
}
|
||||
.itemstate {
|
||||
color:$u-type-primary-dark;
|
||||
font-weight: bold;
|
||||
margin-right: 8rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,17 +1,24 @@
|
|||
<template>
|
||||
<view class="wrap">
|
||||
<u-card :title="initData.dept__name" margin="12rpx" :border="false" :foot-border-top="false" border-radius="2rpx"
|
||||
:head-style="headstyle" padding="10">
|
||||
<u-card :title="initData.dept__name" margin="12rpx" :border="false" :foot-border-top="false"
|
||||
border-radius="8rpx" :head-style="headstyle" padding="10">
|
||||
<view class="" slot="body">
|
||||
<view class="u-body-item-title">
|
||||
<span style="color:#2979FF;font-weight: bold;margin-right: 8rpx;">{{initData.state}}</span>
|
||||
<span class="itemstate">{{initData.state}}</span>
|
||||
</view>
|
||||
<view class="u-body-item" v-if="initData.start_date">
|
||||
开始检查日期: <span>{{initData.start_date}}</span>
|
||||
</view>
|
||||
</view>
|
||||
<view class="" slot="foot">
|
||||
<view style="flex:true;text-align: right;">
|
||||
<u-checkbox @change="selfChange" v-model="is_self">只看我的</u-checkbox>
|
||||
<u-button type="primary" size="mini" style="margin-left:6rpx" @click="upReport" v-if="initData.state=='检查中'&&initData.leader==vuex_user.id">提交结果</u-button>
|
||||
<u-button size="mini" style="margin-left:6rpx" @click="goReport" v-if="initData.state=='已提交'">查看报告</u-button>
|
||||
<u-button type="primary" size="mini" style="margin-left:6rpx" @click="startCheck"
|
||||
v-if="initData.state=='待检查'&&initData.leader==vuex_user.id">开始检查</u-button>
|
||||
<u-button type="warning" size="mini" style="margin-left:6rpx" @click="upReport"
|
||||
v-if="initData.state=='检查中'&&initData.leader==vuex_user.id">提交结果</u-button>
|
||||
<u-button size="mini" style="margin-left:6rpx" @click="goReport" v-if="initData.state=='已提交'">查看报告
|
||||
</u-button>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
@ -21,8 +28,9 @@
|
|||
</view>
|
||||
<view style="background-color: #ffffff;padding: 8rpx;">
|
||||
<u-tabs :list="list" :is-scroll="false" :current="currentIndex" @change="sectionChange"></u-tabs>
|
||||
<!-- <u-card v-for="(item, index) in records" v-bind:key="index" margin="6rpx"
|
||||
:border="false" :foot-border-top="false" border-radius="2rpx" :head-style="headstyle"
|
||||
<!-- <uni-segmented-control :current="currentIndex" :values="list1" styleType="text" @clickItem="sectionChange2"></uni-segmented-control> -->
|
||||
<!-- <u-card v-for="(item, index) in records" v-bind:key="index" margin="6rpx"
|
||||
:border="false" :foot-border-top="false" border-radius="8rpx" :head-style="headstyle"
|
||||
@body-click="clickRow" :index="item.id" padding="10" v-if="getShow(item.checked)">
|
||||
<view class="" slot="body">
|
||||
<view class="u-body-item-title">
|
||||
|
@ -38,9 +46,24 @@
|
|||
</view>
|
||||
</view>
|
||||
</u-card> -->
|
||||
<view v-for="(item, index) in records" v-bind:key="index" v-if="getShow(item.checked)"
|
||||
|
||||
<view v-show="currentIndex==0" style="text-align: right;">
|
||||
<u-checkbox v-model="mutiSelect" @change="mutiSelectChange">多选</u-checkbox>
|
||||
<u-button type="primary" size="mini" style="margin-left:6rpx" @click="membersShow"
|
||||
v-if="initData.leader==vuex_user.id && mutiSelect">指派给</u-button>
|
||||
</view>
|
||||
<view style="margin-top:6rpx">
|
||||
<u-gap height="2" bg-color="#ececec"></u-gap>
|
||||
</view>
|
||||
<checkbox-group @change="checkboxChange">
|
||||
|
||||
<view v-for="(item, index) in records" v-bind:key="index" v-show="getShow(item.checked)"
|
||||
style="padding: 12rpx;">
|
||||
<view class="u-body-item-title">{{item.item_.sortnum}}.{{item.item_.name}}</view>
|
||||
<view class="u-body-item-title">
|
||||
<checkbox :checked="item.selected" :value="item.id+'item'" v-if="mutiSelect"/>
|
||||
<!-- <u-checkbox v-model="item.selected" v-if="mutiSelect"></u-checkbox> -->
|
||||
{{item.item_.sortnum}}.{{item.item_.name}}
|
||||
</view>
|
||||
<view class="u-body-item">
|
||||
<span v-if="item.checker_">{{item.checker_.name}}</span>--
|
||||
<span v-if="item.result=='发现'" style="color:red">{{item.result}}</span>
|
||||
|
@ -48,15 +71,16 @@
|
|||
<span v-else-if="item.result=='不适用'">{{item.result}}</span>
|
||||
</view>
|
||||
<view style="flex:true;text-align: right;">
|
||||
<u-button type="primary" size="mini" style="margin-left:6rpx" @click="clickRow(item)">检查</u-button>
|
||||
<u-button size="mini" style="margin-left:6rpx" @click="clickRow2(item)"
|
||||
v-if="currentIndex==1"
|
||||
>详情</u-button>
|
||||
<u-button type="primary" size="mini" style="margin-left:6rpx" @click="clickRow(item)" v-if="initData.state=='检查中'">检查
|
||||
</u-button>
|
||||
<u-button size="mini" style="margin-left:6rpx" @click="clickRow2(item)" >
|
||||
详情</u-button>
|
||||
</view>
|
||||
<view style="margin-top:6rpx">
|
||||
<u-gap height="1" bg-color="#bbb"></u-gap>
|
||||
<u-gap height="2" bg-color="#ececec"></u-gap>
|
||||
</view>
|
||||
</view>
|
||||
</checkbox-group>
|
||||
<!-- <u-collapse ref="mycollapse">
|
||||
<u-collapse-item :title="title1" :open="true">
|
||||
<u-cell-group :border="false">
|
||||
|
@ -83,6 +107,8 @@
|
|||
<view style="margin-top:16rpx">
|
||||
<u-divider bg-color="#ededed">没有更多了</u-divider>
|
||||
</view>
|
||||
<u-picker mode="selector" v-model="showMembers" :default-selector="[0]" :range="members"
|
||||
range-key="member__name" @confirm="pickerConfirm"></u-picker>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
@ -103,6 +129,7 @@
|
|||
name: '已检查'
|
||||
}
|
||||
],
|
||||
list1:['未检查', '已检查'],
|
||||
// title1:"未检查(0)",
|
||||
// title2:"已检查(0)",
|
||||
records: [],
|
||||
|
@ -110,15 +137,40 @@
|
|||
// records1:[],
|
||||
// records2:[],
|
||||
is_self: false,
|
||||
showNo: false
|
||||
showNo: false,
|
||||
mutiSelect: false,
|
||||
showMembers: false,
|
||||
members: [],
|
||||
selects: []
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
this.initData = options;
|
||||
let pages = getCurrentPages();
|
||||
let prePage = pages[pages.length - 2];
|
||||
if (prePage && prePage.subtask) {
|
||||
this.members = prePage.subtask.members
|
||||
} else {
|
||||
this.$u.api.getSubinspectTask(this.initData.subtask).then(res => {
|
||||
this.members = res.data.members
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
onShow() {
|
||||
this.getSubtaskDept();
|
||||
this.getRecords()
|
||||
},
|
||||
methods: {
|
||||
getSubtaskDept() {
|
||||
this.$u.api.getSubtaskDept(this.initData.id).then(res => {
|
||||
this.initData = res.data
|
||||
if (this.initData.state == '已提交') {
|
||||
this.sectionChange(1)
|
||||
}
|
||||
})
|
||||
},
|
||||
getRecords() {
|
||||
this.$u.api.getInspectRecords({
|
||||
subtask: this.initData.subtask,
|
||||
dept: this.initData.dept,
|
||||
|
@ -126,16 +178,14 @@
|
|||
}).then(res => {
|
||||
this.records_ = res.data
|
||||
this.records = res.data
|
||||
// for(var i=0;i<this.records.length;i++){
|
||||
// this.records[i].selected=false
|
||||
// }
|
||||
this.mutiSelect = false
|
||||
this.sectionChange(this.currentIndex)
|
||||
// this.setCollapse(this.records_)
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getSubtaskDept() {
|
||||
this.$u.api.getSubtaskDept(this.initData.id).then(res => {
|
||||
this.initData = res.data
|
||||
})
|
||||
},
|
||||
selfChange(val) {
|
||||
if (val.value) {
|
||||
let selfrecords = []
|
||||
|
@ -151,8 +201,26 @@
|
|||
}
|
||||
},
|
||||
sectionChange(index) {
|
||||
console.log(index)
|
||||
this.currentIndex = index;
|
||||
},
|
||||
sectionChange2(val){
|
||||
this.currentIndex=val.currentIndex;
|
||||
},
|
||||
checkboxChange(val){
|
||||
let selects = [];
|
||||
for(var i=0;i<val.detail.value.length;i++){
|
||||
selects.push(val.detail.value[i].replace("item",""))
|
||||
}
|
||||
this.selects = selects
|
||||
},
|
||||
mutiSelectChange() {
|
||||
if (this.mutiSelect) {
|
||||
for (var i = 0; i < this.records.length; i++) {
|
||||
this.records[i].selected = false
|
||||
}
|
||||
}
|
||||
},
|
||||
getShow(val) {
|
||||
if (val && this.currentIndex == 1) {
|
||||
return true
|
||||
|
@ -183,14 +251,15 @@
|
|||
// uni.navigateTo({
|
||||
// url:'/pages/inspectrecord/recorddo'
|
||||
// })
|
||||
if((item.checker!= this.vuex_user.id && item.checker == null) || this.initData.leader==this.vuex_user.id ){
|
||||
if ((item.checker != this.vuex_user.id && item.checker == null) || this.initData.leader == this.vuex_user
|
||||
.id || item.checker == this.vuex_user.id) {
|
||||
this.$u.route({
|
||||
url: '/pages/inspectrecord/recorddo',
|
||||
params: {
|
||||
id: item.id
|
||||
}
|
||||
})
|
||||
}else{
|
||||
} else {
|
||||
this.$u.toast('该项检查已指派他人')
|
||||
}
|
||||
|
||||
|
@ -206,19 +275,66 @@
|
|||
}
|
||||
})
|
||||
},
|
||||
goReport(){
|
||||
goReport() {
|
||||
this.$u.toast('暂未开通')
|
||||
},
|
||||
upReport(){
|
||||
membersShow() {
|
||||
if (this.selects.length > 0) {
|
||||
this.showMembers = true
|
||||
} else {
|
||||
this.$u.toast('请选择检查项')
|
||||
}
|
||||
|
||||
},
|
||||
pickerConfirm(index) {
|
||||
var that = this
|
||||
let checker = that.members[index].member
|
||||
uni.showModal({
|
||||
title: '',
|
||||
content: '确认将' + that.selects.length + '个检查指派给' + that.members[index].member__name + '吗?',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$u.api.appointChecker({
|
||||
records: that.selects,
|
||||
checker: checker
|
||||
}).then(res => {
|
||||
that.$u.toast('成功')
|
||||
that.getRecords()
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
upReport() {
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提交',
|
||||
title: '',
|
||||
content: '确认提交吗?',
|
||||
success: function (res) {
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$u.api.upInspectDept(that.initData.id).then(res=>{
|
||||
this.initData = res.data
|
||||
}).catch(e=>{})
|
||||
that.$u.api.upInspectDept(that.initData.id).then(res => {
|
||||
that.initData = res.data
|
||||
that.$u.toast('提交成功')
|
||||
}).catch(e => {})
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
startCheck(){
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '',
|
||||
content: '确认开始检查吗?',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$u.api.startInspectDept(that.initData.id).then(res => {
|
||||
that.initData = res.data
|
||||
that.$u.toast('成功')
|
||||
}).catch(e => {})
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
|
@ -247,4 +363,10 @@
|
|||
color: #333;
|
||||
}
|
||||
}
|
||||
|
||||
.itemstate {
|
||||
color: $u-type-primary-dark;
|
||||
font-weight: bold;
|
||||
margin-right: 8rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -3,8 +3,10 @@
|
|||
<u-form :model="form" label-position="top" :label-style="labelStyle" ref="uForm" :rules="rules"
|
||||
:errorType="errorType">
|
||||
<u-form-item label="检查事项" v-if="form.item_">
|
||||
<view >类别:<span style="color:darkblue;font-weight: bold;">{{form.item_.type}}</span></view>
|
||||
<view>
|
||||
<view>类别:<span style="color:darkblue;font-weight: bold;">{{form.item_.type}}</span></view>
|
||||
<view>{{form.item_.sortnum}}.{{form.item_.name}}</view>
|
||||
</view>
|
||||
</u-form-item>
|
||||
<u-form-item label="取证要求" v-if="form.item_">
|
||||
<span>{{form.item_.require}}</span>
|
||||
|
@ -16,13 +18,11 @@
|
|||
<span v-if="form.note">{{form.note}}</span>
|
||||
</u-form-item>
|
||||
<u-form-item label="拍照取证">
|
||||
|
||||
</u-form-item>
|
||||
<view >
|
||||
<u-image
|
||||
@click="imgListPreview(index)"
|
||||
width="260rpx" height="260rpx" :src="item" v-for="(item, index) in fileList" v-bind:key="index" style="padding: 6rpx;"></u-image>
|
||||
</view>
|
||||
width="260rpx" height="260rpx" :src="item" v-for="(item, index) in fileList" v-bind:key="index" style="margin: 8rpx;"></u-image>
|
||||
</u-form-item>
|
||||
|
||||
</u-form>
|
||||
</view>
|
||||
</template>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
:errorType="errorType">
|
||||
<u-form-item label="检查事项" v-if="form.item_">
|
||||
<view>
|
||||
<view >类别:<span style="color:darkblue;font-weight: bold;">{{form.item_.type}}</span></view>
|
||||
<view>类别:<span style="color:darkblue;font-weight: bold;">{{form.item_.type}}</span></view>
|
||||
<view>{{form.item_.sortnum}}.{{form.item_.name}}</view>
|
||||
</view>
|
||||
</u-form-item>
|
||||
|
|
|
@ -15,9 +15,9 @@
|
|||
</u-form-item>
|
||||
</u-form>
|
||||
<!-- <button :style="[inputStyle]" class="getCaptcha">登录</button> -->
|
||||
<!-- <u-gap height="1" bg-color="#bbb"></u-gap> -->
|
||||
<!-- <u-gap height="0.5" bg-color="#bbb"></u-gap> -->
|
||||
<view style="margin-top: 16rpx;">
|
||||
<u-button @click="submit" type="warning" >登录</u-button>
|
||||
<u-button @click="submit" type="primary" >登录</u-button>
|
||||
</view>
|
||||
<view class="alternative">
|
||||
<navigator url="login_password" class="password" open-type="redirect">密码登录</navigator>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
</u-form-item>
|
||||
</u-form>
|
||||
<view style="margin-top: 16rpx;">
|
||||
<u-button @click="submit" type="warning" >登录</u-button>
|
||||
<u-button @click="submit" type="primary" >登录</u-button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
|
|
@ -83,5 +83,6 @@ page{
|
|||
}
|
||||
.user-box{
|
||||
background-color: #fff;
|
||||
padding-top:24rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<view class="wrap">
|
||||
<u-card v-for="(item, index) in myinspecttaskList" v-bind:key="index" :title="item.name" margin="6rpx"
|
||||
:border="false" :foot-border-top="false" border-radius="2rpx" :head-style="headstyle"
|
||||
<u-card v-for="(item, index) in myinspecttaskList" v-bind:key="index" :title="item.name" margin="12rpx"
|
||||
:border="false" :foot-border-top="false" border-radius="8rpx" :head-style="headstyle"
|
||||
@body-click="taskClick" :index="item.id">
|
||||
<view class="" slot="body">
|
||||
<view class="u-body-item-title">
|
||||
<span style="color:#2979FF;font-weight: bold;margin-right: 8rpx;">{{item.state}}</span>
|
||||
<span class="itemstate">{{item.state}}</span>
|
||||
{{item.name}}
|
||||
</view>
|
||||
<view class="u-body-item">
|
||||
|
@ -19,9 +19,9 @@
|
|||
</view>
|
||||
<view class="u-body-item">
|
||||
涉及单位:
|
||||
<span style="color:blue;">{{item.depts_count}}</span>家
|
||||
<span style="color:darkblue;">{{item.depts_count}}</span>家
|
||||
巡查组:
|
||||
<span style="color:blue;">{{item.members.length}}</span>人
|
||||
<span style="color:darkblue;">{{item.members.length}}</span>人
|
||||
</view>
|
||||
</view>
|
||||
</u-card>
|
||||
|
@ -73,5 +73,10 @@
|
|||
color: #333;
|
||||
}
|
||||
}
|
||||
.itemstate {
|
||||
color:$u-type-primary-dark;
|
||||
font-weight: bold;
|
||||
margin-right: 8rpx;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<template>
|
||||
<view class="wrap">
|
||||
<u-card :title="subtask.name" margin="12rpx" :border="false" :foot-border-top="false" border-radius="2rpx"
|
||||
<u-card :title="subtask.name" margin="12rpx" :border="false" :foot-border-top="false" border-radius="8rpx"
|
||||
:head-style="headstyle" padding="10">
|
||||
<view class="" slot="body">
|
||||
<view class="u-body-item-title">
|
||||
<span style="color:#2979FF;font-weight: bold;margin-right: 4rpx;">{{subtask.state}}</span>
|
||||
<span class="itemstate">{{subtask.state}}</span>
|
||||
{{subtask.name}}
|
||||
</view>
|
||||
<view class="u-body-item">
|
||||
|
@ -18,23 +18,23 @@
|
|||
</view>
|
||||
<view class="u-body-item">
|
||||
涉及单位:
|
||||
<span style="color:blue;">{{subtask.depts_count}}</span>家
|
||||
<span style="color:darkblue;">{{subtask.depts_count}}</span>家
|
||||
巡查组:
|
||||
<span style="color:blue;" v-if="subtask.members">{{subtask.members.length}}</span>人
|
||||
<span style="color:darkblue;" v-if="subtask.members">{{subtask.members.length}}</span>人
|
||||
</view>
|
||||
<view style="margin-top: 6rpx;">
|
||||
<u-gap height="1" bg-color="#bbb"></u-gap>
|
||||
<u-gap height="0.5" bg-color="#bbb"></u-gap>
|
||||
</view>
|
||||
<u-collapse-item title="巡查组组成" :open="true">
|
||||
<view>
|
||||
组长:
|
||||
<span v-for="(item, index) in subtask.members" v-bind:key="index" mode="plain"
|
||||
style="margin-left:8rpx;color: #00007f;" v-if="item.type=='组长'">{{item.member__name}}</span>
|
||||
style="margin-left:8rpx;color: darkblue;" v-if="item.type=='组长'">{{item.member__name}}</span>
|
||||
</view>
|
||||
<view>
|
||||
组员:
|
||||
<span v-for="(item, index) in subtask.members" v-bind:key="index" mode="plain"
|
||||
style="margin-left:8rpx;color: #00007f;" v-if="item.type!='组长'">{{item.member__name}}</span>
|
||||
style="margin-left:8rpx;color: darkblue;" v-if="item.type!='组长'">{{item.member__name}}</span>
|
||||
</view>
|
||||
</u-collapse-item>
|
||||
</view>
|
||||
|
@ -131,4 +131,9 @@
|
|||
color: #333;
|
||||
}
|
||||
}
|
||||
.itemstate {
|
||||
color:$u-type-primary-dark;
|
||||
font-weight: bold;
|
||||
margin-right: 8rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -37,9 +37,9 @@ const store = new Vuex.Store({
|
|||
// vuex_api: 'http://127.0.0.1:8000/api',
|
||||
// vuex_apifile: 'http://127.0.0.1:8000/api/file/',
|
||||
|
||||
vuex_host: 'http://testsearch.ctc.ac.cn',
|
||||
vuex_api: 'http://testsearch.ctc.ac.cn:8000/api',
|
||||
vuex_apifile: 'http://testsearch.ctc.ac.cn:8000/api/file/',
|
||||
vuex_host: 'https://testsearch.ctc.ac.cn',
|
||||
vuex_api: 'https://testsearch.ctc.ac.cn/api',
|
||||
vuex_apifile: 'https://testsearch.ctc.ac.cn/api/file/',
|
||||
|
||||
// 如果vuex_version无需保存到本地永久存储,无需lifeData.vuex_version方式
|
||||
// vuex_version: '1.0.1',
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 3.0.5 on 2021-04-26 03:28
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('quality', '0013_inspectitem_template'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='inspecttask',
|
||||
name='template',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='quality.InspectTemplate', verbose_name='使用模板'),
|
||||
),
|
||||
]
|
|
@ -40,6 +40,7 @@ class InspectTask(CommonAModel):
|
|||
start_date = models.DateField('巡查开始日期')
|
||||
end_date = models.DateField('巡查结束日期')
|
||||
state = models.CharField('任务状态', max_length=50, choices=state_choices, default='待发布')
|
||||
template = models.ForeignKey(InspectTemplate, on_delete=models.CASCADE, verbose_name='使用模板', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '巡查任务'
|
||||
|
|
|
@ -36,10 +36,10 @@ class InspectTaskSerializer(serializers.ModelSerializer):
|
|||
fields = '__all__'
|
||||
|
||||
def get_dept_count(self, obj):
|
||||
return InspectDept.objects.filter(subtask__inspecttask=obj, is_deleted=True).count()
|
||||
return InspectDept.objects.filter(subtask__inspecttask=obj, is_deleted=False).count()
|
||||
|
||||
def get_subtask_count(self, obj):
|
||||
return SubInspectTask.objects.filter(inspecttask=obj, is_deleted=True).count()
|
||||
return SubInspectTask.objects.filter(inspecttask=obj, is_deleted=False).count()
|
||||
|
||||
class InspectTaskSimpleSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
@ -99,7 +99,7 @@ class InspectDeptSerializer(serializers.ModelSerializer):
|
|||
leader = serializers.SerializerMethodField()
|
||||
class Meta:
|
||||
model = InspectDept
|
||||
fields = ('dept', 'dept__name', 'state', 'subtask', 'id', 'note', 'leader')
|
||||
fields = ('dept', 'dept__name', 'state', 'subtask', 'id', 'note', 'leader', 'start_date')
|
||||
|
||||
@staticmethod
|
||||
def setup_eager_loading(queryset):
|
||||
|
|
|
@ -79,7 +79,7 @@ class SubtaskViewSet(PageOrNot, CreateUpdateCustomMixin, OptimizationMixin, Mode
|
|||
'put': 'inspecttask_update', 'delete': 'inspecttask_delete'}
|
||||
queryset = SubInspectTask.objects.all()
|
||||
serializer_class = SubtaskListSerializer
|
||||
filterset_fields = ['inspecttask']
|
||||
filterset_fields = ['inspecttask', 'state']
|
||||
ordering = ['-create_time']
|
||||
|
||||
def get_queryset(self):
|
||||
|
@ -183,6 +183,21 @@ class InspectDeptViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
|
|||
perms_map = {'get':'*'}
|
||||
queryset = InspectDept.objects.all()
|
||||
serializer_class = InspectDeptSerializer
|
||||
|
||||
@action(methods=['put'], detail=True, perms_map = {'put':'inspectrecord_update'},
|
||||
permission_classes=[IsAdminUser|IsSubInspectTaskLeader])
|
||||
def start(self, request, *args, **kwargs):
|
||||
"""
|
||||
对该组织开始检查
|
||||
"""
|
||||
obj = self.get_object()
|
||||
if obj.state == '待检查':
|
||||
obj.state = '检查中'
|
||||
obj.start_date = timezone.now()
|
||||
obj.save()
|
||||
return Response(InspectDeptSerializer(instance=obj).data, status=status.HTTP_200_OK)
|
||||
return Response('状态错误', status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@action(methods=['put'], detail=True, perms_map = {'put':'inspectrecord_update'},
|
||||
permission_classes=[IsAdminUser|IsSubInspectTaskLeader])
|
||||
def up(self, request, *args, **kwargs):
|
||||
|
@ -244,13 +259,9 @@ class InspectRecordViewSet(PageOrNot, ModelViewSet):
|
|||
提交单条记录检查结果
|
||||
"""
|
||||
instance = self.get_object()
|
||||
if instance.subtask.state == '执行中':
|
||||
serializer = InspectRecordCheckSerializer(instance, data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
serializer.save(checker=request.user, checked=True, check_time=timezone.now())
|
||||
# 修改状态
|
||||
insd = InspectDept.objects.get(subtask=instance.subtask, dept=instance.dept)
|
||||
if insd.state == '待检查':
|
||||
insd.state = '检查中'
|
||||
insd.start_date = timezone.now()
|
||||
insd.save()
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
return Response('任务状态错误', status=status.HTTP_400_BAD_REQUEST)
|
|
@ -0,0 +1,28 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCqBDfLPIyYIee9
|
||||
M7LjCzdRRP5PHezjaks360V5AnK+oJO7HMgdH7z4QQG8AjKNbLOSFmVaH0R5YTJ3
|
||||
XmOGgrdnmb+mCUx3G5wdO9/UXpP4ZA0Gx0S7nqmNPWR03wENoQQjcfMpkBFxMlwC
|
||||
opS/EeBmQXaKIcg6B4hw3JLObdlr3f1eHccPZchH8Bwho4UjFO7rYVX8jfshV5iC
|
||||
99KV650jv9uQ3OKno3moDPk9JRnozBpyUwRJ9SFFCZ1lOO625M+dPG13hZcGxMSy
|
||||
T9wXzcij2luRHXxTSky952ciN3nTomKY00WcOCj0ZCGdHQV/6CzPALdL64TtN5uq
|
||||
FLG0IoLxAgMBAAECggEAfZ6GNwVzAEk098gGKdm0srieioia6mE0WInemA2mCJGO
|
||||
9hbLCTHVJzyo8mhRP8uMVqlzk4Y8ys51Qlucf9t/de3U+/Is7GibDcKanEiRXltW
|
||||
gKalc1dFAdXVrsDC/3X0H9hnCVOof5HtCAlmjFLCEevWkTNqxO2h83oWgq4JkreL
|
||||
NxyGmRLQAedqaLGcXbPemFSorsNcdQnoUOtJ/7GPl1MjMzt4dx1ysNlV8blNp4VL
|
||||
BCteRZRdNz6F5paMcbtDKFDLgOdspJofRSsyMCLGktSUw9++F2PM2uavDAw84Pdg
|
||||
5BtKRvd1P9Esn+TXBtPy1rQoBkBbGKt61Xev0gojvQKBgQDel2xDOVXJkYPIp4V7
|
||||
lVwxZYyCzei5YDKTiRGIQu2QS6//r3CSpU6+NTn6RRNTPWvp6PeQSOiMd1gxqgdb
|
||||
88WXPaIRCb4XDoADyRsB5gDCapetuVJCyUmgw5amkdJ5ktr1ql2dNJokodop40vx
|
||||
WWNXe0ojEcM2pM7PeMzypUsl3wKBgQDDiLfhuxprhUPHx461RUrA2jTZFdROxgsi
|
||||
N9NGO3qxuOc/p8MnePikuXs8s7c/x3LZVaVDquy6zoIy6KF+VS4tT36YlT7GyRyv
|
||||
ndH/t9SiKzks9zBrI3uPlDhkIyctnhVY+2aNM/5cglblOM1FzilijbreNSzh3Lcg
|
||||
7xp0CQVRLwKBgDiZGBYfxghyz6d9sRszZzXINGouITbBlxqch7C2E+HU3POOkHk5
|
||||
P0RuFEfmuHs56u6XJhux7i+JSQuXyDdBTMSgD011xLfoH/TWdd+NtDO7FsY9kQUa
|
||||
WXZfRTclbPcsuDAvGY6XiXo3DVoJSY4cxH3CA5/XLGQAk/V9Kd+o1+rRAoGBAKvz
|
||||
sklnQe+mDRpGCuCsY/W+rtTtVnxDuwzHbRuJOPfLdElNXdh7kKVDm/Wg0Zjb68rm
|
||||
f2RHjtEkw+jDHSm8/NPJ4bmLHd6wg3KI5mDsJ6jJPAmoA8NkO8fi/8hIBa8fIwTS
|
||||
aLfqLljqIkKINjSZ/Vj27It21dZ2Q/FJc8jxGeTvAoGBALA91l1PnTsUUd3lHj0V
|
||||
H0uUZD8qIan3WjzKbuJUnvYSI2GgKMPiSX5r4E18+7xgSG2lHRIEN5+FA6T/v9n/
|
||||
HbP6e4FGhAaR7KrcxId55pfWPksYPHCAOZFSiKQwVkPy1sJTMKqDZULROQUwjV69
|
||||
MjzYAERmsYQA2CkkSLCFhQU2
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,128 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIGTDCCBTSgAwIBAgIQPS0W9BEZigBFmUThrWpjwTANBgkqhkiG9w0BAQsFADCB
|
||||
jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
||||
A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
|
||||
Ey5TZWN0aWdvIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB
|
||||
MB4XDTIxMDQyNTAwMDAwMFoXDTIyMDQyNTIzNTk1OVowHzEdMBsGA1UEAxMUdGVz
|
||||
dHNlYXJjaC5jdGMuYWMuY24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
||||
AQCqBDfLPIyYIee9M7LjCzdRRP5PHezjaks360V5AnK+oJO7HMgdH7z4QQG8AjKN
|
||||
bLOSFmVaH0R5YTJ3XmOGgrdnmb+mCUx3G5wdO9/UXpP4ZA0Gx0S7nqmNPWR03wEN
|
||||
oQQjcfMpkBFxMlwCopS/EeBmQXaKIcg6B4hw3JLObdlr3f1eHccPZchH8Bwho4Uj
|
||||
FO7rYVX8jfshV5iC99KV650jv9uQ3OKno3moDPk9JRnozBpyUwRJ9SFFCZ1lOO62
|
||||
5M+dPG13hZcGxMSyT9wXzcij2luRHXxTSky952ciN3nTomKY00WcOCj0ZCGdHQV/
|
||||
6CzPALdL64TtN5uqFLG0IoLxAgMBAAGjggMRMIIDDTAfBgNVHSMEGDAWgBSNjF7E
|
||||
VK2K4Xfpm/mbBeG4AY1h4TAdBgNVHQ4EFgQUr4UA+Awov3oaqRuAMgP3UbKkxF0w
|
||||
DgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUH
|
||||
AwEGCCsGAQUFBwMCMEkGA1UdIARCMEAwNAYLKwYBBAGyMQECAgcwJTAjBggrBgEF
|
||||
BQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQIBMIGEBggrBgEF
|
||||
BQcBAQR4MHYwTwYIKwYBBQUHMAKGQ2h0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2Vj
|
||||
dGlnb1JTQURvbWFpblZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5jcnQwIwYIKwYB
|
||||
BQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMDkGA1UdEQQyMDCCFHRlc3Rz
|
||||
ZWFyY2guY3RjLmFjLmNughh3d3cudGVzdHNlYXJjaC5jdGMuYWMuY24wggF/Bgor
|
||||
BgEEAdZ5AgQCBIIBbwSCAWsBaQB3AEalVet1+pEgMLWiiWn0830RLEF0vv1JuIWr
|
||||
8vxw/m1HAAABeQalozkAAAQDAEgwRgIhAISF+Qpq5bQHPbWpjW8XGdvm6sxf4HKu
|
||||
vOrk4NTSX1zBAiEAzzOX6eWf6b8eyBWUPQpaEcEr/wYWLjj+84/FMhO1UnEAdQDf
|
||||
pV6raIJPH2yt7rhfTj5a6s2iEqRqXo47EsAgRFwqcwAAAXkGpaLUAAAEAwBGMEQC
|
||||
IE+Nd7R7KnkKQwESXlUM8CMoU2ubZRKleyGodJpVK8O8AiAqPBhS1AXPZ/ZIrCg4
|
||||
Fg8pqoLMcxxRmsfAewI3OpbUWAB3AFWB1MIWkDYBSuoLm1c8U/DA5Dh4cCUIFy+j
|
||||
qh0HE9MMAAABeQalos0AAAQDAEgwRgIhAOkGSJnkhA9GxnVL7h85Q59b84cJOjtj
|
||||
r3ThnHypBamEAiEA096UyGiIKNIVChALqjv8lQh1rywKba0UiI0lLrh7DHwwDQYJ
|
||||
KoZIhvcNAQELBQADggEBAH8N8GxC+04Pt3XJZD/UoUWIcIJ2uHOhtVVe/pebctMk
|
||||
8VjD1BF4uKJOGpGRQ80cYB/DWScJL6x0TyTvLyTfeR26tndWDZvNk+L3GokwptRp
|
||||
XCgNmSUHOhS7wnKCXKqRZZ0QkR32HpNknv36qn9fhe/6wcnUyQeYYCc9AUKyGoKY
|
||||
EwnS0sL0HLLIDGiewXtR/mSeLt7lbx7+kffxIvRvQvjBV/m+4bHYJHLC/RvwTrWW
|
||||
+fZcAg595PypE6mZrV9Hb9Vuh5mHRUioPYRT+pEBiih4qzZTHn7c4rQC1c8URuWm
|
||||
8Ima8Y+4fi3Iwly+JHNv2LaYQlNdtM8iWoIWfwlTzFo=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
|
||||
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
|
||||
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
|
||||
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx
|
||||
MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV
|
||||
BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE
|
||||
ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g
|
||||
VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
||||
AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N
|
||||
TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj
|
||||
eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E
|
||||
oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk
|
||||
Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY
|
||||
uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j
|
||||
BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb
|
||||
+ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
|
||||
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw
|
||||
CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0
|
||||
LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr
|
||||
BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv
|
||||
bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov
|
||||
L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H
|
||||
ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH
|
||||
7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi
|
||||
H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx
|
||||
RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv
|
||||
xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38
|
||||
sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL
|
||||
l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq
|
||||
6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY
|
||||
LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5
|
||||
yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K
|
||||
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7
|
||||
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
|
||||
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
|
||||
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
|
||||
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
|
||||
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
|
||||
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0
|
||||
aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI
|
||||
s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG
|
||||
vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ
|
||||
Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb
|
||||
IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0
|
||||
tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E
|
||||
xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV
|
||||
icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5
|
||||
D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ
|
||||
WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ
|
||||
5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG
|
||||
KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg
|
||||
EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID
|
||||
ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG
|
||||
BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t
|
||||
L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
|
||||
BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA
|
||||
A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+
|
||||
rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+
|
||||
/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA
|
||||
CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F
|
||||
zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA
|
||||
vGp4z7h/jnZymQyd/teRCBaho1+V
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
|
||||
MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
|
||||
GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj
|
||||
YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL
|
||||
MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
|
||||
BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM
|
||||
GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
||||
ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua
|
||||
BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe
|
||||
3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4
|
||||
YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR
|
||||
rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm
|
||||
ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU
|
||||
oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
|
||||
MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
|
||||
QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t
|
||||
b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF
|
||||
AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q
|
||||
GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
||||
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2
|
||||
G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi
|
||||
l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
|
||||
smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
||||
-----END CERTIFICATE-----
|
Loading…
Reference in New Issue