updao
This commit is contained in:
parent
08109a34e6
commit
50ac29eebd
|
|
@ -524,18 +524,18 @@
|
||||||
gap: 1em;
|
gap: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.yearmonth .today {
|
|
||||||
flex: none;
|
|
||||||
padding-right: 0.5em;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.yearmonth>.itm {
|
.yearmonth>.itm {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.yearmonth .today {
|
||||||
|
flex: none;
|
||||||
|
padding-right: 0.5em;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
.yearmonth .maintxt {
|
.yearmonth .maintxt {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<input v-if="hasmore" type="hidden" :name="name+'_unit'" :value="unit" style="display:none;" />
|
<input v-if="hasmore" type="hidden" :name="name+'_unit'" :value="unit" style="display:none;" />
|
||||||
<ciy-input @change="chgnum" :disabled="disabled" style="width:4em;" v-model="num"></ciy-input>
|
<ciy-input @change="chgnum" :disabled="disabled" style="width:4em;" v-model="num"></ciy-input>
|
||||||
<view class="_unit">
|
<view class="_unit">
|
||||||
<ciy-select @change="chgunit" :disabled="disabled" v-model="unit" :rows="4" align="center" :range="range"></ciy-select>
|
<ciy-select @change="chgunit" :disabled="disabled" v-model="unit" :rows="trowcnt" align="center" :range="trange"></ciy-select>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -46,23 +46,14 @@
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
range: {
|
||||||
|
type: String,
|
||||||
|
default: 'month,day,min'
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
v: '',
|
v: '',
|
||||||
range: [{
|
|
||||||
id: 'month',
|
|
||||||
name: this.lang('cyc.month')
|
|
||||||
}, {
|
|
||||||
id: 'day',
|
|
||||||
name: this.lang('cyc.day')
|
|
||||||
}, {
|
|
||||||
id: 'min',
|
|
||||||
name: this.lang('cyc.min')
|
|
||||||
}, {
|
|
||||||
id: 'sec',
|
|
||||||
name: this.lang('cyc.sec')
|
|
||||||
}],
|
|
||||||
num: 0,
|
num: 0,
|
||||||
unit: ''
|
unit: ''
|
||||||
};
|
};
|
||||||
|
|
@ -85,12 +76,31 @@
|
||||||
return -this.toint(this.num);
|
return -this.toint(this.num);
|
||||||
} else if (this.unit == 'day') {
|
} else if (this.unit == 'day') {
|
||||||
return this.toint(this.num) * 86400;
|
return this.toint(this.num) * 86400;
|
||||||
|
} else if (this.unit == 'hour') {
|
||||||
|
return this.toint(this.num) * 3600;
|
||||||
} else if (this.unit == 'min') {
|
} else if (this.unit == 'min') {
|
||||||
return this.toint(this.num) * 60;
|
return this.toint(this.num) * 60;
|
||||||
} else {
|
} else {
|
||||||
return this.num;
|
return this.num;
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
trange() {
|
||||||
|
var rg = [];
|
||||||
|
var rs = this.range.split(',');
|
||||||
|
for (var i = 0; i < rs.length; i++) {
|
||||||
|
rg.push({
|
||||||
|
id: rs[i],
|
||||||
|
name: this.lang('cyc.' + rs[i])
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return rg;
|
||||||
|
},
|
||||||
|
trowcnt() {
|
||||||
|
var cnt = this.range.split(',').length;
|
||||||
|
if(cnt > 4)
|
||||||
|
return 3;
|
||||||
|
return cnt;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.setvalue(this.value || this.modelValue);
|
this.setvalue(this.value || this.modelValue);
|
||||||
|
|
@ -117,6 +127,9 @@
|
||||||
} else if (vi % 86400 == 0) {
|
} else if (vi % 86400 == 0) {
|
||||||
unit = 'day';
|
unit = 'day';
|
||||||
num = this.toint(vi / 86400);
|
num = this.toint(vi / 86400);
|
||||||
|
} else if (vi % 3600 == 0) {
|
||||||
|
unit = 'hour';
|
||||||
|
num = this.toint(vi / 3600);
|
||||||
} else if (vi % 60 == 0) {
|
} else if (vi % 60 == 0) {
|
||||||
unit = 'min';
|
unit = 'min';
|
||||||
num = this.toint(vi / 60);
|
num = this.toint(vi / 60);
|
||||||
|
|
|
||||||
|
|
@ -74,9 +74,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
if (this.initevent) {
|
this.emit(this.innervalue, this.initevent ? 'init' : '');
|
||||||
this.emit(this.innervalue, 'init');
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
emit(val, from) {
|
emit(val, from) {
|
||||||
|
|
@ -91,11 +89,13 @@
|
||||||
this.$emit('update:modelValue', val);
|
this.$emit('update:modelValue', val);
|
||||||
} else {}
|
} else {}
|
||||||
this.tvalue = val;
|
this.tvalue = val;
|
||||||
this.$emit('change', {
|
if (from) {
|
||||||
name: this.name,
|
this.$emit('change', {
|
||||||
from: from,
|
name: this.name,
|
||||||
value: val
|
from: from,
|
||||||
});
|
value: val
|
||||||
|
});
|
||||||
|
}
|
||||||
this.old = val;
|
this.old = val;
|
||||||
},
|
},
|
||||||
textinput(e) {
|
textinput(e) {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
emits: ['change','update:modelValue'],
|
emits: ['change', 'update:modelValue'],
|
||||||
props: {
|
props: {
|
||||||
modelValue: {
|
modelValue: {
|
||||||
type: [String, Number],
|
type: [String, Number],
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
default: ''
|
default: ''
|
||||||
},
|
},
|
||||||
lis: {
|
lis: {
|
||||||
type: Array,
|
type: [String, Array],
|
||||||
default: []
|
default: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -76,6 +76,20 @@
|
||||||
id: '',
|
id: '',
|
||||||
name: this.all
|
name: this.all
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
if (typeof(this.lis) == 'string') {
|
||||||
|
const lis = this.lis.split(',');
|
||||||
|
for (let i = 0; i < lis.length; i++) {
|
||||||
|
const ls = lis[i].split('.');
|
||||||
|
if (ls.length < 2)
|
||||||
|
continue;
|
||||||
|
lst.push({
|
||||||
|
id: ls[0],
|
||||||
|
name: ls[1]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if (this.isarray(this.lis)) {
|
if (this.isarray(this.lis)) {
|
||||||
for (var i = 0; i < this.lis.length; i++)
|
for (var i = 0; i < this.lis.length; i++)
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@
|
||||||
._defshow {
|
._defshow {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
._defshow._left {
|
._defshow._left {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
<template>
|
||||||
|
<view style="display:inline-block;" :style="ciystyle">
|
||||||
|
<text :style="intstyle">{{p1}}</text>
|
||||||
|
<text :style="decstyle">{{p2}}</text>
|
||||||
|
<text :style="decstyle">{{unit}}</text>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
|
dec0: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
unit: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
ciystyle: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
intstyle: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
decstyle: {
|
||||||
|
type: String,
|
||||||
|
default: 'font-size:0.7em;'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
watch: {},
|
||||||
|
computed: {
|
||||||
|
p1() {
|
||||||
|
if (this.unit == '万元')
|
||||||
|
return this.toint(this.value / 1000000);
|
||||||
|
else
|
||||||
|
return this.toint(this.value / 100);
|
||||||
|
},
|
||||||
|
p2() {
|
||||||
|
if (this.unit == '万元')
|
||||||
|
return this.tonumdec(this.value / 1000000, this.dec0, 3);
|
||||||
|
else if (this.unit == '元')
|
||||||
|
return this.tonumdec(this.value / 100, this.dec0, 2);
|
||||||
|
else
|
||||||
|
return this.tonumdec(this.value / 100, this.dec0, 2);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {},
|
||||||
|
methods: {}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
v: '',
|
v: false,
|
||||||
anidatabg: {},
|
anidatabg: {},
|
||||||
anidatay: {},
|
anidatay: {},
|
||||||
anidatan: {},
|
anidatan: {},
|
||||||
|
|
|
||||||
|
|
@ -800,7 +800,7 @@ export default {
|
||||||
this.sysinfo = app.globalData._sysinfo;
|
this.sysinfo = app.globalData._sysinfo;
|
||||||
this.jsnurl = app.globalData.jsnurl;
|
this.jsnurl = app.globalData.jsnurl;
|
||||||
this.me = this.getme();
|
this.me = this.getme();
|
||||||
if(app.globalData.ciy_page_g)
|
if (app.globalData.ciy_page_g)
|
||||||
this.g = app.globalData.ciy_page_g;
|
this.g = app.globalData.ciy_page_g;
|
||||||
else
|
else
|
||||||
this.g = this.getstorage('g', {});
|
this.g = this.getstorage('g', {});
|
||||||
|
|
@ -833,6 +833,37 @@ export default {
|
||||||
opt.pagethis = this;
|
opt.pagethis = this;
|
||||||
return getApp().callajax(opt);
|
return getApp().callajax(opt);
|
||||||
},
|
},
|
||||||
|
calltxt(opt) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
opt = opt || {};
|
||||||
|
uni.request({
|
||||||
|
url: opt.url,
|
||||||
|
data: opt.data,
|
||||||
|
dataType: 'text',
|
||||||
|
method: opt.data ? 'POST' : 'GET',
|
||||||
|
header: opt.header,
|
||||||
|
fail: res => {
|
||||||
|
var errmsg = res.errMsg || 'nofind errMsg.';
|
||||||
|
if (errmsg.indexOf('fail abort') > 0)
|
||||||
|
errmsg = '网络信号不好';
|
||||||
|
else if (errmsg.indexOf('equest:fail timeout') > 0)
|
||||||
|
errmsg = '网络访问超时';
|
||||||
|
else if (errmsg.indexOf('equest:fail') > 0)
|
||||||
|
errmsg = '网络不可用';
|
||||||
|
return reject({
|
||||||
|
errmsg: errmsg
|
||||||
|
});
|
||||||
|
},
|
||||||
|
success: res => {
|
||||||
|
if (res.statusCode == 200)
|
||||||
|
return resolve(res.data);
|
||||||
|
return reject({
|
||||||
|
errmsg: res.data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
getme() {
|
getme() {
|
||||||
return getApp().getme();
|
return getApp().getme();
|
||||||
},
|
},
|
||||||
|
|
@ -893,7 +924,7 @@ export default {
|
||||||
animationDuration: 1000
|
animationDuration: 1000
|
||||||
});
|
});
|
||||||
} else if (url.substring(0, 1) == '*') {
|
} else if (url.substring(0, 1) == '*') {
|
||||||
this.alert(dataset.url.substring(1));
|
this.alert(url.substring(1));
|
||||||
} else {
|
} else {
|
||||||
if (url.substring(0, 1) == '$') {
|
if (url.substring(0, 1) == '$') {
|
||||||
url = url.substring(1);
|
url = url.substring(1);
|
||||||
|
|
@ -1323,17 +1354,25 @@ export default {
|
||||||
},
|
},
|
||||||
tonumdec(num, showzero, len) {
|
tonumdec(num, showzero, len) {
|
||||||
len = len || 2; // 与tofix不同点,小数长度不变,如 1.10
|
len = len || 2; // 与tofix不同点,小数长度不变,如 1.10
|
||||||
var m2 = Math.ceil((num - parseInt(num)) * 100);
|
var m2 = Math.round((num - parseInt(num)) * Math.pow(10, len));
|
||||||
if (m2 < 10)
|
if (m2 == 0) {
|
||||||
m2 = '0' + m2;
|
if (showzero)
|
||||||
else
|
return '.' + '0'.repeat(len);
|
||||||
m2 = m2 + '';
|
else
|
||||||
if (showzero)
|
return '';
|
||||||
return '.' + m2;
|
}
|
||||||
if (m2 == '00')
|
m2 = m2 + '';
|
||||||
return '';
|
if (m2.length < len)
|
||||||
else
|
m2 = '0'.repeat(len - m2.length) + m2;
|
||||||
return '.' + m2;
|
return '.' + m2;
|
||||||
|
},
|
||||||
|
tocciy(cciy) {
|
||||||
|
var hex = cciy.toString(16).toUpperCase();
|
||||||
|
hex = hex.substring(hex.length - 12);
|
||||||
|
hex = hex.replace(/^0+/, '');
|
||||||
|
if (hex.length < 7)
|
||||||
|
hex = '0'.repeat(7 - hex.length) + hex;
|
||||||
|
return 'cx...' + hex.substring(0, hex.length - 1);
|
||||||
},
|
},
|
||||||
tostr(obj) {
|
tostr(obj) {
|
||||||
if (!obj)
|
if (!obj)
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@
|
||||||
"query.btn_reset":"重置",
|
"query.btn_reset":"重置",
|
||||||
"query.btn_close":"关闭",
|
"query.btn_close":"关闭",
|
||||||
|
|
||||||
|
"page.btn_pub":"发布",
|
||||||
"page.btn_submit":"提交",
|
"page.btn_submit":"提交",
|
||||||
"page.btn_refresh":"刷新",
|
"page.btn_refresh":"刷新",
|
||||||
"page.loading":"加载中",
|
"page.loading":"加载中",
|
||||||
|
|
@ -79,6 +80,7 @@
|
||||||
|
|
||||||
"cyc.month": "月",
|
"cyc.month": "月",
|
||||||
"cyc.day": "天",
|
"cyc.day": "天",
|
||||||
|
"cyc.hour": "小时",
|
||||||
"cyc.min": "分钟",
|
"cyc.min": "分钟",
|
||||||
"cyc.sec": "秒",
|
"cyc.sec": "秒",
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -252,6 +252,23 @@ text {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ciy-list .title {
|
||||||
|
position: relative;
|
||||||
|
color: var(--txt9);
|
||||||
|
font-weight: bold;
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ciy-list .title::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
left: -1em;
|
||||||
|
width: 0.5em;
|
||||||
|
height: 1.5em;
|
||||||
|
border-radius: 5px;
|
||||||
|
background: linear-gradient(-60deg, var(--man4), var(--man7));
|
||||||
|
}
|
||||||
|
|
||||||
.ciy-list .l0 {
|
.ciy-list .l0 {
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
padding-right: 6em;
|
padding-right: 6em;
|
||||||
|
|
@ -266,7 +283,6 @@ text {
|
||||||
.ciy-list .l2 {
|
.ciy-list .l2 {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
min-height: 2em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ciy-list .l2>label {
|
.ciy-list .l2>label {
|
||||||
|
|
@ -952,27 +968,27 @@ text {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.txt-left {
|
.txt-left.txt-left {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.txt-center {
|
.txt-center.txt-center {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.txt-right {
|
.txt-right.txt-right {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.txt-just {
|
.txt-just.txt-just {
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
}
|
}
|
||||||
|
|
||||||
.txt-nowrap {
|
.txt-nowrap.txt-nowrap {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.txt-over {
|
.txt-over.txt-over {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
|
||||||
|
<link href="/jscss/style.css" rel="stylesheet" type="text/css" />
|
||||||
|
<script type="text/javascript" charset="utf-8" src="/jscss/theme.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<form class="search" onsubmit="table.search(this,'btn');return false;">
|
||||||
|
<ul></ul>
|
||||||
|
<div>
|
||||||
|
<div class="sinps"></div>
|
||||||
|
<div class="sbtns">
|
||||||
|
<button class="lang btn" type="submit">查询</button>
|
||||||
|
<a class="lang btn" onclick="exportxls()">导出</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div class="table">
|
||||||
|
<div class="loading col-24">Loading...</div>
|
||||||
|
<div class="list"></div>
|
||||||
|
<div>
|
||||||
|
<div class="btmbtn">
|
||||||
|
<a class="lang btn def" onclick="ciyfn.select_all(table)">全选</a>
|
||||||
|
<a class="lang btn def" onclick="ciyfn.select_diff(table)">反选</a>
|
||||||
|
|
|
||||||
|
<a class="lang btn dag" onclick="ciyfn.select_callfunc(table, this, 'del','已选{n}条,是否批量删除?', {},function(json){table.delline(json)})">批量删除</a>
|
||||||
|
</div>
|
||||||
|
<div class="page"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="/jscss/ciy.js"></script>
|
||||||
|
<script type="text/javascript" src="/jscss/ciycmp.js"></script>
|
||||||
|
<script type="text/javascript" src="/jscss/ciycmp2.js"></script>
|
||||||
|
<script type="text/javascript" src="/jscss/ciytable.js"></script>
|
||||||
|
<script type="text/javascript" src="../common.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
'use strict';
|
||||||
|
var table;
|
||||||
|
var Glob = {};
|
||||||
|
ciyfn.pageload(function () {
|
||||||
|
//Glob.urlp = ciyfn.urlparam();
|
||||||
|
table = new ciyclass.table({
|
||||||
|
dom: '.table'
|
||||||
|
, url: 'list'
|
||||||
|
, pagecount: 10
|
||||||
|
, fn_beforedata: function (json) {
|
||||||
|
ciyfn.fillsearch({
|
||||||
|
searchdom: '.search'
|
||||||
|
, data: json
|
||||||
|
, liall: '全部'
|
||||||
|
, lidata: 'cashietype'
|
||||||
|
, liclick: function (dom) {
|
||||||
|
table.search(dom, 'li');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
, fn_tdcontent: function (key, datashow, field, data) {
|
||||||
|
}
|
||||||
|
, fn_done: function (json) {
|
||||||
|
// table.mergecol('auditstatus');
|
||||||
|
// table.mergefix('总计', 'center', 6, 0, 8, 1);
|
||||||
|
// table.footertotal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
table.callpage(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
function getdata(id, act, cb) {
|
||||||
|
ciyfn.callfunc('getdata', { id: id, act: act }, function (json) {
|
||||||
|
cb(json);
|
||||||
|
});
|
||||||
|
// cb({ data: id == 0 ? {} : table.data[id] });
|
||||||
|
}
|
||||||
|
|
||||||
|
function exportxls() {
|
||||||
|
ciyfn.table_exportxls('exportxls', table, function (json) {
|
||||||
|
ciyfn.alert({
|
||||||
|
content: '<div style="text-align:center;"><span class="lang">导出数据已生成</span><br/><br/><a class="lang btn lg" href="' + json.url + '" target="_blank">下载数据</a></div>'
|
||||||
|
, btns: null
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,185 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace web\admin\ap;
|
||||||
|
|
||||||
|
class cash_ie {
|
||||||
|
static function setwhere($db, $post) {
|
||||||
|
$query = $post->get('query');
|
||||||
|
$csql = new \ciy\sql('ap_cash_ie');
|
||||||
|
$liid = objint($query, 'liid');
|
||||||
|
if ($liid > 0)
|
||||||
|
$csql->where('cashietype', $liid);
|
||||||
|
$val = objstr($query, 'vuser');
|
||||||
|
if (!empty($val)) {
|
||||||
|
$csqlt = new \ciy\sql('ap_user');
|
||||||
|
$csqlt->where('name like', $val);
|
||||||
|
$trow = $db->getone($csqlt);
|
||||||
|
if (is_array($trow)) {
|
||||||
|
$csql->where('vuser', $trow['id']);
|
||||||
|
$query['vuser'] = $trow['name'];
|
||||||
|
} else {
|
||||||
|
$csql->where('vuser=0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$csql->wherenumrange('iemoney', objstr($query, 'iemoney_1'), objstr($query, 'iemoney_2'), 100);
|
||||||
|
$csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
|
||||||
|
$csql->where('name like', objstr($query, 'name'));
|
||||||
|
$order = objstr($query, 'order', 'id desc');
|
||||||
|
$csql->order($order);
|
||||||
|
$query['order'] = $order;
|
||||||
|
return [$query, $csql];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function json_list() {
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
$post = new \ciy\post();
|
||||||
|
list($where, $csql) = self::setwhere($db, $post);
|
||||||
|
$pageno = $post->getint('pageno', 1);
|
||||||
|
$pagecount = $post->getint('pagecount', 10);
|
||||||
|
$csql->limit($pageno, $pagecount);
|
||||||
|
$mainrowcount = $post->getint('count');
|
||||||
|
$rows = $db->get($csql, $mainrowcount);
|
||||||
|
if($rows === false)
|
||||||
|
return errjson($db->error);
|
||||||
|
$ret = array('where' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
|
||||||
|
if ($post->getbool('field')) {
|
||||||
|
$field = array();
|
||||||
|
$fshow = $db->getfield($field, 'ap_cash_ie');
|
||||||
|
foreach ($field as $fr => $v) {
|
||||||
|
if (get('_' . $fr))
|
||||||
|
$field[$fr]['c'] = ',' . $field[$fr]['c'];
|
||||||
|
}
|
||||||
|
$ret['field'] = $field;
|
||||||
|
$ret['fshow'] = $fshow;
|
||||||
|
}
|
||||||
|
if ($post->getbool('once')) {
|
||||||
|
$ret['once'] = array();
|
||||||
|
$input = array();
|
||||||
|
$input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
|
||||||
|
$input[] = array('type' => 'num', 'form' => 'iemoney', 'name' => '金额', 'prop' => ' style="width:4em;"');
|
||||||
|
$input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '发生时间');
|
||||||
|
$input[] = array('type' => 'input', 'form' => 'name', 'name' => '摘要', 'prop' => ' style="width:8em;"');
|
||||||
|
$ret['once']['input'] = $input;
|
||||||
|
}
|
||||||
|
$ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
|
||||||
|
return succjson($ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function json_getdata() {
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
$post = new \ciy\post();
|
||||||
|
$id = $post->getint('id');
|
||||||
|
$act = $post->get('act');
|
||||||
|
if ($id > 0) {
|
||||||
|
$csql = new \ciy\sql('ap_cash_ie');
|
||||||
|
$csql->where('id', $id);
|
||||||
|
$row = $db->getone($csql);
|
||||||
|
if (!is_array($row))
|
||||||
|
return errjson('数据不存在');
|
||||||
|
if ($act == 'view' || $act == 'review') {
|
||||||
|
$csql = (new \ciy\sql('ap_user'))->column('id,name');
|
||||||
|
$csql->where('id', $row['vuser']);
|
||||||
|
$ret['ap_user'] = $db->get($csql);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$row = array();
|
||||||
|
}
|
||||||
|
$ret['data'] = $row;
|
||||||
|
if ($act == 'edit') {
|
||||||
|
$csql = (new \ciy\sql('ap_user'))->column('id,name');
|
||||||
|
$ret['ap_user'] = $db->get($csql);
|
||||||
|
}
|
||||||
|
return succjson($ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function json_del() {
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
//if (nopower($db, $rsuser['id'], 'p d'))
|
||||||
|
// return errjson('您未被授权操作');
|
||||||
|
$post = new \ciy\post();
|
||||||
|
$ids = $post->get('ids');
|
||||||
|
if (empty($ids))
|
||||||
|
return errjson('请选择至少一条');
|
||||||
|
$csql = new \ciy\sql('ap_cash_ie');
|
||||||
|
$csql->where('id in', $ids);
|
||||||
|
$rows = $db->get($csql);
|
||||||
|
$vids = array();
|
||||||
|
try {
|
||||||
|
$db->begin();
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
$delid = $row['id'];
|
||||||
|
//delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
|
||||||
|
//delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
|
||||||
|
delme($db, $delid, 'ap_cash_ie');
|
||||||
|
savelogdb($db, $rsuser['id'], 'ap_cash_ie', $row, null);
|
||||||
|
$vids[] = $delid;
|
||||||
|
}
|
||||||
|
$db->commit();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$db->rollback();
|
||||||
|
return errjson($ex->getMessage());
|
||||||
|
}
|
||||||
|
$ret['ids'] = $vids;
|
||||||
|
return succjson($ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function json_exportxls() {
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
//if (nopower($db, $rsuser['id'], 'p e'))
|
||||||
|
// return errjson('您未被授权操作');
|
||||||
|
$post = new \ciy\post();
|
||||||
|
list($where, $csql) = self::setwhere($db, $post);
|
||||||
|
$rows = $db->get($csql);
|
||||||
|
if (count($rows) > 10000)
|
||||||
|
return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
|
||||||
|
$fields = array();
|
||||||
|
$fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
|
||||||
|
$fields[] = array('style' => 'l', 'width' => 100, 'field' => 'cashietype', 'name' => '收支分类');
|
||||||
|
$fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
|
||||||
|
$fields[] = array('style' => 'r', 'width' => 100, 'field' => 'iemoney', 'name' => '金额');
|
||||||
|
$fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '发生时间');
|
||||||
|
$fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '摘要');
|
||||||
|
$code_cashietype = getcatas($db, 'cashietype');
|
||||||
|
$code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
|
||||||
|
$datas = array();
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
$dat = array();
|
||||||
|
foreach ($fields as $field) {
|
||||||
|
$field = $field['field'];
|
||||||
|
$val = isset($row[$field]) ? $row[$field] : '';
|
||||||
|
if ($field == 'id')
|
||||||
|
$val = enid($val);
|
||||||
|
if ($field == 'cashietype')
|
||||||
|
$val = ccode($code_cashietype, $val);
|
||||||
|
if ($field == 'vuser')
|
||||||
|
$val = ccode($code_vuser, $val);
|
||||||
|
if ($field == 'iemoney')
|
||||||
|
$val = number_format($val / 100, 2);
|
||||||
|
if ($field == 'addtimes')
|
||||||
|
$val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
|
||||||
|
$dat[] = $val;
|
||||||
|
}
|
||||||
|
$datas[] = $dat;
|
||||||
|
}
|
||||||
|
$param = array();
|
||||||
|
$param['field'] = $fields;
|
||||||
|
$param['data'] = $datas;
|
||||||
|
$param['sheetname'] = '数据报表';
|
||||||
|
$param['titleheight'] = '25'; //列头高度
|
||||||
|
$param['landscape'] = true; //横向打印
|
||||||
|
$param['fixtopage'] = true; //打印整个工作表
|
||||||
|
$param['toptitle'] = 'Demo数据报表';
|
||||||
|
$str = \ciy\excel::general_excel_xml($param);
|
||||||
|
$filename = '';
|
||||||
|
if (empty($filename))
|
||||||
|
$filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
|
||||||
|
$filename .= '.xls';
|
||||||
|
file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
|
||||||
|
return succjson(array('url' => '/ud/tmp/' . $filename));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -56,7 +56,7 @@
|
||||||
searchdom: '.search'
|
searchdom: '.search'
|
||||||
, data: json
|
, data: json
|
||||||
, liall: '全部'
|
, liall: '全部'
|
||||||
, lidata: 'cashintype'
|
, lidata: [{ id: 1, name: '未支付' }, { id: 2, name: '已支付' }]
|
||||||
, liclick: function (dom) {
|
, liclick: function (dom) {
|
||||||
table.search(dom, 'li');
|
table.search(dom, 'li');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,10 @@ class cash_in {
|
||||||
$query = $post->get('query');
|
$query = $post->get('query');
|
||||||
$csql = new \ciy\sql('ap_cash_in');
|
$csql = new \ciy\sql('ap_cash_in');
|
||||||
$liid = objint($query, 'liid');
|
$liid = objint($query, 'liid');
|
||||||
if ($liid > 0)
|
if ($liid == 1)
|
||||||
$csql->where('cashintype', $liid);
|
$csql->where('paytimes=0');
|
||||||
|
if ($liid == 2)
|
||||||
|
$csql->where('paytimes>0');
|
||||||
$val = objstr($query, 'vuser');
|
$val = objstr($query, 'vuser');
|
||||||
if (!empty($val)) {
|
if (!empty($val)) {
|
||||||
$csqlt = new \ciy\sql('ap_user');
|
$csqlt = new \ciy\sql('ap_user');
|
||||||
|
|
|
||||||
|
|
@ -388,7 +388,7 @@ class me {
|
||||||
$param['out_bill_no'] = 'TB' . date('ymd') . '8' . $id;
|
$param['out_bill_no'] = 'TB' . date('ymd') . '8' . $id;
|
||||||
$param['transfer_scene_id'] = '1005';
|
$param['transfer_scene_id'] = '1005';
|
||||||
$param['openid'] = $rsuser['wxminaid'];
|
$param['openid'] = $rsuser['wxminaid'];
|
||||||
$param['notify_url'] = 'https://expo.ciy.cn/ajax/amb/wxpay.transfer';
|
$param['notify_url'] = 'https://ciyon.ciy.cn/ajax/ambap/wxpay.transfer';
|
||||||
$param['transfer_remark'] = '佣金奖励';
|
$param['transfer_remark'] = '佣金奖励';
|
||||||
$param['transfer_amount'] = $cashrow['cashmoney'];
|
$param['transfer_amount'] = $cashrow['cashmoney'];
|
||||||
$param['transfer_scene_report_infos'] = array();
|
$param['transfer_scene_report_infos'] = array();
|
||||||
|
|
@ -617,7 +617,7 @@ class me {
|
||||||
$param = array();
|
$param = array();
|
||||||
$param['description'] = '购买金币';
|
$param['description'] = '购买金币';
|
||||||
$param['out_trade_no'] = 'PT' . date('ymd') . '9' . $orderid;
|
$param['out_trade_no'] = 'PT' . date('ymd') . '9' . $orderid;
|
||||||
$param['notify_url'] = 'https://expo.ciy.cn/ajax/amb/wxpay.pay_pnt';
|
$param['notify_url'] = 'https://ciyon.ciy.cn/ajax/ambap/wxpay.pay_pnt';
|
||||||
$param['amount'] = array();
|
$param['amount'] = array();
|
||||||
$param['amount']['total'] = (int)$payprice;
|
$param['amount']['total'] = (int)$payprice;
|
||||||
$param['payer'] = array();
|
$param['payer'] = array();
|
||||||
|
|
@ -705,7 +705,7 @@ class me {
|
||||||
$param = array();
|
$param = array();
|
||||||
$param['description'] = '购买会员';
|
$param['description'] = '购买会员';
|
||||||
$param['out_trade_no'] = 'UB' . date('ymd') . '9' . $orderid;
|
$param['out_trade_no'] = 'UB' . date('ymd') . '9' . $orderid;
|
||||||
$param['notify_url'] = 'https://ciyon.ciy.cn/ajax/amb/wxpay.pay_user';
|
$param['notify_url'] = 'https://ciyon.ciy.cn/ajax/ambap/wxpay.pay_user';
|
||||||
$param['amount'] = array();
|
$param['amount'] = array();
|
||||||
$param['amount']['total'] = (int)$money;
|
$param['amount']['total'] = (int)$money;
|
||||||
$param['payer'] = array();
|
$param['payer'] = array();
|
||||||
|
|
@ -780,16 +780,82 @@ class me {
|
||||||
$ret['cash'] = $db->get($csql);
|
$ret['cash'] = $db->get($csql);
|
||||||
return succjson($ret);
|
return succjson($ret);
|
||||||
}
|
}
|
||||||
|
public static function json_charge_paychk() {
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
$post = new \ciy\post();
|
||||||
|
$id = $post->getint('orderid');
|
||||||
|
for ($i = 0; $i < 10; $i++) {
|
||||||
|
$csql = new \ciy\sql('ap_cash_in');
|
||||||
|
$csql->where('id', $id);
|
||||||
|
$buyrow = $db->getone($csql);
|
||||||
|
if (!is_array($buyrow))
|
||||||
|
return errjson('订单不存在');
|
||||||
|
if ($buyrow['paytimes'] > 0)
|
||||||
|
return succjson();
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
return errjson('充值不成功,请联系客服');
|
||||||
|
}
|
||||||
|
public static function json_charge_paynow() {
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
$post = new \ciy\post();
|
||||||
|
$money = $post->getint('money');
|
||||||
|
$updata = array();
|
||||||
|
$updata['name'] = '';
|
||||||
|
$updata['inmoney'] = $money;
|
||||||
|
$updata['vuser'] = $rsuser['id'];
|
||||||
|
$updata['addtimes'] = tostamp();
|
||||||
|
$updata['paytimes'] = 0;
|
||||||
|
$csql = new \ciy\sql('ap_cash_in');
|
||||||
|
if ($db->insert($csql, $updata) === false)
|
||||||
|
return errjson('订单创建失败:' . $db->error);
|
||||||
|
$orderid = $db->insert_id();
|
||||||
|
$param = array();
|
||||||
|
$param['description'] = '充值';
|
||||||
|
$param['out_trade_no'] = 'IN' . date('ymd') . '2' . $orderid;
|
||||||
|
$param['notify_url'] = 'https://ciyon.ciy.cn/ajax/ambap/wxpay.charge';
|
||||||
|
$param['amount'] = array();
|
||||||
|
$param['amount']['total'] = (int)$money;
|
||||||
|
$param['payer'] = array();
|
||||||
|
$param['payer']['openid'] = $rsuser['wxminaid'];
|
||||||
|
$wxcfg = gettoken($db, 1);
|
||||||
|
$wxpay = new \ciy\wxfunc($wxcfg);
|
||||||
|
$retpay = $wxpay->pay($param);
|
||||||
|
if (is_string($retpay))
|
||||||
|
return errjson($retpay);
|
||||||
|
$retpay['orderid'] = $orderid;
|
||||||
|
return succjson($retpay);
|
||||||
|
}
|
||||||
public static function json_cashin_get() {
|
public static function json_cashin_get() {
|
||||||
global $db;
|
global $db;
|
||||||
$rsuser = verifyfast();
|
$rsuser = verifyfast();
|
||||||
$post = new \ciy\post();
|
$post = new \ciy\post();
|
||||||
$query = $post->get('query');
|
$query = $post->get('query');
|
||||||
$csql = new \ciy\sql('ap_cash_in');
|
$csql = new \ciy\sql('ap_cash_in');
|
||||||
|
$csql->where('paytimes>0');
|
||||||
|
$csql->where('vuser', $rsuser['id']);
|
||||||
|
$csql->order(objstr($query, 'order', 'id desc'));
|
||||||
|
$pageno = $post->getint('pageno', 1);
|
||||||
|
$pagecount = $post->getint('pagecount', 10);
|
||||||
|
$csql->limit($pageno, $pagecount);
|
||||||
|
$rows = $db->get($csql);
|
||||||
|
$ret = array('pageno' => $pageno, 'pagecount' => $pagecount, 'list' => $rows);
|
||||||
|
return succjson($ret);
|
||||||
|
}
|
||||||
|
public static function json_cashie_get() {
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
$post = new \ciy\post();
|
||||||
|
$query = $post->get('query');
|
||||||
|
$csql = new \ciy\sql('ap_cash_ie');
|
||||||
$csql->where('vuser', $rsuser['id']);
|
$csql->where('vuser', $rsuser['id']);
|
||||||
$liid = objint($query, 'liid');
|
$liid = objint($query, 'liid');
|
||||||
if ($liid > 0)
|
if ($liid == 1)
|
||||||
$csql->where('cashtype', $liid);
|
$csql->where('cashietype<100');
|
||||||
|
if ($liid == 2)
|
||||||
|
$csql->where('cashietype>=100');
|
||||||
$csql->order(objstr($query, 'order', 'id desc'));
|
$csql->order(objstr($query, 'order', 'id desc'));
|
||||||
$pageno = $post->getint('pageno', 1);
|
$pageno = $post->getint('pageno', 1);
|
||||||
$pagecount = $post->getint('pagecount', 10);
|
$pagecount = $post->getint('pagecount', 10);
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,74 @@
|
||||||
//http://expo.local.ciy.cn/ajax/amb/wxpay.transfer
|
//http://expo.local.ciy.cn/ajax/amb/wxpay.transfer
|
||||||
namespace web\ambap;
|
namespace web\ambap;
|
||||||
|
|
||||||
class wxpay_pnt {
|
class wxpay {
|
||||||
|
public static function json_charge() {
|
||||||
|
global $db;
|
||||||
|
$msg = file_get_contents('php://input');
|
||||||
|
savelogfile('wxpay_charge', '', true);
|
||||||
|
if (empty($msg))
|
||||||
|
$msg = '{"id":"601ce864-430c-5dc6-bb14-99ba0e75092a","create_time":"2025-06-18T00:55:47+08:00","resource_type":"encrypt-resource","event_type":"TRANSACTION.SUCCESS","summary":"支付成功","resource":{"original_type":"transaction","algorithm":"AEAD_AES_256_GCM","ciphertext":"tWglulTGTqVaw5FkYXOoAlksz62KOC3726nN0EFkCHXV4mWARk+k5sVhmnglBUG5RO+JLRcADO+xY1fX2kP2wrk7YOAGstM2SQfnoxzlur1HmnWtIamBQ+38UnsH+mi0a4WGMsMDIgqa1YmvklXrlsiS5DXVxYF13tvlXGDeM8atLFprGPs50lSYz6x0XfobMMaiM3S37BE574QDFMTuEaKQkA9P0AkQIQ4LvHTAzg1qZuaJ5uly7Zs+ViMEF9bG7l808cG2/jNtrG8Nu9VD3GyjRTUPX+OnHjWnwuBF+XRpDSLUioophdK0fGvC5Z7wJg1PpJYkTm5m4Fk93i9ao3d8uY7oV8ekQ3GpD+JlJzCoPk30cPC9+UyxiupvvJJK50AzsyXwZ7BU4YIvXEjBUJstcntb5gTFgaICKQCqpIgSKgcrVkDdb8i3IuA17Z1wAJqJQdknx6eLVuelwxbISEtL8v+a9moCjsRPqzJ7HTOkxcujh+SWSftx2f9MEKOxIem1HLr0t4zhVDqwx2Hgnk+YoLdXQ3CdJNXk4435H403gUeNwuAOpemy","associated_data":"transaction","nonce":"Vw6lMyykEja3"}}';
|
||||||
|
|
||||||
|
$json = json_decode($msg, true);
|
||||||
|
if ($json === null)
|
||||||
|
return self::errlog('回调JSON出错:' . $msg);
|
||||||
|
if (@$json['event_type'] != 'TRANSACTION.SUCCESS')
|
||||||
|
return self::errlog('支付失败:' . $msg);
|
||||||
|
$wxcfg = gettoken($db, 1);
|
||||||
|
$aesKey = $wxcfg['v3key']; //v3秘钥
|
||||||
|
$associatedData = $json['resource']['associated_data'];
|
||||||
|
$nonceStr = $json['resource']['nonce'];
|
||||||
|
$ciphertext = $json['resource']['ciphertext'];
|
||||||
|
$dat = \sodium_crypto_aead_aes256gcm_decrypt(base64_decode($ciphertext), $associatedData, $nonceStr, $aesKey);
|
||||||
|
//clog($dat);
|
||||||
|
//{"mchid":"1521600371","appid":"wx04060908b8fb3341","out_trade_no":"E2049007187","transaction_id":"4200002494202412238883646214","trade_type":"JSAPI","trade_state":"SUCCESS","trade_state_desc":"支付成功","bank_type":"OTHERS","attach":"87,1,oUlwX5Tv9jYjlENyvCFQtMrmT3Ok","success_time":"2024-12-23T06:44:43+08:00","payer":{"openid":"oUlwX5Tv9jYjlENyvCFQtMrmT3Ok"},"amount":{"total":1,"payer_total":1,"currency":"CNY","payer_currency":"CNY"}}
|
||||||
|
if ($dat === false)
|
||||||
|
return self::errlog('解析密文出错:' . $msg);
|
||||||
|
$json = json_decode($dat, true);
|
||||||
|
if ($json === null)
|
||||||
|
return self::errlog('解析密文JSON出错:' . $dat);
|
||||||
|
if (@$json['trade_state'] != 'SUCCESS')
|
||||||
|
return self::errlog('支付失败:' . $dat);
|
||||||
|
$noid = (int)substr($json['out_trade_no'], 9);
|
||||||
|
$csql = new \ciy\sql('ap_cash_in');
|
||||||
|
$csql->where('id', $noid);
|
||||||
|
$orderrow = $db->getone($csql);
|
||||||
|
if (!is_array($orderrow))
|
||||||
|
return self::errlog('订单不存在:' . $noid);
|
||||||
|
$userid = $orderrow['vuser'];
|
||||||
|
$inmoney = (int)$orderrow['inmoney'];
|
||||||
|
if ($inmoney != $json['amount']['total'])
|
||||||
|
return self::errlog('订单金额错误[' . $inmoney . '!=' . $json['amount']['total'] . ']:' . $noid, $userid);
|
||||||
|
if ($orderrow['paytimes'] > 0) {
|
||||||
|
savelogfile('wxpay_charge', '已充值[' . $noid . ']');
|
||||||
|
return succjson();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$db->begin();
|
||||||
|
$updata = array();
|
||||||
|
$updata['name'] = $json['transaction_id'];
|
||||||
|
$updata['paytimes'] = tostamp();
|
||||||
|
$csql = new \ciy\sql('ap_cash_in');
|
||||||
|
$csql->where('id', $noid);
|
||||||
|
if ($db->update($csql, $updata) === false)
|
||||||
|
throw new \Exception('更新ap_cash_in失败:' . $db->error);
|
||||||
|
//sendusermsg($db, $orderrow['userid'], '集市通知', '买家已付款,请及时处理', '/work/ec/order_detail?id=' . $noid);
|
||||||
|
|
||||||
|
$updata = array();
|
||||||
|
$updata['mycashmoney'] = array('mycashmoney+' . $inmoney);
|
||||||
|
$csql = new \ciy\sql('ap_user');
|
||||||
|
$csql->where('id', $userid);
|
||||||
|
if ($db->update($csql, $updata) === false)
|
||||||
|
throw new \Exception('更新ap_user失败:' . $db->error);
|
||||||
|
$db->commit();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$db->rollback();
|
||||||
|
return self::errlog($ex->getMessage(), $userid);
|
||||||
|
}
|
||||||
|
savelogfile('wxpay_charge', '成功充值[' . $noid . ']');
|
||||||
|
return succjson();
|
||||||
|
}
|
||||||
public static function json_transfer() {
|
public static function json_transfer() {
|
||||||
global $db;
|
global $db;
|
||||||
$msg = file_get_contents('php://input');
|
$msg = file_get_contents('php://input');
|
||||||
|
|
@ -103,7 +170,7 @@ class wxpay_pnt {
|
||||||
if (!is_array($orderrow))
|
if (!is_array($orderrow))
|
||||||
return self::errlog('订单不存在:' . $noid);
|
return self::errlog('订单不存在:' . $noid);
|
||||||
$userid = $orderrow['vuser'];
|
$userid = $orderrow['vuser'];
|
||||||
$buypntmoney = (int)($orderrow['buypntmoney']/100);
|
$buypntmoney = (int)$orderrow['buypntmoney'];
|
||||||
if ($buypntmoney != $json['amount']['total'])
|
if ($buypntmoney != $json['amount']['total'])
|
||||||
return self::errlog('订单金额错误[' . $buypntmoney . '!=' . $json['amount']['total'] . ']:' . $noid, $userid);
|
return self::errlog('订单金额错误[' . $buypntmoney . '!=' . $json['amount']['total'] . ']:' . $noid, $userid);
|
||||||
if ($orderrow['paytimes'] > 0) {
|
if ($orderrow['paytimes'] > 0) {
|
||||||
|
|
|
||||||
|
|
@ -1828,22 +1828,16 @@ ciyfn.dropmenu = function (dom) {
|
||||||
var left = domrect.left;
|
var left = domrect.left;
|
||||||
var uldom = $5('ul', dom);
|
var uldom = $5('ul', dom);
|
||||||
var ulrect = uldom.rect();
|
var ulrect = uldom.rect();
|
||||||
var menuwidth = toint(uldom.attr('mewidth'));
|
uldom.css('inset', null);
|
||||||
if (menuwidth == 0) {
|
var menuwidth = ulrect.width;
|
||||||
menuwidth = ulrect.width;
|
var menuheight = ulrect.height;
|
||||||
uldom.attr('mewidth', menuwidth);
|
|
||||||
}
|
|
||||||
dom.css('zIndex', 30);
|
dom.css('zIndex', 30);
|
||||||
if ($5(document).width() < left + menuwidth) {
|
if ($5(document).width() < left + menuwidth) {
|
||||||
left = $5(document).width() - menuwidth;
|
left = $5(document).width() - menuwidth;
|
||||||
}
|
}
|
||||||
var menuheight = toint(uldom.attr('meheight'));
|
|
||||||
if (menuheight == 0) {
|
|
||||||
menuheight = ulrect.height;
|
|
||||||
uldom.attr('meheight', menuheight);
|
|
||||||
}
|
|
||||||
if (left < 0)
|
if (left < 0)
|
||||||
left = 0;
|
left = 0;
|
||||||
|
|
||||||
if (top + menuheight + 40 < document.documentElement.clientHeight) {
|
if (top + menuheight + 40 < document.documentElement.clientHeight) {
|
||||||
top += domrect.height;
|
top += domrect.height;
|
||||||
uldom.css({ 'position': 'fixed', 'left': left + 'px', 'top': top + 'px', 'bottom': 'auto' });
|
uldom.css({ 'position': 'fixed', 'left': left + 'px', 'top': top + 'px', 'bottom': 'auto' });
|
||||||
|
|
|
||||||
|
|
@ -1922,7 +1922,6 @@ textarea.tran:focus, select.tran:focus, input.tran:focus {
|
||||||
.ciy-popmenu {
|
.ciy-popmenu {
|
||||||
display: none;
|
display: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
|
||||||
background: var(--bg4);
|
background: var(--bg4);
|
||||||
border: 1px solid var(--bg6);
|
border: 1px solid var(--bg6);
|
||||||
color: var(--txt7);
|
color: var(--txt7);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user