| components/ZLGL/InspectValueTemplate.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| components/ZLGL/SampleSchemePopup.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pages.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pages/ZLGL/shoujianjianyan/form.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pages/ZLGL/shoujianjianyan/table.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pages/index/tab2.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pages/zhijiediaobo/table.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
components/ZLGL/InspectValueTemplate.vue
New file @@ -0,0 +1,309 @@ <template> <view> <view class="inspect-value-content"> <view class="form-item"> <view class="left">项目序号</view> <view class="right disabled"> <input type="text" v-model="checkData.num" disabled /> </view> </view> <view class="form-item"> <view class="left">检验项目</view> <view class="right disabled"> <input type="text" v-model="checkData.HQCCheckItemName" disabled /> </view> </view> <view class="form-item"> <view class="left">样本量</view> <view class="right disabled"> <input type="text" v-model="checkData.HSampleQty" disabled /> </view> </view> <view class="form-item"> <view class="left">检验结果</view> <view class="right disabled"> <input type="text" v-model="checkData.HResult2" disabled /> </view> </view> <view class="form-item"> <view class="left">不合格数</view> <view class="right"> <input type="number" v-model="checkData.HSampleUnRightQty" /> </view> </view> <view class="form-item"> <view class="left">保留小数位</view> <view class="right"> <input type="number" v-model="checkData.HResDec" /> </view> </view> <view style="width: 100%;border-bottom: 1px solid #e3e3e3;"></view> <view class="form-item" style="width: 100%;"> <view class="left">状态</view> <view class="right none-border"> <view style="width: 4em; "> {{ checkData.HStatus?"合格":"不合格" }} </view> <view> <switch style="width: 2em; transform:scale(0.7);" :checked="checkData.HStatus?'checked':''" @change="HStatusChange" /> </view> </view> </view> <view class="form-item"> <view class="left">比较符</view> <view class="right disabled"> <input type="text" v-model="checkData.HResult2" disabled /> </view> </view> <view class="form-item"> <view class="left">单位</view> <view class="right disabled"> <input type="text" v-model="checkData.HTargetVal" disabled /> </view> </view> <view class="form-item"> <view class="left">检验值</view> <view class="right disabled"> <input type="text" v-model="checkData.HInspectVal" disabled /> </view> </view> <view class="form-item"> <view class="left">目标值</view> <view class="right disabled"> <input type="text" v-model="checkData.HTargetVal" disabled /> </view> </view> <view class="form-item"> <view class="left">上限值</view> <view class="right disabled"> <input type="text" v-model="checkData.HUpLimit" disabled /> </view> </view> <view class="form-item"> <view class="left">下限值</view> <view class="right disabled"> <input type="text" v-model="checkData.HDownLimit" disabled /> </view> </view> <view class="form-item"> <view class="left">上偏差</view> <view class="right disabled"> <input type="text" v-model="checkData.HUpOffset" disabled /> </view> </view> <view class="form-item"> <view class="left">下偏差</view> <view class="right disabled"> <input type="text" v-model="checkData.HDownOffset" disabled /> </view> </view> <view style="width: 100%;border-bottom: 1px solid #e3e3e3;"></view> <view class="inspect-value-list"> <view style="width: 100%;text-align: right;"> <button type="default" size="mini" class="btn-a" @click="storeInspectValue">缓存检验值</button> </view> <view class="item" style="border-top: 2px solid #e3e3e3 ;"> <view class="th1">序号</view> <view class="th2" style="display: flex; flex-direction: row; align-items: center;"> 检验结果 </view> <view class="th3"> 检验值({{getAnalysisMethodTitle(checkData.HAnalysisMethod)}}) </view> </view> <view class="item" v-for="(item, index) in inspectValues"> <view class="th1">{{item.HSEQ}}</view> <view class="th2" style="display: flex; flex-direction: row; align-items: center;"> <view style="width: 3em; "> {{ item.HInspectResult?"合格":"不合格" }} </view> <view> <switch style="width: 3em; transform:scale(0.7);" :checked="item.HInspectResult?'checked':''" @change="HInspectResultChange(index, $event)" /> </view> </view> <view class="th3"> <input type="number" v-model="item.HInspectValue" /> </view> </view> </view> </view> </view> </template> <script> // 检验值模板 export default { name: "InspectValueTemplate", data() { return { checkData: { HResDec: 2, HResult2: '', HStatus: true, }, inspectValues: [] }; }, props: { bindKey: { type: [String, Number], required: true }, bindData: { type: Object, required: true } }, mounted() { console.log('bingData: ', this.bindData); let {data, list} = this.bindData this.checkData = Object.assign(data, JSON.parse(JSON.stringify(this.bindData))) // 判断是否有缓存数据或者缓存数据是否与样本数一致 if(!list || list.length != this.checkData.HSampleQty ){ for (let index = 0; index < this.checkData.HSampleQty; index++) { this.inspectValues.push({ HSEQ: index + 1, HInspectResult: true, HInspectValue: 0, }) } }else { this.inspectValues = list } this.$forceUpdate() }, methods: { storeInspectValue(){ this.$emit("update", { data: this.checkData, list: this.inspectValues }) }, getAnalysisMethodTitle(type){ if(type == 1) { return '定性分析' }else if(type == 2){ return '定量分析' } return '其他分析' }, HStatusChange(e) { this.checkData.HStatus = e.detail.value }, HInspectResultChange(index, e) { console.log('e: ',e.detail.value); this.inspectValues[index].HInspectResult = e.detail.value }, } } </script> <style lang="scss"> input { height: inherit; width: inherit; font-size: 26rpx; } .inspect-value-content { box-sizing: border-box; padding: 20rpx 10rpx; display: flex; flex-direction: row; flex-wrap: wrap; gap: 20rpx 0; .form-item { width: 50%; display: flex; align-items: center; font-size: 26rpx; box-sizing: border-box; padding-left: 20rpx; .left { width: 5em; text { color: red; font-weight: bold; } } .right { // width: 450rpx; padding: 8rpx 20rpx; font-size: 26rpx; flex: 1; border-radius: 22rpx; border: 1px solid #acacac; display: flex; flex-direction: row; align-items: center; } .disabled { border: 1px solid #e4e4e4; background-color: #e4e4e4; } .none-border { border: none; } } } .inspect-value-list { box-sizing: border-box; display: flex; flex-direction: column; width: 100%; .item { display: flex; flex-direction: row; align-items: center; font-size: 30rpx; } .th1 { height: 100%; width: 4em; border: #e4e4e4 2px solid; border-top: 0; display: flex; align-items: center; box-sizing: border-box; padding: 8rpx 16rpx; } .th2 { height: 100%; width: 50%; border: #e4e4e4 2px solid; border-left: 0; border-top: 0; box-sizing: border-box; padding: 8rpx 16rpx; } .th3 { height: 100%; flex: 1; border: #e4e4e4 2px solid; border-left: 0; border-top: 0; box-sizing: border-box; padding: 8rpx 16rpx; } } .btn-a { background-color: #3A78FF; color: #fff; } </style> components/ZLGL/SampleSchemePopup.vue
New file @@ -0,0 +1,290 @@ <template> <view> <uni-popup ref="popup" type="bottom" @change="popupChangeHandler"> <view class="content"> <view class="buttons"> <view style="flex: 1;"></view> <button size="mini" type="primary" @click="exit">退出</button> </view> <scroll-view id="#BillListPanel" scroll-y="true" style="height: 55vh;"> <view class="options-wrapper" v-show="HBillList.length != 0"> <uni-card :is-active="bill.isActive" :class="bill.isActive?'uni-card--is-active':''" v-for="(bill, index) in HBillList[curPage-1]" :key="index" :title="bill['抽样方案名称']" @tap="clickCard(bill, index)"> <view class="item"> <view class="left">抽样方案代码: </view> <view class="right">{{bill['抽样方案代码']}}</view> </view> <view class="item"> <view class="left">抽样类型: </view> <view class="right">{{bill['抽样类型']}}</view> </view> <view class="item"> <view class="left">检验水平: </view> <view class="right">{{bill['检验水平']}}</view> </view> <view class="item"> <view class="left">严格度: </view> <view class="right">{{bill['严格度']}}</view> </view> <view class="item"> <view class="left">AQL: </view> <view class="right">{{bill['AQL']}}</view> </view> <view class="item"> <view class="left">样本量: </view> <view class="right">{{bill['样本量']}}</view> </view> <view class="item"> <view class="left">允许数: </view> <view class="right">{{bill['允许数']}}</view> </view> <view class="item"> <view class="left">拒绝数: </view> <view class="right">{{bill['拒绝数']}}</view> </view> <view class="item"> <view class="left">上限值: </view> <view class="right">{{bill['上限值']}}</view> </view> <view class="item"> <view class="left">下限值: </view> <view class="right">{{bill['下限值']}}</view> </view> <view class="item"> <view class="left">使用组织: </view> <view class="right">{{bill['使用组织']}}</view> </view> </uni-card> </view> <view class="over" v-show="HBillList.length == 0">暂无数据</view> </scroll-view> <uni-pagination id="#pagination" title="标题文字" v-model="curPage" :pageSize="size" :total="length"></uni-pagination> </view> </uni-popup> </view> </template> <script> import dayjs from 'dayjs'; import { CommonUtils } from '@/utils/common'; import { getUserInfo } from '@/utils/auth'; export default { name: "SampleSchemePopup", emits: ["update:modelValue"], data() { return { dayjs: dayjs, enablefocus: false, size: 20, curPage: 1, length: 0, page: 0, HSourceBillNo: '', HMater: '', HCustom: '', HBillList: [], panelHeight: 0, multiSouceBillList: [] }; }, props: { bindKey: { type: [String, Number], required: true }, HStockOrgID: { type: [String, Number], }, }, methods: { popupChangeHandler(e) { if (e.show === true) { this.getBillList() } }, async exit() { this.size = 20 this.curPage = 1 this.length = 0 this.page = 0 this.HSourceBillNo = '' this.HMater = '' this.HCustom = '' this.HBillList = [] this.enablefocus = false this.multiSouceBillList = [] // 需要等待页面内的数据赋值完毕 await this.$nextTick() this.$refs.popup.close(); }, search() { this.getBillList() }, showPopup() { this.$refs.popup.open(); }, clickCard(bill, index) { let retVal = {} retVal[this.bindKey] = bill console.log('retVal: ', retVal); this.$emit("update", { retVal: retVal }) }, getsWhere() { let sWhere = '' if (this.HBeginDate && this.HEndDate) { sWhere += ` and CONVERT(varchar(100),日期, 23) between '${this.HBeginDate}' and '${this.HEndDate}'` } if (this.HNumber) { sWhere += ` and 产品模具代码 like '%${this.HNumber}%'` } if (this.HName) { sWhere += ` and 产品模具 like '%${this.HName}%'` } if (this.HBillNo) { sWhere += ` and 单据号 like '%${this.HBillNo}%'` } return sWhere }, getBillList() { this.HBillList = [] this.length = 0 this.page = 0 this.curPage = 1 CommonUtils.doRequest( "/Web/GetGy_SampleScheme", { SampleScheme: '', OrganizationID: this.HStockOrgID || uni.getStorageSync("OrganizationID") }, (res) => { let { data, count, Message } = res.data if (count == 1) { this.length = Array.from(data).length const result = []; for (let i = 0; i < data.length; i += this.size) { result.push(data.slice(i, i + this.size)); } this.HBillList = result this.page = result.length setTimeout(() => { this.enablefocus = true }, 500) } else { setTimeout(() => { this.enablefocus = true }, 500) uni.showToast({ icon: 'none', title: Message }) } } ) }, }, } </script> <style lang="scss"> .content { box-sizing: border-box; border-radius: 15rpx 15rpx 0 0; padding: 20rpx 20rpx 40rpx 20rpx; background-color: #fff; display: flex; flex-direction: column; gap: 10rpx; .search-condition { display: flex; flex-direction: row; align-items: center; gap: 20rpx; font-size: 30rpx; .title { width: 5rem; text-align: right; } .right { flex: 1; border-radius: 22rpx; border: 1px solid #acacac; height: auto; padding: 8rpx 16rpx; input { width: 100%; font-size: 30rpx; } } } .buttons { display: flex; flex-direction: row; gap: 20rpx; justify-content: flex-end; >button { display: inline-flex; width: 4rem; } } .options-wrapper { padding: 20rpx; display: grid; grid-template-columns: repeat(1, 1fr); gap: 20rpx; >view { margin: 0 !important; box-sizing: border-box; } .item { .left { display: inline-block; width: 6rem; } .right { display: inline-block; } } } .uni-card--is-active { background-color: rgba(0, 122, 255, 0.2); } .daterange { display: flex; flex-direction: row; gap: 10rpx; justify-content: center; align-items: center; } } </style> pages.json
@@ -886,6 +886,20 @@ { "navigationBarTitleText" : "ERP即时库存查询" } }, { "path" : "pages/ZLGL/shoujianjianyan/table", "style" : { "navigationBarTitleText" : "首件检验单维护" } }, { "path" : "pages/ZLGL/shoujianjianyan/form", "style" : { "navigationBarTitleText" : "首件检验单" } } ], "tabBar": { pages/ZLGL/shoujianjianyan/form.vue
New file @@ -0,0 +1,947 @@ <template> <view> <!-- 主表区域 --> <view class="bill-main-area"> <!-- 主表页签 --> <view class="bill-main-tabs"> <view :class="mainTabSelected == 1 ? 'selected':''" @tap="mainTabSelected = 1">基本信息</view> <view :class="mainTabSelected == 2 ? 'selected':''" @tap="mainTabSelected = 2">制单信息</view> </view> <!-- 主表内容 --> <view class="bill-main-contents"> <!-- 基本信息 --> <view class="bill-main-content" v-if="mainTabSelected == 1"> <view class="form-item"> <view class="left">单据号</view> <view class="right disabled"> <input type="text" :value="hform.HBillNo" disabled /> </view> </view> <view class="form-item"> <view class="left">日期</view> <view class="right"> <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HDate"> <view>{{hform.HDate}}</view> </uni-datetime-picker> </view> </view> <view class="form-item"> <view class="left">生产资源</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">生产班次</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">生产资源</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">任务单号</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">任务单数量</view> <view class="right"> <input type="number" value="" /> </view> </view> <view class="form-item"> <view class="left">流转卡号</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">流转卡数量</view> <view class="right"> <input type="number" value="" /> </view> </view> <view class="form-item"> <view class="left">产品名称</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">检验员</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">检验方案</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">批号</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">判断结论</view> <view class="right none-border"> <radio-group @changer="checkResultChange"> <label> <radio value="0" :checked="judgeConclusion" /><text></text> 合格 </label> <view style="width: 20rpx;display: inline-block;"></view> <label> <radio value="1" :checked="!judgeConclusion" /><text></text> 不合格 </label> </radio-group> </view> </view> <view class="form-item"> <view class="left">工序</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">备注</view> <view class="right"> <input type="text" value="" /> </view> </view> <view class="form-item"> <view class="left">异常临时处理方案</view> <view class="right"> <input type="text" value="" /> </view> </view> </view> <!-- 制单信息 --> <view class="bill-main-content" v-if="mainTabSelected == 2"> <view class="form-item"> <view class="left">制单人</view> <view class="right disabled"> <input type="text" value="" disabled /> </view> </view> <view class="form-item"> <view class="left">制单日期</view> <view class="right disabled"> <input type="text" value="" disabled /> </view> </view> <view class="form-item"> <view class="left">审核人</view> <view class="right disabled"> <input type="text" value="" disabled /> </view> </view> <view class="form-item"> <view class="left">审核日期</view> <view class="right disabled"> <input type="text" value="" disabled /> </view> </view> <view class="form-item"> <view class="left">关闭人</view> <view class="right disabled"> <input type="text" value="" disabled /> </view> </view> <view class="form-item"> <view class="left">关闭日期</view> <view class="right disabled"> <input type="text" value="" disabled /> </view> </view> <view class="form-item"> <view class="left">修改人</view> <view class="right disabled"> <input type="text" value="" disabled /> </view> </view> <view class="form-item"> <view class="left">修改日期</view> <view class="right disabled"> <input type="text" value="" disabled /> </view> </view> <view class="form-item"> <view class="left">作废人</view> <view class="right disabled"> <input type="text" value="" disabled /> </view> </view> <view class="form-item"> <view class="left">作废日期</view> <view class="right disabled"> <input type="text" value="" disabled /> </view> </view> </view> </view> </view> <!-- 子表区域 --> <view class="bill-sub-area"> <!-- 子表页签 --> <view class="bill-sub-tabs"> <view v-for="subTab in subTabs" :key="subTab.id" :class="subTab.id == subTabSelected ? 'selected':''" @tap="subTabSelected = subTab.id">{{subTab.name}}</view> </view> <!-- 子表内容 --> <view class="bill-main-contents"> <!-- 检验项目 呈现 --> <view v-if="subTabSelected == 1"> <view class="buttons" @tap="addCheckItem"> <uni-icons type="plus" style="margin-right: 10rpx;" size="22"></uni-icons>新增 </view> <view class="over" v-if="!checkItems || getObjLength(checkItems) == 0">暂无数据</view> <view class="list" v-else> <uni-card v-for="checkItem in checkItems" :key="checkItem.num"> <view class="card-detail"> <view class="detail"> <text>序号:</text>{{checkItem.num}} </view> <view class="detail editable"> <view style="flex-shrink: 0;"><text>检验项目:</text></view> <input type="text" :value="checkItem.HQCCheckItemName" disabled="" /> <view class="icon-wrapper"><uni-icons type="search" size="16" @click="showHQCCheckItemSelector"></uni-icons></view> </view> <view class="detail editable"> <view style="flex-shrink: 0;"><text>检验仪器:</text></view> <input type="text" :value="checkItem.HInspectInstruMentName" disabled="" /> <view class="icon-wrapper"><uni-icons type="search" size="16" @click="showInspectInstruMentSelector"></uni-icons></view> </view> <view class="detail editable"> <view><text>结论:</text></view> <view style="width: 4em; "> {{ checkItem.HResult == 1?"合格":"不合格" }} </view> <view> <switch style="width: 2em; transform:scale(0.7);" :checked="checkItem.HResult == 1" @change="HResultChange(checkItem.num, $event)" /> </view> </view> <view class="detail editable"> <view style="flex-shrink: 0;"><text>分析方法:</text></view> <picker :range="arrayAnalysisMethod" range-key="name" @change="HAnalysisMethodChange(checkItem.num, $event)"> <input disabled :value="getAnalysisMethodDisplay(checkItem.HAnalysisMethod)" placeholder="请选择" /> <view class="picker-overlay"></view> </picker> </view> <view class="detail editable"> <view style="flex-shrink: 0;"><text>重点检查:</text></view> <view> <switch type="checkbox" style="transform:scale(0.7);" :checked="checkItem.HKeyInspect" @change="HKeyInspectChange(checkItem.num, $event)" /> </view> </view> <view class="detail" v-if="checkItem.HQCStd"> <text>检验标准:</text>{{checkItem.HQCStd}} </view> <view class="detail" v-if="checkItem.HUnit"> <text>单位:</text>{{checkItem.HUnit}} </view> <view class="detail" v-if="checkItem.HQCStd"> <text>检验值:</text>{{checkItem.HQCStd}} </view> <view class="detail" v-if="checkItem.HQCNote"> <text>检验记录:</text>{{checkItem.HQCNote}} </view> <view class="detail" v-if="checkItem.HTargetVal"> <text>目标值:</text>{{checkItem.HTargetVal}} </view> <view class="detail" v-if="checkItem.HUpLimit"> <text>上限值:</text>{{checkItem.HUpLimit}} </view> <view class="detail" v-if="checkItem.HDownLimit"> <text>下限值:</text>{{checkItem.HDownLimit}} </view> <view class="detail" v-if="checkItem.HMax"> <text>最大值:</text>{{checkItem.HMax}} </view> <view class="detail" v-if="checkItem.HMin"> <text>最小值:</text>{{checkItem.HMin}} </view> <view class="detail" v-if="checkItem.HAvg"> <text>平均值:</text>{{checkItem.HAvg}} </view> </view> <view class="more"> <view class="part" style="color: #da0000;" @tap.stop="removeCheckItem(checkItem)"> <uni-icons type="trash" style="color: #da0000;margin-right: 10rpx;" size="18"></uni-icons>删除 </view> </view> </uni-card> </view> </view> <!-- 抽样检验 呈现 --> <view v-if="subTabSelected == 2"> <view class="over" v-if="!checkItems || getObjLength(checkItems) == 0">暂无数据</view> <view class="list" v-else> <uni-card v-for="SamplingItem in checkItems" :key="SamplingItem.num"> <view class="card-detail"> <view class="detail"> <text>序号:</text>{{SamplingItem.num}} </view> <view class="detail editable"> <text>检验项目:</text>{{SamplingItem.HQCCheckItemName}} </view> <view style="width: 100%; height: 1px; border-bottom: 1px solid #e3e3e3;"></view> <view class="detail editable" style="width: 100%;"> <view style="flex-shrink: 0;"><text>抽样方案:</text></view> <input type="text" :value="SamplingItem.HSampleSchemeName" disabled /> <view class="icon-wrapper"><uni-icons type="search" size="16" @click="showHSampleSchemeNameSelector(SamplingItem)"></uni-icons></view> </view> <view class="detail editable"> <text>抽样类型:</text>{{SamplingItem.HSamplingType}} </view> <view class="detail editable"> <text>检验水平:</text>{{SamplingItem.HInspectionLevel}} </view> <view class="detail editable"> <text>严格度:</text>{{SamplingItem.HStrictness}} </view> <view class="detail editable"> <text>AQL:</text>{{SamplingItem.HAQL}} </view> <view style="width: 100%; height: 1px; border-bottom: 1px solid #e3e3e3;"></view> <view class="detail editable"> <text>样本量:</text>{{SamplingItem.HSampleQty}} </view> <view class="detail editable"> <text>允许数:</text>{{SamplingItem.HAcceptQty}} </view> <view class="detail editable"> <text>拒绝数:</text>{{SamplingItem.HRejectQty}} </view> <view class="detail editable"> <text>样本不合格数:</text>{{SamplingItem.HSampleUnRightQty}} </view> <view class="detail editable"> <text>样本破坏数:</text>{{SamplingItem.HSampleDamageQty}} </view> <view class="detail editable"> <text>检验结果:</text>{{SamplingItem.HInspectResultToSee}} </view> </view> </uni-card> </view> </view> <!-- 检测值 呈现 --> <view v-else v-for="item in InspectModules" :key="item.id"> <view v-if="subTabSelected == item.id"> <InspectValueTemplateVue :bind-key="item.id" :bind-data="{data: checkItems[item.checkItemId], list: InspectValues[item.checkItemId]}" @update="InspectValueUpdate"></InspectValueTemplateVue> </view> </view> </view> </view> <view style="height: 120rpx;"></view> <view class="bottom-btn"> <button class="btn-a" size="mini" @tap="submit">提交</button> <view style="flex: 1;"></view> <button class="btn-a" size="mini" @tap="addNew">新增</button> <button class="btn-c" size="mini" @tap="goBack">退出</button> </view> <SampleSchemePopupVue ref="sampleSchemePopup" @update="SampleSchemeComplete" :bindKey="currentChechItemIDCache"> </SampleSchemePopupVue> </view> </template> <script> import dayjs from 'dayjs' import { CommonUtils } from '../../../utils/common' import InspectValueTemplateVue from '@/components/ZLGL/InspectValueTemplate.vue' import SampleSchemePopupVue from '@/components/ZLGL/SampleSchemePopup.vue' import { getUserInfo } from '../../../utils/auth' export default { components: { InspectValueTemplateVue, SampleSchemePopupVue }, computed: { judgeConclusion: { get() { return true } } }, data() { return { operationType: 1, linterid: 0, mainTabSelected: 1, subTabSelected: 1, // 当前操作的检验单ID缓存 currentChechItemIDCache: -1, // 检验方案 arrayAnalysisMethod: [{ value: 1, name: '定性分析' }, { value: 2, name: '定量分析' }, { value: 3, name: '其他分析' }], ArrayAnalysisMethodValue: [1, 2, 3], // 子表 页签信息 subTabs: { "1": { id: "1", name: "检验项目" }, "2": { id: "2", name: "抽样检验" } }, // 主表属性 hform: { "HBillNo": "", "HInterID": "0", "HDate": dayjs(new Date()).format("YYYY-MM-DD"), "HSourceName": "", "HSourceID": "0", "HShiftsName": "", "HShiftsID": "0", "HICMOBillNo": "", "HICMOInterID": "0", "HICMOEntryID": "1", "HICMOQty": "", "HProcExchBillNo": "", "HProcExchInterID": "0", "HProcExchEntryID": "0", "HProcExchQty": "0", "HMaterNumber": "", "HMaterID": "0", "HMaterName": "", "HFirstCheckEmpName": "", "HFirstCheckEmp":0, "HQCSchemeName": "", "HQCSchemeID": "0", "HBatchNo": "", "HLastResult": true, // 默认合格 "HProcName": "", "HProcID": "0", "HTakeSampleCheckBillNo": "", // 取样单 "HTakeSampleCheckBillID": "0", "HRemark": "", "HErrTreatment": "", // 异常临时处理方案 "HMaker": getUserInfo()["Czymc"] || "", "HChecker": "", "HCloseMan": "", "HMakeDate": dayjs(new Date()).format("YYYY-MM-DDTHH:mm:ss"), "HCheckDate": "", "HCloseDate": "", "HUpDater": "", "HDeleteMan": "", "HUpDateDate": "", "HDeleteDate": "", // "HResult": "2", // "HAnalysisMethod": "1", // "layTableCheckbox": "on", // "HEntryID": "1", // "HQCCheckItemName": "外观", // "HQCCheckItemID": "2", // "HSampleSchemeName": "", // "HSampleSchemeID": "0", // "HSampleQty": "0", // "HSampleDamageQty": "0", // "HSamplingType": "", // "HAcceptQty": "", // "HInspectResultToSee": "", // "HInspectionLevel": "", // "HRejectQty": "", // "HStrictness": "", // "HSampleUnRightQty": "0", // "HAQL": "", // "HSampleQty2": "0", // "HInspectResultToSee2": "", // "HSampleUnRightQty2": "0", // "HResDec": "2", // "HStatus": "1", // "HComparator": "=", // "HUnit": "", // "HUnitID": "0", // "HInspectVal": "", // "HInspectValB": "", // "HTargetVal": "", // "HTargetValB": "", // "HUpLimit": "0", // "HDownLimit": "0", // "HUpOffSet": "", // "HDownOffSet": "", // "HInSpectResult": "", "HMainSourceBillType": "", "HMainSourceInterID": "0", "HMainSourceEntryID": "1", "HMainSourceBillNo": "" }, // 检验项目和抽样检验 值 checkItems: { }, // 检测值模块 InspectModules: { }, // 检测值 InspectValues: { } } }, methods: { async showHSampleSchemeNameSelector(item) { this.currentChechItemIDCache = item.num console.log('this.$refs: ', this.$refs); await this.$nextTick() this.$refs.sampleSchemePopup.showPopup() }, getAnalysisMethodDisplay(val) { console.log('AnalysisMethodVal: ', val); if (val) { return this.arrayAnalysisMethod.find(e => e.value == val).name } return '' }, checkResultChange(event) { console.log('event: ', event); }, // 检验项目新增行 addCheckItem() { let ordinal = this.getObjLength(this.checkItems) + 1 let checkItem = { "num": ordinal, "HQCCheckItemID": "", "HQCCheckItemNumber": "", "HQCCheckItemName": "", "HInspectInstruMentID": "0", "HInspectInstruMentNumber": "", "HInspectInstruMentName": "", "HQCStd": "", "HUnit": "", "HQCNote": "", "HAnalysisMethod": "", "HResult": false, "HMax": "", "HMin": "", "HAvg": "", "HRemark": "", "HKeyInspect": false, "HStatus": 0, "HSampleSchemeID": "", "HUnitID": 0, "HInspectVal": '', "HTargetVal": '', "HUpLimit": '', "HDownLimit": '', "HUpOffSet": '', "HDownOffSet": '', "HSampleDamageQty": 0, "HSampleSchemeName": "", "HSampleQty": 0, "HAcceptQty": 0, "HInspectionLevel": "", "HRejectQty": 0, "HStrictness": "", "HSampleUnRightQty": 0, "HAQL": "", "HSamplingType": "", "HInspectResultToSee": "" } this.$set(this.checkItems, ordinal, checkItem) }, // 检验项目删除行 removeCheckItem(item) { uni.showModal({ title: "温馨提示", content: `确认要删除第${item.num}行吗?删除后不能恢复`, success: (res) => { if (res.confirm) { this.$delete(this.checkItems, item.num) this.refreshCheckItemNum() } } }) }, async refreshCheckItemNum() { await this.$nextTick() // 重排序号 let num = 1 for (let s in this.checkItems) { console.log('s: ', s); this.checkItems[s].num = num num++ } }, getObjLength(obj) { return Object.keys(obj).length }, // 结论修改 HResultChange(id, e) { console.log('e: ', e); this.checkItems[id]["HResult"] = e.detail.value ? 1 : 2 }, // 检验方案修改 HAnalysisMethodChange(id, e) { console.log('e: ', e); this.checkItems[id]["HAnalysisMethod"] = this.arrayAnalysisMethod[e.detail.value]["value"] }, // 重点检查修改 HKeyInspectChange(id, e) { console.log('e: ', e); this.checkItems[id]["HKeyInspect"] = e.detail.value }, // 检验方案选择结束 async SampleSchemeComplete(e) { console.log('SampleSchemeRet: ', e); for (var key in e["retVal"]) { let data = e["retVal"][key] Object.assign(this.checkItems[key], { "HSampleSchemeID": data["hmainid"], "HSampleSchemeNumber": data["抽样方案代码"], "HSampleSchemeName": data["抽样方案名称"], "HSampleQty": data["样本量"] || 0, "HAcceptQty": data["允许数"] || 0, "HInspectionLevel": data["检验水平"], "HRejectQty": data["拒绝数"] || 0, "HStrictness": data["严格度"], "HSampleUnRightQty": data["样本不合格数"] || 0, "HAQL": data["AQL"], "HSamplingType": data["抽样类型"], "HInspectResultToSee": data["检验结果"], "HUpLimit": data["上限值"] || 0, "HDownLimit": data["下限值"] || 0, "HSampleDamageQty": data["样本破坏数"] || 0 }) await this.$nextTick() this.$refs.sampleSchemePopup.exit() this.setInspectValModule(this.checkItems[key]) } }, setInspectValModule(checkItem) { // 区分检验值页签和静态页签,检验值页签的id以_开头 this.$set(this.InspectModules, `_${checkItem.num}`, { id: `_${checkItem.num}`, checkItemId: checkItem.num }) console.log(' this.arrayAnalysisMethod: ', checkItem.HAnalysisMethod); let analysisMethodName = this.arrayAnalysisMethod.find(e => e.value == checkItem.HAnalysisMethod).name this.$set(this.subTabs, `_${checkItem.num}`, { id: `_${checkItem.num}`, name: `${analysisMethodName}-${checkItem.HSampleSchemeName}` }) }, InspectValueUpdate(e) { console.log('e: ', e); let { data, list } = e this.checkItems[data.num] = Object.assign(this.checkItems[data.num], data) this.$set(this.InspectValues, `${data.num}`, list) }, async getMaxBillNo() { try { let res = await CommonUtils.doRequest2Sync({ url: "/Web/GetMAXNum", data: { "HBillType": '7505' } }) if (!res) { return } let { data, Message, count } = res.data if (count == 1) { this.hform.HInterID = data[0].HInterID this.hform.HBillNo = data[0].HBillNo } else { throw (Message) } } catch (err) { CommonUtils.showTips({ title: '温馨提示', message: "获取单据号异常: " + err }) } } }, async onLoad(e) { this.operationType = e.operationType || 1 this.linterid = e.linterid || 0 if (this.operationType == 1) { await this.getMaxBillNo() } else if (this.operationType == 2) { } else if (this.operationType == 3) { } } } </script> <style lang="scss"> input { width: inherit; font-size: 26rpx; } .uni-input { padding: 0 } .bill-main-tabs, .bill-sub-tabs { box-sizing: border-box; width: 730rpx; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 20rpx; flex-shrink: 0; overflow-x: auto; border-bottom: 1px solid #ddd; padding: 20rpx 10rpx; white-space: nowrap; view { width: auto; font-size: 26rpx; color: #555; text-align: center; padding: 16rpx 0; } .selected { color: #3a78ff; font-weight: bold; border-bottom: 3px solid #3a78ff; } } .bill-main-content, .bill-sub-content { box-sizing: border-box; padding: 0 10rpx; display: flex; flex-direction: column; .form-item { width: 100%; display: flex; align-items: center; font-size: 26rpx; padding: 6rpx 0; .left { width: 208rpx; text { color: red; font-weight: bold; } } .right { // width: 450rpx; padding: 8rpx 20rpx; font-size: 26rpx; flex: 1; border-radius: 22rpx; border: 1px solid #acacac; } .disabled { border: 1px solid #e4e4e4; background-color: #e4e4e4; } .none-border { border: none; } } } .bottom-btn { box-sizing: border-box; width: 100%; height: 120rpx; position: fixed; bottom: 0; left: 0; background-color: #fff; box-shadow: 0 2rpx 10rpx 2rpx rgba(0, 0, 0, 0.4); padding: 30rpx 40rpx 40rpx 40rpx; display: flex; flex-direction: row; gap: 10rpx; button { border-radius: 50rpx; width: 180rpx; height: 66rpx; line-height: 66rpx; font-size: 28rpx; } .btn-a { background-color: #3A78FF; color: #fff; } .btn-b { background-color: #41a863; color: #fff; } .btn-c { background-color: #acacac; color: #fff; // position: absolute; // right: 120rpx; } .btn-d { background-color: #ff8901; color: #fff; } } .buttons { box-sizing: border-box; width: 100%; display: flex; justify-content: center; padding: 10rpx 0; button { border-radius: 50rpx; width: 180rpx; height: 66rpx; line-height: 66rpx; font-size: 26rpx; } .btn-a { background-color: #acacac; color: #fff; } .btn-b { background-color: #41a863; color: #fff; } .btn-c { background-color: #3a78ff; color: #fff; } } .list { width: 100%; .card-detail { width: 100%; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; line-height: 120%; gap: 10rpx 0; input { font-size: 26rpx; } .detail { // width: 50%; box-sizing: border-box; font-size: 26rpx; color: #555; padding-right: 20rpx; text { color: #999; font-size: 26rpx; } } .editable { width: 50%; display: inline-flex; flex-direction: row; align-items: center; } } } .icon-wrapper { background-color: #3A78FF; border-radius: 100%; width: 40rpx; height: 40rpx; display: flex; justify-content: center; align-items: center; flex-shrink: 0; .uni-icons { color: #fff !important; } } .more { color: #888; font-size: 22rpx; display: flex; border-top: 1px solid #eee; padding-top: 10rpx; .part { width: 100%; text-align: center; } } </style> pages/ZLGL/shoujianjianyan/table.vue
New file @@ -0,0 +1,572 @@ <template> <view class="page" id="pageContent"> <view class="search-condition-zone"> <view class="form-item"> <view class="left"> 日期: </view> <view class="daterange" style="flex: 1;"> <view class="right general"> <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HBeginDate"> <view>{{hform.HBeginDate}}</view> </uni-datetime-picker> </view> <view>—</view> <view class="right general"> <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HEndDate"> <view>{{hform.HEndDate}}</view> </uni-datetime-picker> </view> </view> </view> <view class="form-item"> <view class="left"> 单据号: </view> <view class="right general"> <input type="text" v-model="hform.HBillNo" /> </view> </view> </view> <view class="button-zone"> <button type="default" class="btn-a" size="mini" @tap="cmdAdd">新增</button> <button type="default" class="btn-a" size="mini" @tap="cmdSearch">查询</button> <button type="default" class="btn-c" size="mini" @tap="exit">退出</button> </view> <view class="info-list-zone" id="scroll-content" :style="{height: scrollContentHeight + 'px'}"> <view class="card-item" v-for="(item, index) in listDataShow"> <uni-card :title="item['单据号']" :extra="'日期:' + item['日期'].split('T')[0]" @tap="showDetail = showDetail==index?-1:index"> <view class="card-detail"> <view class="detail" v-if="item['单据类型']"> <text>单据类型:</text>{{item['单据类型']}} </view> <view class="detail" v-if="item['单据状态']"> <text>单据状态:</text>{{item['单据状态']}} </view> <view class="detail" v-if="item['判断结论']"> <text>判断结论:</text>{{item['判断结论']}} </view> <view class="detail" v-if="item['物料代码']"> <text>物料代码:</text>{{item['物料代码']}} </view> <view class="detail" v-if="item['物料名称']"> <text>物料名称:</text>{{item['物料名称']}} </view> <view class="detail" v-if="item['规格型号'].trim()"> <text>规格型号:</text>{{item['规格型号']}} </view> <view class="detail" v-if="item['检验方案'].trim()"> <text>检验方案:</text>{{item['检验方案']}} </view> <view class="detail" v-if="item['规格型号'].trim()"> <text>规格型号:</text>{{item['规格型号']}} </view> </view> <view class="card-detail" v-if="showDetail == index"> <view class="detail" v-if="item['质检员']"> <text>质检员:</text>{{item['质检员']}} </view> <view class="detail" v-if="item['部门']"> <text>部门:</text>{{item['部门']}} </view> <view class="detail" v-if="item['生产订单']"> <text>生产订单:</text>{{item['生产订单']}} </view> <view class="detail" v-if="item['工序流转卡号']"> <text>工序流转卡号:</text>{{item['工序流转卡号']}} </view> <view class="detail" v-if="item['生产资源名称']"> <text>生产资源名称:</text>{{item['生产资源名称']}} </view> <view class="detail" v-if="item['创建人']"> <text>创建人:</text>{{item['创建人']}} </view> <view class="detail" v-if="item['审核人']"> <text>审核人:</text>{{item['审核人']}} </view> <view class="detail" v-if="item['组织名称']"> <text>组织名称:</text>{{item['组织名称']}} </view> <view class="detail" v-if="item['备注']"> <text>备注:</text>{{item['备注']}} </view> <view class="detail" v-if="item['源单号']"> <text>源单号:</text>{{item['源单号']}} </view> <view class="detail" v-if="item['制单日期']"> <text>制单日期:</text>{{item['制单日期']}} </view> <view class="detail" v-if="item['审核日期']"> <text>审核日期:</text>{{item['审核日期']}} </view> </view> <view class="more" v-if="showDetail == index && operations != index"> <view class="part" style="border-right: 1px solid #eee;"> <uni-icons type="top" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>收起 </view> <view class="part" @tap.stop="operations = operations==index?-1:index"> <uni-icons type="more-filled" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>操作 </view> </view> <view class="more" v-if="showDetail != index && operations != index"> <view class="part" style="border-right: 1px solid #eee;"> <uni-icons type="bottom" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>更多信息 </view> <view class="part" @tap.stop="operations = operations==index?-1:index"> <uni-icons type="more-filled" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>操作 </view> </view> <view class="op" v-if="operations == index"> <button class="op3" size="mini" plain @tap.stop="edit(item)">编辑</button> <button class="op3" size="mini" plain @tap.stop="audit(item, 0)" v-if="!listDataShow[index]['审核人']">审核</button> <button class="op3" size="mini" plain @tap.stop="audit(item, 1)" v-if="listDataShow[index]['审核人']">反审核</button> <button class="op4" size="mini" plain @tap.stop="del(item)">删除</button> <button class="op5" size="mini" plain @tap.stop="operations = -1">取消操作</button> </view> </uni-card> </view> <view class="over" v-if="listDataShow.length == 0">暂无数据</view> </view> <view class="pagination-zone" id="pagination-zone"> <uni-pagination show-icon :page-size="paginationMeta.pageSize" :total="paginationMeta.total" :current="paginationMeta.current" @change="onPaginationChangeHandler"></uni-pagination> </view> </view> </template> <script> import { CommonUtils } from '@/utils/common' import { getUserInfo } from '@/utils/auth' import dayjs, { Dayjs } from 'dayjs' export default { data() { return { navHeight: 0, scrollTop: 0, showDetail: -1, operations: -1, hform: { HBeginDate: dayjs(new Date).subtract(30, 'd').format('YYYY-MM-DD'), HEndDate: dayjs(new Date).format('YYYY-MM-DD'), HBillNo: '' }, paginationMeta: { current: 1, total: 0, pageSize: 30, }, pageMeta: { scrollContentTop: 0, bottomBtnTop: 0, }, listData: [], listDataShow: [], } }, computed: { scrollContentHeight: { get() { return this.pageMeta.bottomBtnTop - this.pageMeta.scrollContentTop } } }, methods: { exit() { uni.navigateBack() }, cmdAdd() { uni.navigateTo({ url: "/pages/ZLGL/shoujianjianyan/form?operationType=1" }) }, async cmdSearch() { let sWhere = '' if (this.hform.HBeginDate != "" && this.hform.HEndDate != "") { sWhere += " and CONVERT(varchar(100),日期, 23) between '" + this.hform.HBeginDate + "' and '" + this.hform.HEndDate + "' "; } if (this.hform.HBillNo != "") { sWhere += " and 单据号 like '%" + this.hform.HBillNo + "%'" } try { let res = await CommonUtils.doRequest2Sync({ url: '/QC_POStockInCheckBill/GetPOStockInCheckBill', data: { "sWhere": sWhere, "user": getUserInfo()["Czymc"] }, }) if (!res) { return } let { data, count, Message } = res.data if (count > 0) { this.listData = data this.paginationMeta.total = data.length this.onPaginationChangeHandler({ current: 1 }) } else { uni.showToast({ icon: 'none', title: Message }) } } catch (err) { console.warn(err); uni.showToast({ title: '接口请求失败:' + err, icon: 'none' }) } }, async onPaginationChangeHandler({ current }) { this.listDataShow = this.listData.slice((current - 1) * this.paginationMeta.pageSize, current * this.paginationMeta.pageSize) }, async audit(item, mode) { console.log('审核单据: ',item); try{ let res = await CommonUtils.doRequest2Sync({ method: 'GET', url: 'QC_POStockInCheck_ValueTable/QC_POStockInCheckValue', data: { HInterID: item["hmainid"], IsAudit: mode, CurUserName: getUserInfo()["Czymc"] } }) if(!res) { return } let {count, data, Message} = res.data if(count == 1) { CommonUtils.showTips({ message: `${item["审核人"]?'反审核':'审核'}成功` }) this.$forceUpdate() setTimeout(() => { this.cmdSearch() }, 2000) }else { CommonUtils.showTips({ title: '温馨提示', message: `单据${item["审核人"]?'反审核':'审核'}失败: ${Message}` }) } }catch(err) { CommonUtils.showTips({ title: '温馨提示', message: `单据${item["审核人"]?'反审核':'审核'}错误: ${err}` }) } }, async del(item) { console.log("delItem: ", item); uni.showModal({ title: '提示', content: '确认要删除记录?删除后不能恢复', success: async (res) => { if (res.confirm) { console.log('用户点击确定'); try { let res = await CommonUtils.doRequest2Sync({ url: '/Sc_MouldConkBookBill/DeltetMouldConkBookBill', data: { "HInterID": item.hmainid, "user": getUserInfo()["Czymc"] } }) if (!res) { return } let { count, code, Message } = res.data if (count == 0) { return uni.showModal({ title: '错误提示', content: `删除错误: ${Message}`, showCancel: false }) } uni.showToast({ title: '删除成功', icon: 'none' }) this.cmdSearch() } catch (err) { uni.showModal({ title: '错误提示', content: `接口请求失败: ${err}`, showCancel: false }) } } }, }) }, edit(item) { console.log("editItem:", item) uni.navigateTo({ url: `/pages/ZLGL/shoujianjianyan/form?operationType=2&linterid=${item.hmainid}` }) } }, onLoad() { this.$nextTick(() => { this.cmdSearch() }) }, onReady() { // #ifndef MP-WEIXIN let query = uni.createSelectorQuery().in(this) query.select("#scroll-content").boundingClientRect((data) => { this.pageMeta.scrollContentTop = data.top }).exec() query.select("#pagination-zone").boundingClientRect((data) => { this.pageMeta.bottomBtnTop = data.top }).exec() // #endif // #ifdef MP-WEIXIN // 微信不支持 uni.createSelectorQuery().in(this) // #endif }, } </script> <style lang="scss" scoped> .page { box-sizing: border-box; display: flex; flex-direction: column; gap: 20rpx; padding: 20rpx 0; position: relative; .button-zone { height: auto; box-sizing: border-box; padding-top: 20rpx; display: flex; flex-direction: row; justify-content: space-between; flex-wrap: wrap; button { border-radius: 50rpx; width: 180rpx; height: 66rpx; line-height: 66rpx; font-size: 28rpx; } .btn-a { background-color: #3a78ff; color: #fff; } .btn-c { background-color: #ff5722; color: #fff; } } .search-condition-zone { height: auto; box-sizing: border-box; padding: 0 60rpx; display: flex; flex-direction: column; gap: 20rpx; .form-item { display: flex; flex-direction: row; gap: 20rpx; align-items: center; font-size: 28rpx; .left { width: 4rem; } .right { flex: 1; padding: 8rpx 16rpx; .search { width: 28rpx; height: 28rpx; } input { font-size: 28rpx; } .uni-combox { padding: 0; margin: 0; ::v-deep .uni-combox__input { font-size: 28rpx; height: auto; } } } .general { border-radius: 22rpx; border: 1px solid #acacac; } .disabled { border-radius: 22rpx; border: 1px solid #e4e4e4; background-color: #e4e4e4; } } } .info-list-zone { overflow-y: auto; .card-item { .card-detail { width: 100%; display: flex; flex-wrap: wrap; justify-content: space-between; line-height: 120%; .detail { // width: 50%; font-size: 26rpx; margin-bottom: 12rpx; color: #555; margin-right: 20rpx; text { color: #999; font-size: 26rpx; } } } } } .daterange { display: flex; flex-direction: row; gap: 10rpx; justify-content: center; align-items: center; } .more { color: #888; font-size: 24rpx; display: flex; border-top: 1px solid #eee; padding-top: 20rpx; .part { width: 50%; text-align: center; } } .op { display: flex; justify-content: space-between; gap: 20rpx; margin-top: 20rpx; flex-wrap: wrap; align-content: flex-start; button { margin: 0; flex-shrink: 0; padding: 0; width: 150rpx; flex-basis: 150rpx; font-size: 25rpx; } .op1 { border: 1px solid #41a863; color: #41a863; } .op2 { border: 1px solid #d98d00; color: #d98d00; } .op3 { border: 1px solid #3a78ff; color: #3a78ff; } .op4 { border: 1px solid #da0000; color: #da0000; } .op5 { border: 1px solid #888; color: #888; } } .pagination-zone { position: fixed; bottom: 0; box-sizing: border-box; background-color: #fff; box-shadow: 0 2rpx 10rpx 2rpx rgba(0, 0, 0, 0.4); padding: 20rpx 40rpx 20rpx 40rpx; display: flex; flex-direction: column; gap: 20rpx; justify-content: space-between; width: 100%; } } </style> pages/index/tab2.vue
@@ -317,6 +317,20 @@ url: '/pages/weixiujilu/form', id: 40, hidden: false, }, { img: '../../static/icon/icon13.png', text: '首件检验单缓存', url: '/pages/ZLGL/shoujianjianyan/table', id: 41, hidden: false, }, { img: '../../static/icon/icon13.png', text: '首件检验单', url: '/pages/ZLGL/shoujianjianyan/form?operationType=1', id: 42, hidden: false, } ] } pages/zhijiediaobo/table.vue
@@ -2,7 +2,7 @@ <view class="content"> <view class="tabs"> <view :class="tabs == 0 ? 'on':''" @tap="changeTab(0)">缓存列表</view> <view :class="tabs == 1 ? 'on':''" @tap="changeTab(1)">已校验列表</view> <view :class="tabs == 1 ? 'on':''" @tap="changeTab(1)">已上传列表</view> </view> <view style="width: 100%;height: 16rpx;background-color: #e5e5e5;"></view>