| | |
| | | # 接口前缀 _api_api_test |
| | | VUE_APP_API_PREFIX = '/doumeeplant' |
| | | VUE_APP_API_PREFIX = '/api' |
| | | |
| | | # 上下文路径 --> 默认./(可以部署在服务器任意路径) |
| | | VUE_APP_CONTEXT = './' |
| | |
| | | |
| | | # VUE_APP_API = 'http://192.168.0.13:10012/' |
| | | |
| | | VUE_APP_API = 'http://192.168.0.15:10021/' |
| | | # VUE_APP_API = 'http://192.168.0.15:10021/' |
| | | |
| | | # 刘磊磊 |
| | | # VUE_APP_API = 'http://192.168.0.18:10012/' |
| | |
| | | # 测试 |
| | | # VUE_APP_API = 'https://dmtest.ahapp.net/doumeeplant_api_test/' |
| | | |
| | | VUE_APP_API = 'https://127.0.0.1/doumeeplant/' |
| | | #VUE_APP_API = 'https://127.0.0.1/doumeeplant/' |
| | | |
| | | # 演示 |
| | | #VUE_APP_API = 'https://www.mes.red/doumeeplant/' |
| | | VUE_APP_API = 'https://www.mes.red/api/' |
| | |
| | | var url = window.location.href |
| | | 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` |
| | | let tempUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_url=https://lingyang.mes.show:1801/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_uri=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_uri=https://dmtest.ahapp.net/doumeeplant_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_uri=https://lingyang.mes.show:1801/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_uri=https://www.mes.red/lingyangh5/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}` |
| | | let href1 = `https://lingyang.mes.show:1801/h5/#/wxLogin?code=${code}` |
| | | let href1 = `https://www.mes.red/lingyangh5/#/wxLogin?code=${code}` |
| | | window.location.replace(href1) |
| | | } |
| | | </script> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="box_out" v-if="store.state.env && (store.state.env == 'WX' || store.state.env == 'XCX')" @click="loginOut"><span>退出登录</span></div> |
| | | <div class="box_out" @click="loginOut"><span>退出登录</span></div> |
| | | </div> |
| | | <van-popup v-model:show="show" position="bottom" round :style="{ height: '50%' }"> |
| | | <van-picker |
| | |
| | | }).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' |
| | | // let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_url=https://www.mes.red/lingyangh5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect' |
| | | // let href = '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' |
| | | let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_url=https://lingyang.mes.show:1801/h5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect' |
| | | let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_uri=https://www.mes.red/h5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect' |
| | | // let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_uri=https://dmtest.ahapp.net/doumeeplant_h5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect' |
| | | // let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_uri=https://lingyang.mes.show:1801/h5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect' |
| | | // let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_uri=https://www.mes.red/lingyangh5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect' |
| | | window.open(href) |
| | | // window.location.replace(href) |
| | | } |
| | | }) |
| | | } |
| | |
| | | list.value.push(...res.data.records) |
| | | } else { |
| | | finished.value = true |
| | | loading.value = false |
| | | } |
| | | }).catch(err => { |
| | | refreshing.value = false |
| | |
| | | // baseUrl: 'http://106.14.20.42/test_hfznzz/',
|
| | | // baseUrl: 'https://hefei.dtkey.cn/test_hfznzz/',
|
| | | // baseUrl: '/doumeeplant_api',
|
| | | baseUrl: 'https://dmtest.ahapp.net/doumeeplant_api', |
| | | baseUrl: 'https://dmtest.ahapp.net/doumeeplant_api',
|
| | | // baseUrl: 'http://192.168.0.15:10021', |
| | | phoneRegular: /^1[3456789]\d{9}$/,
|
| | | mailboxRegular: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
|
| | | positiveInteger: /^[0-9]*[1-9][0-9]*$/,
|
| | |
| | | </view> |
| | | <view v-if="isOut" class="c2 mt25"> |
| | | <text class="c6">入库接收人:</text> |
| | | {{ info.originCode || '-' }} |
| | | {{ info.inUserName || '-' }} |
| | | </view> |
| | | <view class="c2 mt25"> |
| | | <text class="c6">申请时间:</text> |
| | |
| | | } |
| | | .tag_item { |
| | | min-width: 120rpx; |
| | | padding: 14rpx 24rpx; |
| | | padding: 14rpx; |
| | | border-radius: 26rpx; |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | |
| | |
|
| | | .bottom {
|
| | | height: 98rpx;
|
| | |
|
| | | // bottom: calc(env(safe-area-inset-bottom) + 20rpx);
|
| | | .submit {
|
| | | width: 272rpx;
|
| | | height: 98rpx;
|
| | |
| | | activeColor="#222" |
| | | inactiveColor="#666" |
| | | :safeAreaInsetBottom="true"> |
| | | <u-tabbar-item text="待办"> |
| | | <view class="" slot="active-icon"> |
| | | <u-tabbar-item text="待办" :badge="upcomingNum.d"> |
| | | <view class="" slot="active-icon"> |
| | | <image src="@/static/nav_daiban_sel@2x.png" class="icon-style" mode=""></image> |
| | | </view> |
| | | <view class="" slot="inactive-icon"> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapState } from 'vuex' |
| | | |
| | | export default { |
| | | name:"myTabbar", |
| | | props: { |
| | |
| | | value: 0 |
| | | }; |
| | | }, |
| | | computed: { |
| | | ...mapState(['upcomingNum']) |
| | | }, |
| | | methods: { |
| | | click(index) { |
| | | // console.log('click', index); |
| | |
| | | color: #666666; |
| | | line-height: 26rpx; |
| | | } |
| | | .order-info { |
| | | border-bottom: 20rpx #f7f7f7 solid; |
| | | }
|
| | | // .order-info { |
| | | // border-bottom: 20rpx #f7f7f7 solid; |
| | | // }
|
| | | </style> |
| | |
| | | uni.showToast({ title: '原密码不能为空', icon: 'none', duration: 2000 }); |
| | | } else if (!this.form.newPassword) { |
| | | uni.showToast({ title: '新密码不能为空', icon: 'none', duration: 2000 }); |
| | | } else if (!/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{6,}$/.test(this.form.newPassword)) { |
| | | } else if (!/^([a-z0-9\.\@\!\#\(/)/$\%\^\&\*\(\)]){6,20}$/i.test(this.form.newPassword)) { |
| | | uni.showToast({ title: '密码格式不正确', icon: 'none', duration: 2000 }); |
| | | } else if (!this.form.confirmPassword) { |
| | | uni.showToast({ title: '确认密码不能为空', icon: 'none', duration: 2000 }); |
| | |
| | | :style="{background: '#fff', zIndex: '999', paddingTop: `${statusbarHeight}px`, height: `${navHeight}px`, lineHeight:`${navHeight}px`, textAlign: 'center'}">
|
| | | 待办</view>
|
| | | <div class="content_search"> |
| | | <v-Search @searchInput="searchInput" @submit="search" @reset="reset" :isShow="true" |
| | | <v-Search @searchInput="searchInput" @submit="confirm" @reset="resetType" :isShow="true" |
| | | placeholder="搜索关键字"> |
| | | <template v-slot:content> |
| | | <view class="rp contanir"> |
| | | <view class="c2 b">类型</view> |
| | | <view class="content"> |
| | | <u-grid col="2" :border="false"> |
| | | <u-grid-item v-for="item in types" :key="item.id"> |
| | | <view class="ptb20 f26 c9 type-style tc rd10" :class="type===item.id?'sbtn_green':'sbtn_gray'" |
| | | @click="type=item.id">{{ item.name }}</view> |
| | | </u-grid-item> |
| | | </u-grid> |
| | | </view> |
| | | <!-- <view class="flex ap tc bottom-view"> |
| | | <view class="fx1 ptb20 sbtn_gray c9" @click="resetType">重置</view> |
| | | <view class="fx1 ml20 ptb20 sbtn_green" @click="confirm">确定</view> |
| | | </view> --> |
| | | </view> |
| | | </template> |
| | | </v-Search> |
| | | <div class="content_search_x"></div> |
| | | <LabelSelection :TagList="tagList" :isShow="true" @change="clickTag"></LabelSelection> |
| | |
| | | .in(this) |
| | | .select('.content_search') |
| | | .boundingClientRect((rect) => { |
| | | console.log('-----',rect); |
| | | that.height = `calc(100vh - ${rect.height + 80}px)` |
| | | that.top = `${rect.height}px` |
| | | }) |
| | |
| | | success: res => {
|
| | | this.windowHeight = res.windowHeight
|
| | | }
|
| | | }) |
| | | uni.$on('success', () => { |
| | | this.search(); |
| | | })
|
| | | this.loadData()
|
| | | },
|
| | |
| | | searchInput(val) { |
| | | this.searchForm.mixParam = val; |
| | | this.search(); |
| | | this.getPageCount() |
| | | }, |
| | | getPageCount() { |
| | | pageCount({mixParam: this.searchForm.mixParam}) |
| | |
| | | refresh() {
|
| | | if (this.triggered) return |
| | | this.triggered = true; |
| | | this.page.page = 1 |
| | | this.loadData()
|
| | | this.search() |
| | | // this.page.page = 1 |
| | | // this.loadData() |
| | | // this.getPageCount()
|
| | | },
|
| | | loadMore() {
|
| | | this.page.page += 1
|
| | |
| | | this.search()
|
| | | },
|
| | | jump(item) { |
| | | console.log(item.type); |
| | | switch(item.type) { |
| | | case 0: case 2: case 5: { |
| | | if (item.status === 0) { |
| | |
| | | url: `/pages_inspect/pages/OutOperation/OutOperation?id=${item.objId}&dbid=${item.id}&type=7` |
| | | }) |
| | | } else { |
| | | debugger |
| | | uni.navigateTo({ |
| | | url: `/pages_adjust/pages/warehousingDetails/warehousingDetails?id=${item.objId}&status=${item.status}&type=${item.type}&dbid=${item.id}` |
| | | }) |
| | |
| | | resetType() {
|
| | | this.type = ''
|
| | | this.searchForm.type = ''
|
| | | this.confirm()
|
| | | this.confirm() |
| | | |
| | | },
|
| | | confirm() {
|
| | | this.searchForm.type = this.type
|
| | |
| | | search() { |
| | | this.page.page = 1 |
| | | this.loadData() |
| | | this.getPageCount() |
| | | }
|
| | | }
|
| | | }
|
| | |
| | | // 点击当前项 |
| | | clickItem(i) { |
| | | this.list.forEach((item, index) => { |
| | | item.isActive = i === index |
| | | if (i === index) { |
| | | item.isActive = !item.isActive |
| | | } else { |
| | | item.isActive = false |
| | | } |
| | | }) |
| | | }, |
| | | // 搜索 |
| | |
| | | capacity: this.listData.capacity, |
| | | model: { |
| | | mixParam: this.listData.mixParam, |
| | | startDate: this.listData.startDate, |
| | | endDate: this.listData.endDate, |
| | | planDateStartDate: this.listData.startDate, |
| | | planDateEndDate: this.listData.endDate, |
| | | procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [], |
| | | factoryId: this.listData.departIds, |
| | | statusList: this.listData.cateIds |
| | |
| | | scroll-y="true" |
| | | @scrolltolower="loadMore"> |
| | | <view v-for="(item1, index) in list" :key="index" class="flex mb20" @click="jump(index)"> |
| | | <view class="img36 mr20 pt10"> |
| | | <view class="img36 mr20 pt10" style="position: relative;"> |
| | | <u-checkbox-group style="display: block;" name="" @change="jump(index)"> |
| | | <u-checkbox :checked="item1.isActive"></u-checkbox> |
| | | </u-checkbox-group> |
| | |
| | | <template>
|
| | | <view>
|
| | | <workOrderInfo :orederMessage="info" />
|
| | | <!-- <view class="bg_cate">
|
| | | <view @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'"
|
| | | v-for="(item, index) in cate" :key="index">{{ item.name }}</view>
|
| | | </view> -->
|
| | | <div class="bg_list">
|
| | | <div class="bg_list_item">
|
| | | <div class="bg_list_item_top">
|
| | |
| | | </div> |
| | | </template> |
| | | </div> |
| | | <div class="bg_list_item"> |
| | | <div class="bg_list_item_top"> |
| | | <div class="bg_list_item_top_left"> |
| | | <div class="bg_list_item_top_left_x bg_m"></div> |
| | | <span>工资绩效</span> |
| | | </div> |
| | | </div> |
| | | <div class="bg_list_item_h"> |
| | | <div class="bg_list_item_num"> |
| | | <div class="bg_list_item_num_item"> |
| | | <span>计件方式</span> |
| | | <div class="bg_list_item_num_item_list"> |
| | | {{ performance.salaryType == 0 ? '计件' : '计时' }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="bg_list_item_num"> |
| | | <div class="bg_list_item_num_item"> |
| | | <span>工资单价</span> |
| | | <div class="bg_list_item_num_item_sr"> |
| | | <span class="color1">{{ (performance.salaryPrice / 10 / 10).toFixed(2) }}元/{{ performance.salaryType == |
| | | 0 ? '件' : '时' }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="bg_list_item_num"> |
| | | <div class="bg_list_item_num_item"> |
| | | <span>预计工资</span> |
| | | <div class="bg_list_item_num_item_sr"> |
| | | <span class="color1">{{ (performance.salary / 10 / 10).toFixed(2) }}元</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="bg_list_item_num"> |
| | | <div class="bg_list_item_num_item"> |
| | | <span>达标率</span> |
| | | <div class="bg_list_item_num_item_sr"> |
| | | <span class="color1">{{ complianceRate }}%</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div>
|
| | |
|
| | | </view>
|
| | |
| | | data() {
|
| | | return {
|
| | | workorderId: '',
|
| | | cate: [{
|
| | | name: '生产'
|
| | | },
|
| | | {
|
| | | name: '点检'
|
| | | }
|
| | | ],
|
| | | form: {
|
| | | time: '',
|
| | | efective: [],
|
| | |
| | | qualified: '', // 合格
|
| | | undesirableId: '',
|
| | | undesirable: 5 // 不良
|
| | | }, |
| | | pages: { |
| | | capacity: 10, |
| | | page: 1, |
| | | total: 0 |
| | | },
|
| | | djData: [],
|
| | | cateList: [],
|
| | | finished: true,
|
| | | finished: true, |
| | | performance: {}
|
| | | };
|
| | | },
|
| | | onLoad(obj) {
|
| | | this.workorderId = obj.id
|
| | | this.queryByIds()
|
| | | this.getOrocessRecords()
|
| | | this.getData()
|
| | | this.getData() |
| | | this.pageDJs()
|
| | | this.getOrocessRecordCC()
|
| | | uni.$on('spotAdd', () => {
|
| | | if (this.typeView == 1) {
|
| | |
| | | })
|
| | | },
|
| | | computed: {
|
| | | expectedSalary() {
|
| | | if (this.arrType.length === 0) return 0;
|
| | | // 按件计算
|
| | | if (this.arrType[this.form.index].type == 0) {
|
| | | if (!this.produceFrom.qualified) return 0
|
| | | if (this.arrType[this.form.index].unqualified == 1) { // 是否计入不良品
|
| | | let total = Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)
|
| | | return (total * (this.arrType[this.form.index].salary / 100)).toFixed(2) || 0
|
| | | } else {
|
| | | return (Number(this.produceFrom.qualified) * (this.arrType[this.form.index].salary / 100)).toFixed(
|
| | | 2) || 0
|
| | | }
|
| | | } else {
|
| | | if (!this.form.duration) return 0;
|
| | | let h = (this.form.duration / 60 / 60).toFixed(2)
|
| | | return (Number(h) * (this.arrType[this.form.index].salary / 10 / 10)).toFixed(2) || 0
|
| | | }
|
| | | },
|
| | | complianceRate() {
|
| | | if (this.arrType.length === 0) return 0;
|
| | | if (!this.produceFrom.qualified && !this.produceFrom.undesirable) return 0;
|
| | | if (!this.form.duration) return 0;
|
| | | if (!this.arrType[this.form.index].num) return 0;
|
| | | // 按件计算
|
| | | // if (infoBox.value.type == 0) {
|
| | | if (this.arrType[this.form.index].unqualified == 1) { // 是否计入不良品
|
| | | let a = ((Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)) / (this.form
|
| | | if (!this.performance) return 0; |
| | | if (!this.performance.duration) return 0; |
| | | |
| | | if (!this.performance.qualifiedNum && !this.performance.unqualifiedNum) return 0;
|
| | | if (this.performance.salaryUnqualified == 1) { // 是否计入不良品
|
| | | let a = ((Number(this.performance.qualifiedNum) + Number(this.performance.unqualifiedNum)) / (this.performance
|
| | | .duration / 3600)).toFixed(2)
|
| | | let b = (this.arrType[this.form.index].num / (this.arrType[form.index].times / 3600)).toFixed(2)
|
| | | let b = (this.performance.salaryNum / (this.performance.salaryTimes / 3600)).toFixed(2)
|
| | | return ((Number(a) / Number(b)) * 100).toFixed(2)
|
| | | // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / )
|
| | | // return total * infoBox.value.salary;
|
| | | } else {
|
| | | let a = (this.produceFrom.qualified / (this.form.duration / 3600)).toFixed(2)
|
| | | let b = (this.arrType[this.form.index].num / (this.arrType[this.form.index].times / 3600)).toFixed(2)
|
| | | } else { |
| | | let a = (this.performance.qualifiedNum / (this.performance.duration / 3600)).toFixed(2)
|
| | | // let b = (this.arrType[this.form.index].num / (this.arrType[this.form.index].times / 3600)).toFixed(2) |
| | | let b = (this.performance.salaryNum / (this.performance.salaryTimes / 3600)).toFixed(2)
|
| | | return ((Number(a) / Number(b)) * 100).toFixed(2)
|
| | | // return Number(from.qualified) * infoBox.value.salary;
|
| | | }
|
| | | }
|
| | | },
|
| | |
| | | this.pageDJs()
|
| | | }
|
| | | },
|
| | | getLists() {
|
| | | getLists() { |
| | | if (!this.finished) {
|
| | | return
|
| | | }
|
| | |
| | | url: `/pages_inspect/pages/InspectionRecords/InspectionRecords?id=${this.workorderId}` |
| | | }) |
| | | },
|
| | | pageDJs() {
|
| | | pageDJs() { |
| | | pageDJ({
|
| | | capacity: this.pages.capacity,
|
| | | page: this.pages.page,
|
| | |
| | | },
|
| | | queryByIds() {
|
| | | queryById(this.workorderId)
|
| | | .then(res => {
|
| | | .then(res => { |
| | | this.info = res.data
|
| | | queryList({
|
| | | deleted: 0,
|
| | |
| | | getOrocessRecordCC() {
|
| | | getWorkorderRecordListStandard({
|
| | | workorderId: this.workorderId
|
| | | }).then(res => {
|
| | | }).then(res => { |
| | | console.log(res.data[0]); |
| | | debugger
|
| | | if (res.data.length > 0) { |
| | | this.produceFrom.qualified = res.data[0].qualifiedNum |
| | | this.produceFrom.undesirable = res.data[0].unqualifiedNum |
| | | this.performance = res.data[0] |
| | | }
|
| | | })
|
| | | },
|
| | |
| | | width: 100%;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | margin-top: 30rpx;
|
| | | // margin-top: 30rpx;
|
| | |
|
| | | .bg_list_item {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | // margin-bottom: 40rpx;
|
| | | border-bottom: 40rpx #f7f7f7 solid;
|
| | | // border-bottom: 40rpx #f7f7f7 solid;
|
| | |
|
| | | .kong {
|
| | | text-align: center;
|
| | |
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | padding-left: 30rpx;
|
| | | padding-right: 30rpx;
|
| | | margin-bottom: 30rpx;
|
| | | padding: 30rpx; |
| | | background-color: #f7f7f7;
|
| | |
|
| | | .bg_list_item_top_left {
|
| | | display: flex;
|
| | |
| | | .bottom-view { |
| | | left: 40rpx; |
| | | right: 40rpx; |
| | | bottom: 0 |
| | | bottom: 20rpx |
| | | } |
| | | } |
| | | </style> |
| | |
| | | // 跳转出库入库 |
| | | submit() { |
| | | if (this.data.status === 0) { // 出库 |
| | | console.log('出库') |
| | | // router.push({ name: 'issueOperation', query: { id: route.query.id, type: 7 } }) |
| | | uni.navigateTo({ |
| | | url: `/pages/OutOperation/OutOperation?id=${this.id}&type=7` |
| | | url: `/pages_inspect/pages/OutOperation/OutOperation?id=${this.id}&type=7` |
| | | }); |
| | | } else if (this.data.status === 1) { // 入库 |
| | | if (this.data.type === 3) { // 备料确认 |
| | |
| | | // router.push({ name: 'orderStock', query: { id: route.query.id, status: data.value.status, next: 1 } }) |
| | | return |
| | | } |
| | | console.log('入库') |
| | | uni.navigateTo({ |
| | | url: `/pages/InOperation/InOperation?id=${this.id}&type=7` |
| | | url: `/pages_inspect/pages/InOperation/InOperation?id=${this.id}&type=7` |
| | | }); |
| | | // router.push({ name: 'warehousing', query: { id: route.query.id, type: 7 } }) |
| | | } |
| | |
| | | <div class="tg_footer">
|
| | | <!-- proxy.$auth('h5:workorderoutput:confirm') && -->
|
| | | <button class="tg_footer_qr" @click="submitBG" v-if="isSubmit">确认报工</button>
|
| | | <div class="tg_footer_fh" @click="gofh" v-else-if="!isSubmit">返回修改</div>
|
| | | <div class="tg_footer_fh" @click="statistics = false" v-else-if="!isSubmit">返回修改</div>
|
| | | </div>
|
| | | </div>
|
| | | </u-popup>
|
| | |
| | | this.workorderId = obj.id
|
| | | this.queryByIds()
|
| | | this.getOrocessRecords()
|
| | | this.getData()
|
| | | this.getData() |
| | | this.pageDJs()
|
| | | uni.$on('spotAdd', () => {
|
| | | if (this.typeView == 1) {
|
| | | this.pages.page = 1
|
| | |
| | | item.id = item.type
|
| | | item.active = index == 0
|
| | | })
|
| | | this.arrType = result.data
|
| | | this.arrType = result.data |
| | | |
| | | } else {
|
| | | this.arrType = []
|
| | | }
|
| | |
| | | num: this.produceFrom.undesirable
|
| | | })
|
| | | this.isSubmit = Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable) <= this
|
| | | .info.planNum;
|
| | | }
|
| | | .info.planNum; |
| | | console.log(this.isSubmit); |
| | | debugger
|
| | | } |
| | | |
| | | } else {
|
| | | console.log('推式')
|
| | | if (this.feedingData.length === 0) {
|
| | |
| | | }
|
| | | if (this.produceFrom.qualified <= 0 && this.produceFrom.undesirable <= 0) {
|
| | | uni.$u.toast('产出明细不能为空')
|
| | |
|
| | | return
|
| | | }
|
| | | this.statisticsData = []
|
| | |
| | | width: 100%;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | margin-top: 30rpx;
|
| | | // margin-top: 30rpx;
|
| | |
|
| | | .bg_list_item {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | // margin-bottom: 40rpx;
|
| | | border-bottom: 40rpx #f7f7f7 solid;
|
| | |
|
| | | // border-bottom: 40rpx #f7f7f7 solid;
|
| | | // |
| | | .kong {
|
| | | text-align: center;
|
| | | padding: 30rpx 0;
|
| | |
| | | .bg_list_item_top {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | padding-left: 30rpx;
|
| | | padding-right: 30rpx;
|
| | | margin-bottom: 30rpx;
|
| | | justify-content: space-between; |
| | | background-color: #f7f7f7;
|
| | | padding: 30rpx;
|
| | | // padding-right: 30rpx;
|
| | |
|
| | | .bg_list_item_top_left {
|
| | | display: flex;
|
| | |
| | | }
|
| | |
|
| | | .bg_plan {
|
| | | width: 100%;
|
| | | width: 100%; |
| | | border-top: 20rpx #f7f7f7 solid;
|
| | | // height: 98px;
|
| | | padding: 30rpx;
|
| | | box-sizing: border-box;
|
| | |
| | | .bottom-view {
|
| | | left: 40rpx;
|
| | | right: 40rpx;
|
| | | bottom: 0
|
| | | bottom: 20rpx
|
| | | }
|
| | |
|
| | | .bl_list {
|
| | |
| | | <template> |
| | | <view> |
| | | <InOutInfo :info="info" /> |
| | | <InOutInfo :info="info" :isOut="false" /> |
| | | |
| | | <uni-collapse @change="change" @close="close" @open="open"> |
| | | <uni-collapse-item v-if="type==7" v-for="(item1, index) in wtransferWarehouseList" :key="index" |
| | | :open="item1.wtransferDetailList.length"> |
| | | <view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title"> |
| | | <image src="../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image> |
| | | <image src="../../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image> |
| | | <view>{{ item1.warehouseName }}</view> |
| | | </view> |
| | | <view class="p30"> |
| | |
| | | <span>待入库物料</span> |
| | | </div> |
| | | </div> |
| | | <div class="page_content" v-for="(item, index) in item1.wtransferDetailList" :key="index" |
| | | <div class="page_content" v-for="(item, index) in item1.wtransferDetailList" v-if="item.outActnum" :key="index" |
| | | :name="index"> |
| | | <div class="page_content_title"> |
| | | <div class="page_content_title_top"> |
| | |
| | | </div> |
| | | |
| | | <div class="right" v-if="isZKD" @click="openxz"> |
| | | <image src="../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>手动入库</span> |
| | | <image src="../../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>手动入库</span> |
| | | <!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""> --> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="page_yxwl_list"> |
| | | <div class="page_yxwl_list_item" v-for="(item, index) in woScanMaterialBeanList" :key="index"> |
| | | <div class="page_yxwl_list_item_top"> |
| | | <!-- <div class="page_yxwl_list_item_top_left" v-if="item.batch">{{item.materialName}} | {{item.materialCode}}|{{item.batch}}</div>--> |
| | | <div class="page_yxwl_list_item_top_left">{{item.materialName}} | {{item.materialCode}} |
| | | </div> |
| | | </div> |
| | |
| | | <div class="label">工装{{item1.scanCode}}:</div> |
| | | <div class="nr">{{item1.num}}{{item1.unitName}}</div> |
| | | <div class="dele" @click="dele(item1)"> |
| | | <image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image> |
| | | <image src="../../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="page_yxwl_list"> |
| | | <div class="page_yxwl_list_item" v-for="(item1, idx) in seleMateriaList" :key="idx"> |
| | | <div class="page_yxwl_list_item_top"> |
| | | <!-- <div class="page_yxwl_list_item_top_left" v-if="item1.batch">{{item1.materialName}} | {{item1.materialCode}}|{{item1.batch}}</div>--> |
| | | <div class="page_yxwl_list_item_top_left">{{item1.materialName}} | {{item1.materialCode}} |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <!-- @click="dele()" --> |
| | | <div class="dele" @click="dele(idx)"> |
| | | <image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image> |
| | | <image src="../../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$store.dispatch('getUpcomingNum') |
| | | uni.$emit('success') |
| | | uni.$u.toast('操作成功') |
| | | if (this.type == '4') { // 跳转完工入库详情 |
| | | // uni.navigateTo({ |
| | |
| | | return |
| | | } |
| | | uni.redirectTo({ |
| | | url: `/pages_adjust/pages/outboundDetails/outboundDetails?id=${this.id}` |
| | | url: `/pages_adjust/pages/warehousingDetails/warehousingDetails?id=${this.id}` |
| | | // pages_adjust/pages/warehousingDetails/warehousingDetails |
| | | }) |
| | | |
| | | // setTimeout(() => { |
| | | // if (route.query.Type == '4') { // 跳转完工入库详情 |
| | | // router.push({ |
| | |
| | | if (res.code === 200) { |
| | | this.$store.dispatch('getUpcomingNum') |
| | | uni.$u.toast('操作成功') |
| | | uni.$emit('success') |
| | | uni.redirectTo({ |
| | | url: `/pages_adjust/pages/warehousingDetails1/warehousingDetails1?id=${this.id}` |
| | | }) |
| | |
| | | <uni-collapse @change="change" @close="close" @open="open"> |
| | | <uni-collapse-item :open="item1.wtransferDetailList.length" v-if="type==7" v-for="(item1, index) in warehouseList" :key="index"> |
| | | <view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title"> |
| | | <image src="../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image> |
| | | <image src="../../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image> |
| | | <view>{{ item1.warehouseName }}</view> |
| | | </view> |
| | | <view class="p30"> |
| | |
| | | <span>{{item.batch ? item.batch : '-'}}</span> |
| | | </div> |
| | | </div> |
| | | <div class="page_content_list" v-for="(childer, idxs) in item.wstockExtListVOList" :key="idxs"> |
| | | <div class="page_content_list" v-for="(childer, idxs) in item.wstockExtListVOList" v-if="childer.batch == item.batch" :key="idxs"> |
| | | <div class="page_content_list_item"> |
| | | <div class="page_content_list_item_label">出库货位:</div> |
| | | <div class="page_content_list_item_nr">{{ childer.locationName }}</div> |
| | |
| | | </uni-collapse-item> |
| | | <uni-collapse-item v-if="type==8"> |
| | | <view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title"> |
| | | <image src="../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image> |
| | | <image src="../../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image> |
| | | <view>{{ info.warehouseName }}</view> |
| | | </view> |
| | | <view class="p30"> |
| | |
| | | <span>{{item.batch ? item.batch : '-'}}</span> |
| | | </div> |
| | | </div> |
| | | <div class="page_content_list" v-for="(items, ind) in item.wstockExtListVOList" :key="ind"> |
| | | <div class="page_content_list" v-for="(items, ind) in item.wstockExtListVOList" v-if="items.batch == item.batch" :key="ind"> |
| | | <div class="page_content_list_item"> |
| | | <div class="page_content_list_item_label">批次号:</div> |
| | | <div class="page_content_list_item_label">批次号1:</div> |
| | | <div class="page_content_list_item_nr">{{ items.batch ? items.batch : '-' }}</div> |
| | | </div> |
| | | <div class="page_content_list_items"> |
| | |
| | | </div> |
| | | |
| | | <div class="right" v-if="isZKD" @click="openxz"> |
| | | <image src="../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>手动出库</span> |
| | | <image src="../../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>手动出库</span> |
| | | </div> |
| | | </div> |
| | | <div class="page_yxwl_list" v-if="outboundList.length > 0"> |
| | |
| | | </div> |
| | | <div class="dele" @click="dele(index)"> |
| | | <!-- <img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" /> --> |
| | | <image src="../../static/chuku_ic_delete@2x.png" class="img24" mode=""></image> |
| | | <image src="../../../static/chuku_ic_delete@2x.png" class="img24" mode=""></image> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | hw.batch) { |
| | | let isExist = false |
| | | this.outboundList.forEach(selected => { |
| | | if (selected.newId == materail.id) { |
| | | if (selected.newId == item.id) { |
| | | isExist = true |
| | | return |
| | | } |
| | | }) |
| | | if (isExist) { |
| | | uni.$u.toast('该物料批次已存在') |
| | | uni.$u.toast('该物料已存在') |
| | | return |
| | | } |
| | | let obj = JSON.parse(JSON.stringify(materail)) |
| | |
| | | return a; |
| | | }, {}); |
| | | let tempList = this.warehouseList[0].wtransferDetailList |
| | | |
| | | for (let i = 0; i < tempList.length; i++) { |
| | | let item = tempList[i] |
| | | for (let a in result) { |
| | |
| | | if (res.code === 200) { |
| | | this.$store.dispatch('getUpcomingNum') |
| | | uni.$u.toast('操作成功') |
| | | uni.$emit('success') |
| | | uni.redirectTo({ |
| | | url: `/pages/warehousingDetails/warehousingDetails?id=${this.id}&dbid=${this.dbid}` |
| | | url: `/pages_adjust/pages/warehousingDetails/warehousingDetails?id=${this.id}&dbid=${this.dbid}` |
| | | }) |
| | | // uni.redirectTo({ |
| | | // url: `/pages_adjust/pages/outboundDetails/outboundDetails?id=${this.info.id}&dbid=${this.dbid}` |
| | | // }) |
| | | // setTimeout(() => { |
| | | // router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } }) |
| | | // }, 2000) |
| | |
| | | if (res.code === 200) { |
| | | this.$store.dispatch('getUpcomingNum') |
| | | uni.$u.toast('操作成功') |
| | | uni.$emit('success') |
| | | uni.redirectTo({ |
| | | url: `/pages_adjust/pages/outboundDetails/outboundDetails?id=${this.id}` |
| | | }) |
| | |
| | | <view class="box_list1_club_list_item" v-for="(item, index) in form.files" :key="index" |
| | | @click="seeBigFile(index)"> |
| | | <image class="close" src="@/static/ic_delete@2x.png" @click.stop="dele(index)" /> |
| | | <image class="play" src="@/static/ic_play@2x.png" v-if="item.type === 1" /> |
| | | <image class="play" src="@/static/ic_play@2x.png" v-if="item.typec === 1" /> |
| | | <view class="type"> |
| | | <video :src="item.url" v-if="item.type === 1"></video> |
| | | <video :src="item.url" v-if="item.typec === 1"></video> |
| | | <image v-else class="type_img" :src="item.url" mode="widthFix" /> |
| | | </view> |
| | | </view> |
| | |
| | | </view> |
| | | <view class="box_list2"> |
| | | <view class="box_list2_label">备注</view> |
| | | <textarea name="" id="" v-model="form.remarks" cols="20" rows="5" maxlength="300" |
| | | placeholder="请详细描述巡检情况"></textarea> |
| | | <textarea v-model="form.remarks" cols="20" rows="5" maxlength="300" placeholder="请详细描述巡检情况"></textarea> |
| | | </view> |
| | | <view class="box_footer"> |
| | | <button class="box_footer_submit" v-preventReClick @click="submit">提交</button> |
| | |
| | | mediaType: ['image', 'video'], |
| | | sourceType: ['album', 'camera'], |
| | | success: (chooseImageRes) => { |
| | | uni.showLoading({ title: '上传中' }); |
| | | const tempFilePaths = chooseImageRes.tempFiles; |
| | | console.log(tempFilePaths) |
| | | for (let i = 0; i < tempFilePaths.length; i++) { |
| | | uni.uploadFile({ |
| | | url: baseUrl + '/ext/routeCardExt/upload', |
| | |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | let res = JSON.parse(uploadFileRes.data) |
| | | let type = '' |
| | | let typec = '' |
| | | for (let s = 0; s < fileType.length; s++) { |
| | | if (tempFilePaths[i].tempFilePath.indexOf(fileType[s].name) !== -1) { |
| | | type = fileType[s].type |
| | | typec = fileType[s].type |
| | | } |
| | | } |
| | | that.form.files.push({ |
| | | fileUrl: res.data.imgaddr, |
| | | filename: res.data.imgname, |
| | | type, |
| | | typec, |
| | | url: res.data.url |
| | | }) |
| | | uni.hideLoading(); |
| | | } |
| | | }); |
| | | } |
| | |
| | | #焦松
|
| | | #VUE_APP_BASE_URL = 'http://192.168.0.36:10021/'
|
| | |
|
| | | #任康
|
| | | 本地
|
| | | #任康本地
|
| | | VUE_APP_BASE_URL = 'http://192.168.0.15:10021/'
|
| | | # VUE_APP_BASE_URL = 'https://dmtest.ahapp.net/doumeeplant_api/' |
| | |
| | | return '羚羊平台' |
| | | }else if (value == 3) { |
| | | return 'EDGP平台' |
| | | }else{ |
| | | }else if (value == 4) { |
| | | return '微信小程序' |
| | | } |
| | | else{ |
| | | return 'pc-平台'; |
| | | } |
| | | } |
| | |
| | | type="daterange" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | :default-time="['00:00:00', '23:59:59']"> |
| | | value-format="yyyy-MM-dd" |
| | | @change="dataChange" |
| | | > |
| | | </el-date-picker> |
| | | <div style="width: 5px;"></div> |
| | | <el-select v-model="searchForm.orgin" placeholder="请选择登录来源" clearable @change="getList"> |
| | |
| | | }) |
| | | }, |
| | | methods: { |
| | | dataChange(v) { |
| | | console.log(v); |
| | | this.searchForm.startDate = v[0] |
| | | this.searchForm.endDate = v[1] |
| | | this.getList() |
| | | }, |
| | | getList() { |
| | | getActivityLoginVOList(this.searchForm) |
| | | .then(res => { |
| | |
| | | yAxis: {}, |
| | | series: [ |
| | | { |
| | | name: '销量', |
| | | name: '登录次数', |
| | | type: 'line', |
| | | data: num |
| | | } |
| | |
| | | return '羚羊平台' |
| | | }else if (value == 3) { |
| | | return 'EDGP平台' |
| | | }else if (value == 4) { |
| | | return '微信小程序' |
| | | }else{ |
| | | return 'pc-平台'; |
| | | } |
| | |
| | | int dingding = 1; |
| | | int lingyang = 2; |
| | | int edgp = 3; |
| | | int wx = 4; |
| | | } |
| | | |
| | | /** |
| | |
| | | return dt1; |
| | | } |
| | | |
| | | public static Date StringToDateShort(String DATE) { |
| | | DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); |
| | | Date dt1 = null; |
| | | try { |
| | | dt1 = df.parse(DATE); |
| | | } catch (Exception exception) { |
| | | exception.printStackTrace(); |
| | | } |
| | | return dt1; |
| | | } |
| | | |
| | | /** |
| | | * 获取输入格式的日期字符串,字符串遵循Oracle格式 |
| | | * |
| | |
| | | return from; |
| | | } |
| | | |
| | | public static String afterDate(String date,int num){ |
| | | Date today = DateUtil.StringToDateShort(date); //当前时间 |
| | | Calendar calendar = Calendar.getInstance(); //得到日历 |
| | | calendar.setTime(today);//把当前时间赋给日历 |
| | | calendar.add(Calendar.DAY_OF_MONTH, num); //设置为前一天 |
| | | Date yesterday = calendar.getTime(); //得到前一天的时间 |
| | | calendar.setTime(today); |
| | | calendar.add(Calendar.DAY_OF_MONTH, 1); //设置为后一天 |
| | | Date tomorrow = calendar.getTime(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式 |
| | | return sdf.format(calendar.getTime()); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | // 校验用户名和密码 |
| | | Subject subject = SecurityUtils.getSubject(); |
| | | // 钉钉登录 |
| | | ShiroToken token = new ShiroToken(user.getId(),user.getUsername(), null,true,false); |
| | | ShiroToken token = new ShiroToken(user,1); |
| | | subject.login(token); |
| | | } |
| | | } |
| | |
| | | loginLog.setCompanyId(loginUser.getCompany()!=null?loginUser.getCompany().getId():null); |
| | | loginLog.setCompanyUserId(loginUser.getCompanyUser()!=null?loginUser.getCompanyUser().getId():null); |
| | | loginLog.setSuccess(Boolean.TRUE); |
| | | loginLog.setOrgin(Constants.USER_LOGIN_ORIGIN.pc); |
| | | systemLoginLogService.create(loginLog); |
| | | return (String)subject.getSession().getId(); |
| | | }catch (AuthenticationException e) { |
| | |
| | | import com.github.pagehelper.PageInfo; |
| | | import doumeemes.core.model.PageData; |
| | | import doumeemes.core.model.PageWrap; |
| | | import doumeemes.core.utils.DateUtil; |
| | | import doumeemes.dao.ext.dto.ActivityLoginDTO; |
| | | import doumeemes.dao.ext.dto.CompanyLoginDTO; |
| | | import doumeemes.dao.ext.vo.ActivityLoginVO; |
| | |
| | | import doumeemes.service.aware.DepartmentDataPermissionAware; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | |
| | | |
| | | @Override |
| | | public List<ActivityLoginVO> activityLoginVOList(ActivityLoginDTO activityLoginDTO) { |
| | | if(StringUtils.isNotBlank(activityLoginDTO.getEndDate())){ |
| | | activityLoginDTO.setEndDate(DateUtil.afterDate(activityLoginDTO.getEndDate(),1)); |
| | | } |
| | | return systemUserMapper.activityLoginVOList(activityLoginDTO); |
| | | } |
| | | |
| | |
| | | loginLog.setCompanyId(loginUser.getCompany()!=null?loginUser.getCompany().getId():null); |
| | | loginLog.setCompanyUserId(loginUser.getCompanyUser()!=null?loginUser.getCompanyUser().getId():null); |
| | | loginLog.setSuccess(Boolean.TRUE); |
| | | loginLog.setOrgin(Constants.USER_LOGIN_ORIGIN.wx); |
| | | systemLoginLogService.create(loginLog); |
| | | String session = (String)subject.getSession().getId(); |
| | | wxLoginVO.setLoginStatus(Constants.ZERO); |
| | |
| | | # application: |
| | | # name: doumeemes |
| | | profiles: |
| | | active: standardTest |
| | | active: standard |
| | | # JSON返回配置 |
| | | jackson: |
| | | # 默认时区 |
| | |
| | | </resultMap> |
| | | |
| | | <select id="activityLoginVOList" parameterType="doumeemes.dao.ext.dto.ActivityLoginDTO" resultMap="ActivityLoginVO"> |
| | | select a.DATA_DATE , count(1) as dayActiveUserNum from ( SELECT DATE_FORMAT( DATE_ADD(CONCAT(#{dto.startDate}), INTERVAL(help_topic_id) DAY),'%Y-%m-%d') DATA_DATE |
| | | select a.DATA_DATE , count(b.id) as dayActiveUserNum from ( SELECT DATE_FORMAT( DATE_ADD(CONCAT(#{dto.startDate}), INTERVAL(help_topic_id) DAY),'%Y-%m-%d') DATA_DATE |
| | | FROM mysql.help_topic |
| | | WHERE TIMESTAMPDIFF(DAY,CONCAT(#{dto.startDate}),CONCAT(#{dto.endDate})) > help_topic_id ) a |
| | | left join |
| | |
| | | # VUE_APP_BASE_URL = 'http://192.168.0.35:10021/' |
| | | |
| | | # 测试服务器 |
| | | # VUE_APP_BASE_URL = 'https://dmtest.ahapp.net/doumeeplant_api/' |
| | | VUE_APP_BASE_URL = 'https://dmtest.ahapp.net/doumeeplant_api/' |
| | | |
| | |
| | | this.multiFilesList = multiFilesList |
| | | this.temp = multiFilesList[index] |
| | | this.resourcePath = resourcePath |
| | | console.log(this.resourcePath); |
| | | this.index = index |
| | | }, |
| | | cancel () { |
| | |
| | | case 1: str += ' | 不良'; break |
| | | case 2: str += ' | 报废'; break |
| | | } |
| | | str += ` X ${item.num}` |
| | | str += ` X ${item.doneNum}` |
| | | return str |
| | | }, |
| | | applyStr (row) { |