Compare commits
No commits in common. "17767e6101846dbc3e189dd1811b0bcc5ea866cd" and "be04af44ee1b622929324d97d98aeeb0946351c2" have entirely different histories.
17767e6101
...
be04af44ee
|
@ -32,17 +32,9 @@ const listForBG = (data) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const selectCountForBGByProjectId = (projetId) => {
|
|
||||||
return request({
|
|
||||||
url: `/manage/problemmodify/selectCountForBGByProjectId/`+projetId,
|
|
||||||
method: "get",
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
groupByProblemType,
|
groupByProblemType,
|
||||||
groupByDangerType,
|
groupByDangerType,
|
||||||
listCountForBG,
|
listCountForBG,
|
||||||
listForBG,
|
listForBG,
|
||||||
selectCountForBGByProjectId
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -69,7 +69,6 @@ export default {
|
||||||
deptInfo: {},
|
deptInfo: {},
|
||||||
todayCnt: 0,
|
todayCnt: 0,
|
||||||
weekCnt: 0,
|
weekCnt: 0,
|
||||||
baseData: [],
|
|
||||||
warningType: [
|
warningType: [
|
||||||
{
|
{
|
||||||
name: "AI预警",
|
name: "AI预警",
|
||||||
|
@ -97,25 +96,10 @@ export default {
|
||||||
created() {
|
created() {
|
||||||
this.$bus.$on('projectChange', debounce(res => {
|
this.$bus.$on('projectChange', debounce(res => {
|
||||||
this.prjInfo = res;
|
this.prjInfo = res;
|
||||||
//this.getMonitAndWarning();
|
this.getMonitAndWarning();
|
||||||
debugger
|
|
||||||
this.$api.safety.selectCountForBGByProjectId(res.id).then(d => {
|
|
||||||
this.baseData = d.data || [];
|
|
||||||
this.warningType[0].total = this.getBaseData("a");
|
|
||||||
this.warningType[1].total = this.getBaseData("c");
|
|
||||||
this.warningType[1].data = this.getBaseData("d");
|
|
||||||
this.warningType[2].total = this.getBaseData("e");
|
|
||||||
this.warningType[2].data = this.getBaseData("f");
|
|
||||||
this.todayCnt = this.getBaseData("g");
|
|
||||||
this.weekCnt = this.getBaseData("h");
|
|
||||||
});
|
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getBaseData(type) {
|
|
||||||
let tmp = this.baseData.find(item => item.projectName == type);
|
|
||||||
return tmp ? tmp.id || 0 : 0;
|
|
||||||
},
|
|
||||||
doShowDetail(item) {
|
doShowDetail(item) {
|
||||||
if (item.name == '劳资预警') {
|
if (item.name == '劳资预警') {
|
||||||
if (this.type == "detail") {
|
if (this.type == "detail") {
|
||||||
|
@ -235,9 +219,8 @@ export default {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
background-size: 12px 24px;
|
background-size: 12px 24px;
|
||||||
}
|
}
|
||||||
|
.survey-oil-summary{
|
||||||
.survey-oil-summary {
|
font-size:30px !important;
|
||||||
font-size: 30px !important;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,10 +243,9 @@ export default {
|
||||||
height: 10px;
|
height: 10px;
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
.glr-rate-value{
|
||||||
.glr-rate-value {
|
span{
|
||||||
span {
|
font-size:30px;
|
||||||
font-size: 30px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -297,9 +279,8 @@ export default {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
background-size: 18px 36px;
|
background-size: 18px 36px;
|
||||||
}
|
}
|
||||||
|
.survey-oil-summary{
|
||||||
.survey-oil-summary {
|
font-size:40px !important;
|
||||||
font-size: 40px !important;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -321,10 +302,9 @@ export default {
|
||||||
height: 16px;
|
height: 16px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
.glr-rate-value{
|
||||||
.glr-rate-value {
|
span{
|
||||||
span {
|
font-size:40px;
|
||||||
font-size: 40px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -310,17 +310,6 @@ public class SmzSspProblemmodifyController extends BaseController
|
||||||
return success(list);
|
return success(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 大屏-项目情况-项目监测预警
|
|
||||||
* @param projectId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@GetMapping("/selectCountForBGByProjectId/{projectId}")
|
|
||||||
public AjaxResult selectCountForBGByProjectId(@PathVariable("projectId") Long projectId){
|
|
||||||
List<SmzSspProblemmodify> list=smzSspProblemmodifyService.selectCountForBGByProjectId(projectId);
|
|
||||||
return success(list);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 按检查类型(ssp_proble_type)分组查询
|
/** 按检查类型(ssp_proble_type)分组查询
|
||||||
* @param where
|
* @param where
|
||||||
* @return
|
* @return
|
||||||
|
|
|
@ -112,11 +112,4 @@ public interface ISmzSspProblemmodifyService
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<SmzSspProblemmodify> getListCountBG(SmzSspProblemmodify where);
|
public List<SmzSspProblemmodify> getListCountBG(SmzSspProblemmodify where);
|
||||||
|
|
||||||
/**
|
|
||||||
* 大屏-项目情况-项目监测预警
|
|
||||||
* @param projectId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
List<SmzSspProblemmodify> selectCountForBGByProjectId(Long projectId);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ import com.yanzhu.system.api.model.LoginUser;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
@ -199,14 +198,4 @@ public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyServi
|
||||||
return smzSspProblemmodifyMapper.getListCountBG(where);
|
return smzSspProblemmodifyMapper.getListCountBG(where);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 大屏-项目情况-项目监测预警
|
|
||||||
* @param projectId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<SmzSspProblemmodify> selectCountForBGByProjectId(Long projectId) {
|
|
||||||
return smzSspProblemmodifyMapper.selectCountForBGByProjectId(projectId);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
<onMatch>ACCEPT</onMatch>
|
<onMatch>ACCEPT</onMatch>
|
||||||
<!-- 不匹配时的操作:拒绝(不记录) -->
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
<onMismatch>DENY</onMismatch>
|
<onMismatch>DENY</onMismatch>
|
||||||
</filter>大屏-项目情况-项目监测预警
|
</filter>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<!-- 系统模块日志级别控制 -->
|
<!-- 系统模块日志级别控制 -->
|
||||||
|
|
Binary file not shown.
|
@ -1,8 +1,7 @@
|
||||||
{
|
{
|
||||||
"pages": [
|
"pages": [
|
||||||
"pages/login/login",
|
"pages/login/login",
|
||||||
"pages/project_qr/index",
|
"pages/project_qr/index"
|
||||||
"pages/test-stepper/index"
|
|
||||||
],
|
],
|
||||||
"subpackages": [
|
"subpackages": [
|
||||||
{
|
{
|
||||||
|
@ -44,10 +43,7 @@
|
||||||
"project_schedule/info/index",
|
"project_schedule/info/index",
|
||||||
"project_checked/list/index",
|
"project_checked/list/index",
|
||||||
"project_checked/add/index",
|
"project_checked/add/index",
|
||||||
"project_checked/info/index",
|
"project_checked/info/index"
|
||||||
"mobile_attendance/attendance/index",
|
|
||||||
"mobile_attendance/attendance_config/list/index",
|
|
||||||
"mobile_attendance/attendance_config/add/index"
|
|
||||||
],
|
],
|
||||||
"independent": false
|
"independent": false
|
||||||
}
|
}
|
||||||
|
@ -123,5 +119,5 @@
|
||||||
"requiredPrivateInfos": [
|
"requiredPrivateInfos": [
|
||||||
"getLocation"
|
"getLocation"
|
||||||
],
|
],
|
||||||
"lazyCodeLoading": "requiredComponents"
|
"lazyCodeLoading":"requiredComponents"
|
||||||
}
|
}
|
|
@ -888,12 +888,7 @@ page {
|
||||||
border-radius: 10rpx;
|
border-radius: 10rpx;
|
||||||
padding: 20rpx;
|
padding: 20rpx;
|
||||||
}
|
}
|
||||||
.add_input {
|
|
||||||
width: calc(100% - 40rpx);
|
|
||||||
background: #212737;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
padding: 20rpx;
|
|
||||||
}
|
|
||||||
.add_btn {
|
.add_btn {
|
||||||
padding-top: 100rpx;
|
padding-top: 100rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
# Custom Stepper 自定义步进器组件
|
|
||||||
|
|
||||||
## 介绍
|
|
||||||
自定义步进器组件,类似于Vant Weapp的van-stepper,包含两个按钮和一个输入框,可用于在设定的范围内增加或减少数值。
|
|
||||||
|
|
||||||
## 使用示例
|
|
||||||
|
|
||||||
在页面的JSON配置文件中注册组件:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"usingComponents": {
|
|
||||||
"custom-stepper": "/components/custom-stepper/index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
在WXML中使用组件:
|
|
||||||
```xml
|
|
||||||
<custom-stepper
|
|
||||||
value="{{ value }}"
|
|
||||||
min="0"
|
|
||||||
max="100"
|
|
||||||
step="1"
|
|
||||||
disabled="{{ false }}"
|
|
||||||
bindchange="onChange" />
|
|
||||||
```
|
|
||||||
|
|
||||||
在页面JS中处理事件:
|
|
||||||
```javascript
|
|
||||||
Page({
|
|
||||||
data: {
|
|
||||||
value: 0
|
|
||||||
},
|
|
||||||
|
|
||||||
onChange(e) {
|
|
||||||
this.setData({
|
|
||||||
value: e.detail.value
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
## 属性说明
|
|
||||||
|
|
||||||
| 属性名 | 类型 | 默认值 | 说明 |
|
|
||||||
|-------|------|-------|------|
|
|
||||||
| value | Number | 0 | 当前值 |
|
|
||||||
| min | Number | 0 | 最小值 |
|
|
||||||
| max | Number | 100 | 最大值 |
|
|
||||||
| step | Number | 1 | 步长 |
|
|
||||||
| disabled | Boolean | false | 是否禁用 |
|
|
||||||
|
|
||||||
## 事件说明
|
|
||||||
|
|
||||||
| 事件名 | 说明 | 返回值 |
|
|
||||||
|-------|------|-------|
|
|
||||||
| bindchange | 当值发生变化时触发 | { value: Number } |
|
|
||||||
|
|
||||||
## 更新日志
|
|
||||||
|
|
||||||
### 1.0.0
|
|
||||||
- 初始版本发布
|
|
||||||
- 实现基本的步进功能
|
|
||||||
- 支持设置范围、步长和禁用状态
|
|
|
@ -1,119 +0,0 @@
|
||||||
Component({
|
|
||||||
options: {
|
|
||||||
addGlobalClass: true,
|
|
||||||
},
|
|
||||||
|
|
||||||
properties: {
|
|
||||||
// 当前值
|
|
||||||
value: {
|
|
||||||
type: Number,
|
|
||||||
value: 0,
|
|
||||||
observer: function (newVal) {
|
|
||||||
this.setData({
|
|
||||||
currentValue: newVal
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 最小值
|
|
||||||
min: {
|
|
||||||
type: Number,
|
|
||||||
value: 0
|
|
||||||
},
|
|
||||||
|
|
||||||
// 最大值
|
|
||||||
max: {
|
|
||||||
type: Number,
|
|
||||||
value: 100
|
|
||||||
},
|
|
||||||
|
|
||||||
// 步长
|
|
||||||
step: {
|
|
||||||
type: Number,
|
|
||||||
value: 1
|
|
||||||
},
|
|
||||||
|
|
||||||
// 是否禁用
|
|
||||||
disabled: {
|
|
||||||
type: Boolean,
|
|
||||||
value: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
data: {
|
|
||||||
currentValue: 0
|
|
||||||
},
|
|
||||||
|
|
||||||
lifetimes: {
|
|
||||||
attached: function () {
|
|
||||||
this.setData({
|
|
||||||
currentValue: this.data.value
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
// 减少值
|
|
||||||
onMinus: function () {
|
|
||||||
if (this.data.disabled) return;
|
|
||||||
|
|
||||||
const newValue = this.data.currentValue - this.data.step;
|
|
||||||
if (newValue >= this.data.min) {
|
|
||||||
this.updateValue(newValue);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 增加值
|
|
||||||
onPlus: function () {
|
|
||||||
if (this.data.disabled) return;
|
|
||||||
|
|
||||||
const newValue = this.data.currentValue + this.data.step;
|
|
||||||
if (newValue <= this.data.max) {
|
|
||||||
this.updateValue(newValue);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 输入框输入事件
|
|
||||||
onInput: function (e) {
|
|
||||||
if (this.data.disabled) return;
|
|
||||||
|
|
||||||
const value = parseFloat(e.detail.value);
|
|
||||||
if (!isNaN(value)) {
|
|
||||||
this.setData({
|
|
||||||
currentValue: value
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 输入框失去焦点事件
|
|
||||||
onBlur: function () {
|
|
||||||
if (this.data.disabled) return;
|
|
||||||
|
|
||||||
let value = this.data.currentValue;
|
|
||||||
|
|
||||||
// 限制范围
|
|
||||||
if (value < this.data.min) {
|
|
||||||
value = this.data.min;
|
|
||||||
} else if (value > this.data.max) {
|
|
||||||
value = this.data.max;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.updateValue(value);
|
|
||||||
},
|
|
||||||
|
|
||||||
// 更新值
|
|
||||||
updateValue: function (value) {
|
|
||||||
// 保留两位小数
|
|
||||||
value = Math.round(value * 100) / 100;
|
|
||||||
|
|
||||||
this.setData({
|
|
||||||
currentValue: value
|
|
||||||
});
|
|
||||||
|
|
||||||
// 触发自定义事件
|
|
||||||
this.triggerEvent('change', {
|
|
||||||
value: value
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"component": true,
|
|
||||||
"usingComponents": {}
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
<view class="custom-stepper">
|
|
||||||
<view class="stepper-button minus" bindtap="onMinus">-</view>
|
|
||||||
<input class="stepper-input" value="{{ value }}" bindinput="onInput" bindblur="onBlur" />
|
|
||||||
<view class="stepper-button plus" bindtap="onPlus">+</view>
|
|
||||||
</view>
|
|
|
@ -1,36 +0,0 @@
|
||||||
.custom-stepper {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
border: 1px solid #212737;
|
|
||||||
border-radius: 4px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.stepper-button {
|
|
||||||
|
|
||||||
text-align: center;
|
|
||||||
padding: 8px 0;
|
|
||||||
background-color: #2196F3;
|
|
||||||
user-select: none;
|
|
||||||
width: 80rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stepper-button:active {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stepper-button.minus {
|
|
||||||
border-right: 1px solid #212737;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stepper-button.plus {
|
|
||||||
border-left: 1px solid #212737;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stepper-input {
|
|
||||||
flex: 2;
|
|
||||||
text-align: center;
|
|
||||||
padding: 8px 0;
|
|
||||||
border: none;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
Binary file not shown.
Before Width: | Height: | Size: 812 B |
|
@ -1,106 +0,0 @@
|
||||||
// pageage/mobile_attendance/attendance_config/index.js
|
|
||||||
import config from "../../../config";
|
|
||||||
import fmt from "../../utils/date.js";
|
|
||||||
import { getToken, getUserInfo } from "../../../utils/auth";
|
|
||||||
import { uploadFiles } from "../../utils/upload.js";
|
|
||||||
import { tryToJson } from '../../utils/tools'
|
|
||||||
import {
|
|
||||||
getProjectChecked,
|
|
||||||
findPlanDatas,
|
|
||||||
listProProjectInfoSubdeptsUsers,
|
|
||||||
updateProjectChecked,
|
|
||||||
addProjectChecked,
|
|
||||||
} from "../../../api/project";
|
|
||||||
|
|
||||||
const app = getApp();
|
|
||||||
|
|
||||||
Page({
|
|
||||||
/**
|
|
||||||
* 页面的初始数据
|
|
||||||
*/
|
|
||||||
data: {
|
|
||||||
projectUserInfo: {},
|
|
||||||
projectUserInfo: {},
|
|
||||||
projectId: "",
|
|
||||||
projectName: "",
|
|
||||||
initData: {},
|
|
||||||
total: 0,
|
|
||||||
listData: [],
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面加载
|
|
||||||
*/
|
|
||||||
onLoad(options) {
|
|
||||||
if (!getToken()) {
|
|
||||||
wx.redirectTo({
|
|
||||||
url: "../../../pages/login/login",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const proUserInfo = getUserInfo();
|
|
||||||
this.setData({
|
|
||||||
projectUserInfo: proUserInfo.projectUserInfo,
|
|
||||||
projectId: app.globalData.useProjectId,
|
|
||||||
projectName: app.globalData.useProjectName,
|
|
||||||
initData: {
|
|
||||||
id: app.globalData.useProjectId,
|
|
||||||
text: app.globalData.useProjectName,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面初次渲染完成
|
|
||||||
*/
|
|
||||||
onReady() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面显示
|
|
||||||
*/
|
|
||||||
onShow() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面隐藏
|
|
||||||
*/
|
|
||||||
onHide() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面卸载
|
|
||||||
*/
|
|
||||||
onUnload() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 页面相关事件处理函数--监听用户下拉动作
|
|
||||||
*/
|
|
||||||
onPullDownRefresh() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 页面上拉触底事件的处理函数
|
|
||||||
*/
|
|
||||||
onReachBottom() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户点击右上角分享
|
|
||||||
*/
|
|
||||||
onShareAppMessage() { },
|
|
||||||
//项目切换 返回值
|
|
||||||
onProjectSelect(e) {
|
|
||||||
let projectId = e.detail.id;
|
|
||||||
let projectName = e.detail.text;
|
|
||||||
app.globalData.useProjectId = projectId;
|
|
||||||
app.globalData.useProjectName = projectName;
|
|
||||||
this.onLoad();
|
|
||||||
},
|
|
||||||
returnToPage: function () {
|
|
||||||
/*关闭当前页面,跳转到其它页面。*/
|
|
||||||
if (wx.getStorageSync('nav-menu') == "xmgl") {
|
|
||||||
wx.redirectTo({
|
|
||||||
url: '../../project_more/index',
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
wx.redirectTo({
|
|
||||||
url: '../../project_quality/index',
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"usingComponents": {},
|
|
||||||
"navigationStyle": "custom",
|
|
||||||
"styleIsolation": "apply-shared",
|
|
||||||
"backgroundColor": "#191d28"
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
<wxs module="format" src="/utils/format.wxs"></wxs>
|
|
||||||
|
|
||||||
<view class="header_title">
|
|
||||||
<view class="header_title_row">
|
|
||||||
<van-row>
|
|
||||||
<van-col span="4">
|
|
||||||
<view class="header_img" bindtap="returnToPage">
|
|
||||||
<image src="/images/left.png"></image>
|
|
||||||
</view>
|
|
||||||
</van-col>
|
|
||||||
<van-col span="15">
|
|
||||||
<view class="header_name">移动考勤打卡</view>
|
|
||||||
</van-col>
|
|
||||||
</van-row>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<scroll-view class="max_content_scroll" type="list" scroll-y>
|
|
||||||
<project-select init="{{ initData }}" bindchange="onProjectSelect" id="projectSel"></project-select>
|
|
||||||
|
|
||||||
<view class="modify_video_nav" style="margin-top: 5rpx;">
|
|
||||||
<view>
|
|
||||||
<text>生效中的考勤点({{total}})</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view wx:if="{{listData.length==0}}">
|
|
||||||
<view style="padding-top: 70px;text-align: -webkit-center;">
|
|
||||||
<image src="https://szgcwx.jhncidg.com/staticFiles/nodata.png" style="width: 130px;height: 105px;"></image>
|
|
||||||
<view style="color: #a5abbb;">暂无数据</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</scroll-view>
|
|
|
@ -1,8 +0,0 @@
|
||||||
/* pageage/mobile_attendance/attendance/index.wxss */
|
|
||||||
|
|
||||||
.modify_video_nav{
|
|
||||||
margin-top: 2px;
|
|
||||||
justify-content: left;
|
|
||||||
padding-left: 40rpx;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
|
@ -1,455 +0,0 @@
|
||||||
// pageage/mobile_attendance/attendance_config/add/index.js
|
|
||||||
|
|
||||||
import { getToken, getUserInfo } from "../../../../utils/auth";
|
|
||||||
import { uploadFiles } from "../../../utils/upload.js";
|
|
||||||
import { tryToJson } from '../../../utils/tools'
|
|
||||||
import { findSubGroupsList, subdeptsList } from '../../../../api/project'
|
|
||||||
import {
|
|
||||||
findDictCache
|
|
||||||
} from '../../../../api/publics'
|
|
||||||
const app = getApp();
|
|
||||||
|
|
||||||
// 添加防抖变量,避免频繁请求API
|
|
||||||
let lastRequestTime = 0;
|
|
||||||
const REQUEST_INTERVAL = 1000; // 1秒间隔
|
|
||||||
|
|
||||||
Page({
|
|
||||||
/**
|
|
||||||
* 页面的初始数据
|
|
||||||
*/
|
|
||||||
data: {
|
|
||||||
maxDate: new Date(2088, 1, 1).getTime(),
|
|
||||||
minDate: new Date().getTime(),
|
|
||||||
projectUserInfo: {},
|
|
||||||
projectId: "",
|
|
||||||
projectName: "",
|
|
||||||
initData: {},
|
|
||||||
form: {
|
|
||||||
title: '',
|
|
||||||
startDate: '',
|
|
||||||
endDate: '',
|
|
||||||
longitude: 0,
|
|
||||||
latitude: 0,
|
|
||||||
range: 50,
|
|
||||||
address: '',
|
|
||||||
subGroup: [],
|
|
||||||
groupIds: '',
|
|
||||||
groupNames: [],
|
|
||||||
},
|
|
||||||
markers: [],
|
|
||||||
// 全屏地图相关数据
|
|
||||||
showFullScreenMap: false,
|
|
||||||
mapLongitude: 0,
|
|
||||||
mapLatitude: 0,
|
|
||||||
fullScreenMarkers: [],
|
|
||||||
selectedAddress: '',
|
|
||||||
// 搜索相关数据
|
|
||||||
searchKeyword: '',
|
|
||||||
searchResults: [],
|
|
||||||
subGroupList: [],
|
|
||||||
groupList: [],
|
|
||||||
subDeptTypeList: [],
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面加载
|
|
||||||
*/
|
|
||||||
onLoad(options) {
|
|
||||||
if (!getToken()) {
|
|
||||||
wx.redirectTo({
|
|
||||||
url: "../../../pages/login/login",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const proUserInfo = getUserInfo();
|
|
||||||
this.setData({
|
|
||||||
projectUserInfo: proUserInfo.projectUserInfo,
|
|
||||||
projectId: app.globalData.useProjectId,
|
|
||||||
projectName: app.globalData.useProjectName,
|
|
||||||
initData: {
|
|
||||||
id: app.globalData.useProjectId,
|
|
||||||
text: app.globalData.useProjectName,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
// 获取当前位置作为初始位置
|
|
||||||
this.getUserLocation();
|
|
||||||
this.getSubGroupList();
|
|
||||||
},
|
|
||||||
getSubGroupList() {
|
|
||||||
findDictCache("sub_dept_type").then(dict => {
|
|
||||||
this.setData({
|
|
||||||
subDeptTypeList: dict.data
|
|
||||||
})
|
|
||||||
findSubGroupsList({
|
|
||||||
projectId: app.globalData.useProjectId,
|
|
||||||
pageNum: 1,
|
|
||||||
pageSize: 1000,
|
|
||||||
}).then(res => {
|
|
||||||
if (res.code == 200) {
|
|
||||||
let tmps = res.rows || [];
|
|
||||||
this.setData({
|
|
||||||
groupList: tmps
|
|
||||||
})
|
|
||||||
let obj = {};
|
|
||||||
tmps.forEach(it => {
|
|
||||||
let name = it.subDeptType == 1 ? '施工单位' : it.subDeptName;
|
|
||||||
if (!obj[name]) {
|
|
||||||
obj[name] = [it];
|
|
||||||
} else {
|
|
||||||
obj[name].push(it);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
let subGroupList = [];
|
|
||||||
for (let key in obj) {
|
|
||||||
let val = obj[key][0]
|
|
||||||
let deptType = this.data.subDeptTypeList.find(dict => dict.dictValue == val.subDeptType)
|
|
||||||
subGroupList.push({
|
|
||||||
subDeptId: val.subDeptId,
|
|
||||||
subDeptName: val.subDeptName,
|
|
||||||
subDeptType: val.subDeptType,
|
|
||||||
subDeptTypeName: deptType?.dictLabel || '',
|
|
||||||
userList: (obj[key]).map(it => {
|
|
||||||
it.status = false;
|
|
||||||
it.userId = it.id;
|
|
||||||
it.userName = it.groupName;
|
|
||||||
return it;
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this.setData({
|
|
||||||
subGroupList: subGroupList,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 获取用户当前位置
|
|
||||||
getUserLocation() {
|
|
||||||
wx.getLocation({
|
|
||||||
type: 'gcj02', // 腾讯地图坐标系
|
|
||||||
success: (res) => {
|
|
||||||
const { latitude, longitude } = res;
|
|
||||||
// 设置地图初始位置
|
|
||||||
this.setData({
|
|
||||||
mapLatitude: latitude,
|
|
||||||
mapLongitude: longitude,
|
|
||||||
'form.latitude': latitude,
|
|
||||||
'form.longitude': longitude
|
|
||||||
});
|
|
||||||
|
|
||||||
// 获取地址信息
|
|
||||||
this.getAddressInfo(latitude, longitude);
|
|
||||||
},
|
|
||||||
fail: (err) => {
|
|
||||||
console.error('获取位置失败', err);
|
|
||||||
wx.showToast({
|
|
||||||
title: '请允许位置权限',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
// 引导用户开启权限
|
|
||||||
setTimeout(() => {
|
|
||||||
wx.openSetting({
|
|
||||||
success: (setting) => {
|
|
||||||
if (setting.authSetting['scope.userLocation']) {
|
|
||||||
this.getUserLocation();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, 1500);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 获取地址信息(逆地理编码)- 带重试机制
|
|
||||||
getAddressInfo(latitude, longitude, isFullScreen = false) {
|
|
||||||
const now = Date.now();
|
|
||||||
// 检查请求间隔,避免频繁请求
|
|
||||||
if (now - lastRequestTime < REQUEST_INTERVAL) {
|
|
||||||
console.log('请求过于频繁,跳过本次请求');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lastRequestTime = now;
|
|
||||||
|
|
||||||
// 使用腾讯地图API进行逆地理编码
|
|
||||||
// 注意:需要替换为你自己的腾讯地图API密钥
|
|
||||||
const apiKey = 'NUQBZ-UIYCW-H7GRI-YXOXA-WNZB7-IGFLY';
|
|
||||||
const url = `https://apis.map.qq.com/ws/geocoder/v1/?location=${latitude},${longitude}&key=${apiKey}&get_poi=0`;
|
|
||||||
|
|
||||||
// 添加重试机制
|
|
||||||
this.requestWithRetry(url, 3, (success, data) => {
|
|
||||||
if (success) {
|
|
||||||
const address = data.result.address || '获取地址失败';
|
|
||||||
if (isFullScreen) {
|
|
||||||
// 全屏地图模式下更新选中地址
|
|
||||||
this.setData({
|
|
||||||
selectedAddress: address
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// 普通模式下更新表单地址
|
|
||||||
this.setData({
|
|
||||||
"form.address": address
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.error('逆地理编码失败', data);
|
|
||||||
const errorMsg = '获取地址失败';
|
|
||||||
if (isFullScreen) {
|
|
||||||
this.setData({
|
|
||||||
selectedAddress: errorMsg
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
this.setData({
|
|
||||||
"form.address": errorMsg
|
|
||||||
});
|
|
||||||
}
|
|
||||||
wx.showToast({
|
|
||||||
title: '地址获取失败,请手动输入',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 带重试机制的请求方法
|
|
||||||
requestWithRetry(url, maxRetries, callback, retryCount = 0) {
|
|
||||||
wx.request({
|
|
||||||
url: url,
|
|
||||||
success: (res) => {
|
|
||||||
if (res.data.status === 0) {
|
|
||||||
callback(true, res.data);
|
|
||||||
} else {
|
|
||||||
// 如果是因为请求频率限制导致的失败,进行重试
|
|
||||||
if (res.data.message && res.data.message.includes('请求量') && retryCount < maxRetries) {
|
|
||||||
console.log(`请求失败,${(retryCount + 1) * 1000}ms后进行第${retryCount + 1}次重试`);
|
|
||||||
setTimeout(() => {
|
|
||||||
this.requestWithRetry(url, maxRetries, callback, retryCount + 1);
|
|
||||||
}, (retryCount + 1) * 1000); // 递增延迟重试
|
|
||||||
} else {
|
|
||||||
callback(false, res.data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
fail: (err) => {
|
|
||||||
// 网络错误时进行重试
|
|
||||||
if (retryCount < maxRetries) {
|
|
||||||
console.log(`网络请求失败,${(retryCount + 1) * 1000}ms后进行第${retryCount + 1}次重试`);
|
|
||||||
setTimeout(() => {
|
|
||||||
this.requestWithRetry(url, maxRetries, callback, retryCount + 1);
|
|
||||||
}, (retryCount + 1) * 1000); // 递增延迟重试
|
|
||||||
} else {
|
|
||||||
callback(false, err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 显示全屏地图
|
|
||||||
showFullScreenMap() {
|
|
||||||
this.setData({
|
|
||||||
showFullScreenMap: true,
|
|
||||||
mapLatitude: this.data.form.latitude || this.data.mapLatitude,
|
|
||||||
mapLongitude: this.data.form.longitude || this.data.mapLongitude,
|
|
||||||
fullScreenMarkers: this.data.form.latitude && this.data.form.longitude ? [{
|
|
||||||
id: 1,
|
|
||||||
latitude: this.data.form.latitude,
|
|
||||||
longitude: this.data.form.longitude,
|
|
||||||
title: '考勤点',
|
|
||||||
iconPath: '/images/location-marker.png',
|
|
||||||
width: 30,
|
|
||||||
height: 30
|
|
||||||
}] : []
|
|
||||||
});
|
|
||||||
|
|
||||||
// 如果已有坐标,获取地址信息
|
|
||||||
if (this.data.form.latitude && this.data.form.longitude) {
|
|
||||||
this.getAddressInfo(this.data.form.latitude, this.data.form.longitude, true);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 隐藏全屏地图
|
|
||||||
hideFullScreenMap() {
|
|
||||||
this.setData({
|
|
||||||
showFullScreenMap: false,
|
|
||||||
searchKeyword: '',
|
|
||||||
searchResults: []
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 全屏地图点击事件
|
|
||||||
onFullScreenMapTap(e) {
|
|
||||||
const { latitude, longitude } = e.detail;
|
|
||||||
this.setData({
|
|
||||||
mapLatitude: latitude,
|
|
||||||
mapLongitude: longitude,
|
|
||||||
fullScreenMarkers: [{
|
|
||||||
id: 1,
|
|
||||||
latitude: latitude,
|
|
||||||
longitude: longitude,
|
|
||||||
title: '考勤点',
|
|
||||||
iconPath: '/images/location-marker.png',
|
|
||||||
width: 30,
|
|
||||||
height: 30
|
|
||||||
}]
|
|
||||||
});
|
|
||||||
|
|
||||||
// 获取点击位置的地址信息
|
|
||||||
this.getAddressInfo(latitude, longitude, true);
|
|
||||||
},
|
|
||||||
// 确认选择的位置
|
|
||||||
confirmLocation() {
|
|
||||||
this.setData({
|
|
||||||
'form.latitude': this.data.mapLatitude,
|
|
||||||
'form.longitude': this.data.mapLongitude,
|
|
||||||
'form.address': this.data.selectedAddress,
|
|
||||||
showFullScreenMap: false,
|
|
||||||
markers: [{
|
|
||||||
id: 1,
|
|
||||||
latitude: this.data.mapLatitude,
|
|
||||||
longitude: this.data.mapLongitude,
|
|
||||||
title: '考勤点',
|
|
||||||
iconPath: '/images/location-marker.png',
|
|
||||||
width: 30,
|
|
||||||
height: 30
|
|
||||||
}],
|
|
||||||
searchKeyword: '',
|
|
||||||
searchResults: []
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 搜索输入事件
|
|
||||||
onSearchInput(e) {
|
|
||||||
this.setData({
|
|
||||||
searchKeyword: e.detail.value
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 搜索确认事件
|
|
||||||
onSearchConfirm() {
|
|
||||||
const keyword = this.data.searchKeyword.trim();
|
|
||||||
if (!keyword) {
|
|
||||||
wx.showToast({
|
|
||||||
title: '请输入搜索关键词',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 使用腾讯地图API进行地址搜索
|
|
||||||
const apiKey = 'NUQBZ-UIYCW-H7GRI-YXOXA-WNZB7-IGFLY';
|
|
||||||
const url = `https://apis.map.qq.com/ws/place/v1/suggestion/?keyword=${encodeURIComponent(keyword)}&key=${apiKey}®ion=全国`;
|
|
||||||
|
|
||||||
wx.request({
|
|
||||||
url: url,
|
|
||||||
success: (res) => {
|
|
||||||
if (res.data.status === 0 && res.data.data && res.data.data.length > 0) {
|
|
||||||
// 更新搜索结果
|
|
||||||
this.setData({
|
|
||||||
searchResults: res.data.data
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
wx.showToast({
|
|
||||||
title: '未找到相关地址',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
fail: (err) => {
|
|
||||||
console.error('搜索地址失败', err);
|
|
||||||
wx.showToast({
|
|
||||||
title: '搜索失败,请重试',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 选择搜索结果
|
|
||||||
onSelectSearchResult(e) {
|
|
||||||
const item = e.currentTarget.dataset.item;
|
|
||||||
const { lat, lng } = item.location;
|
|
||||||
|
|
||||||
// 更新地图位置
|
|
||||||
this.setData({
|
|
||||||
mapLatitude: lat,
|
|
||||||
mapLongitude: lng,
|
|
||||||
fullScreenMarkers: [{
|
|
||||||
id: 1,
|
|
||||||
latitude: lat,
|
|
||||||
longitude: lng,
|
|
||||||
title: item.title,
|
|
||||||
iconPath: '/images/location-marker.png',
|
|
||||||
width: 30,
|
|
||||||
height: 30
|
|
||||||
}],
|
|
||||||
searchResults: [], // 清空搜索结果
|
|
||||||
searchKeyword: item.title // 更新搜索框内容
|
|
||||||
});
|
|
||||||
|
|
||||||
// 获取地址信息
|
|
||||||
this.getAddressInfo(lat, lng, true);
|
|
||||||
},
|
|
||||||
onTitleInput(e) {
|
|
||||||
this.setData({
|
|
||||||
'form.title': e.detail.value
|
|
||||||
})
|
|
||||||
},
|
|
||||||
onStartDateInput(e) {
|
|
||||||
this.setData({
|
|
||||||
'form.startDate': e.detail.value
|
|
||||||
})
|
|
||||||
},
|
|
||||||
onEndDateInput(e) {
|
|
||||||
this.setData({
|
|
||||||
'form.endDate': e.detail.value
|
|
||||||
})
|
|
||||||
},
|
|
||||||
onAddGroupList(e) {
|
|
||||||
if (e.detail.length > 0) {
|
|
||||||
let _userIds = "";
|
|
||||||
let _userNames = "";
|
|
||||||
let groups = [];
|
|
||||||
e.detail.forEach(it => {
|
|
||||||
let item = this.data.groupList.find(item => item.id == it.userId);
|
|
||||||
groups.push(item);
|
|
||||||
_userIds += "," + item.id;
|
|
||||||
_userNames += "," + item.userName //+ `[${item.subDeptName}]`;
|
|
||||||
});
|
|
||||||
|
|
||||||
this.setData({
|
|
||||||
"form.subGroup": groups,
|
|
||||||
"form.groupIds": _userIds.substring(1),
|
|
||||||
"form.groupNames": _userNames.substring(1)
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
this.setData({
|
|
||||||
"form.subGroup": [],
|
|
||||||
"form.groupIds": "",
|
|
||||||
"form.groupNames": ""
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onRangeChange(e) {
|
|
||||||
// 正确处理步进器的值变化
|
|
||||||
this.setData({
|
|
||||||
'form.range': e.detail.value
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
//项目切换 返回值
|
|
||||||
onProjectSelect(e) {
|
|
||||||
let projectId = e.detail.id;
|
|
||||||
let projectName = e.detail.text;
|
|
||||||
app.globalData.useProjectId = projectId;
|
|
||||||
app.globalData.useProjectName = projectName;
|
|
||||||
this.onLoad();
|
|
||||||
},
|
|
||||||
doBack(isRefresh) {
|
|
||||||
/*返回列表页面并刷新*/
|
|
||||||
if (isRefresh) {
|
|
||||||
wx.navigateBack({
|
|
||||||
delta: 1
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
wx.redirectTo({
|
|
||||||
url: "../list/index",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
returnToPage: function () {
|
|
||||||
this.doBack(false);
|
|
||||||
},
|
|
||||||
submitSave() {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"usingComponents": {
|
|
||||||
"van-stepper": "@vant/weapp/stepper",
|
|
||||||
"custom-stepper": "/components/custom-stepper/index"
|
|
||||||
},
|
|
||||||
"navigationStyle": "custom",
|
|
||||||
"styleIsolation": "apply-shared",
|
|
||||||
"backgroundColor": "#191d28"
|
|
||||||
}
|
|
|
@ -1,124 +0,0 @@
|
||||||
<wxs module="format" src="/utils/format.wxs"></wxs>
|
|
||||||
|
|
||||||
<view class="header_title">
|
|
||||||
<view class="header_title_row">
|
|
||||||
<van-row>
|
|
||||||
<van-col span="4">
|
|
||||||
<view class="header_img" bindtap="returnToPage">
|
|
||||||
<image src="/images/left.png"></image>
|
|
||||||
</view>
|
|
||||||
</van-col>
|
|
||||||
<van-col span="15">
|
|
||||||
<view class="header_name">创建移动考勤</view>
|
|
||||||
</van-col>
|
|
||||||
</van-row>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<scroll-view class="max_content_scroll" type="list" scroll-y>
|
|
||||||
<project-select init="{{ initData }}" bindchange="onProjectSelect" id="projectSel"></project-select>
|
|
||||||
|
|
||||||
<view class="inspect_info">
|
|
||||||
|
|
||||||
|
|
||||||
<view class="inspect_info_list">
|
|
||||||
<view class="markers inspect_info_title">考勤标题</view>
|
|
||||||
<input class="add_input" placeholder="请输入考勤标题" placeholder-style="color: #999999;"
|
|
||||||
placeholder-class="placeholder_class" value="{{ form.title }}" bindinput="onTitleInput" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="inspect_info_list">
|
|
||||||
<view class="markers inspect_info_title">开始时间</view>
|
|
||||||
<view class="inspect_info_content">
|
|
||||||
<voucher-date counts="5" placeholder="请选择开始时间" time="{{form.startDate}}" minDate="{{ minDate }}"
|
|
||||||
maxDate="{{ maxDate||form.endDate }}" bindchange="onStartDateInput"></voucher-date>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="inspect_info_list">
|
|
||||||
<view class="markers inspect_info_title">结束时间</view>
|
|
||||||
<view class="inspect_info_content">
|
|
||||||
<voucher-date counts="5" wx:key="form.startDate" placeholder="请选择结束时间" time="{{form.endDate}}"
|
|
||||||
minDate="{{ form.startDate||minDate }}" maxDate="{{ maxDate }}" bindchange="onEndDateInput"></voucher-date>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="inspect_info_list">
|
|
||||||
<view class="markers inspect_info_title">指定考勤地点</view>
|
|
||||||
<view class="inspect_info_content">
|
|
||||||
<view class="selected-location" bindtap="showFullScreenMap">
|
|
||||||
<text>{{form.address||'点击地图选择具体位置'}}</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="inspect_info_list">
|
|
||||||
<view class="markers inspect_info_title">考勤范围(范围≤{{form.range||50}}米) </view>
|
|
||||||
<view class="inspect_info_content">
|
|
||||||
<custom-stepper value="{{form.range}}" min="10" max="5000" step="1" bindchange="onRangeChange" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class=" inspect_info_list">
|
|
||||||
<view class="markers inspect_info_title">指定考勤班组</view>
|
|
||||||
<view class="inspect_info_content">
|
|
||||||
<select-group-person rectifierData="{{subGroupList}}" multiple="{{true}}" bindselected="onAddGroupList"
|
|
||||||
index="3" :title="{{form.groupNames?form.groupNames:'请选择考勤班组'}}" choose="{{form.groupNames}}">
|
|
||||||
</select-group-person>
|
|
||||||
</view>
|
|
||||||
<view wx:if="{{form.subGroup && form.subGroup.length>0}}">
|
|
||||||
<view wx:for="{{form.subGroup}}" wx:key="item.id">
|
|
||||||
{{item.groupName}} <view class="dept-name"> [{{item.subDeptName}}]</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="problem_submit_to">
|
|
||||||
<view class="problem_submit_to_btn" bindtap="returnToPage">取消</view>
|
|
||||||
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="submitSave">保存</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</scroll-view>
|
|
||||||
|
|
||||||
<!-- 全屏地图选择器 -->
|
|
||||||
<view class="full-screen-map" wx:if="{{showFullScreenMap}}">
|
|
||||||
<view class="map-header">
|
|
||||||
<view class="back-btn" bindtap="hideFullScreenMap">
|
|
||||||
<image src="/images/left.png"></image>
|
|
||||||
</view>
|
|
||||||
<view class="map-title">选择考勤地点</view>
|
|
||||||
<!-- 右侧留空占位 -->
|
|
||||||
<view style="width: 30px;"></view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 搜索框 -->
|
|
||||||
<view class="search-container">
|
|
||||||
<input class="search-input" placeholder="请输入地址搜索" placeholder-style="color: #999999;" value="{{searchKeyword}}"
|
|
||||||
bindinput="onSearchInput" bindconfirm="onSearchConfirm" />
|
|
||||||
<view class="search-btn" bindtap="onSearchConfirm">
|
|
||||||
<text>搜索</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 搜索结果列表 -->
|
|
||||||
<view class="search-results" wx:if="{{searchResults.length > 0}}">
|
|
||||||
<view class="search-result-item" wx:for="{{searchResults}}" wx:key="index" bindtap="onSelectSearchResult"
|
|
||||||
data-item="{{item}}">
|
|
||||||
<view class="search-result-title">{{item.title}}</view>
|
|
||||||
<view class="search-result-address">{{item.address}}</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<map class="full-map" id="fullMap" longitude="{{mapLongitude}}" latitude="{{mapLatitude}}" scale="16"
|
|
||||||
markers="{{fullScreenMarkers}}" bindtap="onFullScreenMapTap" show-location>
|
|
||||||
</map>
|
|
||||||
|
|
||||||
<view class="confirm-bottom-btn" bindtap="confirmLocation">
|
|
||||||
<text>确定</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="location-info">
|
|
||||||
<view class="location-address">{{selectedAddress || '获取地址中...'}}</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
|
@ -1,223 +0,0 @@
|
||||||
/* pageage/mobile_attendance/attendance_config/add/index.wxss */
|
|
||||||
|
|
||||||
.map-hint {
|
|
||||||
color: #1989fa;
|
|
||||||
font-size: 28rpx;
|
|
||||||
padding: 20rpx 0;
|
|
||||||
text-align: center;
|
|
||||||
background-color: #2d323c; /* 深色背景 */
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
border: 2rpx solid #3d424d;
|
|
||||||
}
|
|
||||||
|
|
||||||
.map-container {
|
|
||||||
height: 400rpx;
|
|
||||||
border: 2rpx solid #3d424d;
|
|
||||||
border-radius: 16rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
background-color: #2d323c; /* 深色背景 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.map {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.selected-location {
|
|
||||||
padding: 30rpx;
|
|
||||||
background-color: #212737; /* 深色背景 */
|
|
||||||
border-radius: 10rpx;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #fff; /* 浅色文字 */
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 全屏地图样式 */
|
|
||||||
.full-screen-map {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
z-index: 9999;
|
|
||||||
background-color: #191d28; /* 使用项目主色调 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.map-header {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
height: 100rpx;
|
|
||||||
padding: 0 30rpx;
|
|
||||||
background-color: #191d28; /* 使用项目主色调 */
|
|
||||||
box-shadow: 0 4rpx 20rpx rgba(0,0,0,0.3);
|
|
||||||
position: fixed;
|
|
||||||
top: 75rpx;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
z-index: 1001;
|
|
||||||
box-sizing: border-box;
|
|
||||||
border-bottom: 2rpx solid #2d323c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.back-btn {
|
|
||||||
width: 60rpx;
|
|
||||||
height: 60rpx;
|
|
||||||
padding: 10rpx;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.back-btn image {
|
|
||||||
width: 30rpx;
|
|
||||||
height: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.map-title {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #ffffff; /* 白色文字 */
|
|
||||||
flex: 1;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 搜索框样式 */
|
|
||||||
.search-container {
|
|
||||||
position: fixed;
|
|
||||||
top: 160rpx;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
padding: 20rpx 30rpx;
|
|
||||||
background-color: #191d28;
|
|
||||||
z-index: 1001;
|
|
||||||
display: flex;
|
|
||||||
box-sizing: border-box;
|
|
||||||
border-bottom: 2rpx solid #2d323c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-input {
|
|
||||||
flex: 1;
|
|
||||||
height: 72rpx;
|
|
||||||
padding: 0 24rpx;
|
|
||||||
background-color: #2d323c;
|
|
||||||
border: 2rpx solid #3d424d;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
color: #ffffff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
margin-right: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-input::placeholder {
|
|
||||||
color: #999999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-btn {
|
|
||||||
width: 120rpx;
|
|
||||||
height: 72rpx;
|
|
||||||
background-color: #1989fa;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
color: #ffffff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dept-name{
|
|
||||||
display: inline-block;
|
|
||||||
color:orange;
|
|
||||||
}
|
|
||||||
.search-btn:active {
|
|
||||||
background-color: #0c7ae6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.full-map {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
margin-top: 194rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.location-info {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 160rpx;
|
|
||||||
left: 40rpx;
|
|
||||||
right: 40rpx;
|
|
||||||
background-color: rgba(40, 44, 52, 0.95); /* 深色背景 */
|
|
||||||
padding: 30rpx;
|
|
||||||
border-radius: 16rpx;
|
|
||||||
box-shadow: 0 4rpx 24rpx rgba(0,0,0,0.3);
|
|
||||||
z-index: 1000;
|
|
||||||
backdrop-filter: blur(20rpx);
|
|
||||||
box-sizing: border-box;
|
|
||||||
border: 2rpx solid #2d323c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.location-address {
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #e0e0e0; /* 浅灰色文字 */
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
|
|
||||||
.confirm-bottom-btn {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 40rpx;
|
|
||||||
left: 40rpx;
|
|
||||||
right: 40rpx;
|
|
||||||
background-color: #1989fa; /* 保持蓝色按钮 */
|
|
||||||
color: white;
|
|
||||||
border-radius: 16rpx;
|
|
||||||
font-size: 32rpx;
|
|
||||||
text-align: center;
|
|
||||||
padding: 30rpx;
|
|
||||||
z-index: 1000;
|
|
||||||
box-shadow: 0 8rpx 24rpx rgba(25, 137, 250, 0.3);
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.confirm-bottom-btn:active {
|
|
||||||
background-color: #0c7ae6;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 搜索结果列表样式 */
|
|
||||||
.search-results {
|
|
||||||
position: fixed;
|
|
||||||
top: 270rpx;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
max-height: 90%;
|
|
||||||
background-color: #2d323c;
|
|
||||||
z-index: 1002;
|
|
||||||
overflow-y: auto;
|
|
||||||
box-sizing: border-box;
|
|
||||||
border-bottom: 2rpx solid #3d424d;
|
|
||||||
height:calc(100vh - 270rpx);
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-result-item {
|
|
||||||
padding: 30rpx;
|
|
||||||
border-bottom: 2rpx solid #3d424d;
|
|
||||||
color: #e0e0e0;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-result-item:last-child {
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-result-item:active {
|
|
||||||
background-color: #3d424d;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-result-title {
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: 10rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-result-address {
|
|
||||||
color: #999999;
|
|
||||||
font-size: 24rpx;
|
|
||||||
}
|
|
|
@ -1,135 +0,0 @@
|
||||||
// pageage/mobile_attendance/attendance_config/index.js
|
|
||||||
import config from "../../../../config.js";
|
|
||||||
import fmt from "../../../utils/date.js";
|
|
||||||
import { getToken, getUserInfo } from "../../../../utils/auth.js";
|
|
||||||
import { uploadFiles } from "../../../utils/upload.js";
|
|
||||||
import { tryToJson } from '../../../utils/tools.js'
|
|
||||||
import {
|
|
||||||
getProjectChecked,
|
|
||||||
findPlanDatas,
|
|
||||||
listProProjectInfoSubdeptsUsers,
|
|
||||||
updateProjectChecked,
|
|
||||||
addProjectChecked,
|
|
||||||
} from "../../../../api/project.js";
|
|
||||||
|
|
||||||
const app = getApp();
|
|
||||||
|
|
||||||
Page({
|
|
||||||
/**
|
|
||||||
* 页面的初始数据
|
|
||||||
*/
|
|
||||||
data: {
|
|
||||||
projectUserInfo: {},
|
|
||||||
projectUserInfo: {},
|
|
||||||
projectId: "",
|
|
||||||
projectName: "",
|
|
||||||
initData: {},
|
|
||||||
listData: [],
|
|
||||||
counts: [0, 0],
|
|
||||||
activeState: 'vaild',
|
|
||||||
pageNum: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面加载
|
|
||||||
*/
|
|
||||||
onLoad(options) {
|
|
||||||
if (!getToken()) {
|
|
||||||
wx.redirectTo({
|
|
||||||
url: "../../../pages/login/login",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const proUserInfo = getUserInfo();
|
|
||||||
this.setData({
|
|
||||||
projectUserInfo: proUserInfo.projectUserInfo,
|
|
||||||
projectId: app.globalData.useProjectId,
|
|
||||||
projectName: app.globalData.useProjectName,
|
|
||||||
initData: {
|
|
||||||
id: app.globalData.useProjectId,
|
|
||||||
text: app.globalData.useProjectName,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
},
|
|
||||||
switchTabJump(e) {
|
|
||||||
let index = e.currentTarget.dataset.index;
|
|
||||||
let nav = "";
|
|
||||||
if (index == 1) {
|
|
||||||
nav = 'vaild';
|
|
||||||
} else {
|
|
||||||
nav = 'invalid';
|
|
||||||
}
|
|
||||||
if (nav != this.data.activeState) {
|
|
||||||
this.setData({
|
|
||||||
activeState: nav,
|
|
||||||
pageNum: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
listData: [],
|
|
||||||
});
|
|
||||||
//this.getListData();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* 增加
|
|
||||||
*/
|
|
||||||
doAddCfg() {
|
|
||||||
wx.redirectTo({
|
|
||||||
url: '../add/index',
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面初次渲染完成
|
|
||||||
*/
|
|
||||||
onReady() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面显示
|
|
||||||
*/
|
|
||||||
onShow() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面隐藏
|
|
||||||
*/
|
|
||||||
onHide() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生命周期函数--监听页面卸载
|
|
||||||
*/
|
|
||||||
onUnload() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 页面相关事件处理函数--监听用户下拉动作
|
|
||||||
*/
|
|
||||||
onPullDownRefresh() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 页面上拉触底事件的处理函数
|
|
||||||
*/
|
|
||||||
onReachBottom() { },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户点击右上角分享
|
|
||||||
*/
|
|
||||||
onShareAppMessage() { },
|
|
||||||
//项目切换 返回值
|
|
||||||
onProjectSelect(e) {
|
|
||||||
let projectId = e.detail.id;
|
|
||||||
let projectName = e.detail.text;
|
|
||||||
app.globalData.useProjectId = projectId;
|
|
||||||
app.globalData.useProjectName = projectName;
|
|
||||||
this.onLoad();
|
|
||||||
},
|
|
||||||
returnToPage() {
|
|
||||||
/*关闭当前页面,跳转到其它页面。*/
|
|
||||||
if (wx.getStorageSync('nav-menu') == "xmgl") {
|
|
||||||
wx.redirectTo({
|
|
||||||
url: '../../../project_more/index',
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
wx.redirectTo({
|
|
||||||
url: '../../../project_quality/index',
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"usingComponents": {},
|
|
||||||
"navigationStyle": "custom",
|
|
||||||
"styleIsolation": "apply-shared",
|
|
||||||
"backgroundColor": "#191d28"
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
<wxs module="format" src="/utils/format.wxs"></wxs>
|
|
||||||
|
|
||||||
<view class="header_title">
|
|
||||||
<view class="header_title_row">
|
|
||||||
<van-row>
|
|
||||||
<van-col span="4">
|
|
||||||
<view class="header_img" bindtap="returnToPage">
|
|
||||||
<image src="/images/left.png"></image>
|
|
||||||
</view>
|
|
||||||
</van-col>
|
|
||||||
<van-col span="15">
|
|
||||||
<view class="header_name">移动考勤管理</view>
|
|
||||||
</van-col>
|
|
||||||
</van-row>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<scroll-view class="max_content_scroll" type="list" scroll-y>
|
|
||||||
<project-select init="{{ initData }}" bindchange="onProjectSelect" id="projectSel"></project-select>
|
|
||||||
|
|
||||||
|
|
||||||
<view class="modify_video_nav" style="margin-top: 5rpx;">
|
|
||||||
<view class="{{activeState=='vaild'?'active':''}}" bindtap="switchTabJump" data-index="1">
|
|
||||||
<text>生效中({{counts[0]}})</text>
|
|
||||||
</view>
|
|
||||||
<view class="{{activeState=='invalid'?'active':''}}" bindtap="switchTabJump" data-index="2">
|
|
||||||
<text>已过期({{counts[1]}})</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view wx:if="{{listData.length==0}}">
|
|
||||||
<view style="padding-top: 70px;text-align: -webkit-center;">
|
|
||||||
<image src="https://szgcwx.jhncidg.com/staticFiles/nodata.png" style="width: 130px;height: 105px;"></image>
|
|
||||||
<view style="color: #a5abbb;">暂无数据</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
|
|
||||||
<view class="inspect_add_to" bindtap="doAddCfg">
|
|
||||||
|
|
||||||
<view style="padding-top: 22rpx">
|
|
||||||
<image src="/images/new_add.png"></image>
|
|
||||||
<view>新增</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</scroll-view>
|
|
|
@ -1 +0,0 @@
|
||||||
/* pageage/mobile_attendance/attendance_config/index.wxss */
|
|
|
@ -138,7 +138,6 @@ Page({
|
||||||
copySendList: res.data.copySendList,
|
copySendList: res.data.copySendList,
|
||||||
checkUserList: res.data.checkUserList,
|
checkUserList: res.data.checkUserList,
|
||||||
});
|
});
|
||||||
console.log("--->", res.data)
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
Page({
|
|
||||||
data: {
|
|
||||||
value1: 0,
|
|
||||||
value2: 0,
|
|
||||||
value3: 5,
|
|
||||||
value4: 3
|
|
||||||
},
|
|
||||||
|
|
||||||
onChange1(e) {
|
|
||||||
this.setData({
|
|
||||||
value1: e.detail.value
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
onChange2(e) {
|
|
||||||
this.setData({
|
|
||||||
value2: e.detail.value
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
onChange3(e) {
|
|
||||||
this.setData({
|
|
||||||
value3: e.detail.value
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
onChange4(e) {
|
|
||||||
this.setData({
|
|
||||||
value4: e.detail.value
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"usingComponents": {
|
|
||||||
"custom-stepper": "/components/custom-stepper/index"
|
|
||||||
},
|
|
||||||
"navigationBarTitleText": "自定义步进器测试"
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
<view class="container">
|
|
||||||
<view class="stepper-demo">
|
|
||||||
<view class="demo-title">基本用法</view>
|
|
||||||
<custom-stepper value="{{ value1 }}" bindchange="onChange1" />
|
|
||||||
<text class="current-value">当前值:{{ value1 }}</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="stepper-demo">
|
|
||||||
<view class="demo-title">设置步长</view>
|
|
||||||
<custom-stepper value="{{ value2 }}" step="2" bindchange="onChange2" />
|
|
||||||
<text class="current-value">当前值:{{ value2 }}</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="stepper-demo">
|
|
||||||
<view class="demo-title">设置范围</view>
|
|
||||||
<custom-stepper value="{{ value3 }}" min="0" max="10" bindchange="onChange3" />
|
|
||||||
<text class="current-value">当前值:{{ value3 }}</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="stepper-demo">
|
|
||||||
<view class="demo-title">禁用状态</view>
|
|
||||||
<custom-stepper value="{{ value4 }}" disabled bindchange="onChange4" />
|
|
||||||
<text class="current-value">当前值:{{ value4 }}</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
|
@ -1,20 +0,0 @@
|
||||||
.container {
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stepper-demo {
|
|
||||||
margin-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.demo-title {
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.current-value {
|
|
||||||
display: block;
|
|
||||||
margin-top: 10px;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #666;
|
|
||||||
}
|
|
|
@ -1,43 +1,43 @@
|
||||||
{
|
{
|
||||||
"appid": "wx46466c7828eede2b",
|
"appid": "wx46466c7828eede2b",
|
||||||
"compileType": "miniprogram",
|
"compileType": "miniprogram",
|
||||||
"libVersion": "3.8.9",
|
"libVersion": "3.8.9",
|
||||||
"packOptions": {
|
"packOptions": {
|
||||||
"ignore": [],
|
"ignore": [],
|
||||||
"include": []
|
"include": []
|
||||||
|
},
|
||||||
|
"setting": {
|
||||||
|
"coverView": true,
|
||||||
|
"es6": true,
|
||||||
|
"postcss": true,
|
||||||
|
"minified": true,
|
||||||
|
"enhance": true,
|
||||||
|
"showShadowRootInWxmlPanel": true,
|
||||||
|
"packNpmRelationList": [],
|
||||||
|
"babelSetting": {
|
||||||
|
"ignore": [],
|
||||||
|
"disablePlugins": [],
|
||||||
|
"outputPath": ""
|
||||||
},
|
},
|
||||||
"setting": {
|
"ignoreDevUnusedFiles": false,
|
||||||
"coverView": true,
|
"ignoreUploadUnusedFiles": false,
|
||||||
"es6": true,
|
"condition": false,
|
||||||
"postcss": true,
|
"compileWorklet": false,
|
||||||
"minified": true,
|
"uglifyFileName": false,
|
||||||
"enhance": true,
|
"uploadWithSourceMap": true,
|
||||||
"showShadowRootInWxmlPanel": true,
|
"packNpmManually": false,
|
||||||
"packNpmRelationList": [],
|
"minifyWXSS": true,
|
||||||
"babelSetting": {
|
"minifyWXML": true,
|
||||||
"ignore": [],
|
"localPlugins": false,
|
||||||
"disablePlugins": [],
|
"disableUseStrict": false,
|
||||||
"outputPath": ""
|
"useCompilerPlugins": false,
|
||||||
},
|
"swc": false,
|
||||||
"ignoreDevUnusedFiles": false,
|
"disableSWC": true
|
||||||
"ignoreUploadUnusedFiles": false,
|
},
|
||||||
"condition": false,
|
"condition": {},
|
||||||
"compileWorklet": false,
|
"editorSetting": {
|
||||||
"uglifyFileName": false,
|
"tabIndent": "auto",
|
||||||
"uploadWithSourceMap": true,
|
"tabSize": 4
|
||||||
"packNpmManually": false,
|
},
|
||||||
"minifyWXSS": true,
|
"simulatorPluginLibVersion": {}
|
||||||
"minifyWXML": true,
|
|
||||||
"localPlugins": false,
|
|
||||||
"disableUseStrict": false,
|
|
||||||
"useCompilerPlugins": false,
|
|
||||||
"swc": false,
|
|
||||||
"disableSWC": true
|
|
||||||
},
|
|
||||||
"condition": {},
|
|
||||||
"editorSetting": {
|
|
||||||
"tabIndent": "auto",
|
|
||||||
"tabSize": 4
|
|
||||||
},
|
|
||||||
"simulatorPluginLibVersion": {}
|
|
||||||
}
|
}
|
|
@ -220,28 +220,8 @@ export function securitySignFileUpload(file) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function request(options) {
|
export function request(options) {
|
||||||
// 处理GET请求的params参数
|
if (options.method == 'get' && options.params) {
|
||||||
if ((options.method === 'get' || options.method === 'GET') && options.params) {
|
options.url = options.url + "?" + options.params;
|
||||||
let paramsStr = '';
|
|
||||||
if (typeof options.params === 'object' && !Array.isArray(options.params)) {
|
|
||||||
// 如果params是对象,将其转换为查询字符串
|
|
||||||
const queryParts = [];
|
|
||||||
Object.keys(options.params).forEach(key => {
|
|
||||||
if (options.params[key] !== null && options.params[key] !== undefined) {
|
|
||||||
const encodedKey = encodeURIComponent(key);
|
|
||||||
const encodedValue = encodeURIComponent(String(options.params[key]));
|
|
||||||
queryParts.push(encodedKey + '=' + encodedValue);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
paramsStr = queryParts.join('&');
|
|
||||||
} else {
|
|
||||||
// 如果params是字符串,直接使用
|
|
||||||
paramsStr = options.params;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (paramsStr) {
|
|
||||||
options.url += (options.url.includes('?') ? '&' : '?') + paramsStr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return doRequest(options.url, options.method, options.data, options.header)
|
return doRequest(options.url, options.method, options.data, options.header)
|
||||||
}
|
}
|
|
@ -11,7 +11,7 @@
|
||||||
<script>
|
<script>
|
||||||
window.yanzhuAppTitle = "数字建安施工";
|
window.yanzhuAppTitle = "数字建安施工";
|
||||||
</script>
|
</script>
|
||||||
<link rel="icon" href="/cdn/bsimages/faviconnew.ico?v=4" />
|
<link rel="icon" href="/cdn/bsimages/faviconnewfaviconnew.ico?v=4" />
|
||||||
<title>数字建安施工</title>
|
<title>数字建安施工</title>
|
||||||
<script
|
<script
|
||||||
type="text/javascript"
|
type="text/javascript"
|
||||||
|
|
Loading…
Reference in New Issue