页面框架体系重新调整
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; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,52 +1,42 @@ | |||||||
| <template> | <template> | ||||||
|   <div class="AppInterview"> |   <div class="AppInterview"> | ||||||
|     <template v-if="!showDetail"> |     <AiTopFixed> | ||||||
|       <ai-top-fixed> |       <div flex> | ||||||
|         <div flex> |         <AiDate placeholder="日期选择" mode="range" @change="handleDateSearch"/> | ||||||
|           <ai-date 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> |  | ||||||
|       </ai-top-fixed> |  | ||||||
|       <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)"> |  | ||||||
|           <template #custom> |  | ||||||
|             <div flex> |  | ||||||
|               <b class="fill">{{ e.title }}</b> |  | ||||||
|             </div> |  | ||||||
|             <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"/> |  | ||||||
|             </div> |  | ||||||
|             <div class="bottom">{{ e.createTime }}</div> |  | ||||||
|           </template> |  | ||||||
|           <template #menu> |  | ||||||
|             <div class="menu" @tap.stop="goDetail(e.id)">编辑</div> |  | ||||||
|             <div class="menu" @tap.stop="handleDelete(e.id, index)">删除</div> |  | ||||||
|           </template> |  | ||||||
|         </ai-card> |  | ||||||
|         <u-loadmore :status="loadmore" color="#999" font-size="24" |  | ||||||
|                     margin-top="32" margin-bottom="80"/> |  | ||||||
|       </template> |  | ||||||
|       <div class="no-message" v-else> |  | ||||||
|         <image src="https://cdn.cunwuyun.cn/wxAdmin/img/message.png"/> |  | ||||||
|         <p>您还未添加过入户调查走访<br>点击<b>新增按钮</b>试试吧~</p> |  | ||||||
|       </div> |       </div> | ||||||
|       <ai-fixed-btn> |     </AiTopFixed> | ||||||
|         <div class="addBtn iconfont iconfont-iconfangda" @tap="gotoAdd()"/> |     <template v-if="list.length>0"> | ||||||
|       </ai-fixed-btn> |       <AiCard :ref="'aiCard' + index" v-for="(e,index) in list" :key="index" @click.native="goDetail(e.id,1)"> | ||||||
|  |         <template #custom> | ||||||
|  |           <div flex> | ||||||
|  |             <b class="fill">{{ e.title }}</b> | ||||||
|  |           </div> | ||||||
|  |           <div flex v-if="!!e.fileList" class="wrap" @click.stop> | ||||||
|  |             <AiImage v-for="(op,i) in e.fileList.slice(0,3)" :src="op.accessUrl" preview :key="i"/> | ||||||
|  |           </div> | ||||||
|  |           <div class="bottom">{{ e.createTime }}</div> | ||||||
|  |         </template> | ||||||
|  |         <template #menu> | ||||||
|  |           <div class="menu" @tap.stop="goDetail(e.id)">编辑</div> | ||||||
|  |           <div class="menu" @tap.stop="handleDelete(e.id, index)">删除</div> | ||||||
|  |         </template> | ||||||
|  |       </AiCard> | ||||||
|  |       <u-loadmore :status="loadmore" color="#999" font-size="24" | ||||||
|  |                   margin-top="32" margin-bottom="80"/> | ||||||
|     </template> |     </template> | ||||||
|     <interview-detail v-else/> |     <div class="no-message" v-else> | ||||||
|  |       <image src="https://cdn.cunwuyun.cn/wxAdmin/img/message.png"/> | ||||||
|  |       <p>您还未添加过入户调查走访<br>点击<b>新增按钮</b>试试吧~</p> | ||||||
|  |     </div> | ||||||
|  |     <AiFixedBtn> | ||||||
|  |       <div class="addBtn iconfont iconfont-iconfangda" @tap="gotoAdd()"/> | ||||||
|  |     </AiFixedBtn> | ||||||
|   </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> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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