| | |
| | | <page-nav title="生产报工"></page-nav> |
| | | |
| | | |
| | | <view v-show="topContent.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">请扫描任务条码</div> |
| | | </div> |
| | | <view class="flex_center" style="margin: 20rpx;"> |
| | | |
| | | <!-- #ifdef H5 --> |
| | | <u--input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" :placeholder="placeholder" |
| | | style="width:100%;background-color: #fff;border-radius: 40rpx;" border="surround" suffixIcon="scan" |
| | | suffixIconStyle="color: #909399;font-size: 22px;" v-model="inputBoxValue" |
| | | @change="confirmInputBoxValue"> |
| | | <template slot="suffix"> |
| | | <u-icon name="scan" color="#909399" size="24" @click="scanClick"></u-icon> |
| | | </template> |
| | | </u--input> |
| | | <!-- #endif --> |
| | | |
| | | <!-- #ifdef APP-PLUS --> |
| | | <u-input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" :placeholder="placeholder" |
| | | style="width:100%;background-color: #fff;border-radius: 40rpx;" border="surround" suffixIcon="scan" |
| | | suffixIconStyle="color: #909399;font-size: 22px;" v-model="inputBoxValue" |
| | | @change="confirmInputBoxValue"> |
| | | <template slot="suffix"> |
| | | <u-icon name="scan" color="#909399" size="24" @click="scanClick"></u-icon> |
| | | </template> |
| | | </u-input> |
| | | <!-- #endif --> |
| | | |
| | | <view class="flex_center marginLeft20" @click="popupShow=true"> |
| | | <u--text size='16' color='#909399' text="筛选"></u--text> |
| | | <u--image :showLoading="true" src="../../static/img/sift.png" width="20px" height="20px"></u--image> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-show="topContent.length!==0"> |
| | | <view class="mainContent" :style="{maxHeight:'1260rpx',overflow: 'scroll'}"> |
| | | |
| | | <!-- 报工信息 --> |
| | | <u-gap height="15" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style="padding-bottom: 10rpx;"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title"> |
| | | 报工信息 |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="marginTop20 marginLeft20 marginRight20 flex_between"> |
| | | <u-radio-group class="flex_column"> |
| | | |
| | | <view class="marginBottom20 " v-for="(item,index) in topContent" :key="item.wo_code"> |
| | | |
| | | <view class="flex_between"> |
| | | <view style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>工单编号:</view> |
| | | <view>产品编码:</view> |
| | | <view>产品名称:</view> |
| | | <view>产品规格:</view> |
| | | <view>当前工序:</view> |
| | | <view>任务数量:</view> |
| | | <view>未报/已报:</view> |
| | | <view>下道工序:</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{item.wo_code}}</view> |
| | | <view>{{item.partnumber}}</view> |
| | | <view>{{item.partname}}</view> |
| | | <view>{{item.partspec.toString().length===0?'/':item.partspec}}</view> |
| | | <view>{{item.stepname}}</view> |
| | | <view>{{item.planqty}}</view> |
| | | <view>{{item.noreportqty}}/{{item.reportqty}}</view> |
| | | <view>{{item.nextstepname?item.nextstepname:'/'}}</view> |
| | | </view> |
| | | </view> |
| | | <u-alert :title="alertTitle" type="info"></u-alert> |
| | | |
| | | |
| | | </view> |
| | | <!-- 折叠面板 --> |
| | | <!-- <u-collapse @change="change" @close="close" @open="open"> --> |
| | | <!-- @change="collapseChange" --> |
| | | <u-collapse style="max-height: 590px;overflow: auto;"> |
| | | <!-- :value='parseFloat(item.ordergoodqty)+"/"+parseFloat(item.orderqty)' --> |
| | | <u-collapse-item style="position: relative;" :title="item.ordercode" :name='item.ordercode' |
| | | :value='parseFloat(item.ordergoodqty)+"/"+parseFloat(item.orderqty)' |
| | | :label="item.children.length===0?'未派发':''" :disabled='item.children.length===0' |
| | | v-for="item in collapseArr" :key="item.ordercode"> |
| | | |
| | | </view> |
| | | |
| | | </u-radio-group> |
| | | </view> |
| | | <view style="position: absolute;width: 200rpx;left: 30rpx;top:34px;font-size: 24rpx;color: #999;"> |
| | | {{item.partname}} {{item.partspec}} |
| | | </view> |
| | | |
| | | <!-- 报工操作 --> |
| | | <u-gap height="15" bgColor="#eff0f1"></u-gap> |
| | | <view class="head marginLeft10 marginRight10" style="padding-bottom: 20rpx;"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title"> |
| | | 报工操作 |
| | | </view> |
| | | </view> |
| | | <!-- <view style="position: absolute;width: 26%;left: 44%;top:16px;"> --> |
| | | <view style="position: absolute;width: 120px;left: 44%;top:16px;color:#0659ff" |
| | | @click="progressClick(item.ordercode)"> |
| | | <!-- {{item.partname}}{{item.partspec}} --> |
| | | <u-line-progress :percentage="parseFloat((item.ordergoodqty*100/item.orderqty).toFixed(2))" |
| | | inactiveColor="#d1d6f5" height="10" activeColor="#0659ff"></u-line-progress> |
| | | </view> |
| | | |
| | | <!-- <view style="position: absolute;width: 100px;right: 33px; top:13px; "> |
| | | <view class="" style="display: flex;justify-content: flex-end;"> |
| | | <view style="color: #0659ff;"> |
| | | {{parseFloat(item.ordergoodqty)}} |
| | | </view> |
| | | <view> |
| | | /{{ parseFloat(item.orderqty)}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | --> |
| | | |
| | | |
| | | <view v-if="radiovalue==='生产工单'" style="margin:0 0 5px"> |
| | | <view class="flex_column"> |
| | | |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> 计件方式: |
| | | </view> |
| | | <u-radio-group v-model="reckway"> |
| | | <u-radio shape="circle" label="班组" name="班组" labelSize="16"></u-radio> |
| | | <u-radio shape="circle" label="个人" style="margin-left: 20rpx;" name="个人" labelSize="16"> |
| | | </u-radio> |
| | | </u-radio-group> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产品编码:</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partcode}}</view> |
| | | </view> |
| | | |
| | | |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;" |
| | | v-if="reckway==='班组'"> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> 生产班组: |
| | | </view> |
| | | <view @click='userGroupSheetClick' class="custominputClass"> |
| | | <view v-show='userGroupSheetValue===""' style="color: rgb(192, 196, 204);">请选择</view> |
| | | <view v-show='userGroupSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{userGroupSheetValue}} |
| | | </view> |
| | | <u-icon :name="!userGroupSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产品名称:</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partname}}</view> |
| | | </view> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产品规格:</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partspec?item.partspec:'/'}} |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <!-- v-if="reckway==='个人'" --> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> 报工人员: |
| | | </view> |
| | | <view @click='operSheetClick' class="custominputClass"> |
| | | <view v-show='operSheetValue===""' style="color: rgb(192, 196, 204);">请选择</view> |
| | | <view v-show='operSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{operSheetValue}} |
| | | </view> |
| | | |
| | | <u-icon :name="!operSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 设备名称: |
| | | </view> |
| | | <view @click='epqSheetClick' class="custominputClass"> |
| | | |
| | | <view v-show='eqpSheetValue===""' style="color: rgb(192, 196, 204);">请选择</view> |
| | | <view v-show='eqpSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{eqpSheetValue}} |
| | | </view> |
| | | |
| | | <u-icon :name="!eqpSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <view class="flex_center titleFont" style="margin: 0rpx 20rpx 10rpx;line-height: 56rpx;"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> 报工数量: |
| | | <view class='inputClass'> |
| | | <u--input placeholder="请输入" :adjustPosition='false' border="surround" type='number' |
| | | v-model="reportqty"> |
| | | </u--input> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="flex_center titleFont" style="margin: 0rpx 20rpx 10rpx;line-height: 56rpx;"> |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 不良数量: |
| | | <view class='inputClass'> |
| | | <u--input placeholder="请输入" border="surround" :adjustPosition='false' |
| | | @change='ngqtyChange' type='number' v-model="ngqty"></u--input> |
| | | </view> |
| | | </view> |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 不良原因: |
| | | </view> |
| | | <view @click='badSheetClick' class="custominputClass"> |
| | | <view v-show='badSheetValue.length===0' style="color: rgb(192, 196, 204);">请选择</view> |
| | | <view v-show='badSheetValue.length!==0' class="ellipsis" style="width: 390rpx;"> |
| | | {{badSheetValue}} |
| | | </view> |
| | | <u-icon :name="!badSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <view style="display: flex;"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> 操作人员: |
| | | </view> |
| | | <view @click='operSheetClick' class="custominputClass"> |
| | | <view v-show='operSheetValue===""' style="color: rgb(192, 196, 204);">请选择</view> |
| | | <view v-show='operSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{operSheetValue}} |
| | | </view> |
| | | |
| | | <u-icon :name="!operSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> --> |
| | | |
| | | |
| | | <!-- 可能上拉显示 要换成下拉显示 --> |
| | | <!-- <uni-section style="width: 100%;" title=''> |
| | | <uni-data-select v-model="operSheetValue" :clear='false' emptyText :localdata="operSheetList"> |
| | | </uni-data-select> |
| | | </uni-section> |
| | | --> |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 报工人员信息 --> |
| | | <!-- <u-gap height="15" v-if="reckway==='班组'" bgColor="#eff0f1"></u-gap> |
| | | <view class="head marginLeft10 marginRight10" v-if="reckway==='班组'"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title"> |
| | | 不良原因明细 |
| | | |
| | | <!-- {{item.children}} --> |
| | | <!-- <u--text class="u-collapse-content"> --> |
| | | <u-steps :current="-1" inactiveColor='#0659FF' direction="column"> |
| | | <view v-for="(it,ind) in item.children" :key="item.ordercode+it.name+ind" |
| | | @click="gotoPage(item.ordercode,it.code)" style="display: flex;align-items: center;"> |
| | | |
| | | <u-steps-item :title="it.code+'/'+it.name+it.spec"></u-steps-item> |
| | | <view class="" style="width: 100px;"> |
| | | <u-line-progress :percentage="parseFloat((it.goodqty*100/it.planqty).toFixed(2))" |
| | | inactiveColor="#d1d6f5" height="10" activeColor="#0659ff"></u-line-progress> |
| | | </view> |
| | | <view style="width: 30%;text-align: right;"> |
| | | <view class="" style="display: flex;justify-content: flex-end;"> |
| | | <view style="color: #0659ff;"> |
| | | {{parseFloat(it.goodqty)}} |
| | | </view> |
| | | <view> |
| | | /{{ parseFloat(it.planqty)}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <u-button type="primary" icon='plus-circle' plain |
| | | style="height: 100rpx;width: 98%;margin-top: 10rpx;" @click="addUser" class='addClass' |
| | | text="添加"> |
| | | </u-button> |
| | | </u-steps> |
| | | <!-- </u--text> --> |
| | | |
| | | <view class="flex_between titleFont" style="margin: 20rpx 40rpx 30rpx;"> |
| | | <view>序号</view> |
| | | <view :style="{width:'200rpx'}">人员名称</view> |
| | | <view style="width: 184rpx;">分配比例(%)</view> |
| | | <view>操作</view> |
| | | |
| | | </u-collapse-item> |
| | | |
| | | </u-collapse> |
| | | |
| | | |
| | | <!-- 弹出层 --> |
| | | <!-- closeIconPos='top-left' closeOnClickOverlay closeable='true' --> |
| | | <u-popup :show="popupShow" mode="right" @close="popupClose" @open="popupOpen"> |
| | | <view style="margin: 120px 10px 20px;" class="flex_column"> |
| | | |
| | | <!-- <view style="display: flex;"> |
| | | <view> |
| | | 单据类型: |
| | | </view> |
| | | |
| | | <u-radio-group v-model="radiovalue" placement="column" @change="groupChange" |
| | | style="margin-top: 4px;"> |
| | | <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist" |
| | | :key="index+item.name" :label="item.name" iconSize='16' labelSize='16' :name="item.name"> |
| | | |
| | | <view class="flex_column marginLeft20 marginRight20" :key="item.usercode" |
| | | v-for="(item,index) in userArr"> |
| | | <view class="flex_between marginLeft20 marginRight20 contentFont"> |
| | | <view style="width: 60rpx;text-align: center;">{{(index+1)}}</view> |
| | | <view style="width: 200rpx;text-align: center;">{{item.username}}</view> |
| | | <view style="width: 240rpx; text-align: center;color: rgb(41, 121, 255);"> |
| | | <u-number-box @focus='isAsyncChange=true' @blur='isAsyncChange=false' |
| | | :key="item.usercode" :asyncChange='isAsyncChange' step="0.01" :name='item.usercode' |
| | | @change='numberBoxChange' decimal-length="2" :value="item.ratio" inputWidth='110'> |
| | | </u-number-box> |
| | | </view> |
| | | |
| | | <u-icon @click="deleteUser(item)" style="width: 50rpx;text-align: center;" name="trash" |
| | | min='0' max='100' color="#2979ff" size="24"> |
| | | </u-icon> |
| | | |
| | | </view> |
| | | <u-divider></u-divider> |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | </u-radio> |
| | | </u-radio-group> |
| | | </view> --> |
| | | |
| | | <view style="margin-top: 20px;display: flex;align-items: center;"> |
| | | |
| | | <view class=""> |
| | | 产品信息: |
| | | </view> |
| | | <view class=""> |
| | | <u-button :hairline="true" shape="circle" icon="map" :plain="true" |
| | | style="width: 100px;height: 26px;" type="primary" text="选择产品" @click="chosePart"></u-button> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view style="display: flex;flex-wrap: wrap;"> |
| | | <u-tag style="width:220rpx;" :text="item.name" v-for="item in tagArr" :key="item.code" |
| | | :closable="true" :show="item.close" @close="tagClose(item)"></u-tag> |
| | | </view> |
| | | |
| | | |
| | | |
| | | <!-- <view class="head" style="margin-top: 10px;"> |
| | | <view class="head_block" style="height: 80rpx; display: flex;justify-content: space-around;"> |
| | | <u-button :plain='today' style="width: 70px;height: 25px;" @click="dateChange('today')" |
| | | type="primary" shape="circle" text="今日"> |
| | | </u-button> |
| | | <u-button :plain='month' style="width: 70px;height: 25px;" @click="dateChange('month')" |
| | | type="primary" shape="circle" text="本月"> |
| | | </u-button> |
| | | <u-button :plain='custom' style="width: 70px;height: 25px;" @click="dateChange('custom')" |
| | | type="primary" shape="circle" text="自定义"></u-button> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-if="!custom" class="flex_column" |
| | | style="display: flex;justify-content: space-around;width: 100%;"> |
| | | <view class="" style="display: flex;justify-content: space-evenly;width: 100%;"> |
| | | <view class="titleFont">开始日期</view> |
| | | <view class="titleFont">~</view> |
| | | <view class="titleFont">结束日期</view> |
| | | </view> |
| | | |
| | | <u-button type="info" icon='calendar' iconColor="#0659FF" size="" @click="calendarClick" |
| | | :text="calendarRange"> |
| | | </u-button> |
| | | </view> --> |
| | | |
| | | <!-- <uni-calendar ref="calendar" :range='true' :insert="false" @confirm="calendarConfirm" /> --> |
| | | |
| | | </view> |
| | | </u-popup> |
| | | |
| | | <u-gap height="20" bgColor="#eff0f1"></u-gap> |
| | | |
| | | <u-button size="large" :loading="isDisabledSubmitButton" loadingText="正在提交,请稍等..." type="primary" |
| | | @click="submit" text="报工"> |
| | | </u-button> |
| | | |
| | | |
| | | <u-picker v-if="topContent.length!==0" :show="userGroupSheetShow" :columns="userGroupColumns" |
| | | :itemHeight='55' :closeOnClickOverlay='true' @close='userGroupSheetShow=false' |
| | | @confirm='userGroupPickerConfirm' @cancel='userGroupSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | <u-picker v-if="topContent.length!==0" :show="eqpSheetShow" :columns="eqpColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='eqpSheetShow=false' @confirm='eqpPickerConfirm' |
| | | @cancel='eqpSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | |
| | | |
| | | <u-action-sheet v-if="topContent.length!==0" :actions="badSelectArr" :safeAreaInsetBottom='true' |
| | | :closeOnClickOverlay="true" :closeOnClickAction="true" @close="badSheetShow=false" :show="badSheetShow" |
| | | @select='badSheetSelect'> |
| | | <view style="min-height: 100rpx;"> |
| | | <u-checkbox-group @change="checkboxChange" size='20px' v-model="checkBoxValue" iconPlacement="right" |
| | | placement="column"> |
| | | <view v-for="(item,index) in badSelectArr"> |
| | | <u-checkbox activeColor="rgb(0, 102, 255)" labelSize='18' :key="item.code+index" |
| | | :name='item.name' :label="item.name"> |
| | | </u-checkbox> |
| | | </view> |
| | | </u-checkbox-group> |
| | | </view> |
| | | </u-action-sheet> |
| | | |
| | | |
| | | |
| | | <u-action-sheet v-if="topContent.length!==0" :actions="userSelectArrAll" :safeAreaInsetBottom='true' |
| | | :closeOnClickOverlay="true" :closeOnClickAction="true" @close="userSheetShow=false" |
| | | :show="userSheetShow" @select='userSheetSelect'> |
| | | <view style="min-height: 100rpx;padding: 20rpx 20rpx 30rpx 20rpx;"> |
| | | <u-checkbox-group @change="userCheckboxChange" size='20px' v-model="userCheckBoxValue" |
| | | iconPlacement="right" placement="column"> |
| | | <view v-for="(item,index) in userSelectArrAll"> |
| | | <u-checkbox activeColor="rgb(0, 102, 255)" labelSize='18' :key="item.code+index" |
| | | :name='item.name' :label="item.name"> |
| | | </u-checkbox> |
| | | </view> |
| | | </u-checkbox-group> |
| | | </view> |
| | | </u-action-sheet> |
| | | |
| | | |
| | | |
| | | |
| | | <u-picker v-if="topContent.length!==0" :show="operSheetShow" :columns="operColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='operSheetShow=false' @confirm='operPickerConfirm' |
| | | @cancel='operSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | |
| | | <u-modal v-if="topContent.length!==0" :show="modalShow" :showCancelButton='true' cancelText='取消' |
| | | @close="modalShow=false" :closeOnClickOverlay="true" style=" " @cancel="modalCancel" |
| | | @confirm="modalConfirm" title="不良明细" :content='modalContent'> |
| | | |
| | | <!-- <uni-section style="width: 100%;" title=''> |
| | | <uni-data-select v-model="userSelectValue" :clear='false' emptyText :localdata="userSelectArr" |
| | | @change="userChange"> |
| | | </uni-data-select> |
| | | </uni-section> --> |
| | | |
| | | <!-- <view style="display: flex;flex-direction: column;"> |
| | | <view class="flex_center titleFont" style="margin: 0rpx 20rpx 10rpx;line-height: 56rpx;"> |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 数量: |
| | | <view class='inputClass'> |
| | | <u--input placeholder="请输入" border="surround" @change='ngqtyChange' type='number' |
| | | v-model="ngqty"></u--input> |
| | | </view> |
| | | </view> |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 原因: |
| | | </view> |
| | | <view @click='badSheetClick' class="custominputClass"> |
| | | <view v-show='badSheetValue.length===0' style="color: rgb(192, 196, 204);">请选择</view> |
| | | <view v-show='badSheetValue.length!==0' class="ellipsis" style="width: 390rpx;"> |
| | | {{badSheetValue}} |
| | | </view> |
| | | <u-icon :name="!badSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | |
| | | </u-modal> |
| | | |
| | | |
| | | </view> |
| | | |
| | | |
| | | <!-- <view v-show="topContent.length!==0" style="position: absolute; bottom: 210rpx;right: 20rpx;"> |
| | | <div class="scanImg2" @click="topScanClick"></div> |
| | | </div> |
| | | </view> --> |
| | | |
| | | <!-- 悬浮球 --> |
| | | <!-- <view |
| | | v-show="topContent.length!==0&&!modalShow&&!userGroupSheetShow&&!eqpSheetShow&&!operSheetShow&&!badSheetShow" |
| | | @click="topScanClick"> |
| | | <drag-ball :x='$DeviceInformation.screenWidth*0.8' :y="$DeviceInformation.screenHeight*0.7"></drag-ball> |
| | | </view> --> |
| | | |
| | | <!-- <scan-code></scan-code> --> |
| | | |
| | | |
| | | <!-- 悬浮球 --> |
| | | <view @click="scan2"> |
| | | <drag-ball :x='300' :y="600"></drag-ball> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepStart, |
| | | PersonPermissions, |
| | | EqpPermissionsPlus, |
| | | GroupsPermissions, |
| | | GroupsPersonPermissions, |
| | | DefectPermissions, |
| | | SavaMesOrderStepReport, |
| | | LabelBarCode |
| | | ProductionScheduleKanban |
| | | } from '../../config/api.js'; |
| | | // import scanCode from '@/components/scan-code/scan-code.vue' |
| | | export default { |
| | | // components: { |
| | | // scanCode |
| | | // }, |
| | | onLoad(option) { |
| | | // const _this = this |
| | | // uni.$off('scancodedate') // 每次进来先 移除全局自定义事件监听器 |
| | | // uni.$on('scancodedate', function(content) { |
| | | // console.log("扫描到的内容为:", content) |
| | | // // _this.getMesOrderStepStart(content) |
| | | const _this = this |
| | | uni.$off('scancodedate') // 每次进来先 移除全局自定义事件监听器 |
| | | uni.$on('scancodedate', function(content) { |
| | | console.log("扫描到的内容为:", content) |
| | | _this.getCheckScanDeviceQrCodeData(content) |
| | | }) |
| | | |
| | | // if (_this.topContent.find(i => i.wo_code + ';' + i.stepcode === content)) { |
| | | // _this.$u.toast('此条码已扫描,已在列表中!') |
| | | // } else { |
| | | // _this.getMesOrderStepStart(content) |
| | | // } |
| | | // }) |
| | | |
| | | console.log(option, 8) |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | |
| | | |
| | | data() { |
| | | return { |
| | | topRightMessageCount: 0, |
| | | isDisabledSubmitButton: false, |
| | | |
| | | formData: {}, |
| | | |
| | | reckway: '个人', //计件方式 group代表是班组 person 代表是个人 |
| | | userGroupSheetValue: '', //生产班组下拉选中的值 |
| | | eqpSheetValue: '', //设备名称下拉选中的值 |
| | | userGroupSheetList: [], //生产班组下拉数组 |
| | | eqpSheetList: [], //设备名称下拉数组 |
| | | userGroupSheetShow: false, //上拉列表是否展开 |
| | | eqpSheetShow: false, |
| | | topContent: [ |
| | | // { |
| | | // nextstepcode: "GX005", |
| | | // nextstepname: "入库", |
| | | // noputqty: 0, |
| | | // noreportqty: 100, |
| | | // partname: "8504光机", |
| | | // partnumber: "302", |
| | | // partspec: "/", |
| | | // planqty: 100, |
| | | // reportqty: 0, |
| | | // seq: "1", |
| | | // startqty: 100, |
| | | // stepcode: "GX001", |
| | | // stepdesc: "", |
| | | // stepname: "领料", |
| | | // wo_code: "MO-2022-11-0035_1", |
| | | // }, |
| | | topRightMessageCount: '', |
| | | inputBoxValue: '', |
| | | alertTitle: '', |
| | | popupShow: false, //弹出层是否显示 |
| | | collapseArr: [ //折叠面板数据 |
| | | ], |
| | | collapseArrAll: [], //所有 |
| | | placeholder: '请输入工单信息', |
| | | radiovalue: '生产工单', //单据类型 |
| | | // SO:销售订单 MO:生产订单 PO:生产工单 |
| | | radiolist: [{ |
| | | name: '销售订单' |
| | | }, |
| | | { |
| | | name: '生产订单' |
| | | }, |
| | | { |
| | | name: '生产工单' |
| | | }, |
| | | ], |
| | | |
| | | reportqty: '', //报工数量 |
| | | ngqty: '', //不良数量 |
| | | badSelectArr: [], //不良原因下拉数组 |
| | | badSheetValue: '', //不良原因选中值 |
| | | badSheetShow: false, |
| | | checkBoxValue: [], //不良原因显示值 |
| | | operSheetValue: '', //操作人员选中值 |
| | | operSheetShow: false, |
| | | operSheetList: [], //操作人员数组 |
| | | userArr: [], //报工人员信息数组 |
| | | modalShow: false, |
| | | modalContent: '', //模态框数 |
| | | userSelectValue: '', //下拉选项值 |
| | | userSelectArrAll: [], //所有人员下拉数组 |
| | | userSelectArr: [ |
| | | // { |
| | | // value: '1001', |
| | | // text: '小美1' |
| | | // }, |
| | | ], //人员下拉数组 |
| | | userGroupColumns: [], // |
| | | eqpColumns: [], // |
| | | operColumns: [], // |
| | | isAsyncChange: false, |
| | | today: true, |
| | | month: false, |
| | | custom: true, |
| | | |
| | | userCheckBoxValue: [], |
| | | userSheetShow: false |
| | | // calendarRange: new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | // 10), //系统当前日期 |
| | | calendarRange: new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10), //当月日期 |
| | | |
| | | |
| | | |
| | | tagArr: [ |
| | | // { |
| | | // close: true, |
| | | // name: '电池包', |
| | | // code: '1002' |
| | | // }, { |
| | | // close: true, |
| | | // name: '电脑', |
| | | // code: '1003' |
| | | // }, { |
| | | // close: true, |
| | | // name: '8054光机', |
| | | // code: '1004' |
| | | // }, { |
| | | // close: true, |
| | | // name: 'G71674冲锋枪', |
| | | // code: '1005' |
| | | // }, { |
| | | // close: true, |
| | | // name: '8051光机', |
| | | // code: '1006' |
| | | // }, |
| | | ], //已选中的产品标签 |
| | | |
| | | |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | mounted() { |
| | | this.init() |
| | | |
| | | this.getMesOrderStepStart('MO-2024-01-0004_1;102') |
| | | |
| | | this.getSellectAllApi() |
| | | this.getProductionScheduleKanban() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | async getSellectAllApi() { |
| | | await this.getGroupsPermissions() //获取生产班组 |
| | | await this.getEqpPermissionsPlus() //获取设备名称 |
| | | await this.getDefectPermissions() //获取缺陷下拉 |
| | | await this.getPersonPermissions() //获取操作人员 |
| | | }, |
| | | gotoPage(p1, p2) { |
| | | let orderstep = null |
| | | |
| | | |
| | | //获取生产班组 |
| | | async getGroupsPermissions(wkshopcode) { |
| | | |
| | | const res = await GroupsPermissions() |
| | | if (res.code === '200') { |
| | | // 数组对象 替换对象键名 |
| | | this.userGroupSheetList = res.data.map(({ |
| | | usergroupcode, |
| | | usergroupname |
| | | }) => ({ |
| | | code: usergroupcode, |
| | | name: usergroupname |
| | | })) |
| | | |
| | | this.userGroupColumns = [this.userGroupSheetList.map(i => i.name)] |
| | | if (p1) { |
| | | orderstep = p1 + ';' + p2 |
| | | } else { |
| | | orderstep = '' |
| | | } |
| | | }, |
| | | // 获取设备名称 |
| | | async getEqpPermissionsPlus() { |
| | | const res = await EqpPermissionsPlus() |
| | | if (res.code === '200') { |
| | | this.eqpSheetList = res.data |
| | | this.eqpColumns = [this.eqpSheetList.map(i => i.name)] |
| | | } |
| | | }, |
| | | // 获取不良原因 |
| | | async getDefectPermissions(orderstepqrcode) { |
| | | const res = await DefectPermissions() |
| | | if (res.code === '200') { |
| | | this.badSelectArr = res.data |
| | | } |
| | | }, |
| | | // 获取报工人员 |
| | | async getPersonPermissions() { |
| | | const res = await PersonPermissions() |
| | | if (res.code === '200') { |
| | | // this.operSheetList = res.data |
| | | this.operSheetList = res.data.map(({ |
| | | usercode, |
| | | username |
| | | }) => ({ |
| | | code: usercode, |
| | | name: username |
| | | })) |
| | | this.operColumns = [this.operSheetList.map(i => i.name)] |
| | | this.userSelectArrAll = this.operSheetList |
| | | } |
| | | }, |
| | | // 根据生产班组获取人员 |
| | | async getGroupsPersonPermissions(groupcode) { |
| | | |
| | | const res = await GroupsPersonPermissions({ |
| | | groupcode |
| | | |
| | | uni.navigateTo({ |
| | | url: './scbg2?orderstep=' + orderstep |
| | | }) |
| | | if (res.code === '200') { |
| | | this.userCheckBoxValue = [] |
| | | }, |
| | | |
| | | if (res.data[0].usercode_list && res.data[0].usercode_list.length > 0) { |
| | | this.userSelectArrAll.forEach(i => { |
| | | getCheckboxValue(val) { |
| | | this.tagArr = [] |
| | | val.forEach(i => { |
| | | this.tagArr.push({ |
| | | close: true, |
| | | name: i.split('/')[1].trim(), |
| | | code: i.split('/')[0].trim() |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | if (res.data[0].usercode_list.split(',').includes(i.code)) { |
| | | this.userCheckBoxValue.push(i.name) |
| | | } |
| | | |
| | | }) |
| | | |
| | | } |
| | | |
| | | this.operSheetValue = this.userCheckBoxValue.join(',') |
| | | |
| | | |
| | | // 接口获取 |
| | | async getProductionScheduleKanban() { |
| | | let ordertype = '' // SO:销售订单 MO:生产订单 PO:生产工单 |
| | | switch (this.radiovalue) { |
| | | case '生产工单': |
| | | this.alertTitle = '工单数量(共/个)' |
| | | this.placeholder = '请输入工单信息' |
| | | ordertype = 'PO' |
| | | break |
| | | case '生产订单': |
| | | this.alertTitle = '生产订单数量(共/个)' |
| | | this.placeholder = '请输入生产订单信息' |
| | | ordertype = 'MO' |
| | | break |
| | | case '销售订单': |
| | | this.alertTitle = '销售订单数量(共/个)' |
| | | this.placeholder = '请输入销售订单信息' |
| | | ordertype = 'SO' |
| | | break |
| | | } |
| | | }, |
| | | |
| | | |
| | | |
| | | userSheetSelect() { |
| | | |
| | | }, |
| | | userCheckboxChange(val) { |
| | | this.userCheckBoxValue = val.join(',') |
| | | // this.userCheckBoxValue = ['001'] |
| | | // this.$forceUpdate() |
| | | |
| | | // console.log(this.userCheckBoxValue); |
| | | }, |
| | | |
| | | |
| | | |
| | | |
| | | //获取开工信息 |
| | | async getMesOrderStepStart(orderstepqrcode) { |
| | | const data = { |
| | | OperType: 'ZZ', |
| | | SelectType: '', |
| | | wocode: orderstepqrcode ? orderstepqrcode.split(';')[0] : '', |
| | | stepcode: orderstepqrcode ? orderstepqrcode.split(';')[1] : '' |
| | | ordertype, |
| | | partcode: this.tagArr.map(i => i.code).join(','), |
| | | Ratetime: this.calendarRange, |
| | | |
| | | } |
| | | const res = await MesOrderStepStart(this.global.formatData(data)) |
| | | if (res.code === '200' && res.count === 1) { |
| | | this.formData = res.data |
| | | this.topContent.unshift(res.data) |
| | | // this.getGroupsPermissions(res.data.wkshopcode) |
| | | // let o = res.data.wo_code + ';' + res.data.stepcode |
| | | // this.getEqpPermissionsPlus(o) |
| | | // this.getDefectPermissions(o) |
| | | // this.getPersonPermissions() |
| | | const { |
| | | data: res |
| | | } = await ProductionScheduleKanban(data) |
| | | |
| | | } else if (res.code === '200' && res.count !== 1) { |
| | | this.$u.toast('此工序已报工!') |
| | | } |
| | | this.collapseArr = res |
| | | this.collapseArrAll = res |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | // 扫码事件 |
| | | |
| | | |
| | | //输入框回车确认事件 |
| | | confirmInputBoxValue(val) { |
| | | this.collapseArr = this.collapseArrAll.filter((p) => { |
| | | return p.ordercode.indexOf(val) !== -1 |
| | | }) |
| | | |
| | | |
| | | switch (this.radiovalue) { |
| | | case '生产工单': |
| | | this.alertTitle = '工单数量(共/个)' |
| | | break |
| | | case '生产订单': |
| | | this.alertTitle = '生产订单数量(共/个)' |
| | | break |
| | | case '销售订单': |
| | | this.alertTitle = '销售订单数量(共/个)' |
| | | break |
| | | } |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | |
| | | // 点击扫码 |
| | | scanClick() { |
| | | this.topScanClick() |
| | | }, |
| | | |
| | | // 扫码框点击 |
| | | topScanClick() { |
| | | let that = this; |
| | | |
| | |
| | | success: function(res) { |
| | | console.log('条码类型:' + res.scanType); |
| | | console.log('条码内容:' + res.result); |
| | | that.scanContent = res.result; |
| | | |
| | | if (that.topContent.find(i => i.wo_code + ';' + i.stepcode === res.result)) { |
| | | that.$u.toast('此条码已扫描,已在列表中!') |
| | | } else { |
| | | that.getMesOrderStepStart(res.result) |
| | | } |
| | | that.getCheckScanDeviceQrCodeData(that.scanContent); |
| | | }, |
| | | complete: function(res) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('条码类型:' + res.scanType); |
| | | console.log('条码内容:' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | scan2() { |
| | | let that = this; |
| | | |
| | | uni.scanCode({ |
| | | onlyFromCamera: true, |
| | | // scanType: ['barCode', 'qrCode'], |
| | | scanType: ['qrCode'], |
| | | success: function(res) { |
| | | console.log('条码类型:' + res.scanType); |
| | | console.log('条码内容:' + res.result); |
| | | // that.scanContent = res.result; |
| | | |
| | | uni.navigateTo({ |
| | | url: './scbg2?orderstep=' + res.result |
| | | }) |
| | | |
| | | }, |
| | | complete: function(res) { |
| | |
| | | |
| | | }); |
| | | }, |
| | | // 步进器值改变时 |
| | | numberBoxChange(val) { |
| | | this.userArr.find(i => i.usercode === val.name).ratio = parseFloat(val.value).toFixed(2) |
| | | |
| | | getCheckScanDeviceQrCodeData(code) { |
| | | this.inputBoxValue = code |
| | | this.confirmInputBoxValue(this.inputBoxValue) |
| | | }, |
| | | |
| | | ngqtyChange(val) { |
| | | if (!parseFloat(val)) { |
| | | this.badSheetValue = '' |
| | | this.checkBoxValue = '' |
| | | } |
| | | |
| | | // 弹出层收起 |
| | | popupClose() { |
| | | this.getProductionScheduleKanban() |
| | | this.popupShow = false |
| | | }, |
| | | |
| | | async submit() { |
| | | // 下午写生产报工提交 |
| | | |
| | | if (this.reckway === '班组' && this.userGroupSheetValue === "") { |
| | | return uni.$u.toast('生产班组不能为空!') |
| | | } |
| | | if (this.reckway === '个人' && this.operSheetValue === "") { |
| | | return uni.$u.toast('报工人员不能为空!') |
| | | } |
| | | if (this.eqpSheetValue === "") { |
| | | return uni.$u.toast('设备名称不能为空!') |
| | | } |
| | | if (this.reportqty === "") { |
| | | return uni.$u.toast('报工数量不能为空!') |
| | | } |
| | | |
| | | if (parseFloat(this.reportqty) + parseFloat(this.ngqty) > parseFloat(this.topContent[0].noreportqty)) { |
| | | return uni.$u.toast('报工数量加不良数量不能大于未报数量!') |
| | | } |
| | | |
| | | |
| | | if (this.reckway === '班组' && this.operSheetValue.length === 0) { |
| | | return uni.$u.toast('报工人员信息不能为空!') |
| | | } |
| | | |
| | | |
| | | |
| | | let badcode = [] |
| | | |
| | | if (this.badSheetValue.length > 0) { |
| | | this.badSelectArr.forEach(i => { |
| | | if (this.badSheetValue.split(',').includes(i.name)) { |
| | | badcode.push(i.code) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | if (this.ngqty !== '') { |
| | | if (badcode.length === 0) { |
| | | return uni.$u.toast('不良原因未选择!') |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | let reportuser = [] |
| | | |
| | | if (this.operSheetValue.length > 0) { |
| | | this.userSelectArrAll.forEach(i => { |
| | | if (this.operSheetValue.split(',').includes(i.name)) { |
| | | reportuser.push(i.code) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | console.log(this.userSelectValue); |
| | | // reportuser = this.userArr.map(i => i.usercode).join(';') //报工人员 |
| | | |
| | | |
| | | |
| | | const D = { |
| | | rightcode: '0601', |
| | | partcode: this.topContent[0].partnumber, |
| | | qty: parseFloat(this.reportqty), |
| | | onelabqty: parseFloat(this.reportqty) |
| | | } |
| | | const { |
| | | data: R |
| | | } = await LabelBarCode(D) |
| | | |
| | | |
| | | const data = { |
| | | mesordercode: this.topContent[0].wo_code, |
| | | partcode: this.topContent[0].partnumber, |
| | | stepseq: this.topContent[0].seq, |
| | | stepcode: this.topContent[0].stepcode, |
| | | stepprice: this.topContent[0].stepprice, |
| | | |
| | | eqpcode: this.eqpSheetList.find(i => i.name === this.eqpSheetValue).code, |
| | | |
| | | reckway: this.reckway === '班组' ? 'group' : 'person', |
| | | |
| | | usergroupcode: this.userGroupSheetValue ? this.userGroupSheetList.find(i => i.name === this |
| | | .userGroupSheetValue).code : '', // 班组编码 |
| | | reportuser: this.reckway === '班组' ? reportuser.join(',') : this.userSelectArrAll.find(i => i |
| | | .name === this.operSheetValue).code, |
| | | taskqty: this.topContent[0].planqty, |
| | | startqty: parseFloat(this.reportqty), |
| | | reportqty: parseFloat(this.reportqty), |
| | | inbarcode: R[0].labcode, //入库条码 |
| | | defectlist: badcode.length > 0 ? [{ |
| | | defect_code: badcode.join(','), |
| | | badqty: this.ngqty |
| | | }] : [], |
| | | remarks: '' |
| | | } |
| | | |
| | | console.log(JSON.parse(JSON.stringify(data)), 7777) |
| | | this.isDisabledSubmitButton = true |
| | | const res = await SavaMesOrderStepReport(data) |
| | | if (res.code === '200') { |
| | | uni.$u.toast('报工成功!') |
| | | this.topContent = [] |
| | | this.formData = {} |
| | | this.reportqty = '' |
| | | this.ngqty = '' |
| | | this.reckway = '个人' |
| | | this.userGroupSheetValue = '' |
| | | this.eqpSheetValue = '' |
| | | // this.userGroupSheetList = [] |
| | | // this.eqpSheetList = [] |
| | | // this.badSelectArr = [] |
| | | this.badSheetValue = [] |
| | | this.checkBoxValue = [] |
| | | this.operSheetValue = '' |
| | | // this.operSheetList = [] |
| | | // this.userArr = [] |
| | | this.userSelectValue = '' |
| | | // this.userSelectArrAll = [] |
| | | // this.userSelectArr = [] |
| | | // this.userGroupColumns = [] |
| | | // this.eqpColumns = [] |
| | | // this.operColumns = [] |
| | | |
| | | this.userCheckBoxValue = [] |
| | | this.userSheetShow = false |
| | | |
| | | |
| | | this.isDisabledSubmitButton = false |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | // 弹出层弹出 |
| | | popupOpen() { |
| | | |
| | | }, |
| | | userGroupSheetSelect(val) { |
| | | this.userGroupSheetValue = val.name |
| | | this.userGroupSheetShow = false |
| | | }, |
| | | userGroupSheetClick() { |
| | | this.userGroupSheetShow = true |
| | | }, |
| | | eqpSheetSelect(val) { |
| | | this.eqpSheetValue = val.name |
| | | this.eqpSheetShow = false |
| | | }, |
| | | epqSheetClick() { |
| | | this.eqpSheetShow = true |
| | | }, |
| | | badSheetSelect(val) { |
| | | // console.log(val,9999999) |
| | | }, |
| | | badSheetClick() { |
| | | if (!this.ngqty) { |
| | | return uni.$u.toast('请先填写不良数量!') |
| | | } |
| | | this.badSheetShow = true |
| | | }, |
| | | checkboxChange(val) { |
| | | this.badSheetValue = val.join(',') |
| | | console.log(this.badSheetValue, 5); |
| | | }, |
| | | operSheetClick() { |
| | | if (this.reckway === '个人') { |
| | | this.operSheetShow = true |
| | | } |
| | | |
| | | if (this.reckway === '班组') { |
| | | this.userSheetShow = true |
| | | } |
| | | |
| | | |
| | | |
| | | // 选择产品 |
| | | chosePart() { |
| | | let arr = [] |
| | | this.tagArr.forEach(i => { |
| | | arr.push(i.code + '/' + i.name) |
| | | }) |
| | | uni.navigateTo({ |
| | | url: '../znfx/chda?param=' + JSON.stringify(arr) |
| | | }); |
| | | }, |
| | | operSheetSelect(val) { |
| | | this.operSheetValue = val.name |
| | | this.operSheetShow = false |
| | | }, |
| | | // 添加人员按钮 |
| | | addUser() { |
| | | this.userSelectArr = [] |
| | | this.userSelectArrAll.forEach(i => { |
| | | if (!this.userArr.map(j => j.usercode).includes(i.code)) { |
| | | this.userSelectArr.push({ |
| | | value: i.code, |
| | | text: i.name |
| | | }) |
| | | |
| | | // tag标签关闭 |
| | | tagClose(val) { |
| | | this.tagArr.forEach((i, j) => { |
| | | if (i.code === val.code) { |
| | | i.close = false |
| | | this.tagArr.splice(j, 1) |
| | | } |
| | | }) |
| | | this.modalShow = true |
| | | }, |
| | | |
| | | }, |
| | | // 删除人员按钮 |
| | | deleteUser(item) { |
| | | this.userArr = this.userArr.filter(i => i.usercode !== item.usercode) |
| | | // 时间范围切换 |
| | | dateChange(val) { |
| | | if (val === 'today') { |
| | | this.today = false |
| | | this.month = true |
| | | this.custom = true |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | 10) |
| | | } else if (val === 'month') { |
| | | this.today = true |
| | | this.month = false |
| | | this.custom = true |
| | | |
| | | }, |
| | | // 模态框取消按钮 |
| | | modalCancel() { |
| | | this.modalShow = false |
| | | this.userSelectValue = '' |
| | | }, |
| | | // 模态框确认按钮 |
| | | modalConfirm() { |
| | | if (this.userSelectValue) { |
| | | this.userArr.unshift({ |
| | | usercode: this.userSelectValue, |
| | | username: this.userSelectArrAll.find(i => i.code === this.userSelectValue).name |
| | | }) |
| | | this.userSelectValue = '' |
| | | } else { |
| | | uni.$u.toast('请选择报工人员!') |
| | | this.calendarRange = new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10) |
| | | |
| | | } else if (val === 'custom') { |
| | | this.today = true |
| | | this.month = true |
| | | this.custom = false |
| | | this.calendarRange = new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10) |
| | | } |
| | | this.modalShow = false |
| | | }, |
| | | |
| | | // 日历时间点击 |
| | | calendarClick() { |
| | | this.$refs.calendar.open(); |
| | | }, |
| | | userChange(val) { |
| | | this.userSelectValue = val |
| | | |
| | | // 日历确定事件点击 |
| | | calendarConfirm(val) { |
| | | if (val.range.before < val.range.after) { |
| | | this.calendarRange = val.range.before + '~' + val.range.after |
| | | } else { |
| | | this.calendarRange = val.range.after + '~' + val.range.before |
| | | } |
| | | |
| | | if (val.range.before === '') { |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + val.range.after |
| | | } |
| | | if (val.range.after === '') { |
| | | this.calendarRange = val.range.before + '~' + new Date().toISOString().slice(0, 10) |
| | | } |
| | | if (val.range.before === '' && val.range.after === '') { |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | 10) |
| | | } |
| | | // this.getData() |
| | | }, |
| | | userGroupPickerConfirm(val) { |
| | | console.log(val, 11) |
| | | this.getGroupsPersonPermissions(this.userGroupSheetList.find(i => i.name === val.value[0]).code) |
| | | this.userGroupSheetValue = val.value[0] |
| | | this.userGroupSheetShow = false |
| | | |
| | | |
| | | // 单选按钮切换 |
| | | groupChange(val) { |
| | | console.log(val) |
| | | }, |
| | | eqpPickerConfirm(val) { |
| | | this.eqpSheetValue = val.value[0] |
| | | this.eqpSheetShow = false |
| | | }, |
| | | operPickerConfirm(val) { |
| | | this.operSheetValue = val.value[0] |
| | | this.operSheetShow = false |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | display: block; |
| | | } |
| | | |
| | | .custominputClass { |
| | | width: 412rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | border: 3rpx #eff0f1 solid; |
| | | border-radius: 10rpx; |
| | | padding: 0 16rpx; |
| | | ::v-deep .u-alert__text--info--light { |
| | | margin-bottom: 0; |
| | | font-size: 32rpx !important; |
| | | padding-left: 10rpx; |
| | | color: #212121 !important; |
| | | font-weight: lighter; |
| | | } |
| | | |
| | | ::v-deep .u-alert--info--light { |
| | | background-color: rgba(255, 255, 255, 0.7); |
| | | } |
| | | |
| | | ::v-deep .u-steps-item__wrapper { |
| | | background-color: #eee; |
| | | } |
| | | |
| | | ::v-deep .u-steps-item__line--column { |
| | | display: none; |
| | | } |
| | | |
| | | ::v-deep .u-slide-right-enter-active { |
| | | width: 70%; |
| | | } |
| | | |
| | | ::v-deep .uicon-calendar { |
| | | font-size: 36rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-cell__title-text { |
| | | font-size: 28rpx; |
| | | color: #212121; |
| | | } |
| | | |
| | | ::v-deep .u-cell__value { |
| | | font-size: 28rpx; |
| | | // color: transparent; |
| | | color: #212121; |
| | | |
| | | } |
| | | |
| | | .ellipsis { |
| | | text-overflow: ellipsis; |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | ::v-deep .u-cell__label { |
| | | margin-top: 0; |
| | | line-height: 12px; |
| | | } |
| | | |
| | | .scanImg2 { |
| | | width: 70px; |
| | | height: 70px; |
| | | border-radius: 50%; |
| | | margin: auto; |
| | | background: url('@/static/img/scan.png') no-repeat; |
| | | box-shadow: #436df5 0px 0px 20px; |
| | | background-size: 100% 100%; |
| | | ::v-deep .uicon-arrow-right { |
| | | font-size: 14px !important; |
| | | color: #212121 !important; |
| | | } |
| | | |
| | | ::v-deep .addClass .uicon-plus-circle { |
| | | font-size: 50rpx !important; |
| | | margin-right: 20rpx !important; |
| | | ::v-deep .u-line-progress__text { |
| | | // margin-right: -20px; |
| | | // color: #212121; |
| | | // width: 100px; |
| | | // margin-top: 10px; |
| | | display: none; |
| | | |
| | | } |
| | | |
| | | ::v-deep .addClass .u-button__text { |
| | | font-size: 46rpx !important; |
| | | ::v-deep .u-text__value--content { |
| | | font-size: 12px !important; |
| | | } |
| | | |
| | | |
| | | ::v-deep .u-modal__content { |
| | | padding-bottom: 260rpx; |
| | | margin-bottom: 100rpx; |
| | | ::v-deep .u-tag__close { |
| | | background: #436df5 !important; |
| | | } |
| | | |
| | | ::v-deep .u-action-sheet { |
| | | max-height: 600rpx !important; |
| | | overflow: auto !important; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__minus { |
| | | height: 50rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__input { |
| | | height: 50rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__plus { |
| | | height: 50rpx !important; |
| | | } |
| | | |
| | | |
| | | ::v-deep .u-checkbox-label--right { |
| | | padding: 30rpx; |
| | | border-bottom: 1rpx solid #eee; |
| | | ::v-deep .u-cell__body { |
| | | padding-bottom: 40rpx; |
| | | } |
| | | </style> |