diff --git a/common/style/layout.styl b/common/style/layout.styl index 5ecaf88..3864121 100644 --- a/common/style/layout.styl +++ b/common/style/layout.styl @@ -14,9 +14,9 @@ uni-button:after { /** iconfont */ @font-face { font-family: 'iconfont'; - src: url('@/static/iconfont/iconfont.woff2?t=1665454521636') format('woff2'), - url('@/static/iconfont/iconfont.woff?t=1665454521636') format('woff'), - url('@/static/iconfont/iconfont.ttf?t=1665454521636') format('truetype'); + src: url('@/static/iconfont/iconfont.woff2?t=1787635254843') format('woff2'), + url('@/static/iconfont/iconfont.woff?t=1787635254843') format('woff'), + url('@/static/iconfont/iconfont.ttf?t=1787635254843') format('truetype'); } .iconfont { font-family: "iconfont" !important; @@ -721,3 +721,262 @@ uni-button[disabled]:not([type]) { padding: 20rpx 0 19rpx 0; box-shadow: 0 0 20rpx 0 rgba(160,160,160,0.7); } + +/** + * 呼叫套轴 + */ +.add_content { + display: flex; + flex-direction: column; + gap: 20rpx; + width: 100%; + height: 100%; + padding: calc(var(--status-bar-height) + 108rpx) 15rpx 114rpx 14rpx; +} +.filter-card { + background-color: #fff; + border-radius: 4rpx; + padding: 14rpx; + box-shadow: 0px 3px 3px 0px rgba(160,160,160,0.20); + flex: none; +} +.plan-panel { + background-color: #fff; + border-radius: 4rpx; + box-shadow: 0px 3px 3px 0px rgba(160,160,160,0.20); + flex: 1; + min-height: 0; + display: flex; + flex-direction: column; + overflow: hidden; +} +.filter-head {} +.filter-title { + font-size: 30rpx; + line-height: 30rpx; + color: #23272f; + font-weight: 700; + gap: 14rpx; +} +.filter-title text { + display: block; + width: 8rpx; + height: 32rpx; + border-radius: 8rpx; + background-color: #f36b2a; +} +.icon_down { + font-size: 30rpx; + line-height: 30rpx; + color: #f36b2a; + padding: 18rpx; + border-radius: 50%; + background-color: #fff3eb; + transition: .2s; +} +.icon_up { + transform: rotate(180deg); +} +.filter-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 16rpx; + margin-top: 16rpx; +} +.filter_field { + width: 100%; + margin-bottom: 10rpx; +} +.filter-field-full { + grid-column: 1 / -1; +} +.filt_label { + font-size: 24rpx; + line-height: 24rpx; + color: #323232; + margin: 0 0 8rpx 4rpx; +} +.filt_input_wraper { + width: 100%; + margin: 0; +} +.panel-head { + padding: 14rpx 14rpx 18rpx; + border-bottom: 1px solid #f0f1f3; + flex: none; +} +.icon-shuaxin-wrap text { + font-size: 28rpx; + line-height: 28rpx; + color: #f36b2a; +} +.icon_shuaxin { + font-size: 32rpx; + line-height: 32rpx; + color: #f36b2a; + transition: .2s; +} +.stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 14rpx; + margin-top: 20rpx; +} +.stat { + padding: 18rpx 14rpx; + border-radius: 18rpx; + background: #f7f8fa; +} +.stat text { + font-size: 22rpx; + color: #7b8491; +} +.stat.primary { + background-color: #fff3eb; +} +.stat.primary .stat_num { + color: #f36b2a; +} +.stat_num { + font-size: 40rpx; + line-height: 1.1; + color: #23272f; + font-weight: 700; +} +.list-toolbar { + padding: 16rpx 14rpx 10rpx; + font-size: 24rpx; + color: #7b8491; +} +.seg { + background: #f1f2f4; + border-radius: 14rpx; + padding: 4rpx; +} +.seg button { + border: 0; + background: transparent; + color: #69727e; + border-radius: 12rpx; + padding: 10rpx 18rpx; + font-size: 24rpx; + line-height: 34rpx; +} +.seg button.on { + background: #fff; + color: #f36b2a; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, .09); +} +.plan-list { + flex: 1; + min-height: 0; + overflow: auto; + padding: 8rpx 14rpx 24rpx; + overscroll-behavior: contain; +} +.list_empty { + height: 100%; + display: grid; + place-items: center; + text-align: center; +} +.icon_local { + font-size: 40rpx; + color: #b5bbc2; + margin-bottom: 10rpx; +} +.icon_local text { + color: #7b8491; + font-size: 26rpx; +} +.plan-item{ + background:#fff; + border:1px solid #e8ebef; + border-radius:20rpx; + margin-bottom:16rpx; + overflow:hidden; +} +.plan-main{ + padding:20rpx; + display:flex; + justify-content:space-between; + align-items:flex-start; + gap:16rpx; +} +.plan-left{ + flex:1; +} +.plan-code{ + font-size:28rpx; + font-weight:bold; +} +.plan-sub{ + margin-top:10rpx; + font-size:24rpx; + color:#7b8491; + display:flex; + flex-wrap:wrap; + gap:10rpx 24rpx; +} +.plan-right{ + display:flex; + flex-direction:column; + align-items:flex-end; + gap:8rpx; +} +.status{ + font-size:22rpx; + padding:8rpx 14rpx; + border-radius:24rpx; +} +.status.fitted{ + color:#26a269; + background:#eaf8f1; +} +.status.waiting{ + color:#c27408; + background:#fff5df; +} +.expand-btn { + font-size:22rpx; + color:#9aa1aa; + display:flex; + align-items:center; + gap:8rpx; +} +.expand-btn .iconfont { + font-size:18rpx; + transition: transform 0.2s; +} +.expand-btn .icon‑rotate { + transform: rotate(180deg); +} +.plan-details{ + display:none; + background:#fafbfc; + border-top:1px dashed #e3e6e9; + padding:18rpx 24rpx; + font-size:24rpx; + color:#59636f; + line-height:1.8; + +} +.plan-details text { + display: block; +} +.plan-item.open .plan-details{ + display: grid; + grid-template-columns: 1fr 1fr; + gap: 6rpx 20rpx; +} +.spin-icon { + animation: rotateSpin 1s linear infinite; +} +@keyframes rotateSpin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/manifest.json b/manifest.json index 8fc12cc..d0194b4 100644 --- a/manifest.json +++ b/manifest.json @@ -2,8 +2,8 @@ "name" : "海亮铜箔", "appid" : "__UNI__3A002CD", "description" : "海亮铜箔二期手持系统", - "versionName" : "1.4.7", - "versionCode" : 147, + "versionName" : "1.4.8", + "versionCode" : 148, "transformPx" : false, /* 5+App特有相关 */ "app-plus" : { diff --git a/pages/SecondPhase/slitting/CallPaperShaft.vue b/pages/SecondPhase/slitting/CallPaperShaft.vue index b82505e..10d5f88 100644 --- a/pages/SecondPhase/slitting/CallPaperShaft.vue +++ b/pages/SecondPhase/slitting/CallPaperShaft.vue @@ -2,59 +2,127 @@ - - - - 区域 - - + + + + 作业条件 + + + + + + 区域 + + + + + + 位置 + + + + + + 左管 + + + + + + 右管 + + + + + + 尺寸 + + + + + + 代数 + + + + + + 数量 + + + + - - - 位置 + + + + + 呼叫计划 + + + +  刷新 + + - - + + + {{statTotal}} + 呼叫总数 + + + {{statFitted}} + 已套轴 + + + {{statWaiting}} + 待套轴 + - - 左管 - - + + {{resultText}} + + + + - - 右管 - - - - - - - 尺寸 - - - - - - - - 代数 - - - - - - - 数量 - - - + + + + + + {{ item.paper_tube_or_FRP === '1' ? item.paper_tube_description : item.frp_description }} + + 管芯尺寸 · {{ item.qzz_size }} + 管芯代数 · {{ item.qzz_generation }} + + + + + {{ item.status === '01' ? '待套轴' : '已套轴'}} + + + {{ item._expand ? '收起明细' : '查看明细' }} + + + + + + 呼叫时间:{{ item.call_time }} + 管芯重量:{{ item.paper_weight }} + 是否套轴完成:{{ item.is_child_tz_ok === 1 ? '是' : '否' }} + + + + +
请先选择位置
系统将加载该位置的呼叫计划
@@ -71,7 +139,7 @@ import SearchBox from '@/components/SearchBox.vue' import NumberInput from '@/components/NumberInput.vue' import {queryProductArea, queryDeviceByarea} from '@/utils/getData2.js' - import {slitXnplan, slitXnarea, paperQueryPaperMaterial} from '@/utils/getData3.js' + import {slitXnplan, slitXnarea, paperQueryPaperMaterial, getBindXnPlan} from '@/utils/getData3.js' export default { components: { NavBar, @@ -81,6 +149,9 @@ data() { return { title: '', + collapse: false, + state: 'all', + refreshing: false, options1: [], index1: '', options2: [], @@ -96,15 +167,50 @@ upR: '', qty: null, disabled: false, - disabled1: false + disabled1: false, + planList: [] }; }, + computed: { + resultText() { + if (!this.index2) { + return '选择位置后加载' + } + const posItem = this.options2.find(o => o.value === this.index2) + const posLabel = posItem ? posItem.text : this.index2 + + const list = this.planList + return `${posLabel} · 共 ${list.length} 个` + }, + filteredPlanList() { + if (this.state === 'all') { + return this.planList + } else if (this.state === '01') { + return this.planList.filter(p => p.status === '01') + } else if (this.state === '02') { + return this.planList.filter(p => p.status !== '01') + } + return [] + }, + statTotal() { + return this.planList.length + }, + statWaiting() { + return this.planList.filter(p => p.status === '01').length + }, + statFitted() { + return this.statTotal - this.statWaiting + } + }, onLoad (options) { this.title = options.title this._queryProductArea() this._paperQueryPaperMaterial() }, methods: { + toCollapse () { + this.collapse = !this.collapse + }, /** 生产区域下拉框查询 */ async _queryProductArea () { let res = await queryProductArea() @@ -126,6 +232,20 @@ this.options2 = [] } }, + async _getBindXnPlan (e) { + try { + let res = await getBindXnPlan(e) + if (res && res.status === 200) { + this.planList = res.plans.map(p=>{ + return { ...p, _expand:false } + }) + } else { + this.planList = [] + } + } catch (e) { + this.planList = [] + } + }, selectChange1(e) { this.index1 = e if (e) { @@ -136,6 +256,11 @@ }, selectChange2(e) { this.index2 = e + if (e) { + this._getBindXnPlan(e) + } else { + this.planList = [] + } }, selectChange3(e) { this.index3 = e @@ -157,6 +282,9 @@ this.qty = null this.disabled = false this.disabled1 = false + this.state = 'all', + this.refreshing = false + this.planList = [] }, async _slitXnplan () { this.disabled = true @@ -181,6 +309,9 @@ title: res.message, icon: 'none' }) + if(this.index2){ + this._getBindXnPlan(this.index2) + } } catch (e) { this.disabled = false } @@ -216,6 +347,21 @@ }, showSelector2 () { this.newaxis2 = this.axis + }, + handleRefresh() { + if (!this.index2) { + uni.showToast({ title:'请先选择位置', icon:'none' }) + return + } + if(this.refreshing) return + + this.refreshing = true + this._getBindXnPlan(this.index2).finally(()=>{ + this.refreshing = false + }) + }, + toggleExpand(item) { + this.$set(item, '_expand', !item._expand) } } } diff --git a/static/iconfont/iconfont.ttf b/static/iconfont/iconfont.ttf index b68f8e9..ee1c07d 100644 Binary files a/static/iconfont/iconfont.ttf and b/static/iconfont/iconfont.ttf differ diff --git a/static/iconfont/iconfont.woff b/static/iconfont/iconfont.woff index 655b9ec..d4d1922 100644 Binary files a/static/iconfont/iconfont.woff and b/static/iconfont/iconfont.woff differ diff --git a/static/iconfont/iconfont.woff2 b/static/iconfont/iconfont.woff2 index c634af4..226066c 100644 Binary files a/static/iconfont/iconfont.woff2 and b/static/iconfont/iconfont.woff2 differ diff --git a/utils/getData3.js b/utils/getData3.js index 536a5e0..1cc605a 100644 --- a/utils/getData3.js +++ b/utils/getData3.js @@ -392,6 +392,12 @@ export const urgentPlan = (data) => request({ url:'api/pda/slitter/urgentPlan', data: data }) +export const getBindXnPlan = (location) => request({ + url:'api/pda/slitter/get-bind-xn-plan', + data: { + location: location + } +}) /** * 空轴回库(一期分切管理) */ diff --git a/utils/mork2.js b/utils/mork2.js index 9e6c927..19d23f6 100644 --- a/utils/mork2.js +++ b/utils/mork2.js @@ -357,4 +357,34 @@ export const getUnbindPlan = () => { } ] return res +} +export const getBindXnPlan = () => { + let res = { + "status" : 200, + "plans" : [ + { + "paper_tube_description": 'JH-20260824-018', + "paper_tube_model": null, + "FRP_material": null, + "FRP_description": 'FRP_description', + "paper_tube_or_FRP": 1, + "status": '01', + "is_child_tz_ok": 1, + "call_time": '15:20', + "paper_weight": '20' + }, + { + "paper_tube_description": 'JH-20260824-018', + "paper_tube_model": null, + "FRP_material": null, + "FRP_description": 'FRP_description', + "paper_tube_or_FRP": null, + "status": '04', + "is_child_tz_ok": 1, + "call_time": '15:20', + "paper_weight": '20' + } + ] + } + return res } \ No newline at end of file