Initial Commit

This commit is contained in:
caoqianming 2019-04-11 15:37:20 +08:00
commit 303ad947b6
351 changed files with 15712 additions and 0 deletions

14
.gitignore vendored Normal file
View File

@ -0,0 +1,14 @@
# Windows
[Dd]esktop.ini
Thumbs.db
$RECYCLE.BIN/
# macOS
.DS_Store
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
# Node.js
node_modules/

102
app.js Normal file
View File

@ -0,0 +1,102 @@
//app.js
App({
onLaunch: function () {
// 展示本地存储能力
//var logs = wx.getStorageSync('logs') || []
//logs.unshift(Date.now())
//wx.setStorageSync('logs', logs)
// wx.checkSession({
// success() {
// //session_key 未过期,并且在本生命周期一直有效
// console.log(wx.getStorageSync("sessionid"))
// },
// fail() {
// // session_key 已经失效,需要重新执行登录流程
// // 登录
// }
// })
this.mplogin();
},
mplogin: function () {
var that = this;
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
wx.request({
url: that.globalData.serverUrl + 'mplogin',
data: {
code: res.code
},
method: 'POST',
header: {
'content-type': 'application/json'
},
success: function (res) {
if (res.data.code == 1) {
//console.log(res.header["Set-Cookie"])
//console.log(res)
wx.setStorageSync('userid', res.data.userid)
wx.setStorageSync('username', res.data.username)
wx.setStorageSync('sessionid', res.header["Set-Cookie"])
wx.setStorageSync('mpopenid', res.data.mpopenid)
if (that.callback) { //这个函数名字和你定义的一样即可
that.callback() //执行定义的回调函数
}
//获取是否是安全员
wx.request({
url: that.globalData.serverUrl + 'api/user?a=checkaqy',
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
data: {},
success: res => {
if (res.data.code == 1) {
//console.log(res.data)
that.globalData.isaqy = 1
}
console.log(that.globalData.isaqy)
}
});
// //获取隐患待办数目
// wx.request({
// url: that.globalData.serverUrl + 'troublehandle?a=todonum',
// header: {
// 'content-type': 'application/json', // 默认值
// 'Cookie': wx.getStorageSync("sessionid"),
// },
// data: {},
// success: res => {
// if (res.statusCode === 200) {
// //console.log(res.data)
// that.globalData.yhtodonum = res.data.todonum
// if (that.globalData.yhtodonum > 0) {
// wx.setTabBarBadge({
// index: 1,
// text: '新'
// })
// }
// }
// }
// });
} else {
wx.setStorageSync('mpopenid', res.data.mpopenid)
wx.reLaunch({
url: '/pages/bind/binduser?mpopenid=' + res.data.mpopenid,
})
}
},
})
}
})
},
globalData: {
userInfo: null,
//serverUrl: 'https://safeyun.ctcshe.com/',
serverUrl:'http://127.0.0.1:8000/',
//serverUrl: 'http://192.168.0.102:8000/',
//serverUrl:'http://10.7.100.250:8000/',
isaqy: 0
},
})

69
app.json Normal file
View File

@ -0,0 +1,69 @@
{
"pages": [
"pages/main/main",
"pages/index/index",
"pages/logs/logs",
"pages/trouble/trouble",
"pages/train/train",
"pages/drill/drill",
"pages/trouble/addtrouble",
"pages/trouble/troubledetail",
"pages/trouble/addtroublezg",
"pages/trouble/addtroublezp",
"pages/parttree/index",
"pages/todo/todo",
"pages/trouble/troubletodo",
"pages/trouble/accesstrouble",
"pages/bind/binduser",
"pages/observe/addobserve",
"pages/observe/observe",
"pages/observe/observedetail",
"pages/miss/miss",
"pages/miss/missdetail",
"pages/miss/addmiss",
"pages/user/userdetail",
"pages/socert/socert",
"pages/socert/socertdetail",
"pages/suggest/suggest",
"pages/suggest/add",
"pages/suggest/detail",
"pages/notice/notice",
"pages/notice/detail",
"pages/public/public",
"pages/public/detail",
"pages/operation/operation",
"pages/operation/operationcheck",
"pages/operation/operationdetail",
"pages/footer/footer",
"pages/userSelect/userSelect",
"components/footer/footer",
"pages/operation/operationadd",
"pages/train/add"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "安全预警lite",
"navigationBarTextStyle": "black"
},
"tabBar": {
"color": "#7A7E83",
"selectedColor": "#3cc51f",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [
{
"pagePath": "pages/main/main",
"text": "主页",
"iconPath": "image/home.png",
"selectedIconPath": "image/homec.png"
},
{
"pagePath": "pages/index/index",
"text": "个人中心",
"iconPath": "image/me.png",
"selectedIconPath": "image/mec.png"
}
]
}
}

36
app.wxss Normal file
View File

@ -0,0 +1,36 @@
/**app.wxss**/
@import 'weui.wxss';
@import "/wxParse/wxParse.wxss";
page{
background-color: #F8F8F8;
font-size: 16px;
font-family: -apple-system-font,Helvetica Neue,Helvetica,sans-serif;
}
.page__hd {
padding: 40px;
}
.page__bd {
padding-bottom: 40px;
}
.page__bd_spacing {
padding-left: 15px;
padding-right: 15px;
}
.page__ft{
padding-bottom: 10px;
text-align: center;
}
.page__title {
text-align: left;
font-size: 20px;
font-weight: 400;
}
.page__desc {
margin-top: 5px;
color: #888888;
text-align: left;
font-size: 14px;
}

View File

@ -0,0 +1,33 @@
Component({
/**
* 组件的属性列表
*/
properties: {
list: { type: Array }
},
/**
* 组件的初始数据
*/
data: {},
/**
* 组件的方法列表
*/
methods: {
delete(res) {
console.log(res)
let index = res.currentTarget.id
let list = this.data.list
list.splice(index, 1)
this.setData({ list: list })
this.triggerEvent(
"delete",
{
selectList: list })
}, /**
* 点击确定按钮
*/
confirm() {
this.triggerEvent("submit", "")
}
}
})

View File

@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@ -0,0 +1,6 @@
<view class='container'>
<view class='scroll-wrapper'>
<scroll-view scroll-x style='scroll'>
<text id='{{index}}' class='text' wx:for='{{list}}' wx:key='{{index}}' bindtap='delete'>{{item.name}}</text> </scroll-view>
</view>
<text class='btn' bindtap='confirm'>确定</text> </view>

View File

@ -0,0 +1,39 @@
.container {
width: 100%;
height: 100rpx;
display: flex;
flex-direction: row;
padding: 20rpx;
box-sizing: border-box;
background-color: #fff;
align-items: center;
overflow-x: hidden;
white-space: nowrap;
border-top: 2rpx solid rgba(7, 17, 27, 0.1);
}
.scroll-wrapper {
flex: 1;
overflow-x: hidden;
white-space: nowrap;
}
.scroll {
width: 100%;
}
.text {
font-size: 32rpx;
color: #333;
padding: 40rpx 20rpx;
margin-right: 10rpx;
background-color: #f5f5f5;
}
.btn {
padding: 10rpx 20rpx;
background-color: rgb(26, 173, 25);
border-radius: 10rpx;
font-size: 32rpx;
color: #fff;
}

View File

@ -0,0 +1,242 @@
// components/path-view/index.js
import toTree from './toTree';
Component({
properties: {
value: {
type: Array,
value: [],
observer() {
this.initView();
}
},
// 非树形数据仅在value无传参时生效
unnormalizedValue: {
type: Array,
value: [],
observer() {
this.initView();
}
},
fatherKey: {
type: String,
value: 'pid'
},
selfKey: {
type: String,
value: 'id'
},
rootValue: {
type: null,
value: null
},
pathMode: {
type: String,
value: 'mode1'
},
firstFloorTxt: {
type: String,
value: '顶级'
},
btnTxt: {
type: String,
value: '选择'
},
contentKey: {
type: String,
value: 'name'
},
// 保持位置
// 如果开启,数据动态更新后,会保持和更新前父元素对应的界面一致
// 这里是通过记录下更新前的父元素的唯一标识符id或是selfKey中设定的键对应的值在更新后找回显示出来
// 所以就算更新后路径变了(父元素本来在第四层,变成了第二层之类),仍然能显示父元素的相应界面
keepLoc: {
type: Boolean,
value: false
}
},
data: {
outValue: [],
currentPath: [],
// 判断当前是否已正在执行修改路径的方法
isChange: false,
// 映射value值存放树形数据
normalValue: [],
currentFatherId: null
},
methods: {
initView() {
if (this.properties.keepLoc) {
if (this.data.outValue.length > 0) {
// 记录下当前界面元素的父节点id
let fatherId = this.properties.fatherKey;
this.setData({
currentFatherId: this.data.outValue[0][fatherId] || null
});
}
}
// 优先使用value
if (this.properties.value.length > 0) {
this.setData({
normalValue: this.properties.value
});
} else {
// 将unnormalizedValue标准化
this.setData({
normalValue: this.normalizeValue()
});
}
if (this.properties.keepLoc && this.data.currentFatherId !== null) {
// 得到父元素的位置
let fatherNodeLocation = this.searchLocById(this.data.currentFatherId);
// 父元素的位置即是我们希望得到的当前路径
let currentPath = fatherNodeLocation;
this.switchPath(currentPath);
} else {
// 设置初始的输出值
this.setData({
outValue: this.data.normalValue,
currentPath: []
});
}
},
tapItem(e) {
// 如果正在执行修改路径的方法
if (this.data.isChange) {
return;
}
this.setData({
isChange: true
});
// 获取当前点击的索引
const currentIndex = e.currentTarget.dataset.index;
const currentText = e.currentTarget.dataset.text;
// 如果当前点击的标签还有下一级,就将路径改变
if (this.data.outValue[currentIndex].children) {
// 添加索引如路径
this.setData({
currentPath: [
...this.data.currentPath,
{ text: currentText, index: currentIndex }
]
});
this.selPath();
}
this.setData({
isChange: false
});
},
// 选择路径
// pathsIndex 是 paths 的索引
selPath(pathsIndex = this.data.currentPath.length - 1) {
// 判断是否在第一级
if (this.data.currentPath.length === 0) {
return;
}
// 根据路径修改 outValue
let tmpValue = this.data.normalValue;
// 如果 pathsIndex 是 -1 就应该要回到第一级
if (pathsIndex === -1) {
this.setData({
currentPath: [],
outValue: tmpValue
});
return;
}
for (let i = 0; i <= pathsIndex; i++) {
let item = this.data.currentPath[i].index;
tmpValue = tmpValue[item]['children'];
}
// 更新 outValue , currentPath
let endIndex = pathsIndex + 1;
this.setData({
outValue: tmpValue,
currentPath: this.data.currentPath.slice(0, endIndex)
});
},
toPath(e) {
// 如果正在执行修改路径的方法
if (this.data.isChange) {
return;
}
this.setData({
isChange: true
});
// 获取当前点击的索引
const index =
e.currentTarget.dataset.index != undefined
? e.currentTarget.dataset.index
: this.data.currentPath.length - 1;
this.selPath(index - 1);
this.setData({
isChange: false
});
},
tapBtn(e) {
this.triggerEvent('tapBtn', e.currentTarget.dataset.item);
},
// 将非标准值标准化
normalizeValue() {
return toTree({
value: this.properties.unnormalizedValue,
fatherKey: this.properties.fatherKey,
selfKey: this.properties.selfKey,
rootValue:
this.properties.rootValue === null
? undefined
: this.properties.rootValue
});
},
// 通过唯一标识符找到元素的所在位置
// 这里特意用了loclocation表示位置而不是path二者的区别是loc还包括了元素自身而path不包括元素自身
// 如树形数据[{id:1,name:'1'}],id:1的位置是[1],而它的路径是[]
searchLocById(id) {
if (id == null) {
return null;
}
let tree = JSON.parse(JSON.stringify(this.data.normalValue));
for (let i = 0; i < tree.length; i++) {
tree[i].__location = [i];
if (id === tree[i][this.properties.selfKey]) {
return tree[i].__location;
}
}
var stark = [];
stark = stark.concat(tree);
while (stark.length) {
var temp = stark.shift();
if (temp.children) {
for (let j = 0; j < temp.children.length; j++) {
temp.children[j].__location = [...temp.__location, j];
if (id === temp.children[j][this.properties.selfKey]) {
return temp.children[j].__location;
}
}
// 当前节点有子节点时,将子节点放到当前的栈的前面
stark = temp.children.concat(stark);
}
}
// 如果找不到对应id的位置
return null;
},
// 直接跳转到指定路径
switchPath(pathArr = []) {
let tmpValue = JSON.parse(JSON.stringify(this.data.normalValue));
let currentPath = [];
for (let i = 0; i < pathArr.length; i++) {
let index = pathArr[i];
let text = tmpValue[index][this.properties.contentKey];
tmpValue = tmpValue[index]['children'];
currentPath.push({
text,
index
});
}
// 更新 outValue , currentPath
this.setData({
outValue: tmpValue,
currentPath
});
}
}
});

View File

@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@ -0,0 +1,45 @@
<!--components/path-view/index.wxml-->
<view>
<block wx:if="{{pathMode === 'mode1'}}">
<view class="path">
<view class="btn"
bindtap="toPath">返回上级</view>
<view class="btn"
data-index="{{0}}"
bindtap="toPath">{{firstFloorTxt}}</view>
<view class="btn"
bindtap="toPath"
data-index="{{index+1}}"
wx:key="{{index}}"
wx:for="{{currentPath}}">{{item.text}}</view>
</view>
</block>
<block wx:elif="{{pathMode === 'mode2'}}">
<view class="path">
<view class="btn"
wx:if="{{currentPath.length !==0}}"
bindtap="toPath">返回上级</view>
<view class="btn"
bindtap="toPath"
data-index="{{index}}"
wx:key="{{index}}"
wx:for="{{currentPath}}">{{item.text}}</view>
</view>
</block>
<view class="list-view">
<view wx:for="{{outValue}}"
wx:key="{{index}}"
class="list-view-item"
bindtap="tapItem"
data-text="{{item[contentKey]}}"
data-index="{{index}}">
<text class="title"
space="ensp">{{item[contentKey]}} </text>
<text wx:if="{{item.children}}"
class="tip">(进入下一级)</text>
<view class="btn"
catchtap="tapBtn"
data-item="{{item}}">{{btnTxt}}</view>
</view>
</view>
</view>

View File

@ -0,0 +1,56 @@
/* components/path-view/path-view.wxss */
.path {
display: flex;
padding: 0 0 0 10px;
}
.path {
min-height: 30px;
flex-wrap: wrap;
}
.path .btn {
margin-right: 20px;
margin-bottom: 10px;
padding: 0 5px;
height: 20px;
border-radius: 2px;
background: #4b0;
color: #fff;
font-size: 10px;
line-height: 20px;
}
.list-view {
width: 100%;
}
.list-view-item {
position: relative;
display: flex;
flex-direction: row;
box-sizing: border-box;
margin-top: -1px;
width: 100%;
height: 40px;
border: 1px solid #e5e5e5;
border-radius: 3px;
}
.list-view-item .title {
padding-left: 20rpx;
font-size: 14px;
line-height: 40px;
}
.list-view-item .tip {
font-size: 10px;
line-height: 40px;
}
.list-view-item .btn {
position: absolute;
top: 7px;
right: 20rpx;
padding: 0 5px;
height: 25px;
border-radius: 3px;
background: #4b0;
color: #fff;
font-size: 14px;
line-height: 25px;
}

View File

@ -0,0 +1,34 @@
export default function toTree({
value = [],
fatherKey = 'pid',
selfKey = 'id',
childrenKey = 'children',
rootValue = undefined
} = {}) {
// 复制对象
value = JSON.parse(JSON.stringify(value));
for (let i = 0; i < value.length; i++) {
let itemI = value[i];
if (itemI[fatherKey] === rootValue) {
continue;
}
for (let j = 0; j < value.length; j++) {
if (i === j) {
continue;
}
let itemJ = value[j];
if (itemI[fatherKey] === itemJ[selfKey]) {
if (
!itemJ[childrenKey] ||
Object.prototype.toString.call(itemJ[childrenKey]) !==
'[object Array]'
) {
itemJ[childrenKey] = [];
}
itemJ[childrenKey].push(itemI);
break;
}
}
}
return value.filter(item => item[fatherKey] === rootValue);
}

BIN
image/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
image/homec.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

BIN
image/me.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
image/mec.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

BIN
image/todo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

BIN
image/todoc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

102
pages/bind/binduser.js Normal file
View File

@ -0,0 +1,102 @@
// pages/bind/binduser.js
Page({
/**
* 页面的初始数据
*/
data: {
},
bindusernameInput: function (e) {
this.data.username = e.detail.value
},
bindpasswordInput: function (e) {
this.data.password = e.detail.value
},
denglu: function(){
var that=this
wx.request({
url: getApp().globalData.serverUrl + 'bindmp',
header: {
'content-type': 'application/x-www-form-urlencoded', //
},
method: 'POST',
data:that.data,
success: res => {
if (res.statusCode === 200) {
if (res.data.code == 1) {
wx.showToast({})
getApp().onLaunch()
wx.switchTab({
url: '/pages/main/main',
})
}else{
wx.showModal({
content: '账户或密码不正确!',
showCancel: false,
confirmText: "确定"
})
}
}
}
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.setData({
mpopenid:wx.getStorageSync('mpopenid')
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

1
pages/bind/binduser.json Normal file
View File

@ -0,0 +1 @@
{}

23
pages/bind/binduser.wxml Normal file
View File

@ -0,0 +1,23 @@
<view class="page">
<view class="page__hd">
<view class="page__title">登陆安全预警lite小程序</view>
<view class="page__desc">首次使用需要绑定账号</view>
<view class="page__desc">请输入预警系统账号密码</view>
</view>
<view class="page__bd">
<view class="weui-cells__title">登陆</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_input">
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入账号" bindinput="bindusernameInput"/>
</view>
</view>
<view class="weui-cell weui-cell_input">
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入密码" bindinput="bindpasswordInput" password="true"/>
</view>
</view>
</view>
</view>
<button class="weui-btn" type="primary" bindtap="denglu">登陆并绑定</button>
</view>

5
pages/bind/binduser.wxss Normal file
View File

@ -0,0 +1,5 @@
/* pages/bind/binduser.wxss */
.weui-btn{
width:auto;
margin: 5px;
}

66
pages/drill/drill.js Normal file
View File

@ -0,0 +1,66 @@
// pages/drill/drill.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

1
pages/drill/drill.json Normal file
View File

@ -0,0 +1 @@
{}

2
pages/drill/drill.wxml Normal file
View File

@ -0,0 +1,2 @@
<!--pages/drill/drill.wxml-->
<text>pages/drill/drill.wxml</text>

1
pages/drill/drill.wxss Normal file
View File

@ -0,0 +1 @@
/* pages/drill/drill.wxss */

66
pages/footer/footer.js Normal file
View File

@ -0,0 +1,66 @@
// pages/footer/footer.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

3
pages/footer/footer.json Normal file
View File

@ -0,0 +1,3 @@
{
"usingComponents": {}
}

2
pages/footer/footer.wxml Normal file
View File

@ -0,0 +1,2 @@
<!--pages/footer/footer.wxml-->
<text>pages/footer/footer.wxml</text>

1
pages/footer/footer.wxss Normal file
View File

@ -0,0 +1 @@
/* pages/footer/footer.wxss */

BIN
pages/images/accident.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

4
pages/images/base64.js Normal file
View File

@ -0,0 +1,4 @@
module.exports = {
icon20: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAMAAABgZ9sFAAAAVFBMVEXx8fHMzMzr6+vn5+fv7+/t7e3d3d2+vr7W1tbHx8eysrKdnZ3p6enk5OTR0dG7u7u3t7ejo6PY2Njh4eHf39/T09PExMSvr6+goKCqqqqnp6e4uLgcLY/OAAAAnklEQVRIx+3RSRLDIAxE0QYhAbGZPNu5/z0zrXHiqiz5W72FqhqtVuuXAl3iOV7iPV/iSsAqZa9BS7YOmMXnNNX4TWGxRMn3R6SxRNgy0bzXOW8EBO8SAClsPdB3psqlvG+Lw7ONXg/pTld52BjgSSkA3PV2OOemjIDcZQWgVvONw60q7sIpR38EnHPSMDQ4MjDjLPozhAkGrVbr/z0ANjAF4AcbXmYAAAAASUVORK5CYII=",
icon60: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAeFBMVEUAwAD///+U5ZTc9twOww7G8MYwzDCH4YcfyR9x23Hw+/DY9dhm2WZG0kbT9NP0/PTL8sux7LFe115T1VM+zz7i+OIXxhes6qxr2mvA8MCe6J6M4oz6/frr+us5zjn2/fa67rqB4IF13XWn6ad83nxa1loqyirn+eccHxx4AAAC/klEQVRo3u2W2ZKiQBBF8wpCNSCyLwri7v//4bRIFVXoTBBB+DAReV5sG6lTXDITiGEYhmEYhmEYhmEYhmEY5v9i5fsZGRx9PyGDne8f6K9cfd+mKXe1yNG/0CcqYE86AkBMBh66f20deBc7wA/1WFiTwvSEpBMA2JJOBsSLxe/4QEEaJRrASP8EVF8Q74GbmevKg0saa0B8QbwBdjRyADYxIhqxAZ++IKYtciPXLQVG+imw+oo4Bu56rjEJ4GYsvPmKOAB+xlz7L5aevqUXuePWVhvWJ4eWiwUQ67mK51qPj4dFDMlRLBZTqF3SDvmr4BwtkECu5gHWPkmDfQh02WLxXuvbvC8ku8F57GsI5e0CmUwLz1kq3kD17R1In5816rGvQ5VMk5FEtIiWislTffuDpl/k/PzscdQsv8r9qWq4LRWX6tQYtTxvI3XyrwdyQxChXioOngH3dLgOFjk0all56XRi/wDFQrGQU3Os5t0wJu1GNtNKHdPqYaGYQuRDfbfDf26AGLYSyGS3ZAK4S8XuoAlxGSdYMKwqZKM9XJMtyqXi7HX/CiAZS6d8bSVUz5J36mEMFDTlAFQzxOT1dzLRljjB6+++ejFqka+mXIe6F59mw22OuOw1F4T6lg/9VjL1rLDoI9Xzl1MSYDNHnPQnt3D1EE7PrXjye/3pVpr1Z45hMUdcACc5NVQI0bOdS1WA0wuz73e7/5TNqBPhQXPEFGJNV2zNqWI7QKBd2Gn6AiBko02zuAOXeWIXjV0jNqdKegaE/kJQ6Bfs4aju04lMLkA2T5wBSYPKDGF3RKhFYEa6A1L1LG2yacmsaZ6YPOSAMKNsO+N5dNTfkc5Aqe26uxHpx7ZirvgCwJpWq/lmX1hA7LyabQ34tt5RiJKXSwQ+0KU0V5xg+hZrd4Bn1n4EID+WkQdgLfRNtvil9SPfwy+WQ7PFBWQz6dGWZBLkeJFXZGCfLUjCgGgqXo5TuSu3cugdcTv/HjqnBTEMwzAMwzAMwzAMwzAMw/zf/AFbXiOA6frlMAAAAABJRU5ErkJggg=="
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
pages/images/icon_intro.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
pages/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
pages/images/man.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 B

BIN
pages/images/miss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 B

BIN
pages/images/operation.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
pages/images/part.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

BIN
pages/images/pic_160.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 816 B

BIN
pages/images/public.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

BIN
pages/images/send.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
pages/images/socert.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
pages/images/suggest.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

BIN
pages/images/suggest1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 B

BIN
pages/images/test.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
pages/images/train.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
pages/images/trouble.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
pages/images/troubleb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
pages/images/troublec.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
pages/images/vcode.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
pages/images/watch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

25
pages/index/index.js Normal file
View File

@ -0,0 +1,25 @@
//index.js
//获取应用实例
const app = getApp()
Page({
data: {
},
//事件处理函数
bindViewTap: function() {
wx.navigateTo({
url: '../logs/logs'
})
},
onLoad: function () {
this.getName();
},
getName: function(){
var username = wx.getStorageSync('username')
var userid = wx.getStorageSync('userid')
this.setData({
username: username,
userid: userid,
})
},
})

1
pages/index/index.json Normal file
View File

@ -0,0 +1 @@
{}

34
pages/index/index.wxml Normal file
View File

@ -0,0 +1,34 @@
<!--index.wxml-->
<view class="page">
<view class="weui-panel weui-panel_access">
<view class="weui-panel__bd">
<navigator url="../user/userdetail" class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active">
<view class="weui-media-box__hd weui-media-box__hd_in-appmsg">
<!-- <image class="weui-media-box__thumb" src="{{userInfo.avatarUrl}}" /> -->
<open-data type="userAvatarUrl"></open-data>
</view>
<view class="weui-media-box__bd weui-media-box__bd_in-appmsg">
<view class="weui-media-box__title">平台账号: {{username}}
</view>
<view class="weui-media-box__desc">昵称: <open-data type="userNickName"></open-data> (点击进入个人信息管理)</view>
</view>
</navigator>
</view>
</view>
<view class="weui-panel">
<view class="weui-panel__hd">资料管理</view>
<view class="weui-panel__bd">
<view class="weui-media-box weui-media-box_small-appmsg">
<view class="weui-cells weui-cells_in-small-appmsg">
<navigator url="../socert/socert" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__hd"><image src="../images/socert.png" style="width: 20px;height: 20px;margin-right: 5px" /></view>
<view class="weui-cell__bd weui-cell_primary">
<view>我的特种作业证书</view>
</view>
<view class="weui-cell__ft weui-cell__ft_in-access"></view>
</navigator>
</view>
</view>
</view>
</view>
</view>

5
pages/index/index.wxss Normal file
View File

@ -0,0 +1,5 @@
.weui-btn{
width:auto;
margin: 5px;
}

15
pages/logs/logs.js Normal file
View File

@ -0,0 +1,15 @@
//logs.js
const util = require('../../utils/util.js')
Page({
data: {
logs: []
},
onLoad: function () {
this.setData({
logs: (wx.getStorageSync('logs') || []).map(log => {
return util.formatTime(new Date(log))
})
})
}
})

3
pages/logs/logs.json Normal file
View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "查看启动日志"
}

6
pages/logs/logs.wxml Normal file
View File

@ -0,0 +1,6 @@
<!--logs.wxml-->
<view class="container log-list">
<block wx:for="{{logs}}" wx:for-item="log">
<text class="log-item">{{index + 1}}. {{log}}</text>
</block>
</view>

8
pages/logs/logs.wxss Normal file
View File

@ -0,0 +1,8 @@
.log-list {
display: flex;
flex-direction: column;
padding: 40rpx;
}
.log-item {
margin: 10rpx;
}

159
pages/main/main.js Normal file
View File

@ -0,0 +1,159 @@
// pages/main/main.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
var that = this
//获取待阅读通知数目
if(wx.getStorageSync("sessionid")){
this.getnoread()
this.getyhtodonum()
this.getzytodonum()
this.getpxqdnum()
}else{
getApp().callback = () => {
this.getnoread()
this.getyhtodonum()
this.getzytodonum()
this.getpxqdnum()
};
}
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
getnoread: function(){
wx.request({
url: getApp().globalData.serverUrl + 'api/notice?a=noreadnum',
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
data: {},
success: res => {
if (res.statusCode === 200) {
//console.log(res.data)
this.setData({
noread: res.data.noread,
})
}
}
});
},
getyhtodonum:function(){
var that = this
//获取隐患待办数目
wx.request({
url: getApp().globalData.serverUrl + 'troublehandle?a=todonum',
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
data: {},
success: res => {
if (res.statusCode === 200) {
//console.log(res.data)
this.setData({
yhtodonum: res.data.todonum,
})
}
}
});
},
getzytodonum: function () {
var that = this
//获取作业待办数目
wx.request({
url: getApp().globalData.serverUrl + 'api/operation?a=todonum',
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
data: {},
success: res => {
if (res.statusCode === 200) {
//console.log(res.data)
this.setData({
zytodonum: res.data.todonum,
})
}
}
});
},
getpxqdnum:function(){
var that = this
//获取待签到培训
wx.request({
url: getApp().globalData.serverUrl + 'pxhandle?a=dqdnum',
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
data: {},
success: res => {
if (res.statusCode === 200) {
//console.log(res.data)
this.setData({
dqdnum: res.data.dqdnum,
})
}
}
});
}
})

1
pages/main/main.json Normal file
View File

@ -0,0 +1 @@
{}

51
pages/main/main.wxml Normal file
View File

@ -0,0 +1,51 @@
<view class="page">
<view class="page__bd">
<view class="weui-cells__title">数据采集</view>
<view class="weui-grids">
<navigator url="/pages/trouble/trouble" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="../images/trouble.png" />
<view class="weui-grid__label">事故隐患</view>
<view class="weui-badge" style="position: absolute;top: 1em;right: 1em;" wx:if="{{yhtodonum!=0}}">{{yhtodonum}}</view>
</navigator>
<navigator url="/pages/observe/observe" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="../images/watch.png" />
<view class="weui-grid__label">行为观察</view>
</navigator>
<navigator url="/pages/miss/miss" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="../images/miss.png" />
<view class="weui-grid__label">未遂事件</view>
</navigator>
<navigator url="/pages/suggest/suggest" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="../images/suggest.png" />
<view class="weui-grid__label">合理化建议</view>
</navigator>
<navigator url="/pages/operation/operation" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="../images/operation.png" />
<view class="weui-grid__label">作业许可</view>
<view class="weui-badge" style="position: absolute;top: 1em;right: 1em;" wx:if="{{zytodonum!=0}}">{{zytodonum}}</view>
</navigator>
</view>
<view class="weui-cells__title">学习园地</view>
<view class="weui-grids">
<navigator url="/pages/public/public" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="../images/public.png" />
<view class="weui-grid__label">公告</view>
</navigator>
<navigator url="/pages/notice/notice" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="../images/send.png" />
<view class="weui-grid__label">通知</view>
<view class="weui-badge" style="position: absolute;top: 1em;right: 1em;" wx:if="{{noread!=0}}">{{noread}}</view>
</navigator>
<navigator url="/pages/train/train" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="../images/train.png" />
<view class="weui-grid__label">线下培训</view>
<view class="weui-badge" style="position: absolute;top: 1em;right: 1em;" wx:if="{{dqdnum!=0}}">{{dqdnum}}</view>
</navigator>
<navigator url="e" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="../images/test.png" />
<view class="weui-grid__label">即将上线..</view>
</navigator>
</view>
</view>
</view>

1
pages/main/main.wxss Normal file
View File

@ -0,0 +1 @@
/* pages/main/main.wxss */

227
pages/miss/addmiss.js Normal file
View File

@ -0,0 +1,227 @@
// pages/miss/addmiss.js
var dateTimePicker = require('../../utils/dateTimePicker.js');
Page({
/**
* 页面的初始数据
*/
data: {
misstime: '',
missplace: '',
missimg: [],
},
bindmissplaceInput: function (e) {
this.data.missplace = e.detail.value
},
binddescriptionInput: function (e) {
this.data.description = e.detail.value
},
bindpreventInput: function (e) {
this.data.prevent = e.detail.value
},
bindlessonInput: function (e) {
this.data.lesson = e.detail.value
},
submit: function () {
var that = this
if (that.data.missplace == '') {
that.Tap1('请输入发生地点!')
} else if (that.data.description == '') {
that.Tap1('请输入简要描述!')
} else {
that.upimg(0, that.data.missimg.length)
}
},
Tap1: function (x) {
wx.showModal({
title: "系统提示",
content: x,
showCancel: false,
confirmText: "确定"
})
},
//上传图片
upimg: function (x, y) {
var that = this
if (x < y) {
wx.showLoading({
title: '上传现场图片' + (x + 1) + '....',
})
wx.uploadFile({
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
url: getApp().globalData.serverUrl + 'upfile',
filePath: that.data.missimg[x],
name: 'upfile',
success(res) {
var obj = JSON.parse(res.data);
that.data.missimg[x] = obj['filepath']
x = x + 1
if (x < y) {
that.upimg(x, y)
}
else {
that.addobserve()
}
}
})
} else {
that.addobserve()
}
},
addobserve: function () {
var wsdata = {
misstime: this.data.misstime,
missplace: this.data.missplace,
description: this.data.description,
missimg: this.data.missimg,
prevent: this.data.prevent,
lesson: this.data.lesson,
}
//console.log(wsdata.unsafe)
wx.request({
url: getApp().globalData.serverUrl + 'api/miss?a=add',
header: {
'content-type': 'application/json', //
'Cookie': wx.getStorageSync("sessionid"),
},
method: 'POST',
data: wsdata,
success: res => {
if (res.statusCode === 200) {
wx.hideLoading();
wx.navigateBack()
}
}
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
// 获取完整的年月日 时分秒,以及默认显示的数组
var obj1 = dateTimePicker.dateTimePicker(this.data.startYear, this.data.endYear);
var dateTimeArray1 = obj1.dateTimeArray
var dateTime1 = obj1.dateTime
var time = dateTimeArray1[0][dateTime1[0]] + '-' + dateTimeArray1[1][dateTime1[1]] + '-' + dateTimeArray1[2][dateTime1[2]] + ' ' + dateTimeArray1[3][dateTime1[3]] + ':' + dateTimeArray1[4][dateTime1[4]]
this.setData({
dateTimeArray1: obj1.dateTimeArray,
dateTime1: obj1.dateTime,
});
this.data.misstime = time
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
changeDateTime1(e) {
var dateTimeArray1 = this.data.dateTimeArray1
var dateTime1 = this.data.dateTime1
var time = dateTimeArray1[0][dateTime1[0]] + '-' + dateTimeArray1[1][dateTime1[1]] + '-' + dateTimeArray1[2][dateTime1[2]] + ' ' + dateTimeArray1[3][dateTime1[3]] + ':' + dateTimeArray1[4][dateTime1[4]]
//console.log(time)
this.data.misstime = time
this.setData({
dateTime1: e.detail.value,
});
},
changeDateTimeColumn1(e) {
var arr = this.data.dateTime1,
dateArr = this.data.dateTimeArray1;
arr[e.detail.column] = e.detail.value;
dateArr[2] = dateTimePicker.getMonthDay(dateArr[0][arr[0]], dateArr[1][arr[1]]);
this.setData({
dateTimeArray1: dateArr,
dateTime1: arr
});
},
chooseImage: function () {
var that = this
wx.chooseImage({
count: 9,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {
that.setData({
missimg: that.data.missimg.concat(res.tempFilePaths)
})
}
})
},
previewImage: function (e) {
var current = e.target.dataset.src
wx.previewImage({
current: current,
urls: this.data.missimg
})
},
deleteImage: function (e) {
var that = this;
var missimg = that.data.missimg;
var index = e.currentTarget.dataset.index; //获取当前长按图片下标
wx.showModal({
title: '系统提醒',
content: '确定要删除此图片吗?',
success: function (res) {
if (res.confirm) {
missimg.splice(index, 1);
} else if (res.cancel) {
return false;
}
that.setData({
missimg: missimg
});
}
})
},
})

3
pages/miss/addmiss.json Normal file
View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "新增事件"
}

81
pages/miss/addmiss.wxml Normal file
View File

@ -0,0 +1,81 @@
<view class="page">
<view class="page__bd">
<view class="weui-toptips weui-toptips_warn" wx:if="{{showTopTips}}">错误提示</view>
<view class="weui-cells__title">事件信息</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_select">
<view class="weui-cell__hd weui-cell__hd_in-select-after">
<view class="weui-label">发生时间</view>
</view>
<view class="weui-cell__bd">
<picker mode="multiSelector" value="{{dateTime1}}" bindchange="changeDateTime1" bindcolumnchange="changeDateTimeColumn1" range="{{dateTimeArray1}}">
<view class="weui-select">
{{dateTimeArray1[0][dateTime1[0]]}}-{{dateTimeArray1[1][dateTime1[1]]}}-{{dateTimeArray1[2][dateTime1[2]]}} {{dateTimeArray1[3][dateTime1[3]]}}:{{dateTimeArray1[4][dateTime1[4]]}}
</view>
</picker>
</view>
</view>
<view class="weui-cell weui-cell_select">
<view class="weui-cell__hd weui-cell__hd_in-select-after">
<view class="weui-label">发生地点</view>
</view>
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入发生地点" bindinput="bindmissplaceInput" />
</view>
</view>
</view>
<view class="weui-cells__title">现场图片(如有)</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__bd weui-cell_primary">
<view class="weui-uploader">
<view class="weui-uploader__bd">
<view class="weui-uploader__files">
<block wx:for="{{missimg}}" wx:for-item="image" wx:key="unique">
<view class="weui-uploader__file">
<image class="weui-uploader__img" src="{{image}}" data-src="{{image}}" bindtap="previewImage" bindlongpress="deleteImage" data-index="{{index}}"></image>
</view>
</block>
</view>
<view class="weui-uploader__input-box">
<view class="weui-uploader__input" bindtap="chooseImage"></view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="weui-cells__title">简要描述</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__bd">
<textarea class="weui-textarea" placeholder="请输入描述" style="height: 3.3em" bindinput="binddescriptionInput"/>
<view class="weui-textarea-counter">0/200</view>
</view>
</view>
</view>
<view class="weui-cells__title">防范措施</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__bd">
<textarea class="weui-textarea" placeholder="请输入描述" style="height: 3.3em" bindinput="bindpreventInput"/>
<view class="weui-textarea-counter">0/200</view>
</view>
</view>
</view>
<view class="weui-cells__title">经验教训</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__bd">
<textarea class="weui-textarea" placeholder="请输入描述" style="height: 3.3em" bindinput="bindlessonInput"/>
<view class="weui-textarea-counter">0/200</view>
</view>
</view>
</view>
<view class="btn-area">
<button class="weui-btn" type="primary" bindtap="submit">提交</button>
</view>
</view>
</view>

1
pages/miss/addmiss.wxss Normal file
View File

@ -0,0 +1 @@
/* pages/miss/addmiss.wxss */

121
pages/miss/miss.js Normal file
View File

@ -0,0 +1,121 @@
// pages/miss/miss.js
Page({
/**
* 页面的初始数据
*/
data: {
page: 1,
serverUrl: getApp().globalData.serverUrl,
wslist:[]
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
var that = this;
that.getWslist(1)
this.data.page = 1;
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
var that = this;
that.getWslist(1);
wx.stopPullDownRefresh();
this.data.page = 1;
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
//上拉分页,将页码加1然后调用分页函数
this.data.page = this.data.page + 1;
this.getWslist();
wx.stopPullDownRefresh();
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
getWslist: function (page) {
var that = this;
if (page != 1) { page = that.data.page }
wx.showLoading({
title: '加载中',
}),
wx.request({
url: this.data.serverUrl + 'api/miss?a=listall&rows=10&page=' + page,
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
success: res => {
if (res.statusCode === 200) {
if (res.data.rows.length == 0) {
if (page == 1) {
this.setData({
total: 0,
wslist: []
})
}
else {
wx.showModal({
content: "已经到底啦!",
showCancel: false,
confirmText: "确定",
})
}
} else {
let list
if (page == 1) {
list = res.data.rows
} else {
list = this.data.wslist.concat(res.data.rows)
}
this.setData({
total: res.data.total,
wslist: list
})
}
}
wx.hideLoading();
}
});
},
})

5
pages/miss/miss.json Normal file
View File

@ -0,0 +1,5 @@
{
"navigationBarTitleText": "未遂事件",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}

20
pages/miss/miss.wxml Normal file
View File

@ -0,0 +1,20 @@
<view class="page__bd">
<view class="head">共{{total}}条未遂事件</view>
<view class="weui-cells weui-cells_after-title" >
<block wx:for="{{wslist}}" wx:key="unique">
<navigator url="missdetail?missid={{item.missid}}" class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active">
<view class="weui-media-box__bd weui-media-box__bd_in-appmsg">
<view class="weui-media-box__title">{{item.missplace}}</view>
<view class="weui-media-box__desc">{{item.missnum}} {{item.misser__name}}填报</view>
<view class="weui-media-box__desc">{{item.misstime}}</view>
</view>
</navigator>
</block>
</view>
</view>
<view style="position:fixed; bottom:0;width:100%;">
<navigator url="/pages/miss/addmiss" hover-class="navigator-hover">
<button class="weui-btn" type="primary">新增</button>
</navigator>
</view>

14
pages/miss/miss.wxss Normal file
View File

@ -0,0 +1,14 @@
.weui-btn{
width:auto;
margin: 5px;
}
.container {
background-color: #fff;
color: #939393;
}
.head{
color:#fff;
background-color: cornflowerblue;
text-align: center;
}

103
pages/miss/missdetail.js Normal file
View File

@ -0,0 +1,103 @@
// pages/miss/missdetail.js
var util = require('../../utils/util.js')
Page({
/**
* 页面的初始数据
*/
data: {
serverUrl: getApp().globalData.serverUrl
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.getWsdetail(options.missid);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
missimgPreview: function (e) {
var current = e.target.dataset.src
wx.previewImage({
current: current,
urls: this.data.missimg
})
},
getWsdetail: function (missid) {
wx.showLoading({
title: '加载中',
}),
wx.request({
url: this.data.serverUrl + 'api/miss?a=detail&missid=' + missid,
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
data: {
},
success: res => {
wx.hideLoading();
console.log(res.data);
if (res.statusCode === 200) {
var wsdata = res.data
//格式化观察信息
for (var i = 0; i < wsdata.missimg.length; i++) {
wsdata.missimg[i] = this.data.serverUrl + wsdata.missimg[i];
}
if (wsdata.misstime != '') { wsdata.misstime = util.formatTime(new Date(wsdata.misstime)) }
if (wsdata.submittime != '') { wsdata.submittime = util.formatTime(new Date(wsdata.submittime)) }
this.setData(wsdata)
}
}
});
},
})

View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "详情"
}

View File

@ -0,0 +1,93 @@
<view class="weui-cells__title">
未遂事件概况</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd weui-cell_primary">
<view>事件编号</view>
</view>
<view class="weui-cell__ft">
{{missnum}}
</view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd weui-cell_primary">
<view>填报时间</view>
</view>
<view class="weui-cell__ft">
{{submittime}}
</view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd weui-cell_primary">
<view>发生部门</view>
</view>
<view class="weui-cell__ft">
{{misspart__partname}}
</view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd weui-cell_primary">
<view>当事人</view>
</view>
<view class="weui-cell__ft">
{{misser__name}}
</view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd weui-cell_primary">
<view>发生时间</view>
</view>
<view class="weui-cell__ft">
{{misstime}}
</view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd weui-cell_primary">
<view>发生地点</view>
</view>
<view class="weui-cell__ft">
{{missplace}}
</view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd weui-cell_primary">
<view>现场图片</view>
<view class="weui-uploader__files">
<block wx:for="{{missimg}}" wx:for-item="image" wx:key="unique">
<view class="weui-uploader__file">
<image class="weui-uploader__img" src="{{image}}" data-src="{{image}}" bindtap="missimgPreview"></image>
</view>
</block>
</view>
</view>
</view>
</view>
<view class="weui-cells__title">详细内容</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd weui-cell_primary">
<view>简要描述</view>
<view class="weui-cell__ft">
{{description}}
</view>
</view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd weui-cell_primary">
<view>防范措施</view>
<view class="weui-cell__ft">
{{prevent}}
</view>
</view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd weui-cell_primary">
<view>经验教训</view>
<view class="weui-cell__ft">
{{lesson}}
</view>
</view>
</view>
</view>

View File

@ -0,0 +1 @@
/* pages/miss/missdetail.wxss */

147
pages/notice/detail.js Normal file
View File

@ -0,0 +1,147 @@
// pages/suggest/detail.js
var util = require('../../utils/util.js')
var WxParse = require('../../wxParse/wxParse.js');
Page({
/**
* 页面的初始数据
*/
data: {
serverUrl: getApp().globalData.serverUrl
},
openfj: function (e) {
var that =this
let fileurl = that.data.serverUrl + e.currentTarget.dataset.id
wx.showLoading({
title: '正在打开...',
})
wx.downloadFile({
url: fileurl,
success(res) {
const filePath = res.tempFilePath
console.log(filePath)
var filetype
if (fileurl.indexOf(".docx") != -1){
filetype='docx'
}
else if (fileurl.indexOf(".xlsx") != -1) {
filetype = 'xlsx'
}
else if (fileurl.indexOf(".xls") != -1) {
filetype = 'xls'
}
else if (fileurl.indexOf(".pptx") != -1) {
filetype = 'pptx'
}
else if (fileurl.indexOf(".ppt") != -1) {
filetype = 'ppt'
}
else if (fileurl.indexOf(".pdf") != -1) {
filetype = 'pdf'
}
console.log(filetype)
wx.openDocument({
filePath,
fileType:filetype,
success(res) {
wx.hideLoading()
console.log('打开文档成功')
},fail:function(e){
console.log(e)
}
})
}
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.getTzdetail(options.id);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
getTzdetail: function (id) {
wx.showLoading({
title: '加载中',
}),
wx.request({
url: this.data.serverUrl + 'api/notice?a=detail&id=' + id,
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
data: {
},
success: res => {
wx.hideLoading();
console.log(res.data);
if (res.statusCode === 200) {
var tzdata = res.data
let material = []
console.log(tzdata.notice.material.length)
for (var i = 0, len = tzdata.notice.material.length; i < len; i++) {
let x = {}
x['name'] = tzdata.notice.material[i].split('_').pop();
x['value'] = tzdata.notice.material[i]
material.push(x)
}
console.log(material)
this.setData({
material: material
})
this.setData(tzdata)
WxParse.wxParse('article', 'html', tzdata.notice.content, this, 0)
}
}
});
},
})

3
pages/notice/detail.json Normal file
View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "详情"
}

22
pages/notice/detail.wxml Normal file
View File

@ -0,0 +1,22 @@
<import src="../../wxParse/wxParse.wxml"/>
<view class="page">
<view class="page__bd">
<view class="weui-article">
<view class="weui-article__h1">{{notice.title}}</view>
<view class="weui-article__h2">阅读人数:<span style="color:blue">{{readpeople}} </span>阅读次数:<span style="color:blue">{{readsnum}} </span></view>
<view class="weui-cells__title">附件</view>
<block wx:for="{{material}}" wx:key="unique">
<view class="weui-media-box" style="color:blue" data-id="{{item.value}}" bindtap='openfj'>
{{index+1}} {{item.name}}
</view>
</block>
<view class="weui-article__section">
<template is="wxParse" data="{{wxParseData:article.nodes}}"/>
</view>
</view>
</view>
</view>

1
pages/notice/detail.wxss Normal file
View File

@ -0,0 +1 @@
/* pages/notice/detail.wxss */

123
pages/notice/notice.js Normal file
View File

@ -0,0 +1,123 @@
// pages/miss/miss.js
Page({
/**
* 页面的初始数据
*/
data: {
page: 1,
serverUrl: getApp().globalData.serverUrl,
tzlist: []
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
var that = this;
that.getTzlist(1)
this.data.page = 1;
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
var that = this;
that.getTzlist(1);
wx.stopPullDownRefresh();
this.data.page = 1;
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
//上拉分页,将页码加1然后调用分页函数
this.data.page = this.data.page + 1;
this.getTzlist();
wx.stopPullDownRefresh();
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
getTzlist: function (page) {
var that = this;
if (page != 1) { page = that.data.page }
wx.showLoading({
title: '加载中',
}),
wx.request({
url: this.data.serverUrl + 'api/notice?a=listtome&rows=10&page=' + page,
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
success: res => {
if (res.statusCode === 200) {
if (res.data.rows.length == 0) {
if (page == 1) {
this.setData({
total: 0,
noread: 0,
tzlist: []
})
}
else {
wx.showModal({
content: "已经到底啦!",
showCancel: false,
confirmText: "确定",
})
}
} else {
let list
if (page == 1) {
list = res.data.rows
} else {
list = this.data.tzlist.concat(res.data.rows)
}
this.setData({
total: res.data.total,
noread:res.data.noread,
tzlist: list
})
}
}
wx.hideLoading();
}
});
},
})

5
pages/notice/notice.json Normal file
View File

@ -0,0 +1,5 @@
{
"navigationBarTitleText": "收件箱",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}

24
pages/notice/notice.wxml Normal file
View File

@ -0,0 +1,24 @@
<view class="page__bd">
<view class="head">共{{total}}条通知,其中{{noread}}条未读</view>
<view class="weui-cells weui-cells_after-title" >
<block wx:for="{{tzlist}}" wx:key="unique">
<navigator url="detail?id={{item.noticeid__id}}" class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active">
<view class="weui-media-box__bd weui-media-box__bd_in-appmsg">
<view class="weui-media-box__title">{{item.noticeid__title}}</view>
<view class="weui-media-box__desc">{{item.noticeid__pubpart__partname}} {{item.noticeid__pubuser__name}}发布</view>
<view class="weui-media-box__desc">{{item.noticeid__submittime}}</view>
</view>
<view class="weui-panel__ft weui-cell__ft_in-access">
<view class="weui-media-box__title" wx:if="{{item.read == 0}}" style="background-color:yellow">未读</view>
<view class="weui-media-box__title" wx:else style="background-color:green">已读</view>
</view>
</navigator>
</block>
</view>
</view>
<!-- <view style="position:fixed; bottom:0;width:100%;">
<navigator url="/pages/miss/addmiss" hover-class="navigator-hover">
<button class="weui-btn" type="primary">新增</button>
</navigator>
</view> -->

13
pages/notice/notice.wxss Normal file
View File

@ -0,0 +1,13 @@
.weui-btn{
width:auto;
margin: 5px;
}
.container {
background-color: #fff;
color: #939393;
}
.head{
color:#fff;
background-color: cornflowerblue;
text-align: center;
}

397
pages/observe/addobserve.js Normal file
View File

@ -0,0 +1,397 @@
var dateTimePicker = require('../../utils/dateTimePicker.js');
// pages/observe/addobserve.js
Page({
/**
* 页面的初始数据
*/
data: {
lookeder: '',
looktime: '',
lookplace: '',
actname: '',
lookimg: [],
},
bindlookederInput: function (e) {
this.data.lookeder = e.detail.value
},
bindlookplaceInput: function (e) {
this.data.lookplace = e.detail.value
},
bindactnameInput: function (e) {
this.data.actname = e.detail.value
},
bindotherunsafeInput: function (e) {
this.data.otherunsafe = e.detail.value
},
bindsafecontentInput: function (e) {
this.data.safecontent = e.detail.value
},
checkboxChange24: function (e) {
var x = this.data.unsafe24;
var checkboxItems = this.data.unsafe24.child, values = e.detail.value;
for (var i = 0, lenI = checkboxItems.length; i < lenI; ++i) {
checkboxItems[i].checked = false;
for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
if (checkboxItems[i].value == values[j]) {
checkboxItems[i].checked = true;
break;
}
}
}
x.child = checkboxItems
this.setData({
unsafe24: x
});
},
checkboxChange25: function (e) {
var x = this.data.unsafe25;
var checkboxItems = this.data.unsafe25.child, values = e.detail.value;
for (var i = 0, lenI = checkboxItems.length; i < lenI; ++i) {
checkboxItems[i].checked = false;
for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
if (checkboxItems[i].value == values[j]) {
checkboxItems[i].checked = true;
break;
}
}
}
x.child = checkboxItems
this.setData({
unsafe25: x
});
},
checkboxChange26: function (e) {
var x = this.data.unsafe26;
var checkboxItems = this.data.unsafe26.child, values = e.detail.value;
for (var i = 0, lenI = checkboxItems.length; i < lenI; ++i) {
checkboxItems[i].checked = false;
for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
if (checkboxItems[i].value == values[j]) {
checkboxItems[i].checked = true;
break;
}
}
}
x.child = checkboxItems
this.setData({
unsafe26: x
});
},
checkboxChange27: function (e) {
var x = this.data.unsafe27;
var checkboxItems = this.data.unsafe27.child, values = e.detail.value;
for (var i = 0, lenI = checkboxItems.length; i < lenI; ++i) {
checkboxItems[i].checked = false;
for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
if (checkboxItems[i].value == values[j]) {
checkboxItems[i].checked = true;
break;
}
}
}
x.child = checkboxItems
this.setData({
unsafe27: x
});
},
checkboxChange28: function (e) {
var x = this.data.unsafe28;
var checkboxItems = this.data.unsafe28.child, values = e.detail.value;
for (var i = 0, lenI = checkboxItems.length; i < lenI; ++i) {
checkboxItems[i].checked = false;
for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
if (checkboxItems[i].value == values[j]) {
checkboxItems[i].checked = true;
break;
}
}
}
x.child = checkboxItems
this.setData({
unsafe28: x
});
},
checkboxChange29: function (e) {
var x = this.data.unsafe29;
var checkboxItems = this.data.unsafe29.child, values = e.detail.value;
for (var i = 0, lenI = checkboxItems.length; i < lenI; ++i) {
checkboxItems[i].checked = false;
for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
if (checkboxItems[i].value == values[j]) {
checkboxItems[i].checked = true;
break;
}
}
}
x.child = checkboxItems
this.setData({
unsafe29: x
});
},
checkboxChange30: function (e) {
var x = this.data.unsafe30;
var checkboxItems = this.data.unsafe30.child, values = e.detail.value;
for (var i = 0, lenI = checkboxItems.length; i < lenI; ++i) {
checkboxItems[i].checked = false;
for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
if (checkboxItems[i].value == values[j]) {
checkboxItems[i].checked = true;
break;
}
}
}
x.child = checkboxItems
this.setData({
unsafe30: x
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
// 获取完整的年月日 时分秒,以及默认显示的数组
var obj1 = dateTimePicker.dateTimePicker(this.data.startYear, this.data.endYear);
var dateTimeArray1 = obj1.dateTimeArray
var dateTime1 = obj1.dateTime
var time = dateTimeArray1[0][dateTime1[0]] + '-' + dateTimeArray1[1][dateTime1[1]] + '-' + dateTimeArray1[2][dateTime1[2]] + ' ' + dateTimeArray1[3][dateTime1[3]] + ':' + dateTimeArray1[4][dateTime1[4]]
this.setData({
dateTimeArray1: obj1.dateTimeArray,
dateTime1: obj1.dateTime,
});
this.data.looktime = time
//获取观察字典
wx.request({
url: getApp().globalData.serverUrl + 'gchandle?a=getdics',
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
data: {},
success: res => {
if (res.statusCode === 200) {
//console.log(res.data.data)
this.setData({
unsafe24: res.data.data[0],
unsafe25: res.data.data[1],
unsafe26: res.data.data[2],
unsafe27: res.data.data[3],
unsafe28: res.data.data[4],
unsafe29: res.data.data[5],
unsafe30: res.data.data[6],
})
}
}
});
},
submit: function () {
var that = this
if (that.data.lookeder == '') {
that.Tap1('请填写被观察对象!')
} else if (that.data.lookplace == '') {
that.Tap1('请输入观察地点!')
} else if (that.data.actname == '') {
that.Tap1('请输入作业名称!')
} else {
that.upimg(0, that.data.lookimg.length)
}
},
Tap1: function (x) {
wx.showModal({
title: "系统提示",
content: x,
showCancel: false,
confirmText: "确定"
})
},
//上传图片
upimg: function (x, y) {
var that = this
if (x < y) {
wx.showLoading({
title: '上传现场图片' + (x + 1) + '....',
})
wx.uploadFile({
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
url: getApp().globalData.serverUrl + 'upfile',
filePath: that.data.lookimg[x],
name: 'upfile',
success(res) {
var obj = JSON.parse(res.data);
that.data.lookimg[x] = obj['filepath']
x = x + 1
if (x < y) {
that.upimg(x, y)
}
else {
that.addobserve()
}
}
})
} else {
that.addobserve()
}
},
addobserve: function () {
var gcdata = {
lookeder: this.data.lookeder,
looktime: this.data.looktime,
lookplace: this.data.lookplace,
actname: this.data.actname,
lookimg: this.data.lookimg,
otherunsafe: this.data.otherunsafe,
safecontent: this.data.safecontent,
unsafe: this.getunsafe(),
}
//console.log(gcdata.unsafe)
wx.request({
url: getApp().globalData.serverUrl + 'gchandle?a=add',
header: {
'content-type': 'application/json', //
'Cookie': wx.getStorageSync("sessionid"),
},
method: 'POST',
data: gcdata,
success: res => {
if (res.statusCode === 200) {
wx.hideLoading();
wx.navigateBack()
}
}
});
},
getunsafe: function () {
var x = []
var that = this.data;
var items = [that.unsafe24.child, that.unsafe25.child, that.unsafe26.child, that.unsafe27.child, that.unsafe28.child, that.unsafe29.child, that.unsafe30.child]
for (var i = 0, lenI = items.length; i < lenI; i++) {
var y = items[i]
for (var m = 0, lenI = y.length; m < lenI; m++) {
if (y[m].checked) {
x.push(y[m].value)
}
}
}
return x
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
changeDateTime1(e) {
var dateTimeArray1 = this.data.dateTimeArray1
var dateTime1 = this.data.dateTime1
var time = dateTimeArray1[0][dateTime1[0]] + '-' + dateTimeArray1[1][dateTime1[1]] + '-' + dateTimeArray1[2][dateTime1[2]] + ' ' + dateTimeArray1[3][dateTime1[3]] + ':' + dateTimeArray1[4][dateTime1[4]]
//console.log(time)
this.data.looktime = time
this.setData({
dateTime1: e.detail.value,
});
},
changeDateTimeColumn1(e) {
var arr = this.data.dateTime1,
dateArr = this.data.dateTimeArray1;
arr[e.detail.column] = e.detail.value;
dateArr[2] = dateTimePicker.getMonthDay(dateArr[0][arr[0]], dateArr[1][arr[1]]);
this.setData({
dateTimeArray1: dateArr,
dateTime1: arr
});
},
chooseImage: function () {
var that = this
wx.chooseImage({
count: 9,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {
that.setData({
lookimg: that.data.lookimg.concat(res.tempFilePaths)
})
}
})
},
previewImage: function (e) {
var current = e.target.dataset.src
wx.previewImage({
current: current,
urls: this.data.lookimg
})
},
deleteImage: function (e) {
var that = this;
var lookimg = that.data.lookimg;
var index = e.currentTarget.dataset.index; //获取当前长按图片下标
wx.showModal({
title: '系统提醒',
content: '确定要删除此图片吗?',
success: function (res) {
if (res.confirm) {
lookimg.splice(index, 1);
} else if (res.cancel) {
return false;
}
that.setData({
lookimg: lookimg
});
}
})
},
})

View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "新增观察"
}

View File

@ -0,0 +1,180 @@
<view class="page">
<view class="page__bd">
<view class="weui-toptips weui-toptips_warn" wx:if="{{showTopTips}}">错误提示</view>
<view class="weui-cells__title">现场图片</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__bd weui-cell_primary">
<view class="weui-uploader">
<view class="weui-uploader__bd">
<view class="weui-uploader__files">
<block wx:for="{{lookimg}}" wx:for-item="image" wx:key="unique">
<view class="weui-uploader__file">
<image class="weui-uploader__img" src="{{image}}" data-src="{{image}}" bindtap="previewImage" bindlongpress="deleteImage" data-index="{{index}}"></image>
</view>
</block>
</view>
<view class="weui-uploader__input-box">
<view class="weui-uploader__input" bindtap="chooseImage"></view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="weui-cells__title">观察信息</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_input">
<view class="weui-cell__hd">
<view class="weui-label">被观察对象</view>
</view>
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入" bindinput="bindlookederInput" />
</view>
</view>
<view class="weui-cell weui-cell_select">
<view class="weui-cell__hd weui-cell__hd_in-select-after">
<view class="weui-label">观察时间</view>
</view>
<view class="weui-cell__bd">
<picker mode="multiSelector" value="{{dateTime1}}" bindchange="changeDateTime1" bindcolumnchange="changeDateTimeColumn1" range="{{dateTimeArray1}}">
<view class="weui-select">
{{dateTimeArray1[0][dateTime1[0]]}}-{{dateTimeArray1[1][dateTime1[1]]}}-{{dateTimeArray1[2][dateTime1[2]]}} {{dateTimeArray1[3][dateTime1[3]]}}:{{dateTimeArray1[4][dateTime1[4]]}}
</view>
</picker>
</view>
</view>
<view class="weui-cell weui-cell_select">
<view class="weui-cell__hd weui-cell__hd_in-select-after">
<view class="weui-label">观察地点</view>
</view>
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入观察地点" bindinput="bindlookplaceInput" />
</view>
</view>
<view class="weui-cell weui-cell_select">
<view class="weui-cell__hd weui-cell__hd_in-select-after">
<view class="weui-label">作业名称</view>
</view>
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入作业名称" bindinput="bindactnameInput" />
</view>
</view>
</view>
<view class="weui-cells__title">不安全行为记录卡</view>
<view class="weui-cells__title" >{{unsafe24.text}}</view>
<view class="weui-cells weui-cells_after-title">
<checkbox-group bindchange="checkboxChange24">
<label class="weui-cell weui-check__label" wx:for="{{unsafe24.child}}" wx:key="value">
<checkbox class="weui-check" value="{{item.value}}" />
<view class="weui-cell__hd weui-check__hd_in-checkbox">
<icon class="weui-icon-checkbox_circle" type="circle" size="23" wx:if="{{!item.checked}}"></icon>
<icon class="weui-icon-checkbox_success" type="success" size="23" wx:if="{{item.checked}}"></icon>
</view>
<view class="weui-cell__bd">{{item.text}}</view>
</label>
</checkbox-group>
</view>
<view class="weui-cells__title" >{{unsafe25.text}}</view>
<view class="weui-cells weui-cells_after-title">
<checkbox-group bindchange="checkboxChange25">
<label class="weui-cell weui-check__label" wx:for="{{unsafe25.child}}" wx:key="value">
<checkbox class="weui-check" value="{{item.value}}" />
<view class="weui-cell__hd weui-check__hd_in-checkbox">
<icon class="weui-icon-checkbox_circle" type="circle" size="23" wx:if="{{!item.checked}}"></icon>
<icon class="weui-icon-checkbox_success" type="success" size="23" wx:if="{{item.checked}}"></icon>
</view>
<view class="weui-cell__bd">{{item.text}}</view>
</label>
</checkbox-group>
</view>
<view class="weui-cells__title" >{{unsafe26.text}}</view>
<view class="weui-cells weui-cells_after-title">
<checkbox-group bindchange="checkboxChange26">
<label class="weui-cell weui-check__label" wx:for="{{unsafe26.child}}" wx:key="value">
<checkbox class="weui-check" value="{{item.value}}" />
<view class="weui-cell__hd weui-check__hd_in-checkbox">
<icon class="weui-icon-checkbox_circle" type="circle" size="23" wx:if="{{!item.checked}}"></icon>
<icon class="weui-icon-checkbox_success" type="success" size="23" wx:if="{{item.checked}}"></icon>
</view>
<view class="weui-cell__bd">{{item.text}}</view>
</label>
</checkbox-group>
</view>
<view class="weui-cells__title" >{{unsafe27.text}}</view>
<view class="weui-cells weui-cells_after-title">
<checkbox-group bindchange="checkboxChange27">
<label class="weui-cell weui-check__label" wx:for="{{unsafe27.child}}" wx:key="value">
<checkbox class="weui-check" value="{{item.value}}" />
<view class="weui-cell__hd weui-check__hd_in-checkbox">
<icon class="weui-icon-checkbox_circle" type="circle" size="23" wx:if="{{!item.checked}}"></icon>
<icon class="weui-icon-checkbox_success" type="success" size="23" wx:if="{{item.checked}}"></icon>
</view>
<view class="weui-cell__bd">{{item.text}}</view>
</label>
</checkbox-group>
</view>
<view class="weui-cells__title" >{{unsafe28.text}}</view>
<view class="weui-cells weui-cells_after-title">
<checkbox-group bindchange="checkboxChange28">
<label class="weui-cell weui-check__label" wx:for="{{unsafe28.child}}" wx:key="value">
<checkbox class="weui-check" value="{{item.value}}" />
<view class="weui-cell__hd weui-check__hd_in-checkbox">
<icon class="weui-icon-checkbox_circle" type="circle" size="23" wx:if="{{!item.checked}}"></icon>
<icon class="weui-icon-checkbox_success" type="success" size="23" wx:if="{{item.checked}}"></icon>
</view>
<view class="weui-cell__bd">{{item.text}}</view>
</label>
</checkbox-group>
</view>
<view class="weui-cells__title" >{{unsafe29.text}}</view>
<view class="weui-cells weui-cells_after-title">
<checkbox-group bindchange="checkboxChange29">
<label class="weui-cell weui-check__label" wx:for="{{unsafe29.child}}" wx:key="value">
<checkbox class="weui-check" value="{{item.value}}" />
<view class="weui-cell__hd weui-check__hd_in-checkbox">
<icon class="weui-icon-checkbox_circle" type="circle" size="23" wx:if="{{!item.checked}}"></icon>
<icon class="weui-icon-checkbox_success" type="success" size="23" wx:if="{{item.checked}}"></icon>
</view>
<view class="weui-cell__bd">{{item.text}}</view>
</label>
</checkbox-group>
</view>
<view class="weui-cells__title" >{{unsafe30.text}}</view>
<view class="weui-cells weui-cells_after-title">
<checkbox-group bindchange="checkboxChange30">
<label class="weui-cell weui-check__label" wx:for="{{unsafe30.child}}" wx:key="value">
<checkbox class="weui-check" value="{{item.value}}" />
<view class="weui-cell__hd weui-check__hd_in-checkbox">
<icon class="weui-icon-checkbox_circle" type="circle" size="23" wx:if="{{!item.checked}}"></icon>
<icon class="weui-icon-checkbox_success" type="success" size="23" wx:if="{{item.checked}}"></icon>
</view>
<view class="weui-cell__bd">{{item.text}}</view>
</label>
</checkbox-group>
</view>
<view class="weui-cells__title">其他不安全行为</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__bd">
<textarea class="weui-textarea" placeholder="请输入描述" style="height: 3.3em" bindinput="bindotherunsafeInput"/>
<view class="weui-textarea-counter">0/200</view>
</view>
</view>
</view>
<view class="weui-cells__title">安全或提倡的行为</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__bd">
<textarea class="weui-textarea" placeholder="请输入描述" style="height: 3.3em" bindinput="bindsafecontentInput"/>
<view class="weui-textarea-counter">0/200</view>
</view>
</view>
</view>
<view class="btn-area">
<button class="weui-btn" type="primary" bindtap="submit">提交</button>
</view>
</view>
</view>

View File

@ -0,0 +1 @@
/* pages/observe/addobserve.wxss */

121
pages/observe/observe.js Normal file
View File

@ -0,0 +1,121 @@
// pages/observe/observe.js
Page({
/**
* 页面的初始数据
*/
data: {
page:1,
serverUrl: getApp().globalData.serverUrl,
gclist:[]
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
var that = this;
that.getGclist(1)
this.data.page = 1;
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
/**
* 页面上拉触底事件的处理函数
*/
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
onPullDownRefresh: function () {
var that = this;
that.getGclist(1);
wx.stopPullDownRefresh();
this.data.page = 1;
},
onReachBottom: function () {
//上拉分页,将页码加1然后调用分页函数
this.data.page = this.data.page + 1;
this.getGclist();
},
getGclist: function (page) {
var that = this;
if (page != 1) { page = that.data.page }
wx.showLoading({
title: '加载中',
}),
wx.request({
url: this.data.serverUrl + 'gchandle?a=listall&rows=10&page=' + page,
header: {
'content-type': 'application/json', // 默认值
'Cookie': wx.getStorageSync("sessionid"),
},
success: res => {
if (res.statusCode === 200) {
if (res.data.rows.length == 0) {
if (page == 1) {
this.setData({
total: 0,
gclist: []
})
}
else {
wx.showModal({
content: "已经到底啦!",
showCancel: false,
confirmText: "确定",
})
}
} else {
let list
if (page == 1) {
list = res.data.rows
} else {
list = this.data.gclist.concat(res.data.rows)
}
this.setData({
total: res.data.total,
gclist: list
})
}
}
wx.hideLoading();
}
});
},
})

Some files were not shown because too many files have changed in this diff Show More