You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

781 lines
27 KiB

  1. <template>
  2. <div class="quality-issue-detail">
  3. <!-- 编辑模式 -->
  4. <div v-if="isEditMode" class="edit-form">
  5. <!-- 基础信息区 -->
  6. <el-row :gutter="20">
  7. <el-col :span="6">
  8. <div class="form-item">
  9. <div class="label">反馈单号</div>
  10. <div class="value disabled">{{ detailData.issueNo }}</div>
  11. </div>
  12. </el-col>
  13. <el-col :span="6">
  14. <div class="form-item">
  15. <div class="label">问题日期</div>
  16. <el-date-picker
  17. v-model="editData.issueDate"
  18. type="date"
  19. value-format="yyyy-MM-dd"
  20. placeholder="选择日期"
  21. size="small"
  22. class="edit-input"
  23. style="width: 100%">
  24. </el-date-picker>
  25. </div>
  26. </el-col>
  27. <el-col :span="6">
  28. <div class="form-item">
  29. <div class="label">供应商编码</div>
  30. <div class="value disabled">{{ detailData.supplierNo }}</div>
  31. </div>
  32. </el-col>
  33. <el-col :span="6">
  34. <div class="form-item">
  35. <div class="label">供应商名称</div>
  36. <div class="value disabled">{{ detailData.supplierName }}</div>
  37. </div>
  38. </el-col>
  39. </el-row>
  40. <el-row :gutter="20">
  41. <el-col :span="6">
  42. <div class="form-item">
  43. <div class="label">供应商负责人</div>
  44. <el-input v-model="editData.supplierResponsible" placeholder="请输入" size="small"></el-input>
  45. </div>
  46. </el-col>
  47. <el-col :span="6">
  48. <div class="form-item">
  49. <div class="label">Plant</div>
  50. <el-input v-model="editData.plant" placeholder="请输入" size="small"></el-input>
  51. </div>
  52. </el-col>
  53. <el-col :span="6">
  54. <div class="form-item">
  55. <div class="label">Claim No</div>
  56. <el-input v-model="editData.claimNo" placeholder="请输入" size="small"></el-input>
  57. </div>
  58. </el-col>
  59. <el-col :span="6">
  60. <div class="form-item">
  61. <div class="label">Product Category</div>
  62. <el-input v-model="editData.productCategory" placeholder="请输入" size="small"></el-input>
  63. </div>
  64. </el-col>
  65. </el-row>
  66. <el-row :gutter="20">
  67. <el-col :span="6">
  68. <div class="form-item">
  69. <div class="label">Part No</div>
  70. <el-input v-model="editData.partNo" placeholder="请输入" size="small"></el-input>
  71. </div>
  72. </el-col>
  73. <el-col :span="6">
  74. <div class="form-item">
  75. <div class="label">批次数量</div>
  76. <el-input-number v-model="editData.batchQty" :min="0" size="small" controls-position="right" style="width: 100%"></el-input-number>
  77. </div>
  78. </el-col>
  79. <el-col :span="6">
  80. <div class="form-item">
  81. <div class="label">拒收批次数量</div>
  82. <el-input-number v-model="editData.rejectBatchQty" :min="0" size="small" controls-position="right" style="width: 100%"></el-input-number>
  83. </div>
  84. </el-col>
  85. <el-col :span="6">
  86. <div class="form-item">
  87. <div class="label">投诉接收日期</div>
  88. <el-date-picker
  89. v-model="editData.receiveComplaintDate"
  90. type="date"
  91. value-format="yyyy-MM-dd"
  92. placeholder="选择日期"
  93. size="small"
  94. style="width: 100%">
  95. </el-date-picker>
  96. </div>
  97. </el-col>
  98. </el-row>
  99. <el-row :gutter="20">
  100. <el-col :span="6">
  101. <div class="form-item">
  102. <div class="label">样品接收日期</div>
  103. <el-date-picker
  104. v-model="editData.receiveSampleDate"
  105. type="date"
  106. value-format="yyyy-MM-dd"
  107. placeholder="选择日期"
  108. size="small"
  109. style="width: 100%">
  110. </el-date-picker>
  111. </div>
  112. </el-col>
  113. <el-col :span="18">
  114. <div class="form-item">
  115. <div class="label">问题简述</div>
  116. <el-input v-model="editData.issueSummary" placeholder="请输入" size="small"></el-input>
  117. </div>
  118. </el-col>
  119. </el-row>
  120. <el-row :gutter="20">
  121. <el-col :span="24">
  122. <div class="form-item textarea-item">
  123. <div class="label">问题详细描述</div>
  124. <el-input type="textarea" v-model="editData.issueDescription" :rows="3" placeholder="请输入"></el-input>
  125. </div>
  126. </el-col>
  127. </el-row>
  128. <el-row :gutter="20">
  129. <el-col :span="4">
  130. <div class="form-item">
  131. <div class="label">Level</div>
  132. <el-input v-model="editData.levelNo" placeholder="请输入" size="small"></el-input>
  133. </div>
  134. </el-col>
  135. <el-col :span="5">
  136. <div class="form-item">
  137. <div class="label">Mode 1</div>
  138. <el-input v-model="editData.mode1" placeholder="请输入" size="small"></el-input>
  139. </div>
  140. </el-col>
  141. <el-col :span="5">
  142. <div class="form-item">
  143. <div class="label">Mode 2</div>
  144. <el-input v-model="editData.mode2" placeholder="请输入" size="small"></el-input>
  145. </div>
  146. </el-col>
  147. <el-col :span="5">
  148. <div class="form-item">
  149. <div class="label">Mode 3</div>
  150. <el-input v-model="editData.mode3" placeholder="请输入" size="small"></el-input>
  151. </div>
  152. </el-col>
  153. <el-col :span="5">
  154. <div class="form-item">
  155. <div class="label">Inspector</div>
  156. <el-input v-model="editData.inspector" placeholder="请输入" size="small"></el-input>
  157. </div>
  158. </el-col>
  159. </el-row>
  160. <el-row :gutter="20">
  161. <el-col :span="6">
  162. <div class="form-item">
  163. <div class="label">录入人</div>
  164. <div class="value disabled">{{ detailData.createBy }}</div>
  165. </div>
  166. </el-col>
  167. <el-col :span="6">
  168. <div class="form-item">
  169. <div class="label">录入时间</div>
  170. <div class="value disabled">{{ detailData.createDate }}</div>
  171. </div>
  172. </el-col>
  173. <el-col :span="6">
  174. <div class="form-item">
  175. <div class="label">要求回复日期</div>
  176. <el-date-picker
  177. v-model="editData.requireReplyDate"
  178. type="date"
  179. value-format="yyyy-MM-dd"
  180. placeholder="选择日期"
  181. size="small"
  182. style="width: 100%">
  183. </el-date-picker>
  184. </div>
  185. </el-col>
  186. <el-col :span="6">
  187. <div class="form-item">
  188. <div class="label">状态</div>
  189. <div class="value disabled">{{ detailData.status }}</div>
  190. </div>
  191. </el-col>
  192. </el-row>
  193. <el-row :gutter="20">
  194. <el-col :span="24">
  195. <div class="form-item textarea-item">
  196. <div class="label">Why Escape</div>
  197. <el-input type="textarea" v-model="editData.whyEscape" :rows="2" placeholder="请输入"></el-input>
  198. </div>
  199. </el-col>
  200. </el-row>
  201. <el-row :gutter="20">
  202. <el-col :span="24">
  203. <div class="form-item textarea-item">
  204. <div class="label">原因分析</div>
  205. <el-input type="textarea" v-model="editData.analysis" :rows="3" placeholder="请输入"></el-input>
  206. </div>
  207. </el-col>
  208. </el-row>
  209. <el-row :gutter="20">
  210. <el-col :span="24">
  211. <div class="form-item textarea-item">
  212. <div class="label">后续措施</div>
  213. <el-input type="textarea" v-model="editData.correctiveAction" :rows="3" placeholder="请输入"></el-input>
  214. </div>
  215. </el-col>
  216. </el-row>
  217. <el-row :gutter="20">
  218. <el-col :span="6">
  219. <div class="form-item">
  220. <div class="label">回复人</div>
  221. <el-input v-model="editData.replyBy" placeholder="请输入" size="small"></el-input>
  222. </div>
  223. </el-col>
  224. <el-col :span="6">
  225. <div class="form-item">
  226. <div class="label">回复时间</div>
  227. <el-date-picker
  228. v-model="editData.replyTime"
  229. type="datetime"
  230. value-format="yyyy-MM-dd HH:mm:ss"
  231. placeholder="选择日期时间"
  232. size="small"
  233. style="width: 100%">
  234. </el-date-picker>
  235. </div>
  236. </el-col>
  237. <el-col :span="6">
  238. <div class="form-item">
  239. <div class="label">录入人(回复)</div>
  240. <el-input v-model="editData.entryBy" placeholder="请输入" size="small"></el-input>
  241. </div>
  242. </el-col>
  243. <el-col :span="6">
  244. <div class="form-item">
  245. <div class="label">录入时间(回复)</div>
  246. <el-date-picker
  247. v-model="editData.entryDate"
  248. type="datetime"
  249. value-format="yyyy-MM-dd HH:mm:ss"
  250. placeholder="选择日期时间"
  251. size="small"
  252. style="width: 100%">
  253. </el-date-picker>
  254. </div>
  255. </el-col>
  256. </el-row>
  257. <!-- 索赔信息区块 -->
  258. <div class="claim-section">
  259. <div class="claim-title">索赔信息</div>
  260. <el-row :gutter="20">
  261. <el-col :span="6">
  262. <div class="form-item">
  263. <div class="label">是否被索赔</div>
  264. <el-select v-model="editData.claimFlag" placeholder="请选择" size="small" style="width: 100%">
  265. <el-option label="是" value="Y"></el-option>
  266. <el-option label="否" value="N"></el-option>
  267. </el-select>
  268. </div>
  269. </el-col>
  270. <el-col :span="6">
  271. <div class="form-item">
  272. <div class="label">被索赔金额</div>
  273. <el-input-number v-model="editData.claimAmount" :min="0" :precision="2" size="small" controls-position="right" style="width: 100%"></el-input-number>
  274. </div>
  275. </el-col>
  276. <el-col :span="12">
  277. <div class="form-item">
  278. <div class="label">处置备注</div>
  279. <el-input v-model="editData.disposalRemark" placeholder="请输入" size="small"></el-input>
  280. </div>
  281. </el-col>
  282. </el-row>
  283. <el-row :gutter="20">
  284. <el-col :span="6">
  285. <div class="form-item">
  286. <div class="label">录入人(索赔)</div>
  287. <el-input v-model="editData.entryByClaim" placeholder="请输入" size="small"></el-input>
  288. </div>
  289. </el-col>
  290. <el-col :span="6">
  291. <div class="form-item">
  292. <div class="label">录入时间(索赔)</div>
  293. <el-date-picker
  294. v-model="editData.entryDateClaim"
  295. type="datetime"
  296. value-format="yyyy-MM-dd HH:mm:ss"
  297. placeholder="选择日期时间"
  298. size="small"
  299. style="width: 100%">
  300. </el-date-picker>
  301. </div>
  302. </el-col>
  303. </el-row>
  304. </div>
  305. <el-row :gutter="20">
  306. <el-col :span="6">
  307. <div class="form-item">
  308. <div class="label">关闭人</div>
  309. <el-input v-model="editData.closeBy" placeholder="请输入" size="small"></el-input>
  310. </div>
  311. </el-col>
  312. <el-col :span="6">
  313. <div class="form-item">
  314. <div class="label">关闭时间</div>
  315. <el-date-picker
  316. v-model="editData.closeTime"
  317. type="datetime"
  318. value-format="yyyy-MM-dd HH:mm:ss"
  319. placeholder="选择日期时间"
  320. size="small"
  321. style="width: 100%">
  322. </el-date-picker>
  323. </div>
  324. </el-col>
  325. <!-- 编辑模式按钮列 -->
  326. <el-col :span="12">
  327. <div class="form-item btn-form-item"> <!-- 新增 btn-form-item -->
  328. <div class="label" style="opacity: 0;">占位</div> <!-- 透明占位保持与左侧标签高度一致 -->
  329. <div class="btn-area">
  330. <el-button type="primary" size="small" @click="handleSave">保存</el-button>
  331. <el-button size="small" @click="handleCancelEdit">取消</el-button>
  332. </div>
  333. </div>
  334. </el-col>
  335. </el-row>
  336. </div>
  337. <!-- 查看模式 -->
  338. <div v-else>
  339. <!-- 保持原有的只读展示布局但使用相同的栅格结构更整洁 -->
  340. <el-row :gutter="20">
  341. <el-col :span="6"><div class="form-item"><div class="label">反馈单号</div><div class="value">{{ detailData.issueNo }}</div></div></el-col>
  342. <el-col :span="6"><div class="form-item"><div class="label">问题日期</div><div class="value">{{ formatDate(detailData.issueDate) }}</div></div></el-col>
  343. <el-col :span="6"><div class="form-item"><div class="label">供应商编码</div><div class="value">{{ detailData.supplierNo }}</div></div></el-col>
  344. <el-col :span="6"><div class="form-item"><div class="label">供应商名称</div><div class="value">{{ detailData.supplierName }}</div></div></el-col>
  345. </el-row>
  346. <el-row :gutter="20">
  347. <el-col :span="6"><div class="form-item"><div class="label">供应商负责人</div><div class="value">{{ detailData.supplierResponsible }}</div></div></el-col>
  348. <el-col :span="6"><div class="form-item"><div class="label">Plant</div><div class="value">{{ detailData.plant }}</div></div></el-col>
  349. <el-col :span="6"><div class="form-item"><div class="label">Claim No</div><div class="value">{{ detailData.claimNo }}</div></div></el-col>
  350. <el-col :span="6"><div class="form-item"><div class="label">Product Category</div><div class="value">{{ detailData.productCategory }}</div></div></el-col>
  351. </el-row>
  352. <el-row :gutter="20">
  353. <el-col :span="6"><div class="form-item"><div class="label">Part No</div><div class="value">{{ detailData.partNo }}</div></div></el-col>
  354. <el-col :span="6"><div class="form-item"><div class="label">批次数量</div><div class="value">{{ detailData.batchQty }}</div></div></el-col>
  355. <el-col :span="6"><div class="form-item"><div class="label">拒收批次数量</div><div class="value">{{ detailData.rejectBatchQty }}</div></div></el-col>
  356. <el-col :span="6"><div class="form-item"><div class="label">投诉接收日期</div><div class="value">{{ formatDate(detailData.receiveComplaintDate) }}</div></div></el-col>
  357. </el-row>
  358. <el-row :gutter="20">
  359. <el-col :span="6"><div class="form-item"><div class="label">样品接收日期</div><div class="value">{{ formatDate(detailData.receiveSampleDate) }}</div></div></el-col>
  360. <el-col :span="18"><div class="form-item"><div class="label">问题简述</div><div class="value">{{ detailData.issueSummary }}</div></div></el-col>
  361. </el-row>
  362. <el-row :gutter="20">
  363. <el-col :span="24"><div class="form-item textarea-item"><div class="label">问题详细描述</div><div class="value textarea-content">{{ detailData.issueDescription }}</div></div></el-col>
  364. </el-row>
  365. <el-row :gutter="20">
  366. <el-col :span="4"><div class="form-item"><div class="label">Level</div><div class="value">{{ detailData.levelNo }}</div></div></el-col>
  367. <el-col :span="5"><div class="form-item"><div class="label">Mode 1</div><div class="value">{{ detailData.mode1 }}</div></div></el-col>
  368. <el-col :span="5"><div class="form-item"><div class="label">Mode 2</div><div class="value">{{ detailData.mode2 }}</div></div></el-col>
  369. <el-col :span="5"><div class="form-item"><div class="label">Mode 3</div><div class="value">{{ detailData.mode3 }}</div></div></el-col>
  370. <el-col :span="5"><div class="form-item"><div class="label">Inspector</div><div class="value">{{ detailData.inspector }}</div></div></el-col>
  371. </el-row>
  372. <el-row :gutter="20">
  373. <el-col :span="6"><div class="form-item"><div class="label">录入人</div><div class="value">{{ detailData.createBy }}</div></div></el-col>
  374. <el-col :span="6"><div class="form-item"><div class="label">录入时间</div><div class="value">{{ detailData.createDate }}</div></div></el-col>
  375. <el-col :span="6"><div class="form-item"><div class="label">要求回复日期</div><div class="value">{{ formatDate(detailData.requireReplyDate) }}</div></div></el-col>
  376. <el-col :span="6"><div class="form-item"><div class="label">状态</div><div class="value">{{ detailData.status }}</div></div></el-col>
  377. </el-row>
  378. <el-row :gutter="20">
  379. <el-col :span="24"><div class="form-item textarea-item"><div class="label">Why Escape</div><div class="value textarea-content">{{ detailData.whyEscape }}</div></div></el-col>
  380. </el-row>
  381. <el-row :gutter="20">
  382. <el-col :span="24"><div class="form-item textarea-item"><div class="label">原因分析</div><div class="value textarea-content">{{ detailData.analysis }}</div></div></el-col>
  383. </el-row>
  384. <el-row :gutter="20">
  385. <el-col :span="24"><div class="form-item textarea-item"><div class="label">后续措施</div><div class="value textarea-content">{{ detailData.correctiveAction }}</div></div></el-col>
  386. </el-row>
  387. <el-row :gutter="20">
  388. <el-col :span="6"><div class="form-item"><div class="label">回复人</div><div class="value">{{ detailData.replyBy }}</div></div></el-col>
  389. <el-col :span="6"><div class="form-item"><div class="label">回复时间</div><div class="value">{{ detailData.replyTime }}</div></div></el-col>
  390. <el-col :span="6"><div class="form-item"><div class="label">录入人(回复)</div><div class="value">{{ detailData.entryBy }}</div></div></el-col>
  391. <el-col :span="6"><div class="form-item"><div class="label">录入时间(回复)</div><div class="value">{{ detailData.entryDate }}</div></div></el-col>
  392. </el-row>
  393. <div class="claim-section">
  394. <div class="claim-title">索赔信息</div>
  395. <el-row :gutter="20">
  396. <el-col :span="6"><div class="form-item"><div class="label">是否被索赔</div><div class="value">{{ detailData.claimFlag === 'Y' ? '是' : '否' }}</div></div></el-col>
  397. <el-col :span="6"><div class="form-item"><div class="label">被索赔金额</div><div class="value">{{ detailData.claimAmount }}</div></div></el-col>
  398. <el-col :span="12"><div class="form-item"><div class="label">处置备注</div><div class="value">{{ detailData.disposalRemark }}</div></div></el-col>
  399. </el-row>
  400. <el-row :gutter="20">
  401. <el-col :span="6"><div class="form-item"><div class="label">录入人(索赔)</div><div class="value">{{ detailData.entryByClaim }}</div></div></el-col>
  402. <el-col :span="6"><div class="form-item"><div class="label">录入时间(索赔)</div><div class="value">{{ detailData.entryDateClaim }}</div></div></el-col>
  403. </el-row>
  404. </div>
  405. <el-row :gutter="20">
  406. <el-col :span="6"><div class="form-item"><div class="label">关闭人</div><div class="value">{{ detailData.closeBy }}</div></div></el-col>
  407. <el-col :span="6"><div class="form-item"><div class="label">关闭时间</div><div class="value">{{ detailData.closeTime }}</div></div></el-col>
  408. <el-col :span="12">
  409. <div class="form-item btn-form-item">
  410. <div class="label" style="opacity: 0;">占位</div>
  411. <div class="btn-area">
  412. <el-button type="primary" size="small" @click="handleEdit" v-if="canEdit">修改</el-button>
  413. </div>
  414. </div>
  415. </el-col>
  416. </el-row>
  417. </div>
  418. </div>
  419. </template>
  420. <script>
  421. export default {
  422. name: 'QualityIssueDetail',
  423. props: {
  424. detailData: {
  425. type: Object,
  426. default: () => ({})
  427. },
  428. canEdit: {
  429. type: Boolean,
  430. default: true
  431. }
  432. },
  433. data() {
  434. return {
  435. isEditMode: false,
  436. editData: {},
  437. saveLoading: false
  438. }
  439. },
  440. watch: {
  441. detailData: {
  442. handler(newVal) {
  443. if (newVal && Object.keys(newVal).length) {
  444. this.initEditData()
  445. }
  446. },
  447. immediate: true,
  448. deep: true
  449. }
  450. },
  451. methods: {
  452. formatDate(dateStr) {
  453. if (!dateStr) return ''
  454. // 如果包含时分秒,截取前10位
  455. return dateStr.length > 10 ? dateStr.substring(0, 10) : dateStr
  456. },
  457. initEditData() {
  458. this.editData = {
  459. issueDate: this.detailData.issueDate,
  460. supplierResponsible: this.detailData.supplierResponsible,
  461. plant: this.detailData.plant,
  462. claimNo: this.detailData.claimNo,
  463. productCategory: this.detailData.productCategory,
  464. partNo: this.detailData.partNo,
  465. batchQty: this.detailData.batchQty,
  466. rejectBatchQty: this.detailData.rejectBatchQty,
  467. receiveComplaintDate: this.detailData.receiveComplaintDate,
  468. receiveSampleDate: this.detailData.receiveSampleDate,
  469. issueSummary: this.detailData.issueSummary,
  470. issueDescription: this.detailData.issueDescription,
  471. levelNo: this.detailData.levelNo,
  472. mode1: this.detailData.mode1,
  473. mode2: this.detailData.mode2,
  474. mode3: this.detailData.mode3,
  475. inspector: this.detailData.inspector,
  476. requireReplyDate: this.detailData.requireReplyDate,
  477. whyEscape: this.detailData.whyEscape,
  478. analysis: this.detailData.analysis,
  479. correctiveAction: this.detailData.correctiveAction,
  480. replyBy: this.detailData.replyBy,
  481. replyTime: this.detailData.replyTime,
  482. entryBy: this.detailData.entryBy,
  483. entryDate: this.detailData.entryDate,
  484. claimFlag: this.detailData.claimFlag,
  485. claimAmount: this.detailData.claimAmount,
  486. disposalRemark: this.detailData.disposalRemark,
  487. entryByClaim: this.detailData.entryByClaim,
  488. entryDateClaim: this.detailData.entryDateClaim,
  489. closeBy: this.detailData.closeBy,
  490. closeTime: this.detailData.closeTime
  491. }
  492. },
  493. handleEdit() {
  494. this.isEditMode = true
  495. this.initEditData()
  496. },
  497. handleCancelEdit() {
  498. this.isEditMode = false
  499. this.initEditData()
  500. },
  501. handleSave() {
  502. this.saveLoading = true
  503. // 触发父组件的保存事件,传递修改后的数据
  504. this.$emit('save', this.editData, (success) => {
  505. this.saveLoading = false
  506. if (success !== false) {
  507. this.isEditMode = false
  508. }
  509. })
  510. }
  511. }
  512. }
  513. </script>
  514. <style scoped lang="scss">
  515. .quality-issue-detail {
  516. padding: 10px 15px;
  517. background: #fff;
  518. border: 1px solid #dcdfe6;
  519. }
  520. .form-item {
  521. margin-bottom: 15px;
  522. display: flex;
  523. flex-direction: column;
  524. }
  525. .form-item .label {
  526. font-size: 13px;
  527. font-weight: 500;
  528. color: #606266;
  529. margin-bottom: 6px;
  530. line-height: 1.2;
  531. }
  532. /* 查看模式下的只读字段 */
  533. .form-item .value {
  534. min-height: 32px;
  535. line-height: 32px;
  536. padding: 0 10px;
  537. background: #fff;
  538. border: 1px solid #dcdfe6;
  539. border-radius: 4px;
  540. color: #303133;
  541. font-size: 13px;
  542. word-break: break-all;
  543. white-space: pre-wrap;
  544. box-sizing: border-box;
  545. }
  546. .form-item .value.disabled {
  547. background: #f5f7fa;
  548. color: #909399;
  549. }
  550. .form-item.textarea-item .value.textarea-content {
  551. min-height: 60px;
  552. line-height: 1.5;
  553. padding: 8px 10px;
  554. }
  555. /* 统一编辑模式输入框样式 */
  556. /deep/ .el-input--small .el-input__inner {
  557. height: 32px;
  558. line-height: 32px;
  559. padding: 0 10px;
  560. box-sizing: border-box;
  561. border: 1px solid #dcdfe6;
  562. border-radius: 4px;
  563. background-color: #fff;
  564. font-size: 13px;
  565. }
  566. /* 文本域样式 */
  567. /deep/ .el-textarea__inner {
  568. height: auto;
  569. line-height: 1.5;
  570. padding: 8px 10px;
  571. min-height: 60px;
  572. box-sizing: border-box;
  573. border: 1px solid #dcdfe6;
  574. border-radius: 4px;
  575. background-color: #fff;
  576. font-size: 13px;
  577. }
  578. /* 下拉选择框 */
  579. /deep/ .el-select .el-input__inner {
  580. height: 32px;
  581. line-height: 32px;
  582. padding: 0 10px;
  583. box-sizing: border-box;
  584. border: 1px solid #dcdfe6;
  585. border-radius: 4px;
  586. background-color: #fff;
  587. font-size: 13px;
  588. }
  589. /* 日期选择器容器 */
  590. /deep/ .el-date-editor {
  591. width: 100% !important;
  592. }
  593. /deep/ .el-date-editor.el-input,
  594. /deep/ .el-date-editor.el-input__inner {
  595. width: 100%;
  596. }
  597. /* 日期选择器输入框 */
  598. /deep/ .el-date-editor .el-input__inner {
  599. height: 32px;
  600. line-height: 32px;
  601. padding: 0 30px 0 10px;
  602. box-sizing: border-box;
  603. border: 1px solid #dcdfe6;
  604. border-radius: 4px;
  605. background-color: #fff;
  606. font-size: 13px;
  607. }
  608. /* 日期时间选择器输入框 */
  609. /deep/ .el-date-editor--datetime .el-input__inner {
  610. padding: 0 40px 0 10px;
  611. }
  612. /* 修复图标垂直居中 - 关键 */
  613. /deep/ .el-input {
  614. line-height: 32px;
  615. }
  616. /deep/ .el-input__prefix,
  617. /deep/ .el-input__suffix {
  618. display: flex !important;
  619. align-items: center !important;
  620. justify-content: center !important;
  621. height: 32px !important;
  622. top: 0 !important;
  623. bottom: auto !important;
  624. line-height: 32px !important;
  625. }
  626. /deep/ .el-input__suffix {
  627. right: 5px;
  628. }
  629. /deep/ .el-input__prefix {
  630. left: 5px;
  631. }
  632. /deep/ .el-input__suffix-inner,
  633. /deep/ .el-input__prefix-inner {
  634. display: flex !important;
  635. align-items: center !important;
  636. height: 100% !important;
  637. line-height: 32px !important;
  638. }
  639. /deep/ .el-input__icon {
  640. line-height: 32px !important;
  641. height: 32px !important;
  642. width: 25px;
  643. text-align: center;
  644. font-size: 14px;
  645. top: 0 !important;
  646. }
  647. /* 带后缀的输入框右侧留空间 */
  648. /deep/ .el-input--suffix .el-input__inner {
  649. padding-right: 30px;
  650. }
  651. /* 带前缀的输入框左侧留空间 */
  652. /deep/ .el-input--prefix .el-input__inner {
  653. padding-left: 30px;
  654. }
  655. /* 数字输入框 */
  656. /deep/ .el-input-number--small {
  657. width: 100%;
  658. }
  659. /deep/ .el-input-number--small .el-input__inner {
  660. height: 32px;
  661. line-height: 32px;
  662. padding: 0 40px 0 10px;
  663. box-sizing: border-box;
  664. border: 1px solid #dcdfe6;
  665. border-radius: 4px;
  666. background-color: #fff;
  667. font-size: 13px;
  668. text-align: left;
  669. }
  670. /deep/ .el-input-number--small .el-input-number__increase,
  671. /deep/ .el-input-number--small .el-input-number__decrease {
  672. height: 15px;
  673. line-height: 15px;
  674. width: 28px;
  675. font-size: 12px;
  676. }
  677. /* 按钮样式 */
  678. .quality-issue-detail .el-button--small,
  679. .quality-issue-detail .el-button--default {
  680. height: 32px;
  681. line-height: 32px;
  682. padding: 0 15px;
  683. font-size: 13px;
  684. border-radius: 4px;
  685. min-width: auto;
  686. width: auto;
  687. }
  688. .quality-issue-detail .el-button + .el-button {
  689. margin-left: 10px;
  690. }
  691. /* 索赔信息区域 */
  692. .claim-section {
  693. border: 1px solid #dcdfe6;
  694. padding: 10px 12px;
  695. margin: 10px 0;
  696. background: #fafafa;
  697. }
  698. .claim-title {
  699. font-size: 14px;
  700. font-weight: 500;
  701. color: #303133;
  702. margin-bottom: 12px;
  703. padding-left: 8px;
  704. border-left: 3px solid #409eff;
  705. }
  706. .btn-area {
  707. display: flex;
  708. justify-content: flex-end;
  709. align-items: center;
  710. gap: 10px;
  711. }
  712. .btn-area .el-button {
  713. width: auto !important;
  714. min-width: 80px;
  715. }
  716. .claim-section /deep/ .el-select {
  717. width: 100%;
  718. }
  719. .claim-section /deep/ .el-input-number {
  720. width: 100%;
  721. }
  722. /* 日期时间选择器图标样式增强 */
  723. /deep/ .el-date-editor--datetime {
  724. .el-input__prefix,
  725. .el-input__suffix {
  726. height: 32px !important;
  727. line-height: 32px !important;
  728. }
  729. .el-input__icon {
  730. line-height: 32px !important;
  731. height: 32px !important;
  732. }
  733. }
  734. </style>