Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
10
bin/serve.js
10
bin/serve.js
@@ -56,20 +56,20 @@ const start = () => {
|
|||||||
chalkTag.info('开始生成pages.json...')
|
chalkTag.info('开始生成pages.json...')
|
||||||
let json = {
|
let json = {
|
||||||
easycom: {
|
easycom: {
|
||||||
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
|
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue",
|
||||||
|
"^(Ai|V)(.*)": "@/components/$1$2.vue"
|
||||||
},
|
},
|
||||||
pages: [
|
pages: [
|
||||||
{path: 'pages/loading'},
|
{path: 'pages/loading'},
|
||||||
{path: 'pages/login'},
|
{path: 'pages/login'}
|
||||||
{path: 'pages/mainEntry', style: {navigationBarTitleText: "村微产品应用库"}}
|
|
||||||
],
|
],
|
||||||
globalStyle: {
|
globalStyle: {
|
||||||
pageOrientation: "auto",
|
pageOrientation: "auto",
|
||||||
navigationStyle: "custom"
|
navigationStyle: "custom"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
findApp('src/utils', file => {
|
findApp('src/apps', file => {
|
||||||
if (/.*\\.+\\App[^\\]+\.vue/g.test(file)) {
|
if (/.*\\.+\\App[^\\]+\\[^\\]+\.vue/g.test(file)) {
|
||||||
let app = {
|
let app = {
|
||||||
name: file.replace(/.*\\([^\\]+).vue/g, '$1'),
|
name: file.replace(/.*\\([^\\]+).vue/g, '$1'),
|
||||||
path: file.replace(/^src\\(.*).vue/g, '$1').replace(/\\/g, '/')
|
path: file.replace(/^src\\(.*).vue/g, '$1').replace(/\\/g, '/')
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ body {
|
|||||||
|
|
||||||
uni-page-body {
|
uni-page-body {
|
||||||
// min-height: 100%;
|
// min-height: 100%;
|
||||||
|
min-height: 100vh;
|
||||||
background: #f5f5f5;
|
background: #f5f5f5;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {mapActions, mapState} from "vuex";
|
import {mapActions, mapState} from "vuex";
|
||||||
import FormDetail from "./formDetail";
|
import FormDetail from "./components/formDetail";
|
||||||
import AiResult from "../../components/AiResult";
|
import AiResult from "../../components/AiResult";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|||||||
@@ -66,13 +66,13 @@
|
|||||||
<script>
|
<script>
|
||||||
|
|
||||||
import {mapState} from "vuex";
|
import {mapState} from "vuex";
|
||||||
import AiTextarea from "../../components/AiTextarea";
|
import AiTextarea from "../../../components/AiTextarea";
|
||||||
import AiUploader from "../../components/AiUploader";
|
import AiUploader from "../../../components/AiUploader";
|
||||||
import AiSelect from "../../components/AiSelect";
|
import AiSelect from "../../../components/AiSelect";
|
||||||
import AiLoading from "../../components/AiLoading";
|
import AiLoading from "../../../components/AiLoading";
|
||||||
import AiResult from "../../components/AiResult";
|
import AiResult from "../../../components/AiResult";
|
||||||
import AiImage from "../../components/AiImage";
|
import AiImage from "../../../components/AiImage";
|
||||||
import AiBack from "../../components/AiBack";
|
import AiBack from "../../../components/AiBack";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "formDetail",
|
name: "formDetail",
|
||||||
@@ -1,20 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="AppInterview">
|
<div class="AppInterview">
|
||||||
<template v-if="!showDetail">
|
<AiTopFixed>
|
||||||
<ai-top-fixed>
|
|
||||||
<div flex>
|
<div flex>
|
||||||
<ai-date placeholder="日期选择" mode="range" @change="handleDateSearch"/>
|
<AiDate placeholder="日期选择" mode="range" @change="handleDateSearch"/>
|
||||||
<u-search placeholder="请输入标题" :show-action="false" v-model="search.title" @search="current=1,getList()"/>
|
<u-search placeholder="请输入标题" :show-action="false" v-model="search.title" @search="current=1,getList()"/>
|
||||||
</div>
|
</div>
|
||||||
</ai-top-fixed>
|
</AiTopFixed>
|
||||||
<template v-if="list.length>0">
|
<template v-if="list.length>0">
|
||||||
<ai-card :ref="'aiCard' + index" v-for="(e,index) in list" :key="index" @click.native="goDetail(e.id,1)">
|
<AiCard :ref="'aiCard' + index" v-for="(e,index) in list" :key="index" @click.native="goDetail(e.id,1)">
|
||||||
<template #custom>
|
<template #custom>
|
||||||
<div flex>
|
<div flex>
|
||||||
<b class="fill">{{ e.title }}</b>
|
<b class="fill">{{ e.title }}</b>
|
||||||
</div>
|
</div>
|
||||||
<div flex v-if="!!e.fileList" class="wrap" @click.stop>
|
<div flex v-if="!!e.fileList" class="wrap" @click.stop>
|
||||||
<ai-image v-for="(op,i) in e.fileList.slice(0,3)" :src="op.accessUrl" preview :key="i"/>
|
<AiImage v-for="(op,i) in e.fileList.slice(0,3)" :src="op.accessUrl" preview :key="i"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">{{ e.createTime }}</div>
|
<div class="bottom">{{ e.createTime }}</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -22,7 +21,7 @@
|
|||||||
<div class="menu" @tap.stop="goDetail(e.id)">编辑</div>
|
<div class="menu" @tap.stop="goDetail(e.id)">编辑</div>
|
||||||
<div class="menu" @tap.stop="handleDelete(e.id, index)">删除</div>
|
<div class="menu" @tap.stop="handleDelete(e.id, index)">删除</div>
|
||||||
</template>
|
</template>
|
||||||
</ai-card>
|
</AiCard>
|
||||||
<u-loadmore :status="loadmore" color="#999" font-size="24"
|
<u-loadmore :status="loadmore" color="#999" font-size="24"
|
||||||
margin-top="32" margin-bottom="80"/>
|
margin-top="32" margin-bottom="80"/>
|
||||||
</template>
|
</template>
|
||||||
@@ -30,23 +29,14 @@
|
|||||||
<image src="https://cdn.cunwuyun.cn/wxAdmin/img/message.png"/>
|
<image src="https://cdn.cunwuyun.cn/wxAdmin/img/message.png"/>
|
||||||
<p>您还未添加过入户调查走访<br>点击<b>新增按钮</b>试试吧~</p>
|
<p>您还未添加过入户调查走访<br>点击<b>新增按钮</b>试试吧~</p>
|
||||||
</div>
|
</div>
|
||||||
<ai-fixed-btn>
|
<AiFixedBtn>
|
||||||
<div class="addBtn iconfont iconfont-iconfangda" @tap="gotoAdd()"/>
|
<div class="addBtn iconfont iconfont-iconfangda" @tap="gotoAdd()"/>
|
||||||
</ai-fixed-btn>
|
</AiFixedBtn>
|
||||||
</template>
|
|
||||||
<interview-detail v-else/>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import AiSelect from "../../components/AiSelect";
|
import qs from "query-string"
|
||||||
import AiTopFixed from "../../components/AiTopFixed";
|
|
||||||
import AiCard from "../../components/AiCard";
|
|
||||||
import AiImage from "../../components/AiImage";
|
|
||||||
import AiDate from "../../components/AiDate";
|
|
||||||
import AiFixedBtn from "../../components/AiFixedBtn";
|
|
||||||
import InterviewDetail from "./interviewDetail";
|
|
||||||
import AiBack from "../../components/AiBack";
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "AppInterview",
|
name: "AppInterview",
|
||||||
@@ -54,7 +44,6 @@ export default {
|
|||||||
inject: {
|
inject: {
|
||||||
root: {}
|
root: {}
|
||||||
},
|
},
|
||||||
components: {AiBack, InterviewDetail, AiFixedBtn, AiDate, AiImage, AiCard, AiTopFixed, AiSelect},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
search: {title: ""},
|
search: {title: ""},
|
||||||
@@ -66,25 +55,9 @@ export default {
|
|||||||
computed: {
|
computed: {
|
||||||
loadmore() {
|
loadmore() {
|
||||||
return this.pages <= this.current ? 'loading ' : 'nomore'
|
return this.pages <= this.current ? 'loading ' : 'nomore'
|
||||||
},
|
|
||||||
showDetail() {
|
|
||||||
return this.$route.hash == "#add"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
emitShow() {
|
|
||||||
document.title = "调查走访"
|
|
||||||
if (this.showDetail) {
|
|
||||||
document.title = this.$route.query.detail ? "走访详情" : "新增走访"
|
|
||||||
} else {
|
|
||||||
this.current = 1;
|
|
||||||
this.getList()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
emitReachBottom() {
|
|
||||||
this.current++;
|
|
||||||
this.getList()
|
|
||||||
},
|
|
||||||
getList() {
|
getList() {
|
||||||
this.$http.post('/app/appinterview/list-xcx', null, {
|
this.$http.post('/app/appinterview/list-xcx', null, {
|
||||||
params: {
|
params: {
|
||||||
@@ -102,10 +75,10 @@ export default {
|
|||||||
goDetail(id, readonly) {
|
goDetail(id, readonly) {
|
||||||
let query = {id}
|
let query = {id}
|
||||||
readonly && (query.detail = 1)
|
readonly && (query.detail = 1)
|
||||||
this.root.goto({hash: "#add", query})
|
uni.navigateTo({url: `./interviewDetail?${qs.stringify(query)}`})
|
||||||
},
|
},
|
||||||
gotoAdd() {
|
gotoAdd() {
|
||||||
this.root.goto({hash: "#add"})
|
uni.navigateTo({url: `./interviewDetail`})
|
||||||
},
|
},
|
||||||
handleDelete(ids, index) {
|
handleDelete(ids, index) {
|
||||||
this.$refs[`aiCard${index}`][0].handleClose()
|
this.$refs[`aiCard${index}`][0].handleClose()
|
||||||
@@ -126,7 +99,16 @@ export default {
|
|||||||
this.current = 1
|
this.current = 1
|
||||||
this.getList()
|
this.getList()
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
onShow() {
|
||||||
|
document.title = "调查走访"
|
||||||
|
this.current = 1;
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
onReachBottom() {
|
||||||
|
this.current++;
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -133,8 +133,8 @@
|
|||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
import AiEmpty from '../../components/AiEmpty.vue'
|
import AiEmpty from '../../components/AiEmpty.vue'
|
||||||
import add from './components/add.vue'
|
import add from './add.vue'
|
||||||
import detail from './components/detail.vue'
|
import detail from './detail.vue'
|
||||||
import AiAreaPicker from '../../components/AiAreaPicker.vue'
|
import AiAreaPicker from '../../components/AiAreaPicker.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
<ai-area-picker v-model="forms.areaId" ref="areaIds" :areaId="areaIdProps" @select="areaSelect" style="color: #333"> </ai-area-picker>
|
<ai-area-picker v-model="forms.areaId" ref="areaIds" :areaId="areaIdProps" @select="areaSelect" style="color: #333"> </ai-area-picker>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
|
|
||||||
<u-form-item label="走访对象" prop="applicationId" required style="position: relative">
|
<u-form-item label="走访对象" prop="application" required style="position: relative">
|
||||||
<u-input v-model="forms.applicationId" disabled placeholder="请选择走访对象" @click="toWalkObject" />
|
<u-input v-model="forms.application" disabled placeholder="请选择走访对象" @click="handerSelecUser" />
|
||||||
<!-- @click="showObject = true" -->
|
<!-- @click="showObject = true" @click="toWalkObject" -->
|
||||||
|
|
||||||
<u-select v-model="showObject" :list="Objectlist" @confirm="applicaStatus"></u-select>
|
<u-select v-model="showObject" :list="Objectlist" @confirm="applicaStatus"></u-select>
|
||||||
|
|
||||||
@@ -54,10 +54,10 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
import AiUploader from '../../../components/AiUploader.vue'
|
import { mapActions } from 'vuex'
|
||||||
import AiBack from '../../../components/AiBack.vue'
|
import AiUploader from '../../components/AiUploader.vue'
|
||||||
import walkObject from './walkObject.vue'
|
import AiBack from '../../components/AiBack.vue'
|
||||||
import AiAreaPicker from '../../../components/AiAreaPicker'
|
import AiAreaPicker from '../../components/AiAreaPicker'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'add',
|
name: 'add',
|
||||||
@@ -70,7 +70,7 @@ export default {
|
|||||||
},
|
},
|
||||||
forms: {
|
forms: {
|
||||||
areaId: '',
|
areaId: '',
|
||||||
applicationId: '',
|
application: '',
|
||||||
reality: '',
|
reality: '',
|
||||||
realityValue: '',
|
realityValue: '',
|
||||||
title: '',
|
title: '',
|
||||||
@@ -89,6 +89,7 @@ export default {
|
|||||||
flag: false,
|
flag: false,
|
||||||
addList: true,
|
addList: true,
|
||||||
areaIdProps: '',
|
areaIdProps: '',
|
||||||
|
clickedUserSelect: false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: { ...mapState(['user']) },
|
computed: { ...mapState(['user']) },
|
||||||
@@ -98,13 +99,34 @@ export default {
|
|||||||
},
|
},
|
||||||
mounted() {},
|
mounted() {},
|
||||||
methods: {
|
methods: {
|
||||||
|
...mapActions(['selectEnterpriseContact']),
|
||||||
|
|
||||||
|
handerSelecUser() {
|
||||||
|
console.log(this.clickedUserSelect)
|
||||||
|
if (this.clickedUserSelect) return this.$u.toast('正在打开人员选择器')
|
||||||
|
|
||||||
|
this.clickedUserSelect = true
|
||||||
|
this.selectEnterpriseContact({
|
||||||
|
fromDepartmentId: 0,
|
||||||
|
type: ['user'],
|
||||||
|
optionId: this.forms.application?.map((e) => e.id),
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
// this.change(res?.userList || [])
|
||||||
|
this.clickedUserSelect = false
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.clickedUserSelect = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
submit() {
|
submit() {
|
||||||
console.log(1)
|
console.log(1)
|
||||||
if (this.flag) return
|
if (this.flag) return
|
||||||
|
|
||||||
this.$refs.uForm.validate((valid) => {
|
this.$refs.uForm.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (!this.forms.applicationId) {
|
if (!this.forms.application) {
|
||||||
return this.$u.toast('请选择走访对象')
|
return this.$u.toast('请选择走访对象')
|
||||||
}
|
}
|
||||||
if (!this.forms.title) {
|
if (!this.forms.title) {
|
||||||
@@ -125,7 +147,7 @@ export default {
|
|||||||
this.$instance
|
this.$instance
|
||||||
.post(`/appjobresume/addOrUpdate`, {
|
.post(`/appjobresume/addOrUpdate`, {
|
||||||
areaId: this.forms.areaId,
|
areaId: this.forms.areaId,
|
||||||
applicationId: '8883942d30aa4b76b33de1660d4870e4',
|
applicationId: '',
|
||||||
// object: this.forms.object,
|
// object: this.forms.object,
|
||||||
reality: this.forms.reality == Number ? this.forms.reality : this.forms.realitylabel,
|
reality: this.forms.reality == Number ? this.forms.reality : this.forms.realitylabel,
|
||||||
title: this.forms.title,
|
title: this.forms.title,
|
||||||
@@ -191,6 +213,7 @@ export default {
|
|||||||
::v-deep .u-form {
|
::v-deep .u-form {
|
||||||
.u-form-item {
|
.u-form-item {
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
|
// padding-bottom: 10px !important;
|
||||||
.u-form-item__body {
|
.u-form-item__body {
|
||||||
// .u-form-item--right {
|
// .u-form-item--right {
|
||||||
// .u-form-item--right__content {
|
// .u-form-item--right__content {
|
||||||
@@ -1,155 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="walkObject">
|
|
||||||
<u-navbar title="选择走访慰问对象" back-icon-color="#fff" title-color="#fff" title-width="300" title-size="36" :border-bottom="false" :background="backgroundNavbar"> </u-navbar>
|
|
||||||
|
|
||||||
<div class="header-top">
|
|
||||||
<u-search v-model="keyword" placeholder="搜索" :show-action="false" bg-color="#F5F5F5" search-icon-color="#CCCCCC" placeholder-color="#999999" @search="handerSearch" @clear="handerClear"></u-search>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="header-middle">
|
|
||||||
<div class="hint">可选范围</div>
|
|
||||||
|
|
||||||
<div class="empty-div"></div>
|
|
||||||
|
|
||||||
<div class="Checkbox">
|
|
||||||
<u-checkbox-group :wrap="true" @change="checkboxGroupChange">
|
|
||||||
<u-checkbox @change="checkboxChange" v-model="item.checked" v-for="(item, index) in list" shape="circle" :key="index" :name="item.name">
|
|
||||||
<img src="./images/user.png" alt="" style="width: 36px; height: 36px; border-radius: 8px; vertical-align: middle; margin: 0 18px 0 17px" />
|
|
||||||
<span>{{ item.name }}</span>
|
|
||||||
|
|
||||||
<u-icon name="arrow-right" color="#ccc" style="position: absolute; right: 0; top: 20px"></u-icon>
|
|
||||||
</u-checkbox>
|
|
||||||
</u-checkbox-group>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="fixedBtn">
|
|
||||||
<div class="typeName">
|
|
||||||
<span class="typeName-box" v-for="(item, index) in list" :key="index" v-if="item.checked == true">
|
|
||||||
{{ item.name }}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="subBtn" @click="submit">确定选择</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'walkObject',
|
|
||||||
components: {},
|
|
||||||
props: {},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
backgroundNavbar: {
|
|
||||||
backgroundColor: '#3975C6',
|
|
||||||
},
|
|
||||||
keyword: '',
|
|
||||||
list: [
|
|
||||||
{
|
|
||||||
name: '残疾人',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '精神病患者',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '吸毒人员',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
nameList: [],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {},
|
|
||||||
created() {},
|
|
||||||
mounted() {},
|
|
||||||
methods: {
|
|
||||||
checkboxGroupChange(e) {
|
|
||||||
console.log(1, e)
|
|
||||||
e.map((item) => {
|
|
||||||
console.log(item)
|
|
||||||
})
|
|
||||||
// list.map((item) => {
|
|
||||||
// if (item.checked == true) {
|
|
||||||
// var obj = { name: item.name }
|
|
||||||
// this.nameList.push(obj)
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
},
|
|
||||||
|
|
||||||
checkboxChange(e) {
|
|
||||||
console.log(2, e)
|
|
||||||
},
|
|
||||||
|
|
||||||
submit() {},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.walkObject {
|
|
||||||
background: #ffffff;
|
|
||||||
padding-bottom: 118px;
|
|
||||||
.header-top {
|
|
||||||
background: #fff;
|
|
||||||
padding: 20px 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-middle {
|
|
||||||
.hint {
|
|
||||||
padding: 0 20px 0 32px;
|
|
||||||
height: 112px;
|
|
||||||
line-height: 112px;
|
|
||||||
box-shadow: 0px 1px 0px 0px #e4e5e6;
|
|
||||||
font-size: 30px;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
.empty-div {
|
|
||||||
height: 16px;
|
|
||||||
background: #f5f5f5;
|
|
||||||
}
|
|
||||||
.Checkbox {
|
|
||||||
padding: 0 20px 0 30px;
|
|
||||||
::v-deep .u-checkbox-group {
|
|
||||||
.u-checkbox {
|
|
||||||
position: relative;
|
|
||||||
height: 112px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.fixedBtn {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
width: 100%;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 0 32px;
|
|
||||||
.subBtn {
|
|
||||||
margin: 20px 0 18px 0;
|
|
||||||
padding: 18px 32px;
|
|
||||||
background: #1365dd;
|
|
||||||
border-radius: 4px;
|
|
||||||
font-size: 32px;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
.typeName {
|
|
||||||
// margin: 48px 0 44px 0;
|
|
||||||
margin: 36px 0 22px 0;
|
|
||||||
.typeName-box {
|
|
||||||
padding: 16px 14px;
|
|
||||||
background: #eaeef1;
|
|
||||||
border-radius: 8px;
|
|
||||||
font-size: 30px;
|
|
||||||
font-weight: 500;
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
.typeName-box:first-child {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -30,10 +30,10 @@
|
|||||||
<div class="hint-con">本次议事会通过“7步议事法”即收集意见、确认议题、制定方案、发布公告、组织协商、结果运用、反馈公示的模拟方式,进行协商讨论,并教授议事会成员自如运用议事措施开展后续落地计划的学习性和功能性会议。 组织协商、结果运用、反馈公示的模拟方式,进行协商讨论,并教授议事会成员自如运用议事措施开展后续落地计划的线上学习性和功能性会议。作为基层民主自治的新亮点,已经全面铺开的互联网+“议事大厅”使得三联村成功走出了一条集思广益、民主决策和村民自治的新路子。</div>
|
<div class="hint-con">本次议事会通过“7步议事法”即收集意见、确认议题、制定方案、发布公告、组织协商、结果运用、反馈公示的模拟方式,进行协商讨论,并教授议事会成员自如运用议事措施开展后续落地计划的学习性和功能性会议。 组织协商、结果运用、反馈公示的模拟方式,进行协商讨论,并教授议事会成员自如运用议事措施开展后续落地计划的线上学习性和功能性会议。作为基层民主自治的新亮点,已经全面铺开的互联网+“议事大厅”使得三联村成功走出了一条集思广益、民主决策和村民自治的新路子。</div>
|
||||||
|
|
||||||
<div class="imgs">
|
<div class="imgs">
|
||||||
<img src="../components/images/天使彦5.jpg" alt="" />
|
<img src="./components/images/天使彦5.jpg" alt="" />
|
||||||
<img src="../components/images/天使彦5.jpg" alt="" />
|
<img src="./components/images/天使彦5.jpg" alt="" />
|
||||||
<img src="../components/images/天使彦5.jpg" alt="" />
|
<img src="./components/images/天使彦5.jpg" alt="" />
|
||||||
<img src="../components/images/天使彦5.jpg" alt="" />
|
<img src="./components/images/天使彦5.jpg" alt="" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import AiBack from '../../../components/AiBack.vue'
|
import AiBack from '../../components/AiBack.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'detail',
|
name: 'detail',
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
const install = function (Vue) {
|
|
||||||
if (install.installed) return
|
|
||||||
// 遍历注册全局组件
|
|
||||||
let apps = []
|
|
||||||
let contexts = require.context('.', true, /\.(\/.+)\/App[^\/]+\.vue$/)
|
|
||||||
if (contexts) {
|
|
||||||
contexts.keys().map(e => {
|
|
||||||
if (contexts(e).default) {
|
|
||||||
apps.push(contexts(e).default)
|
|
||||||
Vue.component(contexts(e).default.name, contexts(e).default)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return Promise.resolve(apps)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断是否是直接引入文件
|
|
||||||
if (typeof window !== 'undefined' && window.Vue) {
|
|
||||||
install(window.Vue)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default {
|
|
||||||
// 导出的对象必须具有 install,才能被 Vue.use() 方法安装
|
|
||||||
install
|
|
||||||
}
|
|
||||||
@@ -43,5 +43,14 @@ export default {
|
|||||||
},
|
},
|
||||||
formatName: (name) => {
|
formatName: (name) => {
|
||||||
return Array.from(name)?.slice(-2)?.toString() || "";
|
return Array.from(name)?.slice(-2)?.toString() || "";
|
||||||
|
},
|
||||||
|
loading: title => {
|
||||||
|
uni.showLoading({
|
||||||
|
title: title ? title : '加载中',
|
||||||
|
mask: true
|
||||||
|
})
|
||||||
|
},
|
||||||
|
hideLoading: () => {
|
||||||
|
uni.hideLoading()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,8 +47,8 @@ export default {
|
|||||||
} else if (this.custom) {
|
} else if (this.custom) {
|
||||||
this.$emit("back")
|
this.$emit("back")
|
||||||
} else if (this.custom) {
|
} else if (this.custom) {
|
||||||
} else this.root.goto({}, () => {
|
} else uni.navigateBack({
|
||||||
if (this.eventName != '') {
|
success: () => {
|
||||||
uni.$emit(this.eventName, this.data)
|
uni.$emit(this.eventName, this.data)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import store from './store';
|
|||||||
import axios from './common/axios';
|
import axios from './common/axios';
|
||||||
import utils from './common/util';
|
import utils from './common/util';
|
||||||
import ui from 'uview-ui'
|
import ui from 'uview-ui'
|
||||||
import apps from './apps/index'
|
|
||||||
|
|
||||||
const loading = title => {
|
const loading = title => {
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
@@ -21,7 +20,6 @@ Vue.prototype.$loading = loading
|
|||||||
Vue.prototype.$hideLoading = hideLoading
|
Vue.prototype.$hideLoading = hideLoading
|
||||||
|
|
||||||
Vue.use(ui)
|
Vue.use(ui)
|
||||||
Vue.use(apps)
|
|
||||||
Vue.config.productionTip = false;
|
Vue.config.productionTip = false;
|
||||||
Vue.prototype.$store = store;
|
Vue.prototype.$store = store;
|
||||||
//初始化接口工具类
|
//初始化接口工具类
|
||||||
|
|||||||
@@ -47,8 +47,7 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleGotoApp(app) {
|
handleGotoApp(app) {
|
||||||
console.log(app)
|
uni.navigateTo({url: `/apps${app.path}`})
|
||||||
uni.navigateTo({url: `./mainEntry?app=${app.key}`})
|
|
||||||
},
|
},
|
||||||
handleLogin() {
|
handleLogin() {
|
||||||
uni.navigateTo({url: "./login"})
|
uni.navigateTo({url: "./login"})
|
||||||
|
|||||||
Reference in New Issue
Block a user