新增ssl

This commit is contained in:
caoqianming 2021-04-26 15:20:04 +08:00
parent ca96758438
commit 429c15539c
4 changed files with 311 additions and 84 deletions

View File

@ -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>

View File

@ -1,7 +1,7 @@
<template>
<view class="wrap">
<u-card :title="initData.dept__name" margin="12rpx" :border="false" :foot-border-top="false" border-radius="8rpx"
: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 class="itemstate">{{initData.state}}</span>
@ -10,8 +10,10 @@
<view class="" slot="foot">
<view style="flex:true;text-align: right;">
<u-checkbox @change="selfChange" v-model="is_self">只看我的</u-checkbox>
<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>
<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,7 +23,8 @@
</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"
<!-- <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">
@ -38,37 +41,42 @@
</view>
</view>
</u-card> -->
<view v-if="currentIndex==0" style="text-align: right;">
<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>
<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="1" bg-color="#bbb"></u-gap>
<u-gap height="1" bg-color="#bbb"></u-gap>
</view>
<view v-for="(item, index) in records" v-bind:key="index" v-if="getShow(item.checked)"
style="padding: 12rpx;" @click="clickRow2(item)">
<view class="u-body-item-title">
<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>
<span v-else-if="item.result=='未发现'" style="color:green">{{item.result}}</span>
<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>
</view>
<view style="margin-top:6rpx">
<u-gap height="1" bg-color="#bbb"></u-gap>
</view>
</view>
<!-- <u-collapse ref="mycollapse">
<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">
<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>
<span v-else-if="item.result=='未发现'" style="color:green">{{item.result}}</span>
<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>
</view>
<view style="margin-top:6rpx">
<u-gap height="1" bg-color="#bbb"></u-gap>
</view>
</view>
</checkbox-group>
<!-- <u-collapse ref="mycollapse">
<u-collapse-item :title="title1" :open="true">
<u-cell-group :border="false">
<u-cell-item :title="item.item_.name" v-for="(item, index) in records1" v-bind:key="index"
@ -94,7 +102,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>
<u-picker mode="selector" v-model="showMembers" :default-selector="[0]" :range="members"
range-key="member__name" @confirm="pickerConfirm"></u-picker>
</view>
</template>
@ -115,6 +124,7 @@
name: '已检查'
}
],
list1:['未检查', '已检查'],
// title1:"未检查(0)",
// title2:"已检查(0)",
records: [],
@ -123,24 +133,24 @@
// records2:[],
is_self: false,
showNo: false,
mutiSelect:false,
showMembers:false,
members:[],
selects:[]
mutiSelect: false,
showMembers: false,
members: [],
selects: []
}
},
onLoad(options) {
this.initData = options;
let pages = getCurrentPages();
let prePage = pages[pages.length - 2];
if(prePage && prePage.subtask){
if (prePage && prePage.subtask) {
this.members = prePage.subtask.members
}else{
this.$u.api.getSubinspectTask(this.initData.subtask).then(res=>{
} else {
this.$u.api.getSubinspectTask(this.initData.subtask).then(res => {
this.members = res.data.members
})
}
},
onShow() {
this.getSubtaskDept();
@ -150,12 +160,12 @@
getSubtaskDept() {
this.$u.api.getSubtaskDept(this.initData.id).then(res => {
this.initData = res.data
if(this.initData.state == '已提交'){
if (this.initData.state == '已提交') {
this.sectionChange(1)
}
})
},
getRecords(){
getRecords() {
this.$u.api.getInspectRecords({
subtask: this.initData.subtask,
dept: this.initData.dept,
@ -163,6 +173,9 @@
}).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_)
@ -183,11 +196,22 @@
}
},
sectionChange(index) {
console.log(index)
this.currentIndex = index;
},
mutiSelectChange(){
if(this.mutiSelect){
for(var i=0;i<this.records.length;i++){
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
}
}
@ -222,17 +246,18 @@
// uni.navigateTo({
// url:'/pages/inspectrecord/recorddo'
// })
if((item.checker!= this.vuex_user.id && item.checker == null) || this.initData.leader==this.vuex_user.id || item.checker == 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('该项检查已指派他人')
}
},
clickRow2(item) {
// uni.navigateTo({
@ -245,57 +270,53 @@
}
})
},
goReport(){
goReport() {
this.$u.toast('暂未开通')
},
membersShow(){
let selects= []
for(var i=0;i<this.records.length;i++){
if(this.records[i].selected){
selects.push(this.records[i].id)
}
}
if(selects.length>0){
this.showMembers=true
this.selects = selects
}else{
membersShow() {
if (this.selects.length > 0) {
this.showMembers = true
} else {
this.$u.toast('请选择检查项')
}
},
pickerConfirm(index){
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=>{
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) {
}
}
} else if (res.cancel) {
}
}
});
},
upReport(){
upReport() {
let that = this
uni.showModal({
title: '提交',
content: '确认提交吗?',
success: function (res) {
if (res.confirm) {
that.$u.api.upInspectDept(that.initData.id).then(res=>{
title: '提交',
content: '确认提交吗?',
success: function(res) {
if (res.confirm) {
that.$u.api.upInspectDept(that.initData.id).then(res => {
that.initData = res.data
that.$u.toast('提交成功')
}).catch(e=>{})
} else if (res.cancel) {
}
}
}).catch(e => {})
} else if (res.cancel) {
}
}
});
}
}
@ -320,8 +341,9 @@
color: #333;
}
}
.itemstate {
color:$u-type-primary-dark;
color: $u-type-primary-dark;
font-weight: bold;
margin-right: 8rpx;
}

View File

@ -0,0 +1,36 @@
-----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-----

View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDyReXX5B8YKXeC
9VyTrHzMMA5cnKOBw5LVIstiA4viQRMhxqUMlMEyn4bwRMYIsUTdhlkxM4wpIN26
/OoPvS/fgjRrBWwd7btdmm3s55dCvKlenvIMnLh6WOc+NcMOrg3UJreNwaEBCJQB
D1Cu1ok4Cmrv60mP13UroyPMb1NdVunoHm49/jGV8NIW+C3L5BZ30+aZ3qmjHu7T
X1dq/Ur3uiaRuwNos1TBy4xfLUv3s8vV3Halngi3OXqUKlQuvnWtzhBx4ByYKnVV
kSm4xVnEtdhTkZs4vGicB0xk9d/rBrYgwB6lPk2HO6wKMu9v/oZD83s2p1eBYu/R
Qgou6WaDAgMBAAECggEBAOeeeZnH5w5TfoV+C87Gxdz0SJazzgHeNv97L1P6Lf7V
1fOhlOONR5MdPoVwSp++0iazLYxDSsl7OWBuMVtwtFcLhQ+X9IA8areXT2aBFnRg
J9BlRuVV42xcmF86SMw9DM15Ylys9D8ns0+8E5fDVRZ1pzzOBdr10ngwlKX6/Ikr
FWR3wstzzV5jYM2nXtJR71pNi3BLl95S8gxNllm6ejpRRsK45uOhngV501YpTh9J
0L6I/nvshiGeku3PSuiWG62MKB3jLhOtB4FakdpuhbXrms9wuT7sal/Ykc0CZDLN
ty+1rjHJ6WtvTjQIYY5cczrZIQR9wXYCCMwPEbuobRECgYEA/EUfB+jOOQPk/Ohg
zNktR8+WMdtT7hFl2j9X0YAuwxZanUJMOqIMq5g98fCWqJr8YTkqLHQcFYLO8Nqp
xATlnh3Fw5YS/iWUvRD9qP+WeKfuVCgTf+STV0fZ8xXUMQSHsHPy5jP85YQgSQao
qpOZlq0EgBudnJcza33j8/wvQbsCgYEA9drvx0Ti7Kz+WT29src6nEkgZi+dNEhM
+qTr/nP9jiHwqXZEJlxPZ4jktN8mxSAXM4h+LsPqnQVeXSu2qk4qjuzs34hqaJtO
6TX+UJE894JjtkAL4i9s/4NsGNLWtfW/w0UO1OvIM8kAw8YhmEduhNhXuxXxoLeY
sjKCcIRxndkCgYAV7+DR7EG6nYcVIxP/3EbevsN91GfJBQRJZUa6th3a4x/AGxrL
4nmdlmCUoGpJgSi/P5xWP0aN7FEYirtGi3J4PHiNGIjQRu5XPpoATzGDjn7gHJgN
gA/8AAiI5fYMySsPghW2RQER6FpyXzzdkHZDrwn8JeqfylozV8Ax4FUvrwKBgQCk
1w9vlwNjVrYO1bOr8OhOQ0WC3ifUFynt38gPSmvV8XGv3YjiA4CF1aYqk3gmMVb9
CWY5KsjSUPgtFhMaauBkBfzn/0oBKyikerwx/r9W4EjEuHp/Q/cb9lzy4+JsDAJw
BYxlPFV2Sy3FFcIOnM5AKeHgoVzpuk+aIv2MPXEEOQKBgBhEXdhCLzGdoM4qNZBe
2eIJ/zkEi9BzTG1skKLBGc5VRnJa7hoVYA/+XlH/dmi6NuMz/AO5RT+V39UR/SrF
CPeyoQyKHhuGp/G4Intd3rbn9ggwmNh4qcFt76rVFdf/AjMJQt/ZyCaR9A0kOjC4
hvqvO5CIGXBsljVPT8MEsNJY
-----END PRIVATE KEY-----