This commit is contained in:
liuye
2022-06-09 14:10:33 +08:00
20 changed files with 155 additions and 182 deletions

View File

@@ -1,6 +1,6 @@
const {chalkTag, findPages, fs, fsExtra} = require("./tools"); const {chalkTag, findPages, fs, fsExtra} = require("./tools");
const axios = require("axios"); const axios = require("axios");
let apps = {list: [], desc: "用于产品库主页面获取应用使用"} let apps = {list: [], desc: "用于产品库主页面获取应用使用", type: 'wxwork'}
const getFileInfo = (app, file) => { const getFileInfo = (app, file) => {
let vue = fs.readFileSync(file).toString() let vue = fs.readFileSync(file).toString()
if (/appName/.test(vue)) { if (/appName/.test(vue)) {
@@ -11,7 +11,7 @@ const getFileInfo = (app, file) => {
} else } else
app.style = {navigationBarTitleText: app.label} app.style = {navigationBarTitleText: app.label}
} }
if (/^App/.test(app.name)) { if (/^App/.test(app.name) && app.label) {
let {name, label} = app, let {name, label} = app,
path = app.path.replace(/.+[\\\/]([^\\\/]+)[\\\/]([^\\\/]+)$/g, `/apps/$1/$2`) path = app.path.replace(/.+[\\\/]([^\\\/]+)[\\\/]([^\\\/]+)$/g, `/apps/$1/$2`)
apps.list.push({ apps.list.push({
@@ -27,7 +27,7 @@ const getFileInfo = (app, file) => {
const saveApps = app => { const saveApps = app => {
if (app.list.length > 0) { if (app.list.length > 0) {
axios.post("http://192.168.1.87:12525/node/wechatapps/addOrUpdate", app, {timeout: 1000}).then(res => { axios.post("http://192.168.1.87:12525/node/wechatapps/addOrUpdate", app, {timeout: 1000}).then(res => {
if (res.code == 0) chalkTag.done("产品库目录已同步至后台数据库...") if (res.data.code == 0) chalkTag.done("产品库目录已同步至后台数据库...")
}).catch(err => { }).catch(err => {
console.log(err) console.log(err)
}) })

View File

@@ -11,7 +11,8 @@
<div class="record-item" v-for="(item, index) in 100" :key="index"> <div class="record-item" v-for="(item, index) in 100" :key="index">
<image :src="user.avatar" /> <image :src="user.avatar" />
<div class="right"> <div class="right">
<image src="./img/voice-icon.png" /> <!-- <image mode="aspectFit" src="./img/voice-icon.png" /> -->
<image src="./img/voice.gif" />
<span>23"</span> <span>23"</span>
</div> </div>
</div> </div>
@@ -412,8 +413,8 @@
} }
image { image {
width: 20px; width: 28px;
height: 32px; height: 28px;
margin-right: 14px; margin-right: 14px;
} }
} }

View File

@@ -15,7 +15,7 @@ instance.interceptors.request.use(config => {
} else if (/AppCountryAlbum/.test(location.pathname) || config.module == 'AppCountryAlbum') { } else if (/AppCountryAlbum/.test(location.pathname) || config.module == 'AppCountryAlbum') {
config.baseURL = '/aca' config.baseURL = '/aca'
config.url = config.url.replace(/(app|auth|admin)\//, "api/") config.url = config.url.replace(/(app|auth|admin)\//, "api/")
} else if (/\/project\/beta\//.test(location.pathname)) { } else if (/\/project\/beta\//.test(location.pathname) || store.state.config.corpid == 'ww2a667717a70164f1' || config.module == 'wangge') {
config.baseURL = '/wangge' config.baseURL = '/wangge'
} else if (/\/project\/police\//.test(location.pathname) || config.module == 'hnjc') { } else if (/\/project\/police\//.test(location.pathname) || config.module == 'hnjc') {
config.baseURL = '/hnjc' config.baseURL = '/hnjc'

View File

@@ -22,7 +22,8 @@ export default {
nodeKey: {default: "idNumber"}, nodeKey: {default: "idNumber"},
selected: {default: () => []}, selected: {default: () => []},
placeholder: {default: "选择人员"}, placeholder: {default: "选择人员"},
ops: {default: () => ({})} ops: {default: () => ({})},
valueObj: Boolean
}, },
data() { data() {
return { return {
@@ -46,13 +47,13 @@ export default {
}, },
methods: { methods: {
handleJump() { handleJump() {
let {config, nodeKey} = this, let {config, nodeKey, valueObj} = this,
selected = this.value || this.selected?.map(e => e[nodeKey]) selected = (valueObj ? this.value[nodeKey] : this.value) || this.selected?.map(e => e[nodeKey])
uni.$once('pagePicker:' + this.type, data => { uni.$once('pagePicker:' + this.type, data => {
console.log('发送', data) console.log('发送', data)
this.$emit("update:selected", data) this.$emit("update:selected", data)
this.$emit("select", data) this.$emit("select", data)
this.$emit("change", data ? [data].flat()?.map(e => e[nodeKey]) : "") this.$emit("change", valueObj ? data : data ? [data].flat()?.map(e => e[nodeKey]) : "")
}) })
let url = `${config.url}`, let url = `${config.url}`,
qsstr = qs.stringify({ qsstr = qs.stringify({

View File

@@ -33,7 +33,8 @@ export default {
return decodeURIComponent(this.$route.query.back) || "" return decodeURIComponent(this.$route.query.back) || ""
}, },
currentApp() { currentApp() {
return this.apps.find(e => this.target.indexOf(e.libPath) > -1) || {} let path = this.target.replace(/(.+)[\\\/][^\\\/]+\??.*/, '$1')
return this.apps.find(e => e.libPath.indexOf(path) > -1) || {}
}, },
appPath() { appPath() {
return this.currentApp?.label || "" return this.currentApp?.label || ""
@@ -50,12 +51,15 @@ export default {
handleLogin() { handleLogin() {
this.$refs.loginForm.validate(v => { this.$refs.loginForm.validate(v => {
if (v) { if (v) {
let {name: module,libPath} = this.currentApp let {name: module, libPath} = this.currentApp,
if(/\/project\/police\//.test(libPath)){ corpId = 'ww596787bb70f08288'
if (/\/project\/police\//.test(libPath)) {
module = 'hnjc' module = 'hnjc'
} else if (/\/project\/beta\//.test(libPath)) {
corpId = 'ww2a667717a70164f1'
module = 'wangge'
} }
this.getToken({...this.form, module, corpId: 'ww596787bb70f08288'}).then(() => { this.getToken({...this.form, module, corpId}).then(() => {
// this.getToken({...this.form, module, corpId: 'wpytYEDgAAcpXjmlYkYwKO60JDGDWrXg'}).then(() => {
this.target ? uni.reLaunch({url: this.target}) : uni.navigateBack({}) this.target ? uni.reLaunch({url: this.target}) : uni.navigateBack({})
}).catch(() => 0) }).catch(() => 0)
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -34,7 +34,6 @@ export default {
girdMemberManageList: [], girdMemberManageList: [],
girdMemberList: [] girdMemberList: []
}, },
detailInfo: {},
fromType: 'add', //add新增 edit编辑, fromType: 'add', //add新增 edit编辑,
} }
}, },
@@ -54,13 +53,14 @@ export default {
getDetail() { getDetail() {
this.$http.post(`/app/appgirdinfo/queryDetailById?id=${this.id}`).then((res) => { this.$http.post(`/app/appgirdinfo/queryDetailById?id=${this.id}`).then((res) => {
if (res?.data) { if (res?.data) {
this.detailInfo = res.data
if (this.fromType == 'edit') { if (this.fromType == 'edit') {
this.form = res.data this.form = res.data
this.form.girdMemberList.map(e => e.id = e.wxUserId)
this.form.girdMemberManageList.map(e => e.id = e.wxUserId)
} }
if (this.fromType == 'add') { if (this.fromType == 'add') {
this.form.parentGirdId = this.detailInfo.id this.form.parentGirdId = res.data.id
this.form.parentGirdName = this.detailInfo.girdName this.form.parentGirdName = res.data.girdName
this.$forceUpdate() this.$forceUpdate()
} }
} }

View File

@@ -1,11 +1,11 @@
<template> <template>
<div class="AddGird"> <section class="AddGird">
<div class="item-flex"> <div class="item-flex">
<div class="label"> <div class="label">
<span class="tips">*</span>姓名 <span class="tips">*</span>姓名
</div> </div>
<div class="value"> <div class="value">
<u-input type="text" placeholder="请输入" input-align="right" placeholder-style="color:#999;font-size:16px;" height="48" v-model="name" maxlength="50" /> <u-input type="text" placeholder="请输入" input-align="right" placeholder-style="color:#999;font-size:16px;" height="48" v-model="name" maxlength="50"/>
</div> </div>
</div> </div>
<div class="item-flex"> <div class="item-flex">
@@ -13,24 +13,26 @@
<span class="tips">*</span>手机号 <span class="tips">*</span>手机号
</div> </div>
<div class="value"> <div class="value">
<u-input type="text" placeholder="请输入" input-align="right" placeholder-style="color:#999;font-size:16px;" height="48" v-model="phone" maxlength="50" /> <u-input type="text" placeholder="请输入" input-align="right" placeholder-style="color:#999;font-size:16px;" height="48" v-model="phone" maxlength="50"/>
</div> </div>
</div> </div>
<div class="item-flex"> <div class="item-flex">
<div class="label"> <div class="label">
<span class="tips">*</span>所属网格 <span class="tips">*</span>所属网格
</div> </div>
<div class="value" @click="linkTo('./SelectGird?formType=2')"> <div class="value">
<span v-if="selectGird.girdName">{{selectGird.girdName}}</span> <AiPagePicker type="custom" v-model="selectGird" valueObj nodeKey="id" :ops="{url:'./SelectGird',label: 'girdName'}" formType="2">
<span style="color:#999;" v-else>请选择</span> <AiMore v-model="selectGird.girdName"/>
<img src="./components/img/right-icon.png" alt="" /></div> </AiPagePicker>
</div>
<div class="footer" @click="confirm">确认添加</div>
</div> </div>
<div class="footer" @click="confirm">确认添加</div> </section>
</div>
</template> </template>
<script> <script>
import {mapState} from 'vuex' import {mapState} from 'vuex'
export default { export default {
data() { data() {
return { return {
@@ -41,25 +43,21 @@ export default {
}, },
computed: {...mapState(['user'])}, computed: {...mapState(['user'])},
onLoad() { onLoad() {
console.log(this.user)
this.name = this.user.name || '' this.name = this.user.name || ''
this.phone = this.user.phone || '' this.phone = this.user.phone || ''
uni.$on('goback', (res) => {
this.selectGird = res
})
}, },
onShow() { onShow() {
document.title = '网格员信息申报' document.title = '网格员信息申报'
}, },
methods: { methods: {
confirm() { confirm() {
if(!this.name){ if (!this.name) {
return this.$u.toast('请输入姓名') return this.$u.toast('请输入姓名')
} }
if(!this.phone){ if (!this.phone) {
return this.$u.toast('请输入手机号') return this.$u.toast('请输入手机号')
} }
if(!this.selectGird.girdName){ if (!this.selectGird.girdName) {
return this.$u.toast('请选择所属网格') return this.$u.toast('请选择所属网格')
} }
this.$http.post(`/app/appgirdmemberapply/girdMemberCheck?name=${this.name}&phone=${this.phone}&girdName=${this.selectGird.girdName}`).then((res) => { this.$http.post(`/app/appgirdmemberapply/girdMemberCheck?name=${this.name}&phone=${this.phone}&girdName=${this.selectGird.girdName}`).then((res) => {
@@ -73,7 +71,7 @@ export default {
}, },
linkTo(url) { linkTo(url) {
uni.navigateTo({ url }) uni.navigateTo({url})
}, },
} }
} }
@@ -81,42 +79,48 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.AddGird { .AddGird {
.item-flex{ .item-flex {
display: flex; display: flex;
padding: 34px 32px; padding: 34px 32px;
background-color: #fff; background-color: #fff;
font-size: 32px; font-size: 32px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
margin-bottom: 16px; margin-bottom: 16px;
.label{
.label {
font-weight: 400; font-weight: 400;
color: #333333; color: #333333;
line-height: 22px; line-height: 22px;
width: 150px; width: 150px;
.tips{
.tips {
display: inline-block; display: inline-block;
width: 16px; width: 16px;
color: #F46; color: #F46;
line-height: 44px; line-height: 44px;
} }
} }
.value{
.value {
width: calc(100% - 150px); width: calc(100% - 150px);
line-height: 44px; line-height: 44px;
text-align: right; text-align: right;
color: #666; color: #666;
img{
img {
width: 32px; width: 32px;
height: 32px; height: 32px;
vertical-align: middle; vertical-align: middle;
margin-left: 8px; margin-left: 8px;
} }
} }
.color-999{
.color-999 {
color: #999; color: #999;
} }
} }
.footer{
.footer {
width: 100%; width: 100%;
height: 112px; height: 112px;
line-height: 112px; line-height: 112px;

View File

@@ -2,9 +2,9 @@
<div class="success"> <div class="success">
<img src="./components/img/success.png" alt="" v-if="status"> <img src="./components/img/success.png" alt="" v-if="status">
<img src="./components/img/fail.png" alt="" v-else> <img src="./components/img/fail.png" alt="" v-else>
<p>{{status == 1 ? '信息申报成功!' : '信息申报失败!'}}</p> <p>{{ status == 1 ? '信息申报成功!' : '信息申报失败!' }}</p>
<p class="text">{{status == 1 ? '重新进入即可开始正常使用' : '系统无法匹配该申报信息,请联系管理人员进行处理'}}</p> <p class="text">{{ status == 1 ? '重新进入即可开始正常使用' : '系统无法匹配该申报信息,请联系管理人员进行处理' }}</p>
<div class="footer" @click="back">{{status == 1 ? '确定' : '我知道了'}}</div> <div class="footer" @click="back">{{ status == 1 ? '确定' : '我知道了' }}</div>
</div> </div>
</template> </template>
@@ -23,25 +23,32 @@ export default {
}, },
methods: { methods: {
back() { back() {
uni.navigateBack({delta: 2}) uni.navigateBack({
delta: 2, success() {
location.reload()
}
})
} }
}, },
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
uni-page-body{ uni-page-body {
height: 100%; height: 100%;
background-color: #fff; background-color: #fff;
} }
.success { .success {
text-align: center; text-align: center;
img{
img {
width: 192px; width: 192px;
height: 192px; height: 192px;
margin: 96px 0 16px 0; margin: 96px 0 16px 0;
} }
p{
p {
line-height: 50px; line-height: 50px;
color: #333; color: #333;
font-size: 36px; font-size: 36px;
@@ -49,7 +56,8 @@ uni-page-body{
text-align: center; text-align: center;
margin-bottom: 16px; margin-bottom: 16px;
} }
.footer{
.footer {
width: calc(100% - 96px); width: calc(100% - 96px);
height: 88px; height: 88px;
line-height: 88px; line-height: 88px;
@@ -63,7 +71,8 @@ uni-page-body{
border-radius: 8px; border-radius: 8px;
margin-left: 48px; margin-left: 48px;
} }
.text{
.text {
line-height: 44px; line-height: 44px;
font-size: 28px; font-size: 28px;
width: 500px; width: 500px;

View File

@@ -23,20 +23,20 @@
<div class="info-flex" v-for="(item, index) in form.girdMemberManageList" :key="index"> <div class="info-flex" v-for="(item, index) in form.girdMemberManageList" :key="index">
<span class="label">网格长</span> <span class="label">网格长</span>
<span class="value"> <span class="value">
{{ [item.name,item.phone].join(" ") }} {{ [item.name, item.phone].join(" ") }}
</span> </span>
</div> </div>
<div v-if="form.girdMemberList && form.girdMemberList.length"> <div v-if="form.girdMemberList && form.girdMemberList.length">
<div class="info-flex" v-for="(item, index) in form.girdMemberList" :key="index"> <div class="info-flex" v-for="(item, index) in form.girdMemberList" :key="index">
<span class="label">网格</span> <span class="label">网格</span>
<span class="value">{{ item.name }}&nbsp;&nbsp;{{ item.phone }} <span class="value">{{ item.name }}&nbsp;&nbsp;{{ item.phone }}
<img :src="$cdn + 'common/phone.png'" alt="" @click="callPhone(item.phone)" class="phone-icon" <img :src="$cdn + 'common/phone.png'" alt="" @click="callPhone(item.phone)" class="phone-icon"
v-if="item.phone"> v-if="item.phone">
</span> </span>
</div> </div>
</div> </div>
</scroll-view> </scroll-view>
</div> </div>
</u-popup> </u-popup>
</div> </div>
@@ -65,43 +65,14 @@ export default {
created() { created() {
this.$dict.load('girdType') this.$dict.load('girdType')
this.areaId = this.user.areaId this.areaId = this.user.areaId
// this.getLeafNodes()
uni.$on('goback', e => {
this.getGridList(e.id, true)
})
}, },
onShow() { onShow() {
document.title = "网格管理" document.title = "网格管理"
}, },
methods: { methods: {
toChoose () { getGridList(id) {
uni.navigateTo({
url: './SelectGird?isFormMap=1'
})
},
getLeafNodes() {
this.$http.post(`/app/appgirdinfo/queryGirdMemberGirdsById`).then((res) => {
if (res?.data) {
this.treeList = res.data
const arr = res.data.filter(v => v.points).map(e => {
return {
id: e.id,
girdName: e.girdName,
points: e.points.map(p => [p.lng, p.lat])
}
})
arr.length > 0 && this.renderGridMap(arr)
}
})
},
getGridList (id) {
this.$loading() this.$loading()
this.$http.post(`/app/appgirdinfo/queryChildGirdInfoByGirdId?girdId=${id}`).then((res) => { this.$http.post(`/app/appgirdinfo/queryChildGirdInfoByGirdId?girdId=${id}`).then((res) => {
this.$hideLoading()
if (res?.data) { if (res?.data) {
const arr = res.data.map(v => { const arr = res.data.map(v => {
return { return {
@@ -112,12 +83,11 @@ export default {
}) })
this.renderGridMap(arr) this.renderGridMap(arr)
} }
}).catch(() => { }).finally(() => {
this.$hideLoading() this.$hideLoading()
}) })
}, },
getGridInfo(id, flag) {
getGridInfo (id, flag) {
this.$loading() this.$loading()
this.$http.post(`/app/appgirdinfo/queryDetailById?id=${id}`).then((res) => { this.$http.post(`/app/appgirdinfo/queryDetailById?id=${id}`).then((res) => {
this.$hideLoading() this.$hideLoading()
@@ -142,7 +112,6 @@ export default {
this.$hideLoading() this.$hideLoading()
}) })
}, },
renderGridMap(paths, count = 0) { renderGridMap(paths, count = 0) {
let {map, lib: TMap, $refs: {AiTMap: {fitBounds}}} = this let {map, lib: TMap, $refs: {AiTMap: {fitBounds}}} = this
if (TMap) { if (TMap) {
@@ -157,58 +126,54 @@ export default {
} }
if (paths?.length > 0) { if (paths?.length > 0) {
let bounds = [] let bounds = []
paths.forEach((path, i) => { paths.forEach((path, i) => {
let color = colors[i % colors.length] if(path.points?.length>0){
let polygon = new TMap.MultiPolygon({ let polygon = new TMap.MultiPolygon({
map, styles: { map, styles: {
default: new TMap.PolygonStyle({ default: new TMap.PolygonStyle({
showBorder: true, showBorder: true,
borderColor: '#5088FF', borderColor: '#5088FF',
borderWidth: 2, borderWidth: 2,
color: this.$colorUtils.Hex2RGBA('#5088FF', 0.1) color: this.$colorUtils.Hex2RGBA('#5088FF', 0.1)
}) })
}, },
id: path.id, id: path.id,
geometries: [{paths: path.points.map(e => new TMap.LatLng(e[1], e[0]))}] geometries: [{paths: path.points.map(e => new TMap.LatLng(e[1], e[0]))}]
}) })
this.polygons.push(polygon) this.polygons.push(polygon)
bounds.push(fitBounds(path.points.map(e => new TMap.LatLng(e[1], e[0])))) bounds.push(fitBounds(path.points.map(e => new TMap.LatLng(e[1], e[0]))))
polygon.on('click', e => {
polygon.on('click', e => { const id = e.target.id
const id = e.target.id this.getGridInfo(id)
this.getGridInfo(id) })
}) const points = path.points.map(e => new TMap.LatLng(e[1], e[0]))
const position = TMap.geometry.computeCentroid(points)
const points = path.points.map(e => new TMap.LatLng(e[1], e[0])) let label = new TMap.MultiLabel({
id: `label~${path.id}`,
var position = TMap.geometry.computeCentroid(points) data: path.id,
map: map,
let label = new TMap.MultiLabel({ styles: {
id: `label~${path.id}`, building: new TMap.LabelStyle({
data: path.id, color: '#3777FF',
map: map, size: 20,
styles: { alignment: 'center',
building: new TMap.LabelStyle({ verticalAlignment: 'middle'
color: '#3777FF', })
size: 20, },
alignment: 'center', geometries: [
verticalAlignment: 'middle' {
}) id: `label-class-${i}`,
}, styleId: 'building',
geometries: [ position,
{ content: path.girdName,
id: `label-class-${i}`, }
styleId: 'building', ]
position: position, })
content: path.girdName, this.labels.push(label)
} label.on('click', e => {
] this.getGridInfo(e.target.id.split('~')[1])
}) });
this.labels.push(label) }
label.on('click', e => {
this.getGridInfo(e.target.id.split('~')[1])
});
}) })
bounds = bounds.reduce((a, b) => { bounds = bounds.reduce((a, b) => {
return fitBounds([ return fitBounds([
@@ -234,16 +199,9 @@ export default {
callPhone(phone) { callPhone(phone) {
uni.makePhoneCall({phoneNumber: phone}) uni.makePhoneCall({phoneNumber: phone})
}, },
handleSelect(e) { handleSelectGird(v) {
if (e?.points?.length > 0) { this.form = v || {}
this.form = e this.getGridList(v?.id, true)
const points = e.points.map(e => new TMap.LatLng(e.lat, e.lng))
var position = TMap.geometry.computeCentroid(points)
this.map.setCenter(position)
this.map.setZoom(18)
} else {
this.$u.toast("所选网格没有标绘!")
}
}, },
} }
} }

View File

@@ -1,7 +1,7 @@
<template> <template>
<div class="Organization"> <div class="Organization">
<div class="title">网格人员</div> <div class="title">网格人员</div>
<div class="user-content" v-for="(item, index) in dataInfo.parentGirdMembers" :key="index"> <div class="user-content" v-for="(item, index) in dataInfo.parentGirdMembers" :key="item.id">
<div> <div>
<!-- <image :src="item.photo" alt="" mode="aspectFill" v-if="item.photo" /> --> <!-- <image :src="item.photo" alt="" mode="aspectFill" v-if="item.photo" /> -->
<img :src="item.photo" alt="" v-if="item.photo"> <img :src="item.photo" alt="" v-if="item.photo">
@@ -13,7 +13,7 @@
<p>{{ item.girdName }}</p> <p>{{ item.girdName }}</p>
</div> </div>
</div> </div>
<div class="user-content user-item" v-for="(item, index) in dataInfo.girdMembers" :key="index" @click="viewUser(item.wxUserId)"> <div class="user-content user-item" v-for="(item, index) in dataInfo.girdMembers" :key="item.id" @click="viewUser(item.wxUserId)">
<div> <div>
<!-- <image :src="item.photo" alt="" mode="aspectFill" v-if="item.photo" /> --> <!-- <image :src="item.photo" alt="" mode="aspectFill" v-if="item.photo" /> -->
<img :src="item.photo" alt="" v-if="item.photo"> <img :src="item.photo" alt="" v-if="item.photo">
@@ -29,7 +29,7 @@
</div> </div>
<AiEmpty description="暂无数据" class="emptyWrap" <AiEmpty description="暂无数据" class="emptyWrap"
v-if="dataInfo.parentGirdMembers && !dataInfo.parentGirdMembers.length && !dataInfo.girdMembers.length"></AiEmpty> v-if="dataInfo.parentGirdMembers && !dataInfo.parentGirdMembers.length && !dataInfo.girdMembers.length"></AiEmpty>
<div class="pad-b112"></div> <AiGap h="112"/>
</div> </div>
</template> </template>

View File

@@ -55,7 +55,8 @@ export default {
return this.user.girdCheckType > 0 return this.user.girdCheckType > 0
}, },
//是否是网格员申报 //是否是网格员申报
isApply: v => v.$route.query.formType == 2 isApply: v => v.$route.query.formType == 2,
selected: v => [v.$route.query.selected].flat()
}, },
onLoad(option) { onLoad(option) {
if (option.isFormMap) { if (option.isFormMap) {
@@ -98,7 +99,7 @@ export default {
}) })
} else { } else {
this.treeList = this.allData.filter(e => !e.parentGirdId || this.isMyGirds) this.treeList = this.allData.filter(e => !e.parentGirdId || this.isMyGirds)
this.treeList.map((item) => item.isChecked = false) this.treeList.map((item) => item.isChecked = this.selected.includes(item.id))
let obj = {girdName: '可选范围', id: ''} let obj = {girdName: '可选范围', id: ''}
this.slectList.push(obj) this.slectList.push(obj)
} }

View File

@@ -12,17 +12,17 @@
<div class="rightes fill" flex> <div class="rightes fill" flex>
<img src="./components/img/gird--select-icon.png" alt="" class="avatras"/> <img src="./components/img/gird--select-icon.png" alt="" class="avatras"/>
<div class="applicationNames fill" @click="showGirdInfo(item)">{{ item.girdName }}</div> <div class="applicationNames fill" @click="showGirdInfo(item)">{{ item.girdName }}</div>
<u-icon v-if="item.hasChildren" @click="itemClick(item)" name="arrow-right" color="#ddd"/> <u-icon @click="itemClick(item)" name="arrow-right" color="#ddd"/>
</div> </div>
</div> </div>
</div> </div>
<AiEmpty description="暂无数据" class="emptyWrap" v-else/> <AiEmpty description="暂无数据" class="emptyWrap" v-else/>
</AiItem> </AiItem>
</AiGroup> </AiGroup>
<div class="subBtn" v-if="detail.girdRight==1"> <div class="subBtn" v-if="detail.girdRight==1" flex>
<div @click="toAddGird">添加下级网格</div>
<div @click="edit">编辑网格</div>
<div class="delete" @click="handleDelete">删除网格</div> <div class="delete" @click="handleDelete">删除网格</div>
<div @click="edit">编辑网格</div>
<div @click="toAddGird">添加下级网格</div>
</div> </div>
</div> </div>
</template> </template>
@@ -57,7 +57,6 @@ export default {
} }
}) })
}, },
itemClick(row) { itemClick(row) {
uni.navigateTo({url: `./SetGird?id=${row.id}`}) uni.navigateTo({url: `./SetGird?id=${row.id}`})
}, },
@@ -156,6 +155,7 @@ export default {
height: 118px; height: 118px;
background: #f4f8fb; background: #f4f8fb;
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Medium, PingFang SC;
justify-content: flex-end;
div { div {
padding: 0 32px; padding: 0 32px;
@@ -167,7 +167,6 @@ export default {
font-size: 32px; font-size: 32px;
color: #fff; color: #fff;
margin-left: 22px; margin-left: 22px;
float: right;
border: 2px #1365dd solid; border: 2px #1365dd solid;
&.delete { &.delete {
@@ -176,7 +175,7 @@ export default {
border-color: #f46; border-color: #f46;
} }
&:first-of-type { &:last-of-type {
margin-right: 32px; margin-right: 32px;
} }
} }

View File

@@ -158,10 +158,7 @@ export default {
box-shadow: 0 1px 0 0 #e4e5e6; box-shadow: 0 1px 0 0 #e4e5e6;
font-size: 30px; font-size: 30px;
font-weight: 500; font-weight: 500;
// word-break: break-all; word-break: break-all;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
} }
.empty-div { .empty-div {
@@ -219,6 +216,7 @@ export default {
} }
.imgs { .imgs {
flex-shrink: 0;
width: 40px; width: 40px;
height: 40px; height: 40px;
margin-right: 20px; margin-right: 20px;

View File

@@ -151,7 +151,7 @@
<div class="item" v-else-if="item.type == 'gird'"> <div class="item" v-else-if="item.type == 'gird'">
<span class="label"><span class="tips">{{ item.mustFill == 1 ? '*' : '' }}</span>{{ item.fieldName }}</span> <span class="label"><span class="tips">{{ item.mustFill == 1 ? '*' : '' }}</span>{{ item.fieldName }}</span>
<div class="value" flex> <div class="value" flex>
<AiPagePicker type="custom" @select="v=>handleSelectGird(v,item)" self :ops="{url:'./SelectGird',label: 'girdName'}"> <AiPagePicker type="custom" @select="v=>handleSelectGird(v,item)" :ops="{url:'../AppGridManagement/SelectGird',label: 'girdName'}">
<AiMore v-model="formData[item.fieldDbName + '_name']" :placeholder="item.fieldTips"/> <AiMore v-model="formData[item.fieldDbName + '_name']" :placeholder="item.fieldTips"/>
</AiPagePicker> </AiPagePicker>
</div> </div>
@@ -462,7 +462,7 @@ export default {
return obj?.toString() || "-" return obj?.toString() || "-"
}, },
handleSelectGird(gird, item) { handleSelectGird(gird, item) {
let info = gird?.[0] || {} let info = gird || {}
this.formData[item.fieldDbName] = [info.id, info.girdName].join("_") this.formData[item.fieldDbName] = [info.id, info.girdName].join("_")
this.formData[item.fieldDbName + "_name"] = info.girdName this.formData[item.fieldDbName + "_name"] = info.girdName
this.$forceUpdate() this.$forceUpdate()

View File

@@ -2,7 +2,11 @@
<div class="photo" v-if="pageShow"> <div class="photo" v-if="pageShow">
<div class="photo-header"> <div class="photo-header">
<h2>{{ info.albumName }}</h2> <h2>{{ info.albumName }}</h2>
<div class="right" @click="linkTo('./AddAlbum?id=' + id)" hover-class="text-hover" v-if="id !== '1' && isAdmin"> <div
class="right"
@click="linkTo('./AddAlbum?id=' + id)"
hover-class="text-hover"
v-if="info.albumName !== '系统相册' && info.createUserId === user.wxUserId">
<image src="./images/setting.png" /> <image src="./images/setting.png" />
<span>相册设置</span> <span>相册设置</span>
</div> </div>
@@ -95,7 +99,6 @@
onLoad (query) { onLoad (query) {
this.id = query.id this.id = query.id
this.isAdmin = !!this.$store.state.user.adminAuthType
this.$nextTick(() => { this.$nextTick(() => {
this.getTotalInfo(query.id) this.getTotalInfo(query.id)

View File

@@ -57,7 +57,6 @@
isShow: false, isShow: false,
list: [], list: [],
currIndex: 0, currIndex: 0,
isAdmin: false,
albumList: [], albumList: [],
pageShow: false pageShow: false
} }
@@ -75,7 +74,6 @@
onLoad (query) { onLoad (query) {
this.$loading() this.$loading()
this.isAdmin = !!this.$store.state.user.adminAuthType
this.id = query.id this.id = query.id
this.getAlbumList() this.getAlbumList()
@@ -90,7 +88,7 @@
params: { params: {
albumId: this.id, albumId: this.id,
pageSize: 100000, pageSize: 100000,
userId: this.isAdmin ? '' : this.$store.state.user.openId userId: this.$store.state.user.openId
} }
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {

View File

@@ -62,7 +62,6 @@
<h2>工作相册</h2> <h2>工作相册</h2>
<div class="album-list__wrapper"> <div class="album-list__wrapper">
<div class="item" v-for="(item, index) in list" :key="index" @click="linkTo('./AlbumDetail?id=' + item.id)"> <div class="item" v-for="(item, index) in list" :key="index" @click="linkTo('./AlbumDetail?id=' + item.id)">
<span v-if="item.photoHasRead === 'NO'">未查看</span>
<image src="./../images/icon.png" :loading-img="$cdn + 'watermark/loading.png'" v-if="!item.lastPhotoUrl" /> <image src="./../images/icon.png" :loading-img="$cdn + 'watermark/loading.png'" v-if="!item.lastPhotoUrl" />
<u-lazy-load class="item-img" img-mode="aspectFill" :height="328" :image="item.lastPhotoUrl" v-else></u-lazy-load> <u-lazy-load class="item-img" img-mode="aspectFill" :height="328" :image="item.lastPhotoUrl" v-else></u-lazy-load>
<div class="item-bottom"> <div class="item-bottom">
@@ -80,7 +79,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="item item-add" @click="linkTo('./AddAlbum')" v-if="user && user.adminAuthType === '1'"> <div class="item item-add" @click="linkTo('./AddAlbum')">
<div class="item-add__btn"></div> <div class="item-add__btn"></div>
<p>添加相册</p> <p>添加相册</p>
</div> </div>
@@ -116,7 +115,6 @@
}, },
mounted () { mounted () {
console.log(this.user.adminAuthType)
this.getCountPhotoNo() this.getCountPhotoNo()
this.getAlbumList() this.getAlbumList()
this.getMsgList() this.getMsgList()

View File

@@ -44,7 +44,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="info-item info-work"> <div class="info-item info-work" v-if="false">
<div class="info-item__title"> <div class="info-item__title">
<h2>考勤统计</h2> <h2>考勤统计</h2>
<image src="../images/right.png" @click="linkTo('./Attendance?date=' + date.replace(/年|月/g, '-'))" /> <image src="../images/right.png" @click="linkTo('./Attendance?date=' + date.replace(/年|月/g, '-'))" />

View File

@@ -10,7 +10,6 @@ let agentSignURL = "", apiList = []
const store = new Vuex.Store({ const store = new Vuex.Store({
state: { state: {
token: "", token: "",
corpId: "",
openUser: {}, openUser: {},
user: {}, user: {},
config: {}, config: {},
@@ -65,7 +64,7 @@ const store = new Vuex.Store({
}, },
redirectCode(state, url = location.href) { redirectCode(state, url = location.href) {
let REDIRECT_URI = encodeURIComponent(url), let REDIRECT_URI = encodeURIComponent(url),
corpid = state.corpId corpid = state.config.corpid
const redirectTo = cid => { const redirectTo = cid => {
location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base#wechat_redirect' location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base#wechat_redirect'
.replace(/CORPID/g, cid) .replace(/CORPID/g, cid)
@@ -75,7 +74,7 @@ const store = new Vuex.Store({
redirectTo(corpid) redirectTo(corpid)
} else { } else {
store.dispatch("agentSign").then(() => { store.dispatch("agentSign").then(() => {
corpid = state.corpId corpid = state.config.corpid
redirectTo(corpid) redirectTo(corpid)
}) })
} }