Showing
4 changed files
with
410 additions
and
99 deletions
| ... | ... | @@ -96,6 +96,13 @@ |
| 96 | 96 | "navigationBarBackgroundColor": "#ffffff", |
| 97 | 97 | "navigationBarTextStyle": "black" |
| 98 | 98 | } |
| 99 | + }, { | |
| 100 | + "path": "pages/credit_manage/detail", | |
| 101 | + "style": { | |
| 102 | + "navigationBarTitleText": "查看客户资信", | |
| 103 | + "navigationBarBackgroundColor": "#ffffff", | |
| 104 | + "navigationBarTextStyle": "black" | |
| 105 | + } | |
| 99 | 106 | }, |
| 100 | 107 | { |
| 101 | 108 | "path": "pages/flow/myflow", | ... | ... |
| ... | ... | @@ -103,8 +103,7 @@ |
| 103 | 103 | </uni-list-item> |
| 104 | 104 | |
| 105 | 105 | <!-- 核心人员 --> |
| 106 | - <CorePersonnel mode="add" :dateBase="form.corePersonnelList" @change="onCorePersonnelChange" | |
| 107 | - :options="genderOptions" /> | |
| 106 | + <CorePersonnel mode="add" @change="onCorePersonnelChange" :options="genderOptions" /> | |
| 108 | 107 | |
| 109 | 108 | <view class="title-header"> |
| 110 | 109 | <image class="title-header_icon" src="/static/images/title.png" /> | ... | ... |
| ... | ... | @@ -92,22 +92,15 @@ |
| 92 | 92 | |
| 93 | 93 | <view v-else class="view-list" v-show="!collapsedView"> |
| 94 | 94 | <view v-for="(item, idx) in items" :key="'v-' + idx" class="card"> |
| 95 | - <view class="row"><text class="label">产品名称</text><text class="value">{{ item.productName }}</text> | |
| 96 | - </view> | |
| 97 | - <view class="row"><text class="label">行业</text><text class="value">{{ item.industry }}</text></view> | |
| 98 | - <view class="row"><text class="label">牌号</text><text class="value">{{ item.brand }}</text></view> | |
| 99 | - <view class="row"><text class="label">品质</text><text class="value">{{ item.quality }}</text></view> | |
| 100 | - <view class="row"><text class="label">状态</text><text class="value">{{ item.status }}</text></view> | |
| 101 | - <view class="row"><text class="label">数量</text><text class="value">{{ item.quantity }}</text></view> | |
| 102 | - <view class="row"><text class="label">单价</text><text class="value">{{ formatCurrency(item.unitPrice) | |
| 103 | - }}</text> | |
| 104 | - </view> | |
| 105 | - <view class="row"><text class="label">不含税金额</text><text class="value">{{ | |
| 106 | - formatCurrency(item.amountExcludingTax) | |
| 107 | - }}</text></view> | |
| 108 | - <view class="row"><text class="label">总金额</text><text class="value">{{ formatCurrency(item.totalAmount) | |
| 109 | - }}</text></view> | |
| 110 | - <view class="row"><text class="label">发货日期</text><text class="value">{{ item.orderDate }}</text></view> | |
| 95 | + <view class="row"><text class="label">姓名</text><text class="value">{{ item.name }}</text></view> | |
| 96 | + <view class="row"><text class="label">性别</text><text class="value">{{ getSexName(item) }}</text></view> | |
| 97 | + <view class="row"><text class="label">籍贯</text><text class="value">{{ item.nativePlace }}</text></view> | |
| 98 | + <view class="row"><text class="label">年龄</text><text class="value">{{ item.age }}</text></view> | |
| 99 | + <view class="row"><text class="label">职务</text><text class="value">{{ item.position }}</text></view> | |
| 100 | + <view class="row"><text class="label">手机</text><text class="value">{{ item.mobile }}</text></view> | |
| 101 | + <view class="row"><text class="label">固定电话</text><text class="value">{{ item.phone }}</text></view> | |
| 102 | + <view class="row"><text class="label">邮箱地址</text><text class="value">{{ item.email }}</text></view> | |
| 103 | + <view class="row"><text class="label">现住址</text><text class="value">{{ item.address }}</text></view> | |
| 111 | 104 | </view> |
| 112 | 105 | </view> |
| 113 | 106 | <SingleSelectSheet :visible.sync="sheet.visible" :title="sheet.title" :options="sheet.options" |
| ... | ... | @@ -122,7 +115,6 @@ export default { |
| 122 | 115 | mode: { type: String, default: 'add' }, |
| 123 | 116 | list: { type: Array, default: () => [] }, |
| 124 | 117 | max: { type: Number, default: 8 }, |
| 125 | - dateBase: { type: String, default: '' }, | |
| 126 | 118 | options: { type: Array, default: () => [] } |
| 127 | 119 | }, |
| 128 | 120 | components: { SingleSelectSheet }, |
| ... | ... | @@ -130,7 +122,7 @@ export default { |
| 130 | 122 | return { |
| 131 | 123 | items: [], |
| 132 | 124 | collapsedView: false, |
| 133 | - sheet: { visible: false, title: '请选择产品', options: [], value: '', idx: -1 } | |
| 125 | + sheet: { visible: false, title: '请选择性别', options: [], value: '', idx: -1 } | |
| 134 | 126 | } |
| 135 | 127 | }, |
| 136 | 128 | computed: { |
| ... | ... | @@ -149,12 +141,19 @@ export default { |
| 149 | 141 | }, |
| 150 | 142 | list: { |
| 151 | 143 | handler(v) { |
| 152 | - // const arr = Array.isArray(v) ? v : [] | |
| 153 | - // this.items = arr.map(x => ({ ...this.defaultItem(), ...x, collapsed: true })) | |
| 154 | - this.items = v.map(x => ({ ...this.defaultItem(), ...x, collapsed: true })) | |
| 155 | - console.log('v', v) | |
| 144 | + const arr = Array.isArray(v) ? v : [] | |
| 145 | + const opts = this.selectOptions | |
| 146 | + this.items = arr.map(x => { | |
| 147 | + const it = { ...this.defaultItem(), ...x, collapsed: true } | |
| 148 | + const m = opts.find(o => String(o.value) === String(it.sex)) | |
| 149 | + it.sexName = m ? (m.label || '') : it.sexName | |
| 150 | + return it | |
| 151 | + }) | |
| 156 | 152 | }, |
| 157 | 153 | deep: true |
| 154 | + }, | |
| 155 | + options: { | |
| 156 | + handler() { this.refreshSexNames() } | |
| 158 | 157 | } |
| 159 | 158 | }, |
| 160 | 159 | created() { |
| ... | ... | @@ -165,48 +164,18 @@ export default { |
| 165 | 164 | defaultItem() { |
| 166 | 165 | return { name: '', sex: '', sexName: '', nativePlace: '', age: '', position: '', mobile: '', phone: '', email: '', address: '', collapsed: false } |
| 167 | 166 | }, |
| 168 | - onImmediateChange(idx) { | |
| 169 | - this.$nextTick(() => this.recalculate(idx)) | |
| 170 | - }, | |
| 171 | - toNumber(val) { | |
| 172 | - if (typeof val === 'number') return isNaN(val) ? 0 : val | |
| 173 | - const n = parseFloat(String(val).replace(/[^0-9.\-]/g, '')) | |
| 174 | - return isNaN(n) ? 0 : n | |
| 175 | - }, | |
| 176 | - round(val, digits = 2) { | |
| 177 | - const n = Number(val) | |
| 178 | - if (isNaN(n)) return 0 | |
| 179 | - const m = Math.pow(10, digits) | |
| 180 | - return Math.round(n * m) / m | |
| 181 | - }, | |
| 182 | - onNumberBlur(idx, field, digits) { | |
| 183 | - const it = this.items[idx] | |
| 184 | - if (!it) return | |
| 185 | - const raw = it[field] | |
| 186 | - // 如果为空则保持为空,不自动置为0,仅重新计算依赖字段 | |
| 187 | - if (raw === '' || raw === null || raw === undefined) { | |
| 188 | - this.$set(this.items, idx, it) | |
| 189 | - this.recalculate(idx) | |
| 190 | - return | |
| 191 | - } | |
| 192 | - const num = this.toNumber(raw) | |
| 193 | - const rounded = this.round(num, digits) | |
| 194 | - it[field] = rounded | |
| 195 | - this.$set(this.items, idx, it) | |
| 196 | - this.recalculate(idx) | |
| 197 | - }, | |
| 198 | - formatCurrency(val) { | |
| 199 | - if (val == null || val === '') return '' | |
| 200 | - const num = Number(val) | |
| 201 | - const pre = isNaN(num) ? '' : '¥' | |
| 202 | - const fixed = isNaN(num) ? String(val) : num.toFixed(2) | |
| 203 | - return `${pre}${fixed}` | |
| 167 | + getSexName(item) { | |
| 168 | + const opts = this.selectOptions | |
| 169 | + const v = item && item.sex | |
| 170 | + const m = opts.find(o => String(o.value) === String(v)) | |
| 171 | + return m ? (m.label || '') : ((item && item.sexName) || '') | |
| 204 | 172 | }, |
| 205 | - specOf(item) { | |
| 206 | - const t = [item.thickness, item.thicknessTolPos, item.thicknessTolNeg].filter(Boolean).join('/') | |
| 207 | - const w = [item.width, item.widthTolPos, item.widthTolNeg].filter(Boolean).join('/') | |
| 208 | - const l = [item.length, item.lengthTolPos, item.lengthTolNeg].filter(Boolean).join('/') | |
| 209 | - return [t, w, l].filter(Boolean).join(' × ') | |
| 173 | + refreshSexNames() { | |
| 174 | + const opts = this.selectOptions | |
| 175 | + this.items = (this.items || []).map(it => { | |
| 176 | + const m = opts.find(o => String(o.value) === String(it.sex)) | |
| 177 | + return { ...it, sexName: m ? (m.label || '') : it.sexName } | |
| 178 | + }) | |
| 210 | 179 | }, |
| 211 | 180 | openProductSheet(idx) { |
| 212 | 181 | const opts = this.selectOptions |
| ... | ... | @@ -224,20 +193,6 @@ export default { |
| 224 | 193 | this.sheet.visible = false |
| 225 | 194 | this.emitChange() |
| 226 | 195 | }, |
| 227 | - recalculate(idx) { | |
| 228 | - const TAX_RATE = 0.13 | |
| 229 | - const it = this.items[idx] | |
| 230 | - if (!it) return | |
| 231 | - const qty = this.toNumber(it.quantity) | |
| 232 | - const price = this.toNumber(it.unitPrice) | |
| 233 | - const total = this.round(qty * price, 2) | |
| 234 | - const excl = this.round(total / (1 + TAX_RATE), 2) | |
| 235 | - const next = { ...it, totalAmount: total, amountExcludingTax: excl } | |
| 236 | - this.$set(this.items, idx, next) | |
| 237 | - }, | |
| 238 | - recalculateAll() { | |
| 239 | - for (let i = 0; i < this.items.length; i++) this.recalculate(i) | |
| 240 | - }, | |
| 241 | 196 | onAdd() { |
| 242 | 197 | if (this.items.length >= this.max) return uni.showToast({ title: `最多添加${this.max}个`, icon: 'none' }) |
| 243 | 198 | const obj = this.defaultItem() |
| ... | ... | @@ -261,21 +216,6 @@ export default { |
| 261 | 216 | this.$emit('update:value', out) |
| 262 | 217 | this.$emit('change', out) |
| 263 | 218 | }, |
| 264 | - onDateChange(idx, e) { | |
| 265 | - const it = this.items[idx] | |
| 266 | - if (!it) return | |
| 267 | - const val = typeof e === 'string' ? e : (e && e.detail && e.detail.value) ? e.detail.value : it.orderDate | |
| 268 | - const dateStr = String(val).slice(0, 10) | |
| 269 | - const base = this.dateBase ? new Date(this.dateBase) : null | |
| 270 | - const d = new Date(dateStr) | |
| 271 | - if (base && !isNaN(d.getTime()) && d.getTime() < base.getTime()) { | |
| 272 | - uni.showToast({ title: '发货日期不得早于订货日期', icon: 'none' }) | |
| 273 | - it.orderDate = this.dateBase | |
| 274 | - } else { | |
| 275 | - it.orderDate = dateStr | |
| 276 | - } | |
| 277 | - this.$set(this.items, idx, it) | |
| 278 | - }, | |
| 279 | 219 | toggleViewCollapse() { |
| 280 | 220 | this.collapsedView = !this.collapsedView |
| 281 | 221 | } |
| ... | ... | @@ -424,20 +364,25 @@ export default { |
| 424 | 364 | } |
| 425 | 365 | |
| 426 | 366 | .view-list { |
| 427 | - padding: 24rpx 32rpx; | |
| 367 | + padding: 26rpx 32rpx; | |
| 428 | 368 | background: #ffffff; |
| 429 | 369 | } |
| 430 | 370 | |
| 431 | 371 | .card { |
| 432 | 372 | background: #f3f3f3; |
| 433 | 373 | border-radius: 16rpx; |
| 434 | - padding: 24rpx; | |
| 374 | + padding: 32rpx 44rpx; | |
| 435 | 375 | margin-bottom: 20rpx; |
| 376 | + | |
| 377 | + &:last-child { | |
| 378 | + margin-bottom: 0; | |
| 379 | + } | |
| 436 | 380 | } |
| 437 | 381 | |
| 438 | 382 | .row { |
| 439 | 383 | display: flex; |
| 440 | - margin-bottom: 20rpx; | |
| 384 | + margin-bottom: 24rpx; | |
| 385 | + line-height: 32rpx; | |
| 441 | 386 | } |
| 442 | 387 | |
| 443 | 388 | .row:last-child { |
| ... | ... | @@ -445,15 +390,17 @@ export default { |
| 445 | 390 | } |
| 446 | 391 | |
| 447 | 392 | .label { |
| 448 | - width: 120rpx; | |
| 393 | + width: 180rpx; | |
| 394 | + margin-right: 14rpx; | |
| 449 | 395 | color: rgba(0, 0, 0, 0.6); |
| 450 | 396 | font-size: 28rpx; |
| 451 | 397 | } |
| 452 | 398 | |
| 453 | 399 | .value { |
| 454 | 400 | flex: 1; |
| 455 | - text-align: right; | |
| 456 | 401 | color: rgba(0, 0, 0, 0.9); |
| 457 | 402 | font-size: 28rpx; |
| 403 | + white-space: pre-wrap; | |
| 404 | + word-break: break-all; | |
| 458 | 405 | } |
| 459 | 406 | </style> | ... | ... |
pages/credit_manage/detail.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <view class="page"> | |
| 3 | + <scroll-view class="scroll" scroll-y> | |
| 4 | + <view class="detail-page"> | |
| 5 | + <view class="section"> | |
| 6 | + <text class="row company">{{ form.companyName }}</text> | |
| 7 | + <view :class="['status', `status_${form.status}`]" /> | |
| 8 | + <view class="row"><text class="label">编号</text><text class="value">{{ form.serialNumber }}</text></view> | |
| 9 | + <view class="row"><text class="label">区域</text><text class="value">{{ form.region }}</text></view> | |
| 10 | + <view class="row"><text class="label">企业类型</text><text class="value">{{ getDicName('ENTERPRISE_TYPE', | |
| 11 | + form.enterpriseType, enterpriseTypeOptions) }}</text></view> | |
| 12 | + <view class="row"><text class="label">登记日期</text><text class="value">{{ form.registerDate }}</text></view> | |
| 13 | + </view> | |
| 14 | + | |
| 15 | + <view class="title-header"> | |
| 16 | + <image class="title-header_icon" src="/static/images/title.png" /> | |
| 17 | + <span>基础资料</span> | |
| 18 | + </view> | |
| 19 | + <view class="section"> | |
| 20 | + <view class="row"><text class="label">企业性质</text><text class="value">{{ form.companyNature }}</text></view> | |
| 21 | + <view class="row"><text class="label">单位地址</text><text class="value">{{ form.companyAddress }}</text></view> | |
| 22 | + <view class="row"><text class="label">注册资本</text><text class="value">{{ form.registeredCapital }} 万元</text> | |
| 23 | + </view> | |
| 24 | + <view class="row"><text class="label">账号</text><text class="value">{{ form.bankAccount }}</text></view> | |
| 25 | + <view class="row"><text class="label">账开户行</text><text class="value">{{ form.bankName }}</text></view> | |
| 26 | + <view class="row"><text class="label">税号</text><text class="value">{{ form.taxNumber }}</text></view> | |
| 27 | + <view class="row"><text class="label">注册时间</text><text class="value">{{ form.registrationTime }}</text></view> | |
| 28 | + <view class="row"><text class="label">经营年限</text><text class="value">{{ form.businessYears }}</text></view> | |
| 29 | + <view class="row"><text class="label">经营范围</text><text class="value">{{ form.businessScope }}</text></view> | |
| 30 | + </view> | |
| 31 | + | |
| 32 | + <!-- 核心人员 --> | |
| 33 | + <view class="mgb10"> | |
| 34 | + <CorePersonnel mode="view" :options="genderOptions" :list="form.corePersonnelList" /> | |
| 35 | + </view> | |
| 36 | + | |
| 37 | + <view class="title-header"> | |
| 38 | + <image class="title-header_icon" src="/static/images/title.png" /> | |
| 39 | + <span>资产经营情况</span> | |
| 40 | + </view> | |
| 41 | + <view class="section"> | |
| 42 | + <view class="row"><text class="label">经营场地属性</text><text class="value">{{ form.businessProperty }}</text> | |
| 43 | + </view> | |
| 44 | + <view class="row"><text class="label">占地面积</text><text class="value">{{ form.landArea }} 平方米</text></view> | |
| 45 | + <view class="row"><text class="label">仓储条件</text><text class="value">{{ form.storageConditions }}</text> | |
| 46 | + </view> | |
| 47 | + <view class="row"><text class="label">员工人数</text><text class="value">{{ form.employeeCount }}</text></view> | |
| 48 | + <view class="row"><text class="label">设备属性</text><text class="value">{{ form.equipmentAttributes }}</text> | |
| 49 | + </view> | |
| 50 | + <view class="row"><text class="label">资产评估</text><text class="value">{{ form.assetEvaluation }}</text></view> | |
| 51 | + <view class="row"><text class="label">上年度销售额</text><text class="value">{{ form.lastYearSales }}</text></view> | |
| 52 | + <view class="row"><text class="label">月均销量</text><text class="value">{{ form.monthlyAvgSales }}</text></view> | |
| 53 | + </view> | |
| 54 | + | |
| 55 | + <view class="title-header"> | |
| 56 | + <image class="title-header_icon" src="/static/images/title.png" /> | |
| 57 | + <span>与我司合作</span> | |
| 58 | + </view> | |
| 59 | + <view class="section"> | |
| 60 | + <view class="row"><text class="label">与我司合作时间</text><text class="value">{{ form.cooperationStartDate }}</text> | |
| 61 | + </view> | |
| 62 | + <view class="row"><text class="label">月均操作量</text><text class="value">{{ form.monthlyAvgVolume }}</text> | |
| 63 | + </view> | |
| 64 | + <view class="row"><text class="label">是否口头协议操作</text><text class="value">{{ form.isVerbalAgreement }}</text> | |
| 65 | + </view> | |
| 66 | + <view class="row"><text class="label">是否签订其他协议</text><text class="value">{{ form.otherAgreements }}</text> | |
| 67 | + </view> | |
| 68 | + <view class="row"><text class="label">是否签订长年合同</text><text class="value">{{ form.hasLongTermContract }}</text> | |
| 69 | + </view> | |
| 70 | + <view class="row"><text class="label">合同类型</text><text class="value">{{ form.contractType }}</text></view> | |
| 71 | + <view class="row"><text class="label">是否有过中断及原因</text><text class="value">{{ form.hasInterruption }}</text> | |
| 72 | + </view> | |
| 73 | + </view> | |
| 74 | + | |
| 75 | + <view class="title-header"> | |
| 76 | + <image class="title-header_icon" src="/static/images/title.png" /> | |
| 77 | + <span>办事处意见</span> | |
| 78 | + </view> | |
| 79 | + <view class="section"> | |
| 80 | + <view class="row"><text class="label">建议客户分类</text> | |
| 81 | + <text class="value"> | |
| 82 | + <text | |
| 83 | + :class="[form.suggestedCategory ? 'category' : '', getCategoryClass(getDicName('CUSTOMER_CATEGORY', form.suggestedCategory, categoryOptions))]">{{ | |
| 84 | + getDicName('CUSTOMER_CATEGORY', form.suggestedCategory, categoryOptions) }}</text> | |
| 85 | + </text> | |
| 86 | + </view> | |
| 87 | + <view class="row"><text class="label">授信额度</text><text class="value">{{ form.creditLimit }} 万元</text></view> | |
| 88 | + <view class="row"><text class="label">结算期限</text><text class="value">{{ form.settlementPeriod }}</text></view> | |
| 89 | + <view class="row"><text class="label">加工操作方案</text><text class="value">{{ form.materialSupplyPlan }}</text> | |
| 90 | + </view> | |
| 91 | + <view class="row"><text class="label">调查人</text><text class="value">{{ form.investigatorName }}</text></view> | |
| 92 | + <view class="row"><text class="label">审核主管</text><text class="value">{{ form.supervisorReviewName }}</text> | |
| 93 | + </view> | |
| 94 | + </view> | |
| 95 | + | |
| 96 | + <view class="title-header"> | |
| 97 | + <image class="title-header_icon" src="/static/images/title.png" /> | |
| 98 | + <span>职能核对</span> | |
| 99 | + </view> | |
| 100 | + <view class="section"> | |
| 101 | + <view class="row"><text class="label">年度总销量</text><text class="value">{{ form.annualTotalSales }}</text> | |
| 102 | + </view> | |
| 103 | + <view class="row"><text class="label">主要行业</text><text class="value">{{ form.mainIndustry }}</text></view> | |
| 104 | + <view class="row"><text class="label">年度款料概况</text><text class="value">{{ form.annualMaterialOverview | |
| 105 | + }}</text></view> | |
| 106 | + </view> | |
| 107 | + | |
| 108 | + <view class="title-header"> | |
| 109 | + <image class="title-header_icon" src="/static/images/title.png" /> | |
| 110 | + <span>公司评审</span> | |
| 111 | + </view> | |
| 112 | + <view class="section"> | |
| 113 | + <view class="row"><text class="label">客户分类</text> | |
| 114 | + <text class="value"> | |
| 115 | + <text | |
| 116 | + :class="[form.companySuggestedCategory ? 'category' : '', getCategoryClass(getDicName('CUSTOMER_CATEGORY', form.companySuggestedCategory, categoryOptions))]">{{ | |
| 117 | + getDicName('CUSTOMER_CATEGORY', form.companySuggestedCategory, categoryOptions) }}</text> | |
| 118 | + </text> | |
| 119 | + </view> | |
| 120 | + | |
| 121 | + <view class="row"><text class="label">授信额度</text><text class="value">{{ form.companyCreditLimit }} 万元</text> | |
| 122 | + </view> | |
| 123 | + <view class="row"><text class="label">结算期限</text><text class="value">{{ form.companySettlementPeriod }}</text> | |
| 124 | + </view> | |
| 125 | + <view class="row"><text class="label">加工操作方案</text><text class="value">{{ form.companyMaterialSupplyPlan | |
| 126 | + }}</text></view> | |
| 127 | + <view class="row"><text class="label">复核人</text><text class="value">{{ form.reviewerName }}</text></view> | |
| 128 | + <view class="row"><text class="label">审批人</text><text class="value">{{ form.approverName }}</text></view> | |
| 129 | + </view> | |
| 130 | + | |
| 131 | + | |
| 132 | + </view> | |
| 133 | + </scroll-view> | |
| 134 | + </view> | |
| 135 | +</template> | |
| 136 | + | |
| 137 | +<script> | |
| 138 | +import { getDetailApi } from '@/api/credit_manage.js' | |
| 139 | +import { getDicName } from '@/utils/dic.js' | |
| 140 | +import { getDicByCodeApi } from '@/api/base.js' | |
| 141 | +import CorePersonnel from './corePersonnel.vue' | |
| 142 | + | |
| 143 | +export default { | |
| 144 | + name: 'CreditManageDetail', | |
| 145 | + components: { CorePersonnel }, | |
| 146 | + data() { | |
| 147 | + return { | |
| 148 | + form: {}, | |
| 149 | + enterpriseTypeOptions: [], | |
| 150 | + genderOptions: [], | |
| 151 | + categoryOptions: [], | |
| 152 | + } | |
| 153 | + }, | |
| 154 | + computed: { | |
| 155 | + }, | |
| 156 | + created() { | |
| 157 | + this.loadEnterpriseTypeOptions() | |
| 158 | + this.loadGenderOptions() | |
| 159 | + this.loadCategoryOptions() | |
| 160 | + }, | |
| 161 | + onLoad(query) { | |
| 162 | + const id = (query && (query.id || query.code)) || '' | |
| 163 | + if (id) this.loadDetail(id) | |
| 164 | + }, | |
| 165 | + methods: { | |
| 166 | + async loadDetail(id) { | |
| 167 | + try { | |
| 168 | + const res = await getDetailApi(id) | |
| 169 | + const data = res.data || {} | |
| 170 | + this.form = { ...data } | |
| 171 | + } catch (e) { | |
| 172 | + this.form = {} | |
| 173 | + } | |
| 174 | + }, | |
| 175 | + async loadEnterpriseTypeOptions() { | |
| 176 | + try { | |
| 177 | + const res = await getDicByCodeApi('ENTERPRISE_TYPE') | |
| 178 | + const list = res.data || [] | |
| 179 | + this.enterpriseTypeOptions = Array.isArray(list) ? list : [] | |
| 180 | + } catch (e) { | |
| 181 | + this.enterpriseTypeOptions = [] | |
| 182 | + } | |
| 183 | + }, | |
| 184 | + async loadGenderOptions() { | |
| 185 | + try { | |
| 186 | + const res = await getDicByCodeApi('GENDER_TYPE') | |
| 187 | + const list = res.data || [] | |
| 188 | + this.genderOptions = Array.isArray(list) ? list : [] | |
| 189 | + } catch (e) { | |
| 190 | + this.genderOptions = [] | |
| 191 | + } | |
| 192 | + }, | |
| 193 | + async loadCategoryOptions() { | |
| 194 | + try { | |
| 195 | + const res = await getDicByCodeApi('CUSTOMER_CATEGORY') | |
| 196 | + const list = res.data || [] | |
| 197 | + this.categoryOptions = Array.isArray(list) ? list : [] | |
| 198 | + } catch (e) { | |
| 199 | + this.categoryOptions = [] | |
| 200 | + } | |
| 201 | + }, | |
| 202 | + getDicName, | |
| 203 | + getCategoryClass(categoryName) { | |
| 204 | + if (!categoryName) return '' | |
| 205 | + if (categoryName.includes('A') || categoryName.includes('a')) { | |
| 206 | + return 'category_A' | |
| 207 | + } else if (categoryName.includes('B') || categoryName.includes('b')) { | |
| 208 | + return 'category_B' | |
| 209 | + } else if (categoryName.includes('C') || categoryName.includes('c')) { | |
| 210 | + return 'category_C' | |
| 211 | + } else if (categoryName.includes('D') || categoryName.includes('d')) { | |
| 212 | + return 'category_D' | |
| 213 | + } | |
| 214 | + }, | |
| 215 | + } | |
| 216 | +} | |
| 217 | +</script> | |
| 218 | + | |
| 219 | +<style lang="scss" scoped> | |
| 220 | +.page { | |
| 221 | + display: flex; | |
| 222 | + flex-direction: column; | |
| 223 | + height: 100%; | |
| 224 | +} | |
| 225 | + | |
| 226 | +.scroll { | |
| 227 | + flex: 1; | |
| 228 | + padding: 8rpx 0 144rpx 0; | |
| 229 | +} | |
| 230 | + | |
| 231 | +.detail-page { | |
| 232 | + background: #f3f3f3; | |
| 233 | +} | |
| 234 | + | |
| 235 | +.section { | |
| 236 | + padding: 0 32rpx 32rpx; | |
| 237 | + background: #fff; | |
| 238 | + margin-bottom: 20rpx; | |
| 239 | + position: relative; | |
| 240 | + | |
| 241 | + .status { | |
| 242 | + position: absolute; | |
| 243 | + top: 16rpx; | |
| 244 | + right: 52rpx; | |
| 245 | + width: 180rpx; | |
| 246 | + height: 146rpx; | |
| 247 | + background-repeat: no-repeat; | |
| 248 | + background-size: 100% 100%; | |
| 249 | + background-position: center; | |
| 250 | + | |
| 251 | + &_AUDIT { | |
| 252 | + background-image: url('~@/static/images/dev_manage/status_1.png'); | |
| 253 | + } | |
| 254 | + | |
| 255 | + &_PASS { | |
| 256 | + background-image: url('~@/static/images/dev_manage/status_2.png'); | |
| 257 | + } | |
| 258 | + | |
| 259 | + &_REFUSE { | |
| 260 | + background-image: url('~@/static/images/dev_manage/status_3.png'); | |
| 261 | + } | |
| 262 | + | |
| 263 | + &_CANCEL { | |
| 264 | + background-image: url('~@/static/images/dev_manage/status_4.png'); | |
| 265 | + } | |
| 266 | + } | |
| 267 | +} | |
| 268 | + | |
| 269 | +.mgb10 { | |
| 270 | + margin-bottom: 20rpx; | |
| 271 | +} | |
| 272 | + | |
| 273 | +.row { | |
| 274 | + display: flex; | |
| 275 | + margin-bottom: 28rpx; | |
| 276 | + | |
| 277 | + &:last-child { | |
| 278 | + margin-bottom: 0; | |
| 279 | + } | |
| 280 | + | |
| 281 | + &.company { | |
| 282 | + font-size: 36rpx; | |
| 283 | + font-weight: 600; | |
| 284 | + color: rgba(0, 0, 0, 0.9); | |
| 285 | + padding-top: 32rpx; | |
| 286 | + line-height: 50rpx; | |
| 287 | + } | |
| 288 | + | |
| 289 | + .label { | |
| 290 | + width: 180rpx; | |
| 291 | + line-height: 32rpx; | |
| 292 | + font-size: 28rpx; | |
| 293 | + color: rgba(0, 0, 0, 0.6); | |
| 294 | + } | |
| 295 | + | |
| 296 | + .value { | |
| 297 | + flex: 1; | |
| 298 | + line-height: 32rpx; | |
| 299 | + font-size: 28rpx; | |
| 300 | + color: rgba(0, 0, 0, 0.9); | |
| 301 | + text-align: right; | |
| 302 | + | |
| 303 | + .category { | |
| 304 | + display: inline-block; | |
| 305 | + padding: 4rpx 12rpx; | |
| 306 | + border-radius: 6rpx; | |
| 307 | + font-size: 24rpx; | |
| 308 | + width: auto; | |
| 309 | + | |
| 310 | + &.category_A { | |
| 311 | + background: #FFF0ED; | |
| 312 | + color: #D54941; | |
| 313 | + } | |
| 314 | + | |
| 315 | + &.category_B { | |
| 316 | + background: #FFF1E9; | |
| 317 | + color: #E37318; | |
| 318 | + } | |
| 319 | + | |
| 320 | + &.category_C { | |
| 321 | + background: #F2F3FF; | |
| 322 | + color: $theme-primary; | |
| 323 | + } | |
| 324 | + | |
| 325 | + &.category_D { | |
| 326 | + background: #E3F9E9; | |
| 327 | + color: #2BA471; | |
| 328 | + } | |
| 329 | + } | |
| 330 | + } | |
| 331 | +} | |
| 332 | + | |
| 333 | +.card { | |
| 334 | + padding: 16rpx 0 8rpx; | |
| 335 | + border-top: 1rpx solid #f0f0f0; | |
| 336 | +} | |
| 337 | + | |
| 338 | +.title-header { | |
| 339 | + background-color: #fff; | |
| 340 | + display: flex; | |
| 341 | + align-items: center; | |
| 342 | + padding: 32rpx 32rpx 22rpx; | |
| 343 | + | |
| 344 | + &_icon { | |
| 345 | + width: 32rpx; | |
| 346 | + height: 28rpx; | |
| 347 | + margin-right: 16rpx; | |
| 348 | + margin-top: 8rpx; | |
| 349 | + } | |
| 350 | + | |
| 351 | + span { | |
| 352 | + color: rgba(0, 0, 0, 0.9); | |
| 353 | + font-size: 32rpx; | |
| 354 | + line-height: 44rpx; | |
| 355 | + font-weight: 600; | |
| 356 | + } | |
| 357 | +} | |
| 358 | +</style> | |
| \ No newline at end of file | ... | ... |