刘翔宇-旅管家 4 years ago
parent ec3b113e47
commit 0931daa220

@ -1,97 +1,338 @@
<template>
<view class="content">
<map id="map" class="map" style="width: 100%;height: 100vh;" :show-location="true" :latitude="latitude" :longitude="longitude"></map>
<view class="boxContent">
<view class="box-header">
<view class="search-wrap">
<!-- 如果使用u-search组件必须要给v-model绑定一个变量 -->
<u-search v-model="keyword" placeholder="地址/河道等" @change="tosearch()" @search="tosearch()" height="56"
:action-style="{color: '#fff'}">
</u-search>
</view>
<u-dropdown ref="uDropdown" :close-on-click-mask="mask">
<u-dropdown-item title="问题类型">
<view class="slot-content">
<view class="item-box">
<view class="item" :class="[item.active ? 'active' : '']" @tap="tagClick(index)"
v-for="(item, index) in options1" :key="index">
{{item.label}}
</view>
</view>
<u-button type="primary" @click="tosearch"></u-button>
</view>
</u-dropdown-item>
<u-dropdown-item v-model="value3" :title="value3==''?'工单状态':value3" @change="toChangeStatus()"
:options="options3">
</u-dropdown-item>
</u-dropdown>
</view>
<view class="list" style="padding-top: 188rpx;">
<block v-for="(item, index) in dataList">
<u-card :title="item.created_at" @click="todetail(item.id)" padding="20" margin="20rpx" :border="true"
:sub-title="item.created_at" :thumb="thumb" thumb-width="36">
<view class="" slot="body">
<u-row gutter="16">
<u-col span="3">
<view class="demo-layout bg-purple">问题类别</view>
</u-col>
<u-col span="3">
<view class="demo-layout bg-purple-light">{{item.feedback_department.name}}</view>
</u-col>
<u-col span="3">
<view class="demo-layout bg-purple">问题内容</view>
</u-col>
<u-col span="3">
<view class="demo-layout bg-purple-light">{{item.created_at}}</view>
</u-col>
</u-row>
<u-row gutter="16">
<u-col span="3">
<view class="demo-layout bg-purple">反馈科室</view>
</u-col>
<u-col span="3">
<view class="demo-layout bg-purple-light">{{item.feedback_department.name}}</view>
</u-col>
<u-col span="3">
<view class="demo-layout bg-purple">提交日期</view>
</u-col>
<u-col span="3">
<view class="demo-layout bg-purple-light">{{item.created_at}}</view>
</u-col>
</u-row>
<u-row gutter="16">
<u-col span="3">
<view class="demo-layout bg-purple">描述</view>
</u-col>
<u-col span="9">
<view class="demo-layout bg-purple-light">{{item.content}}</view>
</u-col>
</u-row>
</view>
<view class="footer" slot="foot">
<block >
<u-button type="primary" size="mini"
@click="toOperate(item.id)" :ripple="true">工单处理
</u-button>
</block>
<block >
<u-button type="primary" size="mini" @click="toAssin(item.id)"
:custom-style="customStyle" :ripple="true">工单分配
</u-button>
</block>
</view>
</u-card>
</block>
<u-empty text="暂无数据" margin-top="200" v-if="dataList.length==0" mode="list"></u-empty>
</view>
</view>
</template>
<script>
const img = '../../../static/img/logo.png';
export default {
data() {
return {
latitude: 23.099994,
longitude: 113.324520,
background: {
backgroundColor: '#007AFF'
},
mask: true,
dataList: [],
thumb: "/static/img/location.png",
currentPage: 0,
customStyle: {
marginLeft: '20px'
},
currentRole: "inspector", //inspectormanageroperator
value1Arr: [],
value1: "",
value2: '',
value3: '',
value3v: '',
keyword: "",
title: "",
stat: [],
options1: [],
options2: [],
options3: [{
label: "所有",
value: "所有",
v: ""
}, {
label: "待处理",
value: "待处理",
v: "save"
}, {
label: "处理中",
value: "处理中",
v: "ongong"
}, {
label: "已处理",
value: "已处理",
v: "finashed"
}]
}
},
onReady() {
this._mapContext = uni.createMapContext("map", this);
// on.("markerClusterCreate", (e) => {})
this._mapContext.initMarkerCluster({
enableDefaultStyle: false,
zoomOnClick: true,
gridSize: 60,
complete(res) {
console.log('initMarkerCluster', res)
onReachBottom: function(e) {
this.loadPage(this.currentPage + 1);
},
onPullDownRefresh: function(e) {
this.loadPage(1);
},
onShow: function() {
var that = this;
},
onLoad(options) {
this.loadPage(1);
},
methods: {
toChangeStatus: function(value) {
var jsonSearch = this.options3.filter(function(e) {
return e.value == value;
});
this.value3v = jsonSearch[0].v;
console.log(jsonSearch)
this.loadPage(1)
this.$refs.uDropdown.close();
},
tosearch() {
this.value1Arr = [];
for (var m of this.options1) {
if (m.active) {
this.value1Arr.push(m.value);
}
}
});
this.loadPage(1)
this.$refs.uDropdown.close();
},
tagClick(index) {
this.options1[index].active = !this.options1[index].active;
},
loadAreaList: function() {
var that = this;
that.options1 = [];
this.util.request({
api: 'worker/get-zones',
utilSuccess: function(res) {
for (var m of res) {
that.options1.push({
label: m.name,
value: m.id,
active: false
});
}
},
utilFail: function(res) {
console.log(res)
}
});
},
this._mapContext.on("markerClusterCreate", (e) => {
console.log("markerClusterCreate", e);
});
toAssin: function(id) {
uni.navigateTo({
url: "../assign/assign?id=" + id
})
},
toOperate: function(id) {
uni.navigateTo({
url: "../operate/operate?id=" + id
})
},
add: function() {
uni.navigateTo({
url: "../addPatrol/addPatrol"
})
},
todetail: function(id) {
uni.navigateTo({
url: "../patrolInfo/info?id=" + id
})
},
loadPage: function(page) {
uni.hideKeyboard()
var that = this;
this.util.request({
bindThis: that,
api: '/api/mobile/common-inspection/index',
customLoading: false,
data: {
page: page,
page_size: 5,
keyword: that.keyword
},
utilSuccess: function(r) {
var res = r.data;
uni.stopPullDownRefresh(); // < ,
this.addMarkers();
},
methods: {
var hasNoMore = that.dataList.length < 5 && page > 1;
if (hasNoMore || res.length == 0 && page > 1) {
//
uni.showToast({
title: '已加载到最后一页',
icon: 'none'
});
return;
}
var dataList = that.dataList;
addMarkers() {
const marker = {
id: 1,
iconPath: img,
width: 50,
height: 50,
joinCluster: true, //
label: {
width: 50,
height: 30,
borderWidth: 1,
borderRadius: 10,
bgColor: '#ffffff'
}
};
const positions = [{
latitude: 23.099994,
longitude: 113.324520,
}, {
latitude: 23.099994,
longitude: 113.322520,
}, {
latitude: 23.099994,
longitude: 113.326520,
}, {
latitude: 23.096994,
longitude: 113.329520,
}]
if (page == 1) {
dataList = res;
} else {
dataList.push(...res);
}
for (var m of dataList) {
m.created_at = m.created_at.split("T")[0]
}
console.log(dataList)
const markers = []
that.currentPage = page;
that.dataList = dataList;
},
utilFail: function(res) {
uni.stopPullDownRefresh();
positions.forEach((p, i) => {
const newMarker = Object.assign(marker, p)
newMarker.id = i + 1
newMarker.label.content = `label ${i + 1}`
markers.push(newMarker)
if (page == 1) {
this._mapContext.addMarkers({
markers,
clear: false,
complete(res) {
console.log('addMarkers', res)
that.currentPage = page;
}
})
})
this.util.alert(res);
}
});
}
}
}
</script>
<style>
.content {
flex: 1;
.boxContent {
background: #f3f4f6;
min-height: 100vh;
}
.map {
flex: 1;
.footer {
display: flex;
justify-content: flex-end;
}
.box-header {
position: fixed;
top: 0;
width: 100%;
z-index: 99;
}
.u-row {
margin: 10rpx 0;
font-size: 28rpx;
}
.u-card{
z-index: 1;
}
</style>
<style scoped lang="scss">
.search-wrap {
background: #007AFF;
padding: 20rpx;
}
.u-config-wrap {
padding: 30rpx;
}
.bg-purple {
font-weight: bold;
}
.slot-content {
background-color: #FFFFFF;
padding: 24rpx;
.item-box {
margin-bottom: 50rpx;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.item {
border: 1px solid $u-type-primary;
color: $u-type-primary;
padding: 8rpx 40rpx;
border-radius: 100rpx;
margin-top: 30rpx;
}
.active {
color: #FFFFFF;
background-color: $u-type-primary;
}
}
}
</style>

@ -1,24 +1,35 @@
<template>
<view class="content">
<u-form :model="form" ref="uForm">
<u-form-item label="问题类型" label-position="top">
<u-form-item label="问题类型" label-position="top" prop="typeName" required>
<u-input v-model="form.typeName" type="select" :border="true" @click="typeshow = true" />
<u-select v-model="typeshow" mode="single-column" value-name="id" label-name="value" :list="plist"
@confirm="confirmType"></u-select>
</u-form-item>
<u-form-item label="问题内容" label-position="top">
<u-form-item label="问题内容" label-position="top" prop="contentName" required>
<u-input v-model="form.contentName" type="select" :border="true" @click="contentshow = true" />
<u-select v-model="contentshow" mode="single-column" value-name="id" label-name="value" :list="list" @confirm="confirmContent"></u-select>
<u-select v-model="contentshow" mode="single-column" value-name="id" label-name="value" :list="list"
@confirm="confirmContent"></u-select>
</u-form-item>
<u-form-item label="位置" label-position="top">
<u-form-item label="位置" label-position="top" required>
<text>江苏省苏州市通园路66号</text>
<u-button shape="square" slot='right' size="mini" @click="toshowMap" type="info">重新获取</u-button>
</u-form-item>
<u-form-item label-position="top" label="描述" prop="intro">
<u-input v-model="form.intro" type='textarea' height='100' :border="true" />
<u-form-item label-position="top" label="描述" prop="content">
<u-input v-model="form.content" type='textarea' height='100' :border="true" />
</u-form-item>
<u-form-item label-position="top" label="附件上传" prop="intro">
<u-upload ref="uUpload" :action="action" upload-text="" :show-tips="false"></u-upload>
<u-form-item label-position="top" label="附件上传">
<u-upload ref="uUpload" multiple :maxCount="10" :action="action" upload-text=""
:previewFullImage="true" :form-data="otherData" :show-tips="false" @on-uploaded="toupload"
@on-remove="toremove">
</u-upload>
</u-form-item>
<u-form-item label="反馈科室" label-position="top" required>
<u-input v-model="form.unitName" placeholder="请选择反馈科室" type="select" :border="true"
@click="unitshow = true" />
<u-select v-model="unitshow" mode="single-column" value-name="id" label-name="name" :list="listUnit"
@confirm="confirmUnit"></u-select>
</u-form-item>
</u-form>
<u-button type="primary" @click="submit"></u-button>
@ -40,6 +51,10 @@
export default {
data() {
return {
otherData: {
token: ""
},
unitshow: false,
showMap: false,
typeshow: false,
contentshow: false,
@ -47,14 +62,37 @@
location: {},
plist: [],
list: [],
listUnit: [],
form: {
type: "",
content: "",
unitName: "",
ask_type_id: "",
ask_content_id: "",
typeName: "",
contentName: ""
contentName: "",
content: "",
feedback_department_id: "",
longitude: "",
latitude: "",
files_list: [],
address: ""
},
width: 300,
height: 300
height: 300,
action: "",
rules: {
typeName: [{
required: true,
message: '请选择类型',
//
trigger: ['change', 'blur'],
}],
contentName: [{
required: true,
message: '请选择内容',
//
trigger: ['change', 'blur'],
}]
}
}
},
onLoad() {
@ -64,14 +102,20 @@
}, function(res) {
that.plist = res;
});
this.action = this.util.HOST + "/api/mobile/upload-file";
this.otherData.token = uni.getStorageSync("userInfo_token").access_token;
this.loadUnit();
},
onReady() {
this.$refs.uForm.setRules(this.rules);
this._mapContext = uni.createMapContext("map", this);
let that = this;
uni.getLocation({
type: "gcj02",
success(res) {
that.location = res;
that.form.latitude = res.latitude;
that.form.longitude = res.longitude;
}
})
uni.getSystemInfo({
@ -83,6 +127,31 @@
},
methods: {
toremove(index, lists, nam) {
console.log(lists);
let list = [];
for (var m of lists) {
list.push({
upload_id: m.response.id
})
}
this.form.files_list = list;
},
toupload(lists, name) {
console.log(lists)
let list = [];
for (var m of lists) {
list.push({
upload_id: m.response.id
})
}
this.form.files_list = list;
},
confirmUnit(e) {
var that = this;
this.form.feedback_department_id = e[0].value
this.form.unitName = e[0].label
},
loadType(data, call) {
let that = this;
this.util.request({
@ -96,14 +165,59 @@
}
});
},
loadUnit() {
let that = this;
this.util.request({
api: '/api/mobile/other/department-list',
utilSuccess: function(res) {
that.listUnit = res;
},
utilFail: function(res) {
this.util.alert(res);
}
});
},
toshowMap() {
this.showMap = true;
this.addMaker();
},
submit() {},
submit() {
let that = this;
this.$refs.uForm.validate(valid => {
if (valid) {
console.log('验证通过');
that.util.request({
api: '/api/mobile/common-inspection/store',
method: "POST",
data: that.form,
utilSuccess: function(res) {
uni.showToast({
icon: "none",
title: "提交成功",
complete() {
that.afterSubmit(res);
},
duration: 2000
})
},
utilFail: function(res) {
this.util.alert(res);
}
});
} else {
console.log('验证失败');
}
});
},
afterSubmit(res) {
uni.redirectTo({
url: "../generalList/generalList"
})
},
confirmType(e) {
var that = this;
this.form.type = e[0].value
this.form.ask_type_id = e[0].value
this.form.typeName = e[0].label
this.loadType({
pid: e[0].value
@ -112,7 +226,7 @@
})
},
confirmContent(e) {
this.form.content = e[0].value
this.form.ask_content_id = e[0].value
this.form.contentName = e[0].label
},
addMaker() {

@ -0,0 +1,8 @@
<template>
</template>
<script>
</script>
<style>
</style>

@ -47,6 +47,14 @@
"navigationStyle": "custom"
}
}, {
"path": "generalPatrol/viewPatrol",
"style": {
"navigationBarTitleText": "通用巡查",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}]
}, {
"root": "packageB/pages",

@ -2,7 +2,8 @@
<view class="wrap">
<u-row gutter="16" justify="space-between">
<u-col span="12">
<view class="demo-layout bg-blue" style="text-align: left;padding-left: 20rpx;">当前登录人张三</view>
<view class="demo-layout bg-blue" style="text-align: left;padding-left: 20rpx;">当前登录人{{userInfo.name}}
</view>
</u-col>
</u-row>
<u-row gutter="16">
@ -50,13 +51,27 @@
export default {
data() {
return {
title: ''
title: '',
userInfo: {}
}
},
onLoad() {
this.loadInfo();
},
methods: {
loadInfo() {
let that = this;
this.util.request({
api: '/api/mobile/auth/me',
method: 'POST',
utilSuccess: function(res) {
that.userInfo = res;
},
utilFail: function(res) {
that.util.alert(res);
}
});
},
toview(type) {
let url = "/packageA/pages/generalPatrol/generalPatrol";
if (type == 2) {

@ -7,7 +7,7 @@
<view class="loginBox">
<u-field v-model="username" label-width=0 icon="account" placeholder="请填写登陆名">
</u-field>
<u-field v-model="password" label-width=0 icon="lock" password=true placeholder="请填写密码">
<u-field v-model="password" label-width=0 icon="lock" :password="true" placeholder="请填写密码">
</u-field>
</view>
@ -22,29 +22,12 @@
export default {
data() {
return {
username: '',
password: ''
username: 'test',
password: 'Admin2022'
}
},
onLoad: function() {
var user = uni.getStorageSync('userInfo');
if (!util.isNull(user.access_token)) {
util.request({
api: 'worker/check-token',
utilSuccess: function(res) {
if (res.token_available) {
uni.redirectTo({
url: '/pages/index/index'
});
}
},
utilFail: function(res) {
console.log(res)
}
});
}
},
methods: {
@ -62,15 +45,15 @@
}
util.request({
api: 'worker/login-by-username',
api: '/api/mobile/auth/login',
method: 'POST',
data: {
'mobile': that.username,
'username': that.username,
'password': that.password
},
utilSuccess: function(res) {
console.log(res)
uni.setStorageSync('userInfo', res);
uni.setStorageSync('userInfo_token', res);
uni.redirectTo({
url: '/pages/index/index'
});

@ -1,22 +1,126 @@
<template>
<view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
<template>
<view class="wrap">
<u-row gutter="16" justify="space-between">
<u-col span="12">
<view class="demo-layout bg-blue" style="text-align: left;padding-left: 20rpx;">当前登录人{{userInfo.name}}
</view>
</u-col>
</u-row>
<u-row gutter="16">
<u-col span="6">
<view class="demo-layout bg-purple-light">
<text class="iconfont icon-guanxianxuncha"></text>
<text class="navtxt">我的巡查</text>
</view>
</u-col>
<u-col span="6">
<view class="demo-layout bg-purple">
<text class="iconfont icon-guanxianyanghu"></text>
<text class="navtxt">我的养护</text>
</view>
</u-col>
</u-row>
<u-row gutter="16">
<u-col span="12">
<view class="demo-layout bg-purple-light">
<text class="iconfont icon-zaixianjiance"></text>
<text class="navtxt">我的日常监督巡查</text>
</view>
</u-col>
</u-row>
<u-row gutter="16" justify="space-between">
<u-col span="8">
<view class="demo-layout bg-purple" @click="toview(1)">
<text class="iconfont icon-caidanguanli"></text>
<text class="navtxt">我的通用巡查</text>
</view>
</u-col>
</u-row>
</view>
</template>
<script>
export default {
data() {
return {
title: '',
userInfo: {}
}
},
onLoad() {
this.loadInfo();
},
methods: {
loadInfo() {
let that = this;
this.util.request({
api: '/api/mobile/auth/me',
method: 'POST',
utilSuccess: function(res) {
that.userInfo = res;
},
utilFail: function(res) {
that.util.alert(res);
}
});
},
toview(type) {
let url = "/packageA/pages/generalList/generalList";
if (type == 2) {
url = "/pages/mine/mine"
}
uni.navigateTo({
url: url
})
}
}
}
</script>
<style scoped lang="scss">
.wrap {
padding: 24rpx;
}
.u-row {
margin: 40rpx 0;
}
.demo-layout {
border-radius: 8rpx;
text-align: center;
display: flex;
flex-direction: column;
padding: 20rpx 0rpx;
}
.navtxt {
margin-top: 20rpx;
color: #000000;
}
.iconfont {
color: #338de3;
font-size: 64rpx;
}
.bg-purple {
background: #d3dce6;
}
.bg-blue {
background: #338de3;
color: #fff;
}
.bg-purple-light {
background: #e5e9f2;
}
.bg-purple-dark {
background: #99a9bf;
}
</style>

@ -1,11 +0,0 @@
import WeChat from "./WeChat";
export default class BasePage {
constructor() {
this.data = {};
}
onLoad(o) {
console.log('BasePage loaded');
}
}

@ -1,10 +0,0 @@
// 小程序全局对象
const WeChat = {};
WeChat.Page = Page; // 注册页面
WeChat.register = function (PageClass) {
let page = new PageClass();
WeChat.Page(page);
};
export default WeChat;

File diff suppressed because it is too large Load Diff

@ -4,7 +4,8 @@ const HOSTARR = {
'production': 'http://118.31.104.155:9003'
}; // 审核状态
const HOST = HOSTARR[process.env.NODE_ENV]; //"https://tiantianxinye.365care.langye.net/";//HOSTARR[process.env.NODE_ENV];//
const HOST = HOSTARR[process.env
.NODE_ENV]; //"https://tiantianxinye.365care.langye.net/";//HOSTARR[process.env.NODE_ENV];//
const formatTime = date => {
@ -14,13 +15,77 @@ const formatTime = date => {
return [year, month, day].map(formatNumber).join('-');
};
const user_info_key = "userInfo_token";
const user_key = "userInfo";
const getUserInfo = (cb, refresh) => {
cb = cb || function() {}
refresh = refresh || false
if (!refresh) {
let user_info = uni.getStorageSync(user_key)
if (!isNull(user_info)) {
cb(user_info)
return
}
}
request({
api: '/api/mobile/user/show',
utilSuccess: function(res) {
uni.setStorageSync(user_key, res)
cb(res)
},
utilFail: function(res) {}
})
}
const getOpenidInfo = (cb, refresh) => {
cb = cb || function() {}
refresh = refresh || false
if (!refresh) {
let user_info = uni.getStorageSync(user_info_key)
if (!isNull(user_info)) {
cb(user_info)
return
}
}
uni.login({
provider: 'weixin',
success: (res) => {
console.log(res.code);
let url = HOST + '/api/mobile/user/login?code=' + res.code;
uni.request({
url: url,
method: 'GET',
success: result => {
let user_info = result.data
uni.setStorageSync(user_info_key, user_info)
cb(user_info)
}
});
}
});
}
const stateArr = {
"save": "待处理",
"ongoing": "处理中",
"finished": "已处理"
const getUserProfile = (cb) => {
cb = cb || function() {}
wx.getUserProfile({
desc: '用于完善会员资料',
success: (res) => {
uni.setStorageSync('user_profile', res.userInfo)
cb(res.userInfo)
}
})
}
const formatTimeAll = date => {
const year = date.getFullYear();
const month = date.getMonth() + 1;
@ -46,6 +111,23 @@ const alert = msg => {
});
}; // 订单状态
const toast = msg => {
// setTimeout(function() {
// uni.showToast({
// icon: "none",
// title: msg,
// duration: 2000
// })
// }, 2000)
uni.showModal({
title: '',
content: msg,
showCancel: false
});
}; // 订单状态
const orderStatusDic = {
'0': '待确认',
@ -82,7 +164,7 @@ const request = options => {
//'content-type': 'application/json'
}; // 如果已登录,请求中拼openId
var access_token = uni.getStorageSync('userInfo').access_token;
var access_token = uni.getStorageSync(user_info_key).access_token;
if (isLogin()) {
options.data = {
@ -100,6 +182,7 @@ const request = options => {
uni.request({
...options,
success: function(res) {
uni.hideLoading();
if (res.statusCode != 200) {
if (options.utilFail != undefined) {
if (res.statusCode == 401) {
@ -112,11 +195,12 @@ const request = options => {
}
}
} else {
if (!isNull(res.data.errorcode) || res.data.errorcode == 0) {
if (res.data.hasOwnProperty("errcode")) {
if (options.utilFail != undefined) {
options.utilFail(res.data.errormsg || '接口发生未知错误');
options.utilFail(res.data.errmsg || '接口发生未知错误');
} else {
options.utilFail(res.data.errormsg);
options.utilFail(res.data.errmsg);
}
} else {
if (options.utilSuccess != undefined) {
@ -129,7 +213,7 @@ const request = options => {
complete: function(res) {
if (!options.customLoading) {
uni.hideNavigationBarLoading();
uni.hideLoading();
} else {
// 当前页面请求数量-1
if (options.bindThis) {
@ -143,27 +227,11 @@ const request = options => {
}; // 提交formID封装
const uploadFormID = formID => {
var timestamp = Math.floor(new Date().getTime() / 1000);
request({
api: 'WeChat/SaveFormID',
method: 'POST',
data: {
FormIDs: formID
},
utilSuccess: function(res) {
console.log('上传formID成功');
},
utilFail: function(err) {
console.log('上传formID失败');
}
});
}; // 支付
const payOrder = (orderID, orderType, success, fail) => {
uni.request({
url: HOST + 'WxPay/ToPay?openId=' + uni.getStorageSync('userInfo').WeChatOpenID + '&orderId=' +
url: HOST + 'WxPay/ToPay?openId=' + uni.getStorageSync(user_info_key).WeChatOpenID +
'&orderId=' +
orderID + '&OrderType=' + orderType,
method: 'GET',
header: {
@ -226,128 +294,16 @@ const payOrder = (orderID, orderType, success, fail) => {
});
}; // 判断是否已登录同时有open-id和PhoneNum, 则认为已登录)
const scanPay = (orderID, amt, scan, type, success, fail) => {
var access_token = uni.getStorageSync('userInfo').access_token;
console.log("1.支付进入")
var data = {
token: access_token,
order_id: orderID,
money: amt,
auth_code: scan,
type: type
};
console.log("2.参数")
console.log(data)
uni.showLoading({
title: '正在加载',
});
uni.request({
url: HOST + 'manager/scan-pay/' + orderID,
method: 'POST',
data: {
token: access_token,
order_id: orderID,
money: amt,
auth_code: scan,
type: type
},
header: {
'content-type': 'application/json'
},
success: function(res) {
uni.hideLoading();
if (isNull(res.data.errorcode)) {
success(res);
console.log("3.支付成功")
console.log(res)
} else {
alert("支付失败:" + res.data.errormsg);
console.log("4.支付失败")
console.log(res)
}
},
fail: function(err) {
fail('当前网络状况不好');
console.log("4.支付失败")
console.log(res)
}
});
}; // 判断是否已登录同时有open-id和PhoneNum, 则认为已登录)
const isLogin = () => {
var userInfo = uni.getStorageSync('userInfo');
var userInfo = uni.getStorageSync(user_info_key);
return !isNull(userInfo.access_token);
}; // 判断是否为空
const getfile = (id, success, fail) => {
var access_token = uni.getStorageSync('userInfo').access_token;
var url = HOST + 'manager/get-attachment/' + id + '?token=' + access_token;
success(url);
// uni.request({
// url: HOST + 'manager/get-attachment/' + id + '?token=' + access_token,
// method: 'GET',
// header: {
// 'content-type': 'application/json'
// },
// success: function(res) {
// success(res); // 发送成功通知
// },
// fail: function(res) {
// fail(res);
// }
// });
};
//获取订单详情
const getOrderInfo = (id, success, fail) => {
var access_token = uni.getStorageSync('userInfo').access_token;
var url = HOST + 'manager/get-order/' + id + '?token=' + access_token;
uni.request({
url: url,
method: 'GET',
header: {
'content-type': 'application/json'
},
success: function(res) {
res.data.factorjson = JSON.parse(res.data.factors);
success(res); // 发送成功通知
},
fail: function(res) {
fail(res);
}
});
};
//获取订单详情
const getOrderItemInfo = (id, success, fail) => {
var access_token = uni.getStorageSync('userInfo').access_token;
var url = HOST + 'manager/get-order-item/' + id + '?token=' + access_token;
uni.request({
url: url,
method: 'GET',
header: {
'content-type': 'application/json'
},
success: function(res) {
res.data.factorjson = JSON.parse(res.data.factors);
success(res.data); // 发送成功通知
},
fail: function(res) {
fail(res);
}
});
};
const isNull = p => {
return p == '' || p == undefined || p == null || p == 'undefined' || p == 'null';
}; // 正则
const phoneRegex = /^1\d{10}$/;
const idCardRegex = /^\d{17}([0-9]|X)$/; // 去掉特殊字符
@ -374,74 +330,6 @@ const randomStr = length => {
return ret;
}; // proType对应的中文描述
const proTypeDic = {}; // 排序字段
const orderByArr = [{
id: '1',
name: '近期销量最高'
}, // { id: '2', name: '产品评价最高' },
{
id: '3',
name: '价格由高到低'
}, {
id: '4',
name: '价格由低到高'
}
]; // 日期天数
const travelDaysArr = [{
id: '1',
name: '2日',
minDay: 2,
maxDay: 2
}, {
id: '2',
name: '3日',
minDay: 3,
maxDay: 3
}, {
id: '3',
name: '4日',
minDay: 4,
maxDay: 4
}, {
id: '4',
name: '5日',
minDay: 5,
maxDay: 5
}, {
id: '5',
name: '6日',
minDay: 6,
maxDay: 6
}, {
id: '6',
name: '7日',
minDay: 7,
maxDay: 7
}, {
id: '7',
name: '8日',
minDay: 8,
maxDay: 8
}, {
id: '8',
name: '9日',
minDay: 9,
maxDay: 9
}, {
id: '9',
name: '10日',
minDay: 10,
maxDay: 10
}, {
id: '10',
name: '10日以上',
minDay: 11,
maxDay: 0
}]; // 中文星期
const weekdayArr = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; // 是否合法的身份证
const isValidCardID = cardID => {
@ -648,25 +536,22 @@ module.exports = {
formatTimeAll: formatTimeAll,
formatNumber: formatNumber,
alert: alert,
getfile: getfile,
getOpenidInfo: getOpenidInfo,
request: request,
uploadFormID: uploadFormID,
payOrder: payOrder,
scanPay: scanPay,
isLogin: isLogin,
isNull: isNull,
phoneRegex: phoneRegex,
idCardRegex: idCardRegex,
filterSpecialChars: filterSpecialChars,
randomStr: randomStr,
proTypeDic: proTypeDic,
orderByArr: orderByArr,
travelDaysArr: travelDaysArr,
weekdayArr: weekdayArr,
Base64: Base64,
orderStatusDic: orderStatusDic,
auditStatusDic: auditStatusDic,
getOrderInfo: getOrderInfo,
getOrderItemInfo: getOrderItemInfo,
stateArr: stateArr
getUserProfile: getUserProfile,
getUserInfo: getUserInfo,
toast: toast,
isValidCardID:isValidCardID
};

@ -1,120 +0,0 @@
// 从2018-09-01 15:30:27 中提取出 15:30
var hmTimeFrom = function (dateStr) {
return dateStr.substring(11, 16);
}; // 算出2个dateStr间的时间间隔例如 2018-09-01 15:30:27 到 2018-09-02 03:28:09,中间相差'd天h小时m分钟'
var intervalBetween = function (startDateStr, endDateStr) {
var startDate = dateFromDateStr(startDateStr);
var endDate = dateFromDateStr(endDateStr);
var startTimestamp = startDate.getTime();
var endTimestamp = endDate.getTime();
var deltaTimestamp = Math.floor((endTimestamp - startTimestamp) / 1000);
var days = Math.floor(deltaTimestamp / (24 * 3600));
var hours = Math.floor((deltaTimestamp - days * 24 * 3600) / 3600);
var minutes = Math.floor((deltaTimestamp - days * 24 * 3600 - hours * 3600) / 60);
var ret = '';
if (days > 0) ret += days + 'd';
if (hours > 0) ret += hours + 'h';
if (minutes > 0) ret += minutes + 'm';
return ret;
}; // 算出24小时内的2个时间间隔例如 12:00 到 15:30,中间相差'h小时m分钟'
var intervalBetween24h = function (startDateStr, endDateStr, isCN) {
var startComponents = startDateStr.split(':');
var endComponents = endDateStr.split(':');
var startH = startComponents[0];
var startM = startComponents[1];
var endH = endComponents[0];
var endM = endComponents[1];
var deltaTimestamp = 0;
if (endH > startH || endH == startH && endM > startM) {
// 不跨天
// Start
var startDate = getDate(2018, 1, 1, startH, startM, 0);
var startTimestamp = startDate.getTime(); // End
var endDate = getDate(2018, 1, 1, endH, endM, 0);
var endTimestamp = endDate.getTime(); // delta
deltaTimestamp = Math.floor((endTimestamp - startTimestamp) / 1000);
} else {
// 跨天
// Start
var startDate = getDate(2018, 1, 1, startH, startM, 0);
var startTimestamp = startDate.getTime(); // End
var endDate = getDate(2018, 1, 2, endH, endM, 0);
var endTimestamp = endDate.getTime(); // delta
deltaTimestamp = Math.floor((endTimestamp - startTimestamp) / 1000);
} // 拼接返回值
var days = Math.floor(deltaTimestamp / (24 * 3600));
var hours = Math.floor((deltaTimestamp - days * 24 * 3600) / 3600);
var minutes = Math.floor((deltaTimestamp - days * 24 * 3600 - hours * 3600) / 60);
var ret = '';
if (isCN) {
if (days > 0) ret += days + '天';
if (hours > 0) ret += hours + '小时';
if (minutes > 0) ret += minutes + '分钟';
} else {
if (days > 0) ret += days + 'd';
if (hours > 0) ret += hours + 'h';
if (minutes > 0) ret += minutes + 'm';
}
return ret;
}; // dateStr转Date类型
var dateFromDateStr = function (dateStr) {
var components = dateStr.split(' ');
var dateComponents = components[0].split('-');
var timeComponents = components[1].split(':');
var totalComponents = dateComponents.concat(timeComponents);
return getDate(parseInt(totalComponents[0]), parseInt(totalComponents[1]) - 1, parseInt(totalComponents[2]), parseInt(totalComponents[3]), parseInt(totalComponents[4]), parseInt(totalComponents[5]), 0);
}; // 判断是否跨天, 例如 12:00 到 11:30 为跨天
var isCrossDay = function (startDateStr, endDateStr) {
var startComponents = startDateStr.split(':');
var endComponents = endDateStr.split(':');
var startH = startComponents[0];
var startM = startComponents[1];
var endH = endComponents[0];
var endM = endComponents[1];
return endH < startH || endH == startH && endM < startM;
};
var numberUtil = {
numberFormat: function (value) {
var v = parseFloat(value); //强转Int毕竟有可能返回是String类型的数字
return v.toFixed(2);
}
};
var rorderStatusDic = function (status) {
var orderStatusDic = {
'0': '待确认',
'10': '待派单',
'20': '进行中',
'100': '已完成'
};
return orderStatusDic[status];
};
module.exports = {
hmTimeFrom: hmTimeFrom,
intervalBetween: intervalBetween,
intervalBetween24h: intervalBetween24h,
isCrossDay: isCrossDay,
numberFormat: numberUtil.numberFormat,
//暴露接口调用
rorderStatusDic: rorderStatusDic
};

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save