调整工程目录
24
bin/serve.js
@@ -81,8 +81,7 @@ const start = () => {
|
|||||||
}
|
}
|
||||||
json.pages.push(app)
|
json.pages.push(app)
|
||||||
}
|
}
|
||||||
}).then(() => {
|
}).then(() => findApp('src/apps', file => {
|
||||||
return 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'),
|
||||||
@@ -96,8 +95,7 @@ const start = () => {
|
|||||||
}
|
}
|
||||||
json.pages.push(app)
|
json.pages.push(app)
|
||||||
}
|
}
|
||||||
}).then(() => {
|
})).then(() => findApp('src/saas', file => {
|
||||||
return findApp('src/saas', 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'),
|
||||||
@@ -111,13 +109,25 @@ const start = () => {
|
|||||||
}
|
}
|
||||||
json.pages.push(app)
|
json.pages.push(app)
|
||||||
}
|
}
|
||||||
})
|
})).then(() => findApp('src/project', file => {
|
||||||
}).then(() => {
|
if (/.+\\App[^\\]+\\[^\\]+\.vue/g.test(file)) {
|
||||||
|
let app = {
|
||||||
|
name: file.replace(/.*\\([^\\]+).vue/g, '$1'),
|
||||||
|
path: file.replace(/^src\\(.*).vue/g, '$1').replace(/\\/g, '/')
|
||||||
|
}
|
||||||
|
let vue = fs.readFileSync(file).toString()
|
||||||
|
if (/appName/.test(vue)) {
|
||||||
|
let appName = vue.replace(/[\s\S]*(appName:.+),[\s\S]*/gm, '$1'),
|
||||||
|
title = appName.replace(/(appName:|["'])/g, '')
|
||||||
|
app.style = {navigationBarTitleText: title}
|
||||||
|
}
|
||||||
|
json.pages.push(app)
|
||||||
|
}
|
||||||
|
})).then(() => {
|
||||||
fsExtra.outputJson('src/pages.json', json, () => {
|
fsExtra.outputJson('src/pages.json', json, () => {
|
||||||
chalkTag.done('生成pages.json')
|
chalkTag.done('生成pages.json')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
"src/saas"
|
"src/saas"
|
||||||
],
|
],
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"project/*"
|
"src/project/*"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@amap/amap-jsapi-loader": "^1.0.1",
|
"@amap/amap-jsapi-loader": "^1.0.1",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</u-radio-group>
|
</u-radio-group>
|
||||||
<input class="codeText" v-model="search" placeholder="搜索要查找的应用"/>
|
<input class="codeText" v-model="search" placeholder="搜索要查找的应用"/>
|
||||||
<div flex class="appsPane wrap">
|
<div flex class="appsPane wrap">
|
||||||
<b v-for="app in appsList" :key="app.key" @tap="handleGotoApp(app)">{{ app.name }}</b>
|
<b v-for="app in appsList" :key="app.path" @tap="handleGotoApp(app)">{{ app.name }}</b>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
@@ -28,8 +28,9 @@ export default {
|
|||||||
computed: {
|
computed: {
|
||||||
...mapState(['token', 'openUser', 'user']),
|
...mapState(['token', 'openUser', 'user']),
|
||||||
appsList() {
|
appsList() {
|
||||||
let {search} = this
|
let {search, currentLib} = this
|
||||||
return this.apps?.filter(e => !!search ? e.name.indexOf(search) > -1 : true) || []
|
return this.apps.filter(e => (currentLib == "apps" && e.path.indexOf("project")) || e.path.indexOf(currentLib) > -1)
|
||||||
|
.filter(e => !!search ? e.name.indexOf(search) > -1 : true) || []
|
||||||
},
|
},
|
||||||
currentApp() {
|
currentApp() {
|
||||||
return this.apps.find(e => e.key == this.$route.query.app) || {}
|
return this.apps.find(e => e.key == this.$route.query.app) || {}
|
||||||
@@ -51,15 +52,15 @@ export default {
|
|||||||
...mapMutations(['logout']),
|
...mapMutations(['logout']),
|
||||||
...mapActions(['agentSign']),
|
...mapActions(['agentSign']),
|
||||||
handleGotoApp(app) {
|
handleGotoApp(app) {
|
||||||
uni.navigateTo({url: `/${this.currentLib}${app.path}`})
|
console.log(app)
|
||||||
|
uni.navigateTo({url: `${app.path}`})
|
||||||
},
|
},
|
||||||
handleLogin() {
|
handleLogin() {
|
||||||
uni.navigateTo({url: "./login"})
|
uni.navigateTo({url: "./login"})
|
||||||
},
|
},
|
||||||
getApps() {
|
getApps() {
|
||||||
this.apps = []
|
this.apps = []
|
||||||
let applications = this.currentLib == "apps" ? require.context('../apps', true, /\.(\/.+)\/App[^\/]+\.vue$/) :
|
let applications = require.context('../', true, /\.(\/.+)\/App[^\/]+\.vue$/)
|
||||||
this.currentLib == "saas" ? require.context('../saas', true, /\.(\/.+)\/App[^\/]+\.vue$/) : null
|
|
||||||
applications.keys().map(path => {
|
applications.keys().map(path => {
|
||||||
if (applications(path).default) {
|
if (applications(path).default) {
|
||||||
let {name: key, appName: name} = applications(path).default
|
let {name: key, appName: name} = applications(path).default
|
||||||
|
|||||||
@@ -17,7 +17,9 @@
|
|||||||
<u-row>
|
<u-row>
|
||||||
<span>紧急程度:</span>
|
<span>紧急程度:</span>
|
||||||
<span
|
<span
|
||||||
:style="{color:$dict.getColor('documentEmergencyLevel',detail.emergencyLevel)}">{{ $dict.getLabel("documentEmergencyLevel", detail.emergencyLevel) }}</span>
|
:style="{color:$dict.getColor('documentEmergencyLevel',detail.emergencyLevel)}">{{
|
||||||
|
$dict.getLabel("documentEmergencyLevel", detail.emergencyLevel)
|
||||||
|
}}</span>
|
||||||
</u-row>
|
</u-row>
|
||||||
<u-gap height="8"></u-gap>
|
<u-gap height="8"></u-gap>
|
||||||
<u-row>
|
<u-row>
|
||||||
@@ -54,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="label" style="96px;">{{ detail.readType == 0 ? "流转信息" : "传阅情况" }}
|
<div class="label">{{ detail.readType == 0 ? "流转信息" : "传阅情况" }}
|
||||||
<em>({{ $dict.getLabel("documentStatus", detail.status) }})</em></div>
|
<em>({{ $dict.getLabel("documentStatus", detail.status) }})</em></div>
|
||||||
<div class="progress">
|
<div class="progress">
|
||||||
<div class="item" v-for="(item,index) in detail.flowUsers" :key="index">
|
<div class="item" v-for="(item,index) in detail.flowUsers" :key="index">
|
||||||
@@ -98,13 +100,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import AiBack from "../../../components/AiBack";
|
|
||||||
import AiSelectEnterprise from "../../../components/AiSelectEnterprise";
|
|
||||||
import {mapActions} from "vuex";
|
import {mapActions} from "vuex";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "detail",
|
name: "detail",
|
||||||
components: {AiBack, AiSelectEnterprise},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
id: null,
|
id: null,
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 802 B After Width: | Height: | Size: 802 B |
|
Before Width: | Height: | Size: 622 B After Width: | Height: | Size: 622 B |
@@ -106,7 +106,7 @@ export default {
|
|||||||
margin: -80px 32px 0 32px;
|
margin: -80px 32px 0 32px;
|
||||||
padding: 38px 30px 78px 28px;
|
padding: 38px 30px 78px 28px;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.02);
|
box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.02);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
.hint {
|
.hint {
|
||||||
@@ -131,7 +131,7 @@ export default {
|
|||||||
}
|
}
|
||||||
.card {
|
.card {
|
||||||
display: flex;
|
display: flex;
|
||||||
box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.08);
|
box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.08);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
padding: 48px 32px;
|
padding: 48px 32px;
|
||||||
margin-bottom: 32px;
|
margin-bottom: 32px;
|
||||||
@@ -111,7 +111,7 @@ export default {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
.card {
|
.card {
|
||||||
display: flex;
|
display: flex;
|
||||||
box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.08);
|
box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.08);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
padding: 48px 32px;
|
padding: 48px 32px;
|
||||||
margin-bottom: 32px;
|
margin-bottom: 32px;
|
||||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
@@ -25,7 +25,7 @@
|
|||||||
<u-index-list :scrollTop="scrollTop" :index-list="indexList">
|
<u-index-list :scrollTop="scrollTop" :index-list="indexList">
|
||||||
<div v-for="(letter, index) in indexList" :key="index">
|
<div v-for="(letter, index) in indexList" :key="index">
|
||||||
<u-index-anchor :index="letter"/>
|
<u-index-anchor :index="letter"/>
|
||||||
<div class="item" v-for="(item, index) in list.filter(e=>e.nameInitials==letter)">
|
<div class="item" v-for="(item, index) in list.filter(e=>e.nameInitials==letter)" :key="index">
|
||||||
<div class="title">{{item.label}}</div>
|
<div class="title">{{item.label}}</div>
|
||||||
<div class="phone-list">
|
<div class="phone-list">
|
||||||
<div class="item-info">
|
<div class="item-info">
|
||||||
@@ -155,7 +155,7 @@ export default {
|
|||||||
width: 680px;
|
width: 680px;
|
||||||
padding: 32px 48px;
|
padding: 32px 48px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.02);
|
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
|
||||||
p{
|
p{
|
||||||
font-size: 32px;
|
font-size: 32px;
|
||||||
font-family: PingFangSC-Medium, PingFang SC;
|
font-family: PingFangSC-Medium, PingFang SC;
|
||||||
@@ -165,7 +165,6 @@ export default {
|
|||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
word-break: break-all;
|
|
||||||
}
|
}
|
||||||
.phone{
|
.phone{
|
||||||
font-size: 26px;
|
font-size: 26px;
|
||||||
@@ -189,7 +188,7 @@ export default {
|
|||||||
height: 112px;
|
height: 112px;
|
||||||
line-height: 112px;
|
line-height: 112px;
|
||||||
background: #3975C6;
|
background: #3975C6;
|
||||||
box-shadow: 0px 1px 0px 0px #EEEEEE;
|
box-shadow: 0 1px 0 0 #EEEEEE;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
@@ -4,7 +4,7 @@
|
|||||||
<u-index-list :scrollTop="scrollTop" :index-list="indexList">
|
<u-index-list :scrollTop="scrollTop" :index-list="indexList">
|
||||||
<div v-for="(letter, index) in indexList" :key="index">
|
<div v-for="(letter, index) in indexList" :key="index">
|
||||||
<u-index-anchor :index="letter"/>
|
<u-index-anchor :index="letter"/>
|
||||||
<div class="item" v-for="(item, index) in list.filter(e=>e.nameInitials==letter)">
|
<div class="item" v-for="(item, index) in list.filter(e=>e.nameInitials==letter)" :key="index">
|
||||||
<div class="title">{{item.label}}</div>
|
<div class="title">{{item.label}}</div>
|
||||||
<div class="phone-list">
|
<div class="phone-list">
|
||||||
<div class="item-info">
|
<div class="item-info">
|
||||||
@@ -103,7 +103,7 @@ export default {
|
|||||||
width: 680px;
|
width: 680px;
|
||||||
padding: 32px 48px;
|
padding: 32px 48px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.02);
|
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
|
||||||
p{
|
p{
|
||||||
font-size: 32px;
|
font-size: 32px;
|
||||||
font-family: PingFangSC-Medium, PingFang SC;
|
font-family: PingFangSC-Medium, PingFang SC;
|
||||||
@@ -113,7 +113,6 @@ export default {
|
|||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
word-break: break-all;
|
|
||||||
}
|
}
|
||||||
.phone{
|
.phone{
|
||||||
font-size: 26px;
|
font-size: 26px;
|
||||||
@@ -137,7 +136,7 @@ export default {
|
|||||||
height: 112px;
|
height: 112px;
|
||||||
line-height: 112px;
|
line-height: 112px;
|
||||||
background: #3975C6;
|
background: #3975C6;
|
||||||
box-shadow: 0px 1px 0px 0px #EEEEEE;
|
box-shadow: 0 1px 0 0 #EEEEEE;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
@@ -153,7 +153,7 @@ export default {
|
|||||||
height: 112px;
|
height: 112px;
|
||||||
line-height: 112px;
|
line-height: 112px;
|
||||||
background: #3975C6;
|
background: #3975C6;
|
||||||
box-shadow: 0px 1px 0px 0px #EEEEEE;
|
box-shadow: 0 1px 0 0 #EEEEEE;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
@@ -2,9 +2,6 @@
|
|||||||
"name": "@dvcp-weapps/shandong10086",
|
"name": "@dvcp-weapps/shandong10086",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "为山东移动定制的模块",
|
"description": "为山东移动定制的模块",
|
||||||
"files": [
|
|
||||||
"../../src/apps/AppHandSnapshot"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||