Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmMes
| | |
| | | # æ¥å£åç¼ _api |
| | | VUE_APP_API_PREFIX = '/doumeeplant_api' |
| | | VUE_APP_API_PREFIX = '/doumeeplant' |
| | | |
| | | # ä¸ä¸æè·¯å¾ --> é»è®¤./ï¼å¯ä»¥é¨ç½²å¨æå¡å¨ä»»æè·¯å¾ï¼ |
| | | VUE_APP_CONTEXT = './' |
| | |
| | | # VUE_APP_API = 'https://hsky.doumee.com/doumeeplant_api/' |
| | | |
| | | # æµè¯ |
| | | VUE_APP_API = 'https://dmtest.ahapp.net/doumeeplant_api/' |
| | | # VUE_APP_API = 'https://dmtest.ahapp.net/doumeeplant_api/' |
| | | |
| | | # æ¼ç¤º |
| | | # VUE_APP_API = 'https://www.mes.red/doumeeplant/' |
| | | VUE_APP_API = 'https://www.mes.red/doumeeplant/' |
| | |
| | | if (url.indexOf('?code') === -1) { |
| | | let query = url.split('?')[1] |
| | | let tempUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_url=https://www.mes.red/h5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect` |
| | | // let tempUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_url=https://dmtest.ahapp.net/doumeeplant_h5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect` |
| | | window.location.replace(tempUrl) |
| | | } else { |
| | | var code = url.substring(url.indexOf('?') + 6, url.indexOf('&')) |
| | | let href1 = `https://www.mes.red/h5/#/wxLogin?code=${code}` |
| | | // let href1 = `https://dmtest.ahapp.net/doumeeplant_h5/#/wxLogin?code=${code}` |
| | | window.location.replace(href1) |
| | | } |
| | | </script> |
| | |
| | | }) |
| | | } |
| | | |
| | | // 微信端ç»å½ |
| | | // 微信å°ç¨åºç»å½ |
| | | export function wxProgramLogin(params: any): Promise<any> { |
| | | return httpRequest({ |
| | | url: '/system/wxProgramLogin', |
| | | method: 'get', |
| | | params |
| | | }) |
| | | } |
| | | |
| | | // 微信å
¬ä¼å·ç»å½ |
| | | export function wxAccountLogin(data: any): Promise<any> { |
| | | return httpRequest({ |
| | | url: '/system/wxAccountLogin', |
| | |
| | | }) |
| | | } |
| | | |
| | | // 微信éåºç»å½ |
| | | export function wxLoginOut(data: any): Promise<any> { |
| | | return httpRequest({ |
| | | url: '/system/wxLoginOut', |
| | | method: 'post', |
| | | data |
| | | }) |
| | | } |
| | | |
| | | // è·åä¼ä¸id |
| | | export function getDingdingCorpId(companyId: any): Promise<any> { |
| | | return httpRequest({ |
| | |
| | | keepAlive: false |
| | | }, |
| | | component: () => import('@/views/wxLogin.vue') |
| | | }, |
| | | { |
| | | path: '/appletLogin', |
| | | name: 'appletLogin', |
| | | meta: { |
| | | title: 'DMäºå·¥å', |
| | | keepAlive: false |
| | | }, |
| | | component: () => import('@/views/appletLogin.vue') |
| | | } |
| | | ] |
| | | |
| | |
| | | |
| | | export default createStore({ |
| | | state: { |
| | | // 项ç®å
¥å£ç¯å¢ DD / H5 |
| | | // 项ç®å
¥å£ç¯å¢ DD / H5 / WX / XCX |
| | | env: env ? env : null, |
| | | |
| | | // æ¯å¦éè¦éé
è¹æåºé¨å®å
¨è·ç¦» |
| | |
| | | // æ·»å ååºæ¦æªå¨ |
| | | service.interceptors.response.use( |
| | | (response) => { |
| | | |
| | | if (response.config.url?.indexOf('/lingyang/login') == -1 && response.config.url?.indexOf('/edgp/loginDemo') == -1 && response.config.url?.indexOf('/lingyang/loginDemo') == -1 && response.config.url?.indexOf('/edgp/login') == -1) { |
| | | // if (response.config.url?.indexOf('/lingyang/login') == -1 && response.config.url?.indexOf('/edgp/loginDemo') == -1 && response.config.url?.indexOf('/lingyang/loginDemo') == -1 && response.config.url?.indexOf('/edgp/login') == -1) { |
| | | loading.clear(); |
| | | } |
| | | // } |
| | | if (response.data.code === 401) { // å¤çç»å½è¿æ |
| | | Toast.fail({ message: 'ç»å½è¿æï¼åå¤èªå¨éæ°ç»å½', duration: 2000, forbidClick: true }) |
| | | setTimeout(() => { |
| | |
| | | function judgmentPlatform (): boolean { |
| | | // alert(store.state.env) |
| | | // alert(store.state.env !== 'DD') |
| | | return store.state.env === 'DD' |
| | | return store.state.env === 'DD' || store.state.env === 'WX'; |
| | | // return dd.env.platform !== 'notInDingTalk'; |
| | | } |
| | | |
| | |
| | | let res = await testLogin({ // ææ¦ |
| | | username: '18656077929', |
| | | password: '123456', |
| | | companyId: '8', |
| | | companyId: '111', |
| | | uuid: '0000', |
| | | code: '0000' |
| | | }) |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="wx"> |
| | | <img class="wx_bg" src="@/assets/background/login_bg@2x.png" alt="" /> |
| | | <div class="wx_login"> |
| | | <img class="wx_login_icon" src="@/assets/icon/logo@2x.png" alt="" /> |
| | | <span>DMäºå·¥å</span> |
| | | <div class="wx_login_list"> |
| | | <div class="wx_login_list_item"> |
| | | <img src="@/assets/icon/login_ic_code@2x.png" alt="" /> |
| | | <input type="text" v-model="from.companyId" placeholder="ä¼ä¸ä»£ç " /> |
| | | </div> |
| | | <div class="wx_login_list_item"> |
| | | <img src="@/assets/icon/login_ic_phone@2x.png" alt="" /> |
| | | <input type="text" maxlength="11" v-model="from.username" placeholder="ææºå·" /> |
| | | </div> |
| | | <div class="wx_login_list_item"> |
| | | <img src="@/assets/icon/login_ic_password@2x.png" alt="" /> |
| | | <input type="password" v-model="from.password" placeholder="å¯ç " /> |
| | | </div> |
| | | </div> |
| | | <div class="wx_login_footer"> |
| | | <div class="wx_login_footer_btn" @click="login">ç«å³ç»å½</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { onMounted, reactive } from 'vue'; |
| | | import { useRoute, useRouter } from 'vue-router'; |
| | | import { useStore } from 'vuex'; |
| | | import { wxAccountLogin, getUserInfo, wxProgramLogin } from '@/apis/index'; |
| | | import { Toast } from 'vant'; |
| | | |
| | | const route = useRoute() |
| | | const router = useRouter() |
| | | const store = useStore() |
| | | |
| | | let from: any = reactive({ |
| | | openid: '', |
| | | unionid: '', |
| | | companyId: '', |
| | | username: '', |
| | | password: '' |
| | | }) |
| | | |
| | | const login = async () => { |
| | | // if (!from.openid) return Toast('openidä¸è½ä¸ºç©º') |
| | | // if (!from.unionid) return Toast('unionidä¸è½ä¸ºç©º') |
| | | if (!from.companyId) return Toast('ä¼ä¸ä»£ç ä¸è½ä¸ºç©º') |
| | | if (!from.username) return Toast('ææºå·ä¸è½ä¸ºç©º') |
| | | if (!from.password) return Toast('å¯ç ä¸è½ä¸ºç©º') |
| | | Toast.loading({ |
| | | message: 'ç»å½ä¸...', |
| | | forbidClick: true |
| | | }); |
| | | let res = await wxAccountLogin(from) |
| | | if (res.code === 200) { |
| | | let info = await getUserInfo() |
| | | if (info.code === 200) { |
| | | await store.commit('setEntrance', 'XCX') |
| | | await store.commit('setUserInfo', info.data) |
| | | await store.dispatch('getMenuList', 2) |
| | | await router.replace('/workbench') |
| | | } |
| | | } |
| | | Toast.clear(); |
| | | } |
| | | |
| | | onMounted(() => { |
| | | wxProgramLogin({ code: route.query.code }) |
| | | .then(async (res) => { |
| | | if (res.code === 200) { |
| | | // å
ç»å½ï¼ç´æ¥è·³é¦é¡µ |
| | | if (res.data.loginStatus == 0) { |
| | | let info = await getUserInfo() |
| | | if (info.code === 200) { |
| | | await store.commit('setEntrance', 'XCX') |
| | | await store.commit('setUserInfo', info.data) |
| | | await store.dispatch('getMenuList', 2) |
| | | await router.replace('/workbench') |
| | | } |
| | | } else { |
| | | from.openid = res.data.openid |
| | | from.unionid = res.data.unionid |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .wx { |
| | | width: 100vw; |
| | | height: 100vh; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: #FFFFFF linear-gradient(180deg, rgba(66,117,252,0.2) 0%, rgba(66,117,252,0) 100%); |
| | | .wx_bg { |
| | | width: 100vw; |
| | | height: 812px; |
| | | position: fixed; |
| | | top: 0; |
| | | left: 0; |
| | | } |
| | | .wx_login { |
| | | width: 100vw; |
| | | height: auto; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex-direction: column; |
| | | .wx_login_icon { |
| | | width: 180px; |
| | | height: 180px; |
| | | } |
| | | span { |
| | | font-size: 44px; |
| | | font-family: PingFangSC-Semibold, PingFang SC; |
| | | font-weight: 600; |
| | | color: #333333; |
| | | margin-top: 40px; |
| | | } |
| | | .wx_login_list { |
| | | width: 100vw; |
| | | padding: 0 60px; |
| | | box-sizing: border-box; |
| | | margin-top: 80px; |
| | | position: relative; |
| | | z-index: 9; |
| | | .wx_login_list_item { |
| | | width: 100%; |
| | | height: 98px; |
| | | background: #FFFFFF; |
| | | border-radius: 8px; |
| | | padding: 0 40px; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 40px; |
| | | &:last-child { |
| | | margin-bottom: 0 !important; |
| | | } |
| | | img { |
| | | width: 40px; |
| | | height: 40px; |
| | | flex-shrink: 0; |
| | | margin-right: 24px; |
| | | } |
| | | input::-webkit-input-placeholder { |
| | | font-size: 30px; |
| | | font-family: PingFangSC-Regular, PingFang SC; |
| | | font-weight: 400; |
| | | color: #B7BBC5; |
| | | } |
| | | input { |
| | | flex: 1; |
| | | height: 100%; |
| | | padding: 0 !important; |
| | | font-size: 30px; |
| | | font-family: PingFangSC-Regular, PingFang SC; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | border: none; |
| | | outline: none; |
| | | } |
| | | } |
| | | } |
| | | .wx_login_footer { |
| | | width: 100vw; |
| | | padding: 0 60px; |
| | | box-sizing: border-box; |
| | | margin-top: 80px; |
| | | .wx_login_footer_btn { |
| | | width: 100%; |
| | | height: 98px; |
| | | line-height: 98px; |
| | | text-align: center; |
| | | background: #4275FC; |
| | | box-shadow: 0px 12px 24px 0px rgba(66,117,252,0.2); |
| | | border-radius: 8px; |
| | | font-size: 32px; |
| | | font-family: PingFangSC-Medium, PingFang SC; |
| | | font-weight: 500; |
| | | color: #FFFFFF; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="box"> |
| | | <!-- 头é¨å¯¼èª --> |
| | | <template v-if="env == 'H5'"> |
| | | <template v-if="env == 'H5' || env == 'XCX'"> |
| | | <v-Header :pathList="pathLists"> |
| | | <template v-slot:title>{{title}}</template> |
| | | </v-Header> |
| | |
| | | <template> |
| | | <div class="index"> |
| | | <!-- 头é¨å¯¼èª --> |
| | | <template v-if="env == 'H5'"> |
| | | <template v-if="env == 'H5' || env == 'XCX'"> |
| | | <v-Header :pathList="pathLists"> |
| | | <template v-slot:title>{{ title }}</template> |
| | | </v-Header> |
| | |
| | | </div> |
| | | <div class="content_list_item_content_item"> |
| | | <div class="content_list_item_content_item_label">åé
æ°éï¼</div> |
| | | <div class="content_list_item_content_item_nr">{{info.createTime}}</div> |
| | | <div class="content_list_item_content_item_nr" v-if="info.umodel">{{info.distributNum}}{{info.umodel.name}}</div> |
| | | </div> |
| | | <div class="content_list_item_content_item"> |
| | | <div class="content_list_item_content_item_label">å®å·¥æ°éï¼</div> |
| | |
| | | </div> |
| | | <NotFound info="ææªåé
å·¥å" v-if="info.workorderList && info.workorderList.length === 0" /> |
| | | <template v-else> |
| | | <div class="details_list"> |
| | | <div class="details_list_item" v-for="(item, i) in info.workorderList" :key="i" @click="jump(item.id)"> |
| | | <!-- <div class="details_list"> |
| | | <div class="details_list_item" v-for="(item, i) in info.workorderList" :key="i" @click="jump(item)"> |
| | | <div class="details_list_item_top"> |
| | | <span>{{ item.createUserName }}</span><span>{{ item.code }}</span> |
| | | <span>{{ item.createUserName }}</span> |
| | | <span>{{ item.code }}</span> |
| | | </div> |
| | | <div class="details_list_item_center"> |
| | | <span>è¯åæ°ï¼{{ item.qualifiedNum }}</span><span>ä¸è¯æ°ï¼<span class="red">{{ item.unqualifiedNum }}</span></span> |
| | | <span>è¯åæ°ï¼{{ item.qualifiedNum }}</span> |
| | | <span>ä¸è¯æ°ï¼<span class="red">{{ item.unqualifiedNum }}</span></span> |
| | | </div> |
| | | <div class="details_list_item_bottom"> |
| | | <span>{{ item.createTime }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="details_timeline" v-for="(item, i) in info.workorderList" :key="i"> |
| | | </div> --> |
| | | <div class="details_timeline" v-for="(item, i) in info.workorderList" :key="i"> |
| | | <div class="details_timeline_header"> |
| | | <div class="details_timeline_header_code"> |
| | | <span>å·¥åç¼å·ï¼{{item.code}}</span> |
| | |
| | | <span v-if="item.status === 3" class="purple">å·²æ£éª</span> |
| | | <span v-if="item.status === 4">å·²æ¥å·¥</span> |
| | | <span v-if="item.status === 5">å·²å
¥åº</span> |
| | | <span v-if="item.status === 6">已忶</span> --> |
| | | <span v-if="item.status === 6">已忶</span> |
| | | <!-- <span v-if="item.status === 7">已忶</span>--> |
| | | <!-- <span v-if="item.status === 8">å·²å
³é</span>--> |
| | | <!-- </div> |
| | | </div> |
| | | <div class="details_timeline_item" v-if="item.produceDate"> |
| | | <div class="activedian"></div> |
| | | <div class="dian active"></div> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </template> |
| | | <!-- <div class="details_zw"></div> --> |
| | | <!-- <div class="details_btn" @click="toJump">廿¥å·¥</div> --> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | }) |
| | | } |
| | | |
| | | const jump = (id: any) => { |
| | | router.push({ name: 'workOrderReporting', query: { id } }) |
| | | const toJump = () => { |
| | | router.push({ name: 'reportingForWork' }) |
| | | } |
| | | |
| | | const jump = (item: any) => { |
| | | if (item.status === 4 || item.status === 6 || item.paused === 1) { |
| | | router.push({ name: 'afterWorkReport', query: { id: item.id } }) |
| | | } else { |
| | | router.push({ name: 'workOrderReporting', query: { id: item.id } }) |
| | | } |
| | | // router.push({ name: 'workOrderReporting', query: { id } }) |
| | | } |
| | | |
| | | const proUserStr = (item: any) => { |
| | |
| | | height: 100%; |
| | | position: absolute; |
| | | background: #F7F7F7; |
| | | .details_zw { |
| | | width: 100%; |
| | | height: 148px; |
| | | } |
| | | .details_btn { |
| | | position: fixed; |
| | | bottom: 60px; |
| | | left: 30px; |
| | | width: calc(100% - 60px); |
| | | height: 88px; |
| | | line-height: 88px; |
| | | text-align: center; |
| | | background: #305ED5; |
| | | box-shadow: 0px 0px 12px 0px rgba(0,0,0,0.08); |
| | | border-radius: 8px; |
| | | font-size: 30px; |
| | | font-family: PingFangSC-Medium, PingFang SC; |
| | | font-weight: 500; |
| | | color: #FFFFFF; |
| | | } |
| | | .van-skeleton { |
| | | padding: 0 !important; |
| | | } |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="box_out"><span>éåºç»å½</span></div>--> |
| | | <div class="box_out" v-if="store.state.env && (store.state.env == 'WX' || store.state.env == 'XCX')" @click="loginOut"><span>éåºç»å½</span></div> |
| | | </div> |
| | | <van-popup v-model:show="show" position="bottom" round :style="{ height: '50%' }"> |
| | | <van-picker |
| | |
| | | import { Dialog, Toast } from 'vant' |
| | | const VanDialog = Dialog.Component; |
| | | import { changeCom, getDepartmentListByConditon } from '@/apis/PersonalAPI' |
| | | import { wxLoginOut } from '@/apis' |
| | | |
| | | const router = useRouter() |
| | | |
| | |
| | | }) |
| | | }; |
| | | |
| | | // éåºç»å½ |
| | | const loginOut = () => { |
| | | wxLoginOut({ |
| | | companyUserId: store.state.userInfo.companyUser.id |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | // window.parent.postMessage('é¿åº·', '*') |
| | | let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_url=https://www.mes.red/h5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect' |
| | | window.open(href) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // å
³éç»ç»å¼¹æ¡ |
| | | const onCancel = (): void => { |
| | | show.value = false |
| | |
| | | if (!from.qualified && !from.undesirable) { |
| | | return Toast('è¯åæ°ä¸ä¸è¯æ°ä¸è½åæ¶ä¸ºç©º') |
| | | } |
| | | if (from.qualified && from.qualified <= 0) { |
| | | return Toast('è¯åæ°å¿
须大äº0') |
| | | } |
| | | if (from.undesirable && from.undesirable <= 0) { |
| | | return Toast('ä¸è¯åæ°å¿
须大äº0') |
| | | } |
| | | // if (!from.qualified) return Toast('è¯åæ°ä¸è½ä¸ºç©º') |
| | | // æä¸è¯æ° |
| | | if (from.undesirable > 0) { |
| | |
| | | if (info.value.bomType === 1) { // æå¼ |
| | | console.log('æå¼') |
| | | statisticsData.value = [] |
| | | if (produceFrom.qualified <= 0) { |
| | | if (produceFrom.qualified <= 0 && produceFrom.undesirable <= 0) { |
| | | Toast.fail({ message: 'äº§åºæç»ä¸è½ä¸ºç©º' }) |
| | | return |
| | | } |
| | |
| | | Toast.fail({ message: 'æææç»ä¸è½ä¸ºç©º' }) |
| | | return |
| | | } |
| | | if (produceFrom.qualified <= 0) { |
| | | if (produceFrom.qualified <= 0 && produceFrom.undesirable <= 0) { |
| | | Toast.fail({ message: 'äº§åºæç»ä¸è½ä¸ºç©º' }) |
| | | return |
| | | } |
| | |
| | | <script> |
| | | console.log('app------'); |
| | | // import { pageCount } from '@/util/api/index.js'
|
| | | export default {
|
| | | onLaunch: function() { |
| | |
| | | store.dispatch('getHeight') |
| | | Vue.config.productionTip = false |
| | | App.mpType = 'app' |
| | | console.log(uni.$u); |
| | | // console.log(uni.$u); |
| | | // #ifdef MP
|
| | | // å¼å
¥uView对å°ç¨åºå享çmixinå°è£
|
| | | const mpShare = require('@/uni_modules/uview-ui/libs/mixin/mpShare.js') |
| | |
| | | })
|
| | | require('./util/request/index')(app)
|
| | | // è·åå¾
åæ°é |
| | | store.dispatch('getUpcomingNum')
|
| | | // store.dispatch('getUpcomingNum')
|
| | |
|
| | | app.$mount() |
| | |
| | | "quickapp" : {}, |
| | | /* å°ç¨åºç¹æç¸å
³ */ |
| | | "mp-weixin" : { |
| | | "appid" : "wxcd2b89fd2ff065f8", |
| | | "appid" : "wx1605a61f7a48cea6", |
| | | "setting" : { |
| | | "urlCheck" : false, |
| | | "es6" : true, |
| | |
| | | {
|
| | | "pages": [
|
| | | { |
| | | "path": "pages/workbench/workbench", |
| | | "style": { |
| | | "navigationBarTitleText": "å·¥ä½å°", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | // { |
| | | // "path": "pages/workbench/workbench", |
| | | // "style": { |
| | | // "navigationBarTitleText": "å·¥ä½å°", |
| | | // "enablePullDownRefresh": false |
| | | // } |
| | | // }, |
| | | {
|
| | | "path": "pages/index/index",
|
| | | "style": {
|
| | | "navigationBarTitleText": "å¾
å"
|
| | | }
|
| | | }, {
|
| | | "path": "pages/mine/mine",
|
| | | "style": {
|
| | | "navigationBarTitleText": "æç",
|
| | | "enablePullDownRefresh": false
|
| | | "navigationBarTitleText": "",
|
| | | "navigationStyle": "custom"
|
| | | }
|
| | | }
|
| | | ,{
|
| | | "path" : "pages/login/login", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText": "ç»å½", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | }
|
| | | }
|
| | | // , {
|
| | | // "path": "pages/mine/mine",
|
| | | // "style": {
|
| | | // "navigationBarTitleText": "æç",
|
| | | // "enablePullDownRefresh": false
|
| | | // }
|
| | | // }
|
| | | // ,{
|
| | | // "path" : "pages/login/login", |
| | | // "style" : |
| | | // { |
| | | // "navigationBarTitleText": "ç»å½", |
| | | // "enablePullDownRefresh": false, |
| | | // "navigationStyle": "custom" |
| | | // }
|
| | | // }
|
| | | // ,{
|
| | | // "path" : "pages/personal/personal",
|
| | | // "style" : |
| | | // {
|
| | | // "navigationBarTitleText": "个人信æ¯",
|
| | | // "enablePullDownRefresh": false
|
| | | // }
|
| | | |
| | | // }
|
| | | // ,{
|
| | | // "path" : "pages/changePassword/changePassword",
|
| | | // "style" : |
| | | // {
|
| | | // "navigationBarTitleText": "ä¿®æ¹å¯ç ",
|
| | | // "enablePullDownRefresh": false
|
| | | // }
|
| | | |
| | | // }
|
| | | // ,{
|
| | | // "path" : "pages/updatePhone/updatePhone",
|
| | | // "style" : |
| | | // {
|
| | | // "navigationBarTitleText": "æ´æ°ææºå·",
|
| | | // "enablePullDownRefresh": false
|
| | | // }
|
| | | |
| | | // }
|
| | | // ,{
|
| | | // "path" : "pages/updateMailbox/updateMailbox",
|
| | | // "style" : |
| | | // {
|
| | | // "navigationBarTitleText": "æ´æ°é®ç®±å·",
|
| | | // "enablePullDownRefresh": false
|
| | | // }
|
| | | |
| | | // }
|
| | | ],
|
| | | "globalStyle": {
|
| | | "navigationBarTextStyle": "black",
|
| | | "navigationBarTitleText": "uni-app", |
| | | "navigationBarBackgroundColor": "#ffffff",
|
| | | "backgroundColor": "#ffffff"
|
| | | "backgroundColor": "#ffffff",
|
| | | "navigationStyle": "custom"
|
| | | }, |
| | | "tabBar": { |
| | | "color": "#666666", |
| | | "selectedColor": "#222222", |
| | | "borderStyle": "black", |
| | | "backgroundColor": "#fff", |
| | | "list": [ |
| | | { |
| | | "pagePath": "pages/index/index", |
| | | "iconPath": "static/nav_daiban@2x.png", |
| | | "selectedIconPath": "static/nav_daiban_sel@2x.png", |
| | | "text": "å¾
å" |
| | | }, |
| | | { |
| | | "pagePath": "pages/workbench/workbench", |
| | | "iconPath": "static/nav_gongzuotai@2x.png", |
| | | "selectedIconPath": "static/nav_gongzuotai_sel@2x.png", |
| | | "text": "å·¥ä½å°" |
| | | }, |
| | | { |
| | | "pagePath": "pages/mine/mine", |
| | | "iconPath": "static/nav_wode@2x.png", |
| | | "selectedIconPath": "static/nav_wode_sel@2x.png", |
| | | "text": "æç" |
| | | } |
| | | ] |
| | | },
|
| | | // "tabBar": { |
| | | // "color": "#666666", |
| | | // "selectedColor": "#222222", |
| | | // "borderStyle": "black", |
| | | // "backgroundColor": "#fff", |
| | | // "list": [ |
| | | // { |
| | | // "pagePath": "pages/index/index", |
| | | // "iconPath": "static/nav_daiban@2x.png", |
| | | // "selectedIconPath": "static/nav_daiban_sel@2x.png", |
| | | // "text": "å¾
å" |
| | | // }, |
| | | // { |
| | | // "pagePath": "pages/workbench/workbench", |
| | | // "iconPath": "static/nav_gongzuotai@2x.png", |
| | | // "selectedIconPath": "static/nav_gongzuotai_sel@2x.png", |
| | | // "text": "å·¥ä½å°" |
| | | // }, |
| | | // { |
| | | // "pagePath": "pages/mine/mine", |
| | | // "iconPath": "static/nav_wode@2x.png", |
| | | // "selectedIconPath": "static/nav_wode_sel@2x.png", |
| | | // "text": "æç" |
| | | // } |
| | | // ] |
| | | // },
|
| | | "uniIdRouter": {}
|
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="password"> |
| | | <view class="password_tip"> |
| | | <image src="@/static/password_ic_tip@2x.png" alt="" /> |
| | | <text>å¯ç ç±6-20ä¸ªè±æåæ¯ãæ°åæç¬¦å·ç»æ</text> |
| | | </view> |
| | | <view class="password_list"> |
| | | <view class="password_list_item"> |
| | | <text>åå¯ç </text> |
| | | <view class="password_list_item_box"> |
| | | <input type="password" v-model="form.originalPassword" maxlength="20" placeholder="请è¾å
¥åå¯ç "> |
| | | </view> |
| | | </view> |
| | | <view class="password_list_item"> |
| | | <text>æ°å¯ç </text> |
| | | <view class="password_list_item_box"> |
| | | <input type="password" v-model="form.newPassword" maxlength="20" placeholder="请è¾å
¥æ°å¯ç "> |
| | | </view> |
| | | </view> |
| | | <view class="password_list_item"> |
| | | <text>确认å¯ç </text> |
| | | <view class="password_list_item_box"> |
| | | <input type="password" v-model="form.confirmPassword" maxlength="20" placeholder="忬¡è¾å
¥æ°å¯ç "> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="password_footer"> |
| | | <button v-preventReClick class="password_footer_submit"> |
| | | <text>宿</text> |
| | | </button> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | form: { |
| | | originalPassword: '', |
| | | newPassword: '', |
| | | confirmPassword: '' |
| | | } |
| | | }; |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .password { |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | | background: white; |
| | | .password_tip { |
| | | height: 72rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | background: #F7F7F7; |
| | | padding: 0 30rpx; |
| | | image { |
| | | width: 24rpx; |
| | | height: 24rpx; |
| | | margin-right: 10rpx; |
| | | } |
| | | text { |
| | | font-size: 24rpx; |
| | | font-weight: 400; |
| | | color: #666666; |
| | | } |
| | | } |
| | | .password_list { |
| | | padding: 0 30rpx; |
| | | .password_list_item { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 90rpx; |
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | text { |
| | | width: 150rpx; |
| | | flex-shrink: 0; |
| | | font-size: 30rpx; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | .password_list_item_box { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | flex: 1; |
| | | input { |
| | | border: none; |
| | | font-size: 30rpx; |
| | | } |
| | | input::-webkit-input-placeholder { |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #B2B2B2; |
| | | } |
| | | p { |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | | color: #4275FC; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .password_footer { |
| | | margin-top: 80rpx; |
| | | padding: 0 30rpx; |
| | | .password_footer_submit { |
| | | width: 100%; |
| | | height: 88rpx; |
| | | border: none; |
| | | background: #4275FC; |
| | | box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08); |
| | | border-radius: 8rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | text { |
| | | font-size: 30rpx; |
| | | font-weight: 500; |
| | | color: #FFFFFF; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template>
|
| | | <view>
|
| | | <myTabbar :index="0" />
|
| | | <view class="index">
|
| | | <web-view v-if="show" @onPostMessage="onMessage" :src="'https://dmtest.ahapp.net/doumeeplant_h5/#/appletLogin?code=' + code"></web-view>
|
| | | <!-- <myTabbar :index="0" /> -->
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import myTabbar from "@/components/myTabber.vue"
|
| | | // import myTabbar from "@/components/myTabber.vue" |
| | | export default {
|
| | | components: {
|
| | | myTabbar
|
| | | },
|
| | | // components: {
|
| | | // myTabbar
|
| | | // },
|
| | | data() {
|
| | | return {
|
| | | form: {
|
| | | account: '',
|
| | | password: '',
|
| | | },
|
| | | logining: false,
|
| | | openId: ''
|
| | | code: '',
|
| | | show: false
|
| | | }
|
| | | },
|
| | | onLoad() {
|
| | | // uni.login({
|
| | | // success: data => {
|
| | | // this.wxLogin(data.code)
|
| | | // },
|
| | | // fail: err => {
|
| | | // uni.$u.toast(err)
|
| | | // }
|
| | | // })
|
| | | var that = this
|
| | | uni.login({
|
| | | provider: 'weixin',
|
| | | success: function (loginRes) {
|
| | | // console.log(loginRes);
|
| | | that.code = loginRes.code
|
| | | that.show = true
|
| | | }
|
| | | });
|
| | | },
|
| | | methods: {
|
| | | // loginAction() {
|
| | | // if (!this.form.account || !this.form.password) {
|
| | | // uni.$u.toast('è´¦å·æè
å¯ç ä¸è½ä¸ºç©º')
|
| | | // }
|
| | | // this.logining = true
|
| | | // coustomLogin({...this.form, openid: this.openId})
|
| | | // .then(res => {
|
| | | // this.$store.commit('SETTOKEN', res.token)
|
| | | // this.$store.commit('SETUSERINFO', res)
|
| | | // uni.navigateTo({
|
| | | // url:'/pages/projectList/projectList'
|
| | | // })
|
| | | // })
|
| | | // .finally(() => {
|
| | | // this.logining = false
|
| | | // })
|
| | | // },
|
| | | // wxLogin(code) {
|
| | | // wxEmpower({code})
|
| | | // .then(res => {
|
| | | // this.openId = res.openid
|
| | | // if (res.userInfo) {
|
| | | // this.$store.commit('SETTOKEN', res.userInfo.token)
|
| | | // this.$store.commit('SETUSERINFO', res.userInfo)
|
| | | // uni.navigateTo({
|
| | | // url:'/pages/projectList/projectList'
|
| | | // })
|
| | | // } |
| | | // })
|
| | | // .catch(err => {
|
| | | // uni.$u.toast(err)
|
| | | // })
|
| | | // }
|
| | | onMessage(e) {
|
| | | console.log('12345654321')
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss" scoped>
|
| | | |
| | | .index {
|
| | | width: 100vw;
|
| | | height: 100vh;
|
| | | }
|
| | | </style> |
| | |
| | | <image src="@/static/2@2x.png" mode="widthFix" />
|
| | | <div class="box_info_box">
|
| | | <text>å¼ ä¸</text>
|
| | | <div class="box_info_box_x">
|
| | | <div class="box_info_box_x" @click="show = true">
|
| | | <text>è±ç±³ç§æ</text>
|
| | | <image src="@/static/mine_ic_change@2x.png" alt="" />
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="box_function">
|
| | | <div class="box_function_item" v-for="(item, index) in MENU" :key="index">
|
| | | <div class="box_function_item" v-for="(item, index) in MENU" :key="index" @click="jump(item.url)">
|
| | | <div class="box_function_item_left">
|
| | | <image :src="item.icon" alt="" />
|
| | | <text>{{item.name}}</text>
|
| | |
| | | </div>
|
| | | <div class="box_out"><text>éåºç»å½</text></div>
|
| | | </div>
|
| | | <!-- é¨é¨éæ©å¨ -->
|
| | | <u-picker :show="show" :columns="columns" @confirm="confirm"></u-picker>
|
| | | <myTabbar :index="2" />
|
| | | </view>
|
| | | </template>
|
| | |
| | | data() {
|
| | | return {
|
| | | MENU: [ |
| | | { name: '个人信æ¯', url: '/personal/personalInformation', icon: require('@/static/mine_ic_gerenxinxi@2x.png') }, |
| | | { name: '个人信æ¯', url: '/pages/personal/personal', icon: require('@/static/mine_ic_gerenxinxi@2x.png') }, |
| | | // { name: 'ç³»ç»éç¥', url: '', icon: require('@/assets/icon/mine_ic_xitonggonggao@2x.png') }, |
| | | { name: 'æ´æ°ææºå·', url: '/personal/updatePhone', icon: require('@/static/mine_ic_shoujihao@2x.png') }, |
| | | { name: 'æ´æ°é®ç®±å·', url: '/personal/updateMailbox', icon: require('@/static/mine_ic_youxianghao@2x.png') }, |
| | | { name: 'æ´æ°ææºå·', url: '/pages/updatePhone/updatePhone', icon: require('@/static/mine_ic_shoujihao@2x.png') }, |
| | | { name: 'æ´æ°é®ç®±å·', url: '/pages/updateMailbox/updateMailbox', icon: require('@/static/mine_ic_youxianghao@2x.png') }, |
| | | { name: 'æ«ç ç»å®è´¦å·', url: '', icon: require('@/static/mine_ic_bangding@2x.png') }, |
| | | { name: 'ä¿®æ¹å¯ç ', url: '/personal/changePassword', icon: require('@/static/mine_ic_xiugaimima@2x.png') }, |
| | | { name: 'ä¿®æ¹å¯ç ', url: '/pages/changePassword/changePassword', icon: require('@/static/mine_ic_xiugaimima@2x.png') }, |
| | | ],
|
| | | img: require('@/static/mine_bg@2x.png')
|
| | | img: require('@/static/mine_bg@2x.png'),
|
| | | show: false,
|
| | | columns: [
|
| | | ['ä¸å½', 'ç¾å½', 'æ¥æ¬']
|
| | | ]
|
| | | }
|
| | | },
|
| | | onLoad() {
|
| | | uni.hideTabBar()
|
| | | // uni.login({
|
| | | // success: data => {
|
| | | // this.wxLogin(data.code)
|
| | | // },
|
| | | // fail: err => {
|
| | | // uni.$u.toast(err)
|
| | | // }
|
| | | // })
|
| | | },
|
| | | methods: {
|
| | | jump(url) {
|
| | | uni.navigateTo({ url })
|
| | | },
|
| | | confirm(val) {
|
| | | console.log(val)
|
| | | this.show = false
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="info"> |
| | | <view class="info_portrait"> |
| | | <image src="@/static/2@2x.png" mode="widthFix" /> |
| | | <text>ç¨æ·å</text> |
| | | </view> |
| | | <view class="info_list"> |
| | | <view class="info_list_item"> |
| | | <text>æµç§°</text> |
| | | <text>ææ æµç§°</text> |
| | | </view> |
| | | <view class="info_list_item"> |
| | | <text>ææºå·</text> |
| | | <text>ææ ææºå·</text> |
| | | </view> |
| | | <view class="info_list_item"> |
| | | <text>æå±é¨é¨</text> |
| | | <text>ææ æå±é¨é¨</text> |
| | | </view> |
| | | <view class="info_list_item"> |
| | | <text>å²ä½</text> |
| | | <text>ææ å²ä½</text> |
| | | </view> |
| | | <view class="info_list_item"> |
| | | <text>å½åç»ç»</text> |
| | | <text>ææ ç»ç»</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | |
| | | }; |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .info { |
| | | padding: 30rpx; |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | | box-sizing: border-box; |
| | | background: white; |
| | | .info_portrait { |
| | | display: flex; |
| | | align-items: center; |
| | | flex-direction: column; |
| | | margin-top: 60rpx; |
| | | image { |
| | | width: 140rpx; |
| | | height: 140rpx; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | text { |
| | | font-size: 30rpx; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | } |
| | | .info_list { |
| | | margin-top: 30rpx; |
| | | .info_list_item { |
| | | height: 98rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | text { |
| | | &:first-child { |
| | | font-size: 30rpx; |
| | | font-weight: 400; |
| | | color: #777777; |
| | | } |
| | | &:last-child { |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="password"> |
| | | <view class="password_tip"> |
| | | <image src="@/static/password_ic_tip@2x.png" mode="widthFix" /> |
| | | <text>ç»å®é®ç®±å·å¯ä»¥æ´å¥½å°ä¿æ¤æ¨çè´¦æ·å®å
¨ï¼ä¿æ¤ä¸ªäººä¿¡æ¯ä¸è¢«ä¾µå®³ã</text> |
| | | </view> |
| | | <view class="password_list"> |
| | | <view class="password_list_item"> |
| | | <text>å½åç»å®</text> |
| | | <view class="password_list_item_box"> |
| | | <input type="text" disabled v-model="form.currentMailbox" /> |
| | | </view> |
| | | </view> |
| | | <view class="password_list_item"> |
| | | <text>æ°é®ç®±å·</text> |
| | | <view class="password_list_item_box"> |
| | | <input type="text" v-model="form.newMailbox" placeholder="请è¾å
¥æ°çé®ç®±" /> |
| | | </view> |
| | | </view> |
| | | <view class="password_list_item"> |
| | | <text>éªè¯ç </text> |
| | | <view class="password_list_item_box"> |
| | | <input type="text" v-model="form.verificationCode" maxlength="4" placeholder="请è¾å
¥éªè¯ç "> |
| | | <p @click="getVerificationCode" v-if="!code.isOpen">è·åéªè¯ç </p> |
| | | <p @click="getVerificationCode" v-else>{{code.num}}</p> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="password_footer"> |
| | | <button v-preventReClick class="password_footer_submit"> |
| | | <text>宿</text> |
| | | </button> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | form: { |
| | | currentMailbox: '', |
| | | newMailbox: '', |
| | | verificationCode: '' |
| | | } |
| | | }; |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .password { |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | | background: white; |
| | | .password_tip { |
| | | padding: 20rpx 30rpx; |
| | | display: flex; |
| | | background: #F7F7F7; |
| | | box-sizing: border-box; |
| | | image { |
| | | width: 24rpx; |
| | | height: 24rpx; |
| | | margin-right: 10rpx; |
| | | margin-top: 8rpx; |
| | | } |
| | | text { |
| | | font-size: 24rpx; |
| | | font-weight: 400; |
| | | color: #666666; |
| | | } |
| | | } |
| | | .password_list { |
| | | padding: 0 30rpx; |
| | | .password_list_item { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 90rpx; |
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | text { |
| | | width: 150rpx; |
| | | flex-shrink: 0; |
| | | font-size: 30rpx; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | .password_list_item_box { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | flex: 1; |
| | | input { |
| | | border: none; |
| | | font-size: 30rpx; |
| | | } |
| | | input::-webkit-input-placeholder { |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #B2B2B2; |
| | | } |
| | | p { |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | | color: #4275FC; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .password_footer { |
| | | margin-top: 80rpx; |
| | | padding: 0 30rpx; |
| | | .password_footer_submit { |
| | | width: 100%; |
| | | height: 88rpx; |
| | | border: none; |
| | | background: #4275FC; |
| | | box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08); |
| | | border-radius: 8rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | text { |
| | | font-size: 30rpx; |
| | | font-weight: 500; |
| | | color: #FFFFFF; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="password"> |
| | | <view class="password_tip"> |
| | | <image src="@/static/password_ic_tip@2x.png" alt="" /> |
| | | <text>ç»å®ææºå·å¯ä»¥æ´å¥½å°ä¿æ¤æ¨çè´¦æ·å®å
¨ï¼ä¿æ¤ä¸ªäººä¿¡æ¯ä¸è¢«ä¾µå®³ã</text> |
| | | </view> |
| | | <view class="password_list"> |
| | | <view class="password_list_item"> |
| | | <text>å½åç»å®</text> |
| | | <view class="password_list_item_box"> |
| | | <input type="number" disabled v-model="form.currentPhone" maxlength="11"> |
| | | </view> |
| | | </view> |
| | | <view class="password_list_item"> |
| | | <text>æ°ææºå·</text> |
| | | <view class="password_list_item_box"> |
| | | <input type="text" v-model="form.newPhone" maxlength="11" placeholder="请è¾å
¥æ°ææºå·"> |
| | | </view> |
| | | </view> |
| | | <view class="password_list_item"> |
| | | <text>éªè¯ç </text> |
| | | <view class="password_list_item_box"> |
| | | <input type="text" v-model="form.verificationCode" maxlength="4" placeholder="请è¾å
¥ææºéªè¯ç "> |
| | | <p @click="getVerificationCode" v-if="!code.isOpen">è·åéªè¯ç </p> |
| | | <p @click="getVerificationCode" v-else>{{code.num}}</p> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="password_footer"> |
| | | <button v-preventReClick class="password_footer_submit" @click="submit"> |
| | | <text>宿</text> |
| | | </button> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | form: { |
| | | currentPhone: '', |
| | | newPhone: '', |
| | | verificationCode: '' |
| | | } |
| | | }; |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .password { |
| | | width: 100%; |
| | | .password_tip { |
| | | padding: 20rpx 30rpx; |
| | | display: flex; |
| | | background: #F7F7F7; |
| | | box-sizing: border-box; |
| | | image { |
| | | width: 24rpx; |
| | | height: 24rpx; |
| | | margin-right: 10rpx; |
| | | margin-top: 8rpx; |
| | | } |
| | | text { |
| | | font-size: 24rpx; |
| | | font-weight: 400; |
| | | color: #666666; |
| | | } |
| | | } |
| | | .password_list { |
| | | padding: 0 30rpx; |
| | | .password_list_item { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 90rpx; |
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | text { |
| | | width: 150rpx; |
| | | flex-shrink: 0; |
| | | font-size: 30rpx; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | .password_list_item_box { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | flex: 1; |
| | | input { |
| | | border: none; |
| | | font-size: 30rpx; |
| | | } |
| | | input::-webkit-input-placeholder { |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #B2B2B2; |
| | | } |
| | | p { |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | | color: #4275FC; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .password_footer { |
| | | margin-top: 80rpx; |
| | | padding: 0 30rpx; |
| | | .password_footer_submit { |
| | | width: 100%; |
| | | height: 88rpx; |
| | | border: none; |
| | | background: #4275FC; |
| | | box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08); |
| | | border-radius: 8rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | text { |
| | | font-size: 30rpx; |
| | | font-weight: 500; |
| | | color: #FFFFFF; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | "scripts": { |
| | | "serve": "vue-cli-service serve", |
| | | "build:pro": "vue-cli-service build", |
| | | "build:staging": "vue-cli-service build --mode staging", |
| | | "build:dev": "vue-cli-service build --mode staging", |
| | | "lint": "vue-cli-service lint", |
| | | "fix": "eslint --ext .js,.vue src --fix" |
| | | }, |
| | |
| | | @confirm="confirm" |
| | | > |
| | | <div class="title-style">客æ·ä¿¡æ¯ <div class="tips">{{form.oepnType ? 'æ£å¼' : 'ä½éª' }}</div><div class="tips">æææï¼{{ form.oepnValidDate.substring(0, form.oepnValidDate.length-9) }}</div></div> |
| | | <el-descriptions direction="horizontal" :column="1"> |
| | | <el-descriptions-item label="客æ·åç§°">{{ form.orgName }}</el-descriptions-item> |
| | | <el-descriptions-item label="客æ·ç®ç§°">{{ form.remark }}</el-descriptions-item> |
| | | <el-descriptions-item label="主ç»å½è´¦å·">{{ form.phone }}</el-descriptions-item> |
| | | <el-descriptions-item label="æå¨å°å">{{ form.addr }}</el-descriptions-item> |
| | | <el-descriptions-item label="ä¼ä¸ä¿¡ç¨ä»£ç ">{{ form.creditCode }}</el-descriptions-item> |
| | | <el-descriptions-item label="è系人">{{ form.linkName }} {{ form.linkPhone }}</el-descriptions-item> |
| | | <el-descriptions-item label="éå®äººå">{{ form.salespersonName }} {{ form.salespersonmobile }}</el-descriptions-item> |
| | | <el-descriptions-item label="è¥ä¸æ§ç
§"> |
| | | <el-descriptions direction="horizontal" :column="1" :colon="false"> |
| | | <el-descriptions-item label="客æ·åç§°ï¼">{{ form.orgName }}</el-descriptions-item> |
| | | <el-descriptions-item label="客æ·ç®ç§°ï¼">{{ form.remark }}</el-descriptions-item> |
| | | <el-descriptions-item label="主ç»å½è´¦å·ï¼">{{ form.phone }}</el-descriptions-item> |
| | | <el-descriptions-item label="æå¨å°åï¼">{{ form.addr }}</el-descriptions-item> |
| | | <el-descriptions-item label="ä¼ä¸ä¿¡ç¨ä»£ç ï¼">{{ form.creditCode }}</el-descriptions-item> |
| | | <el-descriptions-item label="è系人ï¼">{{ form.linkName }} {{ form.linkPhone }}</el-descriptions-item> |
| | | <el-descriptions-item label="éå®äººåï¼">{{ form.salespersonName }} {{ form.salespersonmobile }}</el-descriptions-item> |
| | | <el-descriptions-item label="è¥ä¸æ§ç
§ï¼"> |
| | | <!-- {{ form.fileurlfull }} --> |
| | | <el-image |
| | | v-if="form.fileStoreAddr" |
| | |
| | | :preview-src-list="[form.fileurlfull]" |
| | | ></el-image> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="ç³»ç»è®¿é®å°å"> |
| | | <el-descriptions-item label="ç³»ç»è®¿é®å°åï¼"> |
| | | <a :href="form.systemUrl" target="_blank" rel="noopener noreferrer">{{ form.systemUrl }}</a> |
| | | <span style="cursor: pointer; margin-left: 10px;" @click="copy">å¤å¶</span> |
| | | </el-descriptions-item> |
| | |
| | | open (target) { |
| | | this.title = '客æ·èµæ' |
| | | this.visible = true |
| | | // debugger |
| | | debugger |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | ::v-deep .el-descriptions-item__label { |
| | | width: 90px; |
| | | width: 85px; |
| | | text-align: right; |
| | | display: flex; |
| | | flex-direction: row-reverse; |
| | | } |
| | | .title-style { |
| | | font-weight: 500; |
| | |
| | | </el-form-item> |
| | | </div> |
| | | <div class="tip-line"> |
| | | <el-form-item label="å¼éç¨æ·æ°" prop="openUserNum"> |
| | | <el-input v-model="form.openUserNum" placeholder="请è¾å
¥å¼éç¨æ·æ°" v-trim/> |
| | | <el-form-item label="人æ°éå¶" prop="openUserNum"> |
| | | <el-input v-model="form.openUserNum" placeholder="请è¾å
¥äººæ°éå¶" v-trim/> |
| | | 注ï¼ä¸º0ä¸éå¶äººæ° |
| | | </el-form-item> |
| | | </div> |
| | |
| | | linkPhone: '', |
| | | fileStoreAddr: '', |
| | | fileurlfull: '', |
| | | openUserNum:0 |
| | | openUserNum: 10 |
| | | // fileList: [], |
| | | }, |
| | | isEdit: false, |
| | |
| | | <span>{{ row.oepnType == 1 ? 'æ£å¼' : 'è¯ç¨' }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="openUserNum" label="人æ°éå¶" align="center" min-width="140px"></el-table-column> |
| | | <el-table-column prop="phone" label="主账å·" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="linkName" label="è系人" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="linkPhone" label="èç³»çµè¯" align="center" min-width="120px"></el-table-column> |
| | | <el-table-column prop="oepnValidDate" label="æææ" align="center" min-width="140px"></el-table-column> |
| | | <el-table-column prop="openUserNum" label="å¼éç¨æ·æ°" align="center" min-width="140px"></el-table-column> |
| | | <el-table-column prop="salespersonName" label="éå®äººå" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="createTime" label="å建æ¶é´" align="center" min-width="140px"></el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ" align="center" min-width="100px"> |
| | |
| | | // this.$refs.operaApplianceChangeDetailWindow.open('æ´æ¢å详æ
', row) |
| | | findCompanyInfo({ CompanyId: row.id }) |
| | | .then(res => { |
| | | const element = isEdit ? this.$refs.operaClientMangerWindow : this.$refs.operaClientDetailWindow |
| | | element.open(res) |
| | | if (isEdit) { |
| | | this.$refs.operaClientMangerWindow.open({...res, openUserNum: row.openUserNum}) |
| | | } else { |
| | | this.$refs.operaClientDetailWindow.open(res) |
| | | } |
| | | // const element = isEdit ? this.$refs.operaClientMangerWindow : this.$refs.operaClientDetailWindow |
| | | // element.open({...res, ...row}) |
| | | }) |
| | | .catch(err => { |
| | | this.$tip.error(err) |
| | |
| | | <el-form-item label="ç»å½ç¨æ·å" prop="loginUsername"> |
| | | <el-input v-model="searchForm.loginUsername" placeholder="请è¾å
¥ç»å½ç¨æ·å" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç»å½IP" prop="ip"> |
| | | <!-- <el-form-item label="ç»å½IP" prop="ip"> |
| | | <el-input v-model="searchForm.ip" placeholder="请è¾å
¥ç»å½IP" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æå¡å¨IP" prop="serverIp"> |
| | |
| | | <el-option value="true" label="ç»å½æå"/> |
| | | <el-option value="false" label="ç»å½å¤±è´¥"/> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ¥æº" prop="success"> |
| | | </el-form-item> --> |
| | | <el-form-item label="æ¥æº" prop="orgin"> |
| | | <el-select v-model="searchForm.orgin" placeholder="è¯·éæ©ç»å½æ¥æº" clearable @change="search"> |
| | | <el-option value="0" label="PCç»é"/> |
| | | <el-option value="1" label="ééå¹³å°"/> |
| | |
| | | <el-option value="4" label="微信å°ç¨åº"/> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ç»å½æ¶é´" prop="loginTime"> |
| | | <!-- <el-form-item label="ç»å½æ¶é´" prop="loginTime"> |
| | | <el-date-picker |
| | | v-model="searchDateRange" |
| | | type="datetimerange" |
| | |
| | | end-placeholder="ç»ææ¶é´" |
| | | @change="handleSearchTimeChange" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button :loading="isWorking.export" @click="exportExcel">导åº</el-button> |
| | | <!-- <el-button :loading="isWorking.export" @click="exportExcel">导åº</el-button> --> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | |
| | | :data="tableData.list" |
| | | stripe |
| | | border |
| | | :default-sort="{prop: 'loginTime', order: 'descending'}" |
| | | @sort-change="handleSortChange" |
| | | > |
| | | <!-- :default-sort="{prop: 'loginTime', order: 'descending'}" --> |
| | | |
| | | <el-table-column prop="orgin" label="æ¥æº" align="center" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | {{row.orgin | orginText}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="companyUserId" label="ç¨æ·id" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="companyName" label="ä¼ä¸åç§°" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="loginUsername" label="ç»å½ç¨æ·å" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="companyUserName" label="ç»å½ç¨æ·å" align="center" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | {{ row.companyUserName || row.loginUsername }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="ip" label="ç»å½IP" align="center" min-width="120px"></el-table-column> |
| | | <el-table-column prop="location" label="ç»å½å°å" align="center" min-width="160px"></el-table-column> |
| | | <el-table-column prop="clientInfo" label="客æ·ç«¯" align="center" min-width="160px"></el-table-column> |
| | |
| | | {{row.success | statusText}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="reason" label="失败åå " min-width="160px"></el-table-column> |
| | | <el-table-column prop="reason" label="失败åå " min-width="160px" show-overflow-tooltip> |
| | | <template slot-scope="{row}"> |
| | | <span class="lang-title-style">{{ row.reason }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | |
| | | }, |
| | | methods: { |
| | | // æ¶é´æç´¢èå´åå |
| | | handleSearchTimeChange (value) { |
| | | this.searchForm.startTime = null |
| | | this.searchForm.endTime = null |
| | | if (value != null) { |
| | | this.searchForm.startTime = value[0] |
| | | this.searchForm.endTime = value[1] |
| | | } |
| | | this.search() |
| | | } |
| | | |
| | | }, |
| | | created () { |
| | | this.config({ |
| | |
| | | }] |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | handleSearchTimeChange (value) { |
| | | this.searchForm.startTime = null |
| | | this.searchForm.endTime = null |
| | | if (value != null) { |
| | | this.searchForm.startTime = value[0] |
| | | this.searchForm.endTime = value[1] |
| | | } |
| | | this.search() |
| | | }, |
| | | reset() { |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchDateRange = [] |
| | | this.searchForm.startTime = '' |
| | | this.searchForm.endTime = '' |
| | | this.search() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | .then(res => { |
| | | if (res.length > 0) { |
| | | data.baseNum = res[0].doneNum |
| | | data.production = res |
| | | start() |
| | | } else { |
| | | data.baseNum = 0 |
| | | } |
| | | data.production = res |
| | | data.fifthScroll = true |
| | | }) |
| | | // ä»åºå®æ¶ä½éç»è®¡ |
| | | // getStockList(companyId.value, departId.value) |
| | |
| | | fontSize: 12 |
| | | } |
| | | }, |
| | | grid: { |
| | | top: 40, |
| | | bottom: 30, |
| | | left: 60 |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | boundaryGap: false, |
| | |
| | | lineStyle: { |
| | | width: 0.5, |
| | | color: ['#fff'] |
| | | } |
| | | }, |
| | | axisLine: { |
| | | show: true, |
| | | onZero: true, |
| | | lineStyle: { |
| | | width: 0.5, |
| | | color: '#fff', |
| | | opacity: .5 |
| | | } |
| | | }, |
| | | axisLabel: { |
| | |
| | | lineStyle: { |
| | | width: 0.5, |
| | | color: ['#fff'] |
| | | } |
| | | }, |
| | | axisLine: { |
| | | show: true, |
| | | onZero: true, |
| | | lineStyle: { |
| | | width: 1, |
| | | color: '#fff', |
| | | opacity: .5 |
| | | } |
| | | }, |
| | | axisLabel: { |
| | |
| | | if (scrollDom.offsetHeight == 0) { |
| | | scrollDom = scrollContainer4.value |
| | | } else { |
| | | // console.log(bottom1.value.height); |
| | | let num = scrollContainer4.value.offsetHeight / 35; |
| | | // alert(scrollDom.children.length +"---------------"+num) |
| | | // 妿å表æ°éè¿å°ä¸è¿è¡æ»å¨ |
| | | // console.log(scrollDom.offsetHeight); |
| | | let num = scrollDom.offsetHeight / 35; |
| | | num = num + (scrollDom.offsetHeight % 35 > 0 ? 1 : 0) |
| | | // console.log('----------'); |
| | | // console.log('scrollDom.children.length', scrollDom.children.length) |
| | | // console.log('scrollDom.offsetHeight % 35', scrollDom.offsetHeight % 35) |
| | | // console.log('num', num) |
| | | // console.log('----------'); |
| | | // // 妿å表æ°éè¿å°ä¸è¿è¡æ»å¨ |
| | | if (scrollDom.children.length <= num) { |
| | | clearTimeout(timer4.value) |
| | | return |
| | | } |
| | | // ç»ä»¶è¿è¡æ»å¨ |
| | | scrollDom.scrollTop += 2 |
| | | scrollDom.scrollTop += 1 |
| | | |
| | | // 夿æ¯å¦æ»å¨å°åºé¨ |
| | | if (scrollDom.scrollTop+1 >= (scrollDom.scrollHeight - scrollDom.clientHeight)) { |
| | | if (scrollDom.scrollTop >= (scrollDom.scrollHeight - scrollDom.clientHeight)) { |
| | | console.log('scrollDom.scrollTop', scrollDom.scrollTop); |
| | | console.log('scrollDom.scrollHeight', scrollDom.scrollHeight); |
| | | console.log('scrollDom.clientHeight', scrollDom.clientHeight ); |
| | | // if (scrollDom.scrollTop >= 35) { |
| | | |
| | | // è·åç»ä»¶ç¬¬ä¸ä¸ªèç¹ |
| | | let first = scrollDom.children[0] |
| | | // å é¤èç¹ |
| | |
| | | // }) |
| | | |
| | | onMounted(() => { |
| | | if (!departId.value) return; |
| | | timer5.value = setInterval(init(), 60000) |
| | | if (departId.value) { |
| | | console.log('onMounted'); |
| | | init() |
| | | timer5.value = setInterval(init, 60000) |
| | | timer.value = setInterval(scrillAction, 100) |
| | | } |
| | | window.addEventListener('resize', () => { |
| | | setTypeChart() |
| | | setDayChart() |
| | | }) |
| | | |
| | | }) |
| | | |
| | | onUnmounted(() => { |
| | | clearTimeout(timer.value) |
| | | clearTimeout(timer5.value) |
| | | |
| | | }) |
| | | </script> |
| | | |
| | |
| | | color: ['#fff'] |
| | | } |
| | | }, |
| | | axisLine: { |
| | | show: true, |
| | | onZero: true, |
| | | lineStyle: { |
| | | width: 1, |
| | | color: '#fff', |
| | | opacity: .5 |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | textStyle: { |
| | | color: '#fff' |
| | |
| | | color: ['#fff'] |
| | | } |
| | | }, |
| | | axisLine: { |
| | | show: true, |
| | | onZero: true, |
| | | lineStyle: { |
| | | width: 1, |
| | | color: '#fff', |
| | | opacity: .5 |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | textStyle: { |
| | | color: '#fff' |
| | |
| | | // https://vitejs.dev/config/ |
| | | export default defineConfig(({mode, command}) => { |
| | | let env = loadEnv(mode, process.cwd(), '') |
| | | console.log('-------'); |
| | | console.log(env.VITE_BASE_PATH); |
| | | console.log(env.VITE_BASE_PATH.replace(env.VITE_BASE_PATH, '')); |
| | | console.log('-------'); |
| | | // console.log('-------'); |
| | | // console.log(env.VITE_BASE_PATH); |
| | | // console.log(env.VITE_BASE_PATH.replace(env.VITE_BASE_PATH, '')); |
| | | // console.log('-------'); |
| | | return { |
| | | base:env.VITE_BASE_CONTEXT, |
| | | plugins: [ |
| | |
| | | |
| | | // æ¬å°è¿è¡é
ç½®ï¼ååå代çé
ç½® |
| | | server: { |
| | | host: '192.168.0.3', |
| | | port: '8080', |
| | | cors: true, // é»è®¤å¯ç¨å¹¶å
è®¸ä»»ä½æº |
| | | open: true, // 卿å¡å¨å¯å¨æ¶èªå¨å¨æµè§å¨ä¸æå¼åºç¨ç¨åº |
| | | //åå代çé
ç½®ï¼æ³¨ærewriteåæ³ï¼å¼å§æ²¡çææ¡£å¨è¿é踩äºå |
| | |
| | | VUE_APP_API_PREFIX = '' |
| | | |
| | | # ç¦æ¾ |
| | | # VUE_APP_BASE_URL = 'http://192.168.0.36:10021/' |
| | | VUE_APP_BASE_URL = 'http://192.168.0.36:10021/' |
| | | # VUE_APP_BASE_URL = 'http://192.168.0.134:10021/' |
| | | |
| | | # 任康æ¬å° |
| | | # VUE_APP_BASE_URL = 'http://192.168.0.15:10021/' |
| | | |
| | | # æ±è |
| | | VUE_APP_BASE_URL = 'http://192.168.0.35:10021/' |
| | | # VUE_APP_BASE_URL = 'http://192.168.0.35:10021/' |
| | | |
| | | # æµè¯æå¡å¨ |
| | | # VUE_APP_BASE_URL = 'https://dmtest.ahapp.net/doumeeplant_api/' |
| | |
| | | "alias": "eva", |
| | | "command": "page", |
| | | "option": { |
| | | "resources": "salary_param" |
| | | "resources": "unqualified_record" |
| | | } |
| | | } |
| | | } |
| | |
| | | "private": true, |
| | | "scripts": { |
| | | "serve": "vue-cli-service serve", |
| | | "build": "vue-cli-service build", |
| | | "build:staging": "vue-cli-service build --mode staging", |
| | | "build:pro": "vue-cli-service build", |
| | | "build:dev": "vue-cli-service build --mode staging", |
| | | "lint": "vue-cli-service lint", |
| | | "fix": "eslint --ext .js,.vue src --fix" |
| | | }, |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/business/unqualifiedRecord/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/business/unqualifiedRecord/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | |
| | | } |
| | | // æ¥è¯¢ææ |
| | | export function checkAllList (data) { |
| | | return request.post('/ext/categoryUnionExt/checkAllList', data) |
| | | return request.post('/ext/categoryExt/list', data) |
| | | } |
| | | |
| | | // å é¤ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/ext/workorderRecordExt/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/ext/workorderRecordExt/exportExcelFeeding', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | |
| | | * éåºç»å½ |
| | | */ |
| | | logout () { |
| | | console.log(this.$store.state.companyId); |
| | | debugger |
| | | // console.log(this.$store.state.companyId); |
| | | // debugger |
| | | logout() |
| | | .then(() => { |
| | | let companyId = this.$store.state.userInfo.company.id |
| | |
| | | name: 'Menu', |
| | | components: { Scrollbar, MenuItems }, |
| | | computed: { |
| | | ...mapState(['menuData']), |
| | | ...mapState(['menuData', 'userInfo']), |
| | | // éä¸çèåindex |
| | | activeIndex () { |
| | | let path = this.$route.path |
| | |
| | | */ |
| | | handleSelect (menuIndex) { |
| | | const menuConfig = this.__getMenuConfig(menuIndex, 'index', this.menuData.list) |
| | | if (menuConfig.url.includes('http')) { |
| | | window.open(`${menuConfig.url}?companyId=${this.userInfo.company.id}`, '_black') |
| | | return |
| | | } |
| | | // æ¾ä¸å°é¡µé¢ |
| | | try { |
| | | require('@/views' + menuConfig.url) |
| | |
| | | </el-form-item> |
| | | <el-form-item label="å叿¥æ">{{ form.publishDate }}</el-form-item> |
| | | <el-form-item label="计å人å">{{ form.usermodel.realname }}</el-form-item> |
| | | <el-form-item label="åé
æ°é">{{ form.workorderDistributNum }}</el-form-item> |
| | | <el-form-item label="åé
æ°é">{{ form.distributNum }}</el-form-item> |
| | | <el-form-item label="å®å·¥æ°é">{{ form.doneNum }}</el-form-item> |
| | | </el-form> |
| | | </div> |
| | |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item>--> |
| | | <el-form-item v-else label="åä½ç±»å" prop="types"> |
| | | <!-- <el-form-item label="åä½ç±»å" prop="types"> |
| | | <el-select v-model="form.types" multiple filterable clearable placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="(item, index) in unitTypes" |
| | |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | |
| | | name: '', |
| | | attributeData: 0, |
| | | //types: [], |
| | | // type: null |
| | | type: 1 |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | |
| | | } |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | const newForm = JSON.parse(JSON.stringify(this.form)) |
| | | newForm.types = newForm.types.join(',') |
| | | // newForm.types = newForm.types.join(',') |
| | | this.isWorking = true |
| | | this.api.create(newForm) |
| | | .then(() => { |
| | |
| | | } |
| | | } |
| | | } |
| | | /** |
| | | * |
| | | */ |
| | | </script> |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="80%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <GlobalWindow :title="title" width="80%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm"> |
| | | <div style="margin-bottom: 10px"> |
| | | <span class="title-add-style" style="vertical-align:middle">å
¥åºä¿¡æ¯</span> |
| | | <!-- <el-button type="primary" style="margin-left: 10px;vertical-align:middle">éæ©æ¥æºåæ®</el-button> --> |
| | |
| | | <el-input v-model="form.originCode" disabled placeholder="éæ©æ¥æºåæ®åé»è®¤å¸¦åº" v-trim/> |
| | | </el-form-item> --> |
| | | <el-form-item label="计åå
¥åºæ¥æ" prop="planDate"> |
| | | <el-date-picker |
| | | v-model="form.planDate" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | :picker-options="pickerOptions" |
| | | ></el-date-picker> |
| | | <el-date-picker v-model="form.planDate" value-format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | :picker-options="pickerOptions"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="å
¥åºç±»å" prop="type"> |
| | | <el-select v-model="form.type" :disabled="disabled" placeholder="è¯·éæ©å
¥åºç±»å"> |
| | | <el-option |
| | | v-for="(item, index) in type" |
| | | :key="index" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | <el-option v-for="(item, index) in type" :key="index" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å
¥åºä»åº" prop="warehouseId"> |
| | | <el-select v-model="form.warehouseId" filterable clearable placeholder="è¯·éæ©å
¥åºä»åº" @change="selectWare"> |
| | | <el-option |
| | | v-for="(item, index) in tempWarehouses" |
| | | :key="index" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | <el-option v-for="(item, index) in tempWarehouses" :key="index" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <div class="mark"> |
| | | <el-form-item label="åæ®æè¦" prop="abstracts"> |
| | | <el-input v-model="form.abstracts" placeholder="请è¾å
¥åæ®æè¦" v-trim/> |
| | | <el-input v-model="form.abstracts" placeholder="请è¾å
¥åæ®æè¦" v-trim /> |
| | | </el-form-item> |
| | | </div> |
| | | </el-form> |
| | |
| | | <li><el-button type="primary" @click="addMaterial">éæ©ç©æ</el-button></li> |
| | | </ul> |
| | | |
| | | <el-table |
| | | :data="form.woutboundInBodyBeanList" |
| | | border |
| | | stripe |
| | | > |
| | | <el-table :data="form.woutboundInBodyBeanList" border stripe> |
| | | <el-table-column align="center" label="åºå·" type="index" /> |
| | | <el-table-column prop="code" label="ç©æç¼ç " show-overflow-tooltip min-width="160px"> |
| | | <template slot-scope="{row}"> |
| | |
| | | <el-table-column v-if="whLocation.length" label="è´§ä½" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-select v-model="row.locationId" filterable placeholder="è¯·éæ©" @select="selectLocation"> |
| | | <el-option |
| | | v-for="(item, index) in whLocation" |
| | | :key="index" |
| | | :label="item.unionName" |
| | | :value="item.id"> |
| | | <el-option v-for="(item, index) in whLocation" :key="index" :label="item.unionName" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="è´¨é屿§" min-width="100px"> |
| | | <template slot-scope="scope"> |
| | | <el-select v-model="scope.row.qualityType" :disabled='canSelect(scope.$index)' filterable clearable placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="(item, index) in properties" |
| | | :key="index" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | <el-select v-model="scope.row.qualityType" :disabled='canSelect(scope.$index)' filterable clearable |
| | | placeholder="è¯·éæ©"> |
| | | <el-option v-for="(item, index) in properties" :key="index" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="winType==2" label="å·¥åº" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-select v-model="row.procedureId" filterable placeholder="è¯·éæ©" @select="selectProcedure"> |
| | | <el-option |
| | | v-for="(item, index) in row.procedureList" |
| | | :key="index" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="winType == 2" label="å·¥åº" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-select v-model="row.procedureId" :disabled="!row.procedureList" filterable placeholder="è¯·éæ©"> |
| | | <el-option v-for="(item, index) in row.procedureList" :key="index" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æ¹æ¬¡å·" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.batch" placeholder="请è¾å
¥æ¹æ¬¡å·" v-trim/> |
| | | <el-input v-model="row.batch" placeholder="请è¾å
¥æ¹æ¬¡å·" v-trim /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="umodelName" label="åä½" min-width="60px"></el-table-column> |
| | | <el-table-column label="å
¥åºæ°é" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.num" type="number" placeholder="å
¥åºæ°é" v-trim/> |
| | | <el-input v-model="row.num" type="number" placeholder="å
¥åºæ°é" v-trim /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½" |
| | | min-width="60px" |
| | | align="center" |
| | | fixed="right" |
| | | > |
| | | <el-table-column label="æä½" min-width="60px" align="center" fixed="right"> |
| | | <template slot-scope="{row}"> |
| | | <span class="delete-button-style" @click="deleteMaterail(row)">å é¤</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <SelectMaterail |
| | | ref="selectMaterail" |
| | | @selectData="selectData" |
| | | ></SelectMaterail> |
| | | <SelectMaterail ref="selectMaterail" @selectData="selectData"></SelectMaterail> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | |
| | | GlobalWindow, |
| | | SelectMaterail: () => import('@/components/ext/SelectMaterail') |
| | | }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | |
| | | origin: 0, |
| | | woutboundInBodyBeanList: [] |
| | | }, |
| | | winType:0, |
| | | winType: 0, |
| | | disabled: false, |
| | | pickerOptions: {}, |
| | | tempWarehouses: [], |
| | |
| | | activeName: 'first', |
| | | whLocation: [], |
| | | type: [ |
| | | {name:'éè´å
¥åº', id: 25} |
| | | { name: 'éè´å
¥åº', id: 25 } |
| | | ], |
| | | tempMaterials: [ |
| | | ], |
| | | selectedMaterails: [], |
| | | properties: [ |
| | | // 0 1ä¸è¯ 2æ¥åº |
| | | {name:'åæ ¼', id: 0}, |
| | | {name:'ä¸è¯', id: 1}, |
| | | {name:'æ¥åº', id: 2}, |
| | | { name: 'åæ ¼', id: 0 }, |
| | | { name: 'ä¸è¯', id: 1 }, |
| | | { name: 'æ¥åº', id: 2 }, |
| | | ] |
| | | } |
| | | }, |
| | | inject: ['warehouses'], |
| | | created () { |
| | | created() { |
| | | this.config({ |
| | | api: '/ext/wOutboundExt', |
| | | 'field.id': 'id' |
| | | }) |
| | | this.pickerOptions.disabledDate = (time) => { |
| | | // ä¸å¤© |
| | | let tempTime = 3600 * 1000 * 24 |
| | | return time.getTime() < new Date()-tempTime |
| | | // ä¸å¤© |
| | | let tempTime = 3600 * 1000 * 24 |
| | | return time.getTime() < new Date() - tempTime |
| | | } |
| | | // queryListByCode('?dicCode=SYSTEM_APPLIANCE_TYPE') |
| | | // .then(res => { |
| | |
| | | } |
| | | this.__confirmEdit() |
| | | }, |
| | | open (title, type = 0) { |
| | | open(title, type = 0) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.winType=type |
| | | this.winType = type |
| | | // æ°å»º |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | |
| | | if (title === 'å
¶å®å
¥åº') { |
| | | this.form.planDate = new Date() |
| | | this.form.type = null |
| | | // this.form.woutboundInBodyBeanList = [] |
| | | this.disabled = false |
| | | this.type = [ |
| | | { name:'客鿣éªå
¥åº', id: 26 }, |
| | | { name:'å®¢è¿æ£éªå
¥åº', id: 27 }, |
| | | { name:'åºåè°æ´', id: 28 } |
| | | { name: '客鿣éªå
¥åº', id: 26 }, |
| | | { name: 'å®¢è¿æ£éªå
¥åº', id: 27 }, |
| | | { name: 'åºåè°æ´', id: 28 } |
| | | ] |
| | | } else { |
| | | this.disabled = true |
| | | this.type = [ |
| | | { name:'éè´å
¥åº', id: 25 } |
| | | { name: 'éè´å
¥åº', id: 25 } |
| | | ] |
| | | } |
| | | |
| | |
| | | this.tempWarehouses = this.warehouses() |
| | | } |
| | | }) |
| | | |
| | | |
| | | }, |
| | | selectWare (v) { |
| | | selectWare(v) { |
| | | // console.log(v) |
| | | getListByWarehouseId(v) |
| | | .then(res => { |
| | | console.log(res) |
| | | this.whLocation = res |
| | | if (this.whLocation.length === 0 ) { |
| | | if (this.whLocation.length === 0) { |
| | | let temQualityType = 0 |
| | | for (const item of this.tempWarehouses) { |
| | | if (item.id === v) { |
| | |
| | | .catch(err => { |
| | | console.log(err) |
| | | }) |
| | | |
| | | |
| | | }, |
| | | setQuality (type) { |
| | | setQuality(type) { |
| | | for (const item of this.form.woutboundInBodyBeanList) { |
| | | item.qualityType = type |
| | | } |
| | |
| | | } |
| | | return !cans |
| | | }, |
| | | selectLocation (v) { |
| | | selectLocation(v) { |
| | | // console.log(index, row); |
| | | // for (const item of this.whLocation) { |
| | | // if (item.id === v) { |
| | |
| | | // } |
| | | // } |
| | | }, |
| | | addMaterial () { |
| | | addMaterial() { |
| | | // console.log('å¢å ç©æ') |
| | | // const ids = this.form.woutboundInBodyBeanList.map(e => { return e.materialId }).join(',') |
| | | this.$refs.selectMaterail.open('éæ©ç©æ', { ids: '', multiple: true, isPurchase:false,queryType:1 }) |
| | | this.$refs.selectMaterail.open('éæ©ç©æ', { ids: '', multiple: true, isPurchase: false, queryType: 1 }) |
| | | }, |
| | | deleteMaterail (row) { |
| | | deleteMaterail(row) { |
| | | // console.log('å é¤ç©æ') |
| | | this.form.woutboundInBodyBeanList.splice(this.form.woutboundInBodyBeanList.indexOf(row), 1) |
| | | }, |
| | | selectData (data) { |
| | | selectData(data) { |
| | | // éæ©ç©æåè° |
| | | console.log(data) |
| | | for (const item of data.selectedMaterails) { |
| | |
| | | code: item.mmodelCode, |
| | | name: item.mmodelUnionName, |
| | | umodelName: item.umodelName, |
| | | procedureList:item.procedureList, |
| | | procedureId:null, |
| | | procedureList: item.procedureList, |
| | | procedureId: item.procedureList ? item.procedureList[0].id : null, |
| | | locationId: this.whLocation.length ? this.whLocation[0].id : null, |
| | | qualityType: this.whLocation.length ? 0 : this.houseProperty, |
| | | materialId: item.id, |
| | |
| | | }) |
| | | } |
| | | }, |
| | | __confirmCreate () { |
| | | __confirmCreate() { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!this.form.woutboundInBodyBeanList.length) { |
| | | this.$tip.error('è³å°éæ©ä¸æ¡ç©æ') |
| | | return |
| | | } |
| | | for (const item of this.form.woutboundInBodyBeanList) { |
| | | if (item.num<=0) { |
| | | if (item.num <= 0) { |
| | | this.$tip.error('å
¥åºç©ææ°éå¿
须大äº0ï¼') |
| | | return |
| | | } |
| | |
| | | .toolbar { |
| | | border-bottom: 1px solid #eee; |
| | | padding-bottom: 10px; |
| | | |
| | | li { |
| | | display: inline-block; |
| | | margin-right: 6px; |
| | | } |
| | | } |
| | | |
| | | .form-data { |
| | | ::v-deep .el-form-item{ |
| | | ::v-deep .el-form-item { |
| | | width: 40%; |
| | | margin-right: 1%; |
| | | } |
| | | |
| | | .mark { |
| | | .el-form-item { |
| | | width: 81%; |
| | | // margin-right: 1%; |
| | | } |
| | | } |
| | | |
| | | ::v-deep .el-form-item__content { |
| | | width: calc(100% - 134px); |
| | | } |
| | | } |
| | | |
| | | .delete-button-style { |
| | | color: red; |
| | | cursor: pointer; |
| | | } |
| | | color: red; |
| | | cursor: pointer; |
| | | } |
| | | </style> |
| | |
| | | */ |
| | | confirm () { |
| | | const selectedPermissions = this.$refs.tree.getCheckedNodes(false, true).filter(item => item.type !== 'module').map(item => item.id) |
| | | console.log(selectedPermissions); |
| | | debugger |
| | | this.isWorking = true |
| | | createRolePermission({ |
| | | roleId: this.role.id, |
| | |
| | | // ç¡®è®¤éæ©æé |
| | | confirm () { |
| | | this.isWorking = true |
| | | console.log(this.selectedIds); |
| | | debugger |
| | | // console.log(this.selectedIds); |
| | | // debugger |
| | | createRolePermission({ |
| | | roleId: this.role.id, |
| | | permissionIds: this.selectedIds |
| | |
| | | // ç¡®è®¤éæ©æé |
| | | confirm () { |
| | | this.isWorking = true |
| | | console.log(this.selectedIds); |
| | | debugger |
| | | createRolePermission({ |
| | | roleId: this.role.id, |
| | | permissionIds: this.selectedIds, |
| | |
| | | line-height: 20px; |
| | | display: flex; |
| | | align-items: center; |
| | | width: 100%; |
| | | // justify-content: center; |
| | | } |
| | | } |
| | | ::v-deep .el-table--small td { |
| | | padding: 0 !important; |
| | | } |
| | | // å¤éæ¡å |
| | | .el-table-column--selection { |
| | | .cell { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:unqualifiedrecord:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="å·¥åç¼ç " prop="code"> |
| | | <el-input v-model="searchForm.code" placeholder="请è¾å
¥å·¥åç¼ç " @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸è¯é¡¹" prop="categoryId"> |
| | | <el-select v-model="searchForm.categoryId" filterable clearable placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="(item, index) in category" |
| | | :key="index" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:unqualifiedrecord:exportExcel']"> |
| | | <el-button type="primary" :loading="isWorking.export" v-permissions="['business:unqualifiedrecord:exportExcel']" @click="exportExcel">导åº</el-button> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | border |
| | | stripe |
| | | > |
| | | <el-table-column type="index" :index="customIndex" label="åºå·" align="center" fixed="left" min-width="80px"></el-table-column> |
| | | <el-table-column prop="workOrderCode" label="å·¥åç¼ç " align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="materialName" label="ç©æåç§°" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="materialCode" label="ç©æç¼ç " align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="proceduresName" label="å·¥åº" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="categoryName" label="ä¸è¯é¡¹" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="unqualifiedNum" label="æ°é" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="createTime" label="å建æ¶é´" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="createUserName" label="å建人" align="center" min-width="100px"></el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import { checkAllList } from '@/api/ext/categoryUnionExt' |
| | | export default { |
| | | name: 'UnqualifiedRecord', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | code: '', |
| | | categoryId: '' |
| | | }, |
| | | category: [] |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'å·¥åç±»-æ¥å·¥ä¸è¯è®°å½ç±»å表', |
| | | api: '/business/unqualifiedRecord', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | checkAllList({ cateType: 3 }) |
| | | .then(res => { |
| | | this.category = res |
| | | }) |
| | | .catch(err => { |
| | | console.log(err) |
| | | }) |
| | | }, |
| | | methods: { |
| | | customIndex(index) { |
| | | return (this.tableData.pagination.pageIndex-1) * this.tableData.pagination.pageSize + index + 1 |
| | | } |
| | | }, |
| | | } |
| | | |
| | | </script> |
| | |
| | | <el-option |
| | | v-for="item in appTypes" |
| | | :key="item.id" |
| | | :label="item.combinationName" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | |
| | | 'field.main': 'name' |
| | | }) |
| | | this.search() |
| | | checkAllList({ bmodelCateType: 2 }) |
| | | checkAllList({ cateType: 2 }) |
| | | .then(res => { |
| | | this.appTypes = res |
| | | }) |
| | |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar"> |
| | | <li><el-button type="primary" @click="$refs.operaDeviceExtWindow.open('æ°å»ºè®¾å¤')" v-permissions="['ext:deviceext:create']">æ°å¢</el-button></li> |
| | | <li v-permissions="['ext:deviceExt:importExcel']"> |
| | | <ImportButton |
| | | text="导å
¥" |
| | | template-name="device_import_template.xlsx" |
| | | template-path="/template/device_import_template.xlsx" |
| | | action="/ext/deviceExt/importBatch" |
| | | @success="search" |
| | | /> |
| | | </li> |
| | | <li> |
| | | <el-button |
| | | type="primary" |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="wpmodel.unionName" label="å¾
ç产货ä½" show-overflow-tooltip min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span class="long-title-style">{{ row.wpmodel.unionName }}</span> |
| | | <span class="long-title-style">{{ row.wpmodel ? row.wpmodel.unionName : '-' }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="wfmodel.unionName" label="å·²å®å·¥è´§ä½" show-overflow-tooltip min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span class="long-title-style">{{ row.wfmodel.unionName }}</span> |
| | | <span class="long-title-style">{{ row.wfmodel ? row.wfmodel.unionName : '-' }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="stationCode" label="å·¥ä½ç¼å·" min-width="100px"></el-table-column> |
| | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import ImportButton from '@/components/common/ImportButton' |
| | | // import SearchFormCollapse from '@/components/common/SearchFormCollapse' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaDeviceExtWindow from '@/components/ext/OperaDeviceExtWindow' |
| | |
| | | export default { |
| | | name: 'DeviceExt', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaDeviceExtWindow, QrCodeLabel }, |
| | | components: { TableLayout, Pagination, OperaDeviceExtWindow, ImportButton, QrCodeLabel }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | |
| | | } |
| | | } |
| | | } |
| | | /** |
| | | * |
| | | */ |
| | | </script> |
| | |
| | | return '-' |
| | | }, |
| | | customIndex(index) { |
| | | console.log(); |
| | | return (this.tableData.pagination.pageIndex-1) * this.tableData.pagination.pageSize + index + 1 |
| | | } |
| | | } |
| | |
| | | <el-table-column prop="batch" label="çäº§æ¹æ¬¡å·" min-width="100px"></el-table-column> |
| | | <el-table-column prop="promodel.name" label="å·¥åº" min-width="100px"></el-table-column> |
| | | <el-table-column prop="omodel.planNum" label="è®¡åæ°é" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <!-- <template slot-scope="{row}"> |
| | | <span>{{ row.omodel.planNum + row.umodel.name }}</span> |
| | | </template> |
| | | </template> --> |
| | | </el-table-column> |
| | | <el-table-column prop="procedureName" label="ç产åå·¥" show-overflow-tooltip min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | |
| | | created () { |
| | | this.config({ |
| | | module: 'ææè®°å½', |
| | | api: '/ext/workorderRecordExt', |
| | | api: '/ext/workorderRecordPutExt', |
| | | 'field.id': 'id', |
| | | 'field.main': 'name', |
| | | sorts: [{ direction: 'DESC', property: 'CREATE_TIME' }] |