index.vue 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
  4. <el-form-item label="元器件编号" prop="id" >
  5. <el-select v-model="queryParams.id" filterable placeholder="请输入元器件编号">
  6. <el-option
  7. v-for="item in componentInfo"
  8. :value="item.id">
  9. </el-option>
  10. </el-select>
  11. </el-form-item>
  12. <el-form-item label="元器件名称" prop="componentName" >
  13. <el-input
  14. v-model="queryParams.componentName"
  15. placeholder="请输入元器件名称"
  16. clearable
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <!-- <el-select v-model="queryParams.componentName" filterable placeholder="请输入元器件名称">-->
  21. <!-- <el-option-->
  22. <!-- v-for="item in componentInfo"-->
  23. <!-- :value="item.componentName">-->
  24. <!-- </el-option>-->
  25. <!-- </el-select>-->
  26. <!-- </el-form-item>-->
  27. <!-- <el-form-item label="生产厂家" prop="manufacturer">-->
  28. <!-- <el-input-->
  29. <!-- v-model="queryParams.manufacturer"-->
  30. <!-- placeholder="请输入生产厂家"-->
  31. <!-- clearable-->
  32. <!-- @keyup.enter.native="handleQuery"-->
  33. <!-- />-->
  34. <!-- </el-form-item>-->
  35. <el-form-item label="国产型号" prop="componentModel">
  36. <el-input
  37. v-model="queryParams.componentModel"
  38. placeholder="请输入国产型号"
  39. clearable
  40. @keyup.enter.native="handleQuery"
  41. />
  42. </el-form-item>
  43. <!-- <el-form-item label="国产型号" prop="componentModel">-->
  44. <!-- <el-select v-model="queryParams.componentModel" filterable placeholder="请输入国产型号">-->
  45. <!-- <el-option-->
  46. <!-- v-for="item in componentInfo"-->
  47. <!-- :value="item.componentModel">-->
  48. <!-- </el-option>-->
  49. <!-- </el-select>-->
  50. <!-- </el-form-item>-->
  51. <!-- <el-form-item label="国产型号替代型号" prop="replaceDomesticModel">-->
  52. <!-- <el-input-->
  53. <!-- v-model="queryParams.replaceDomesticModel"-->
  54. <!-- placeholder="请输入国产型号替代型号"-->
  55. <!-- clearable-->
  56. <!-- @keyup.enter.native="handleQuery"-->
  57. <!-- />-->
  58. <!-- </el-form-item>-->
  59. <!-- <el-form-item label="质量等级" prop="qualityGrade">-->
  60. <!-- <el-input-->
  61. <!-- v-model="queryParams.qualityGrade"-->
  62. <!-- placeholder="请输入质量等级"-->
  63. <!-- clearable-->
  64. <!-- @keyup.enter.native="handleQuery"-->
  65. <!-- />-->
  66. <!-- </el-form-item>-->
  67. <el-form-item label="质量等级" prop="qualityGrade">
  68. <el-select v-model="queryParams.qualityGrade" filterable placeholder="请选择质量等级">
  69. <el-option
  70. v-for="item in qualityoptions"
  71. :label="item.label"
  72. :value="item.value">
  73. </el-option>
  74. </el-select>
  75. </el-form-item>
  76. <!-- <el-form-item label="供货周期" prop="deliveryCycle">-->
  77. <!-- <el-input-->
  78. <!-- v-model="queryParams.deliveryCycle"-->
  79. <!-- placeholder="请输入供货周期"-->
  80. <!-- clearable-->
  81. <!-- @keyup.enter.native="handleQuery"-->
  82. <!-- />-->
  83. <!-- </el-form-item>-->
  84. <!-- <el-form-item label="供货量(个/年)" prop="supplyQuantity">-->
  85. <!-- <el-input-->
  86. <!-- v-model="queryParams.supplyQuantity"-->
  87. <!-- placeholder="请输入供货量(个/年)"-->
  88. <!-- clearable-->
  89. <!-- @keyup.enter.native="handleQuery"-->
  90. <!-- />-->
  91. <!-- </el-form-item>-->
  92. <!-- <el-form-item label="价格" prop="unitPrice">-->
  93. <!-- <el-input-->
  94. <!-- v-model="queryParams.unitPrice"-->
  95. <!-- placeholder="请输入价格"-->
  96. <!-- clearable-->
  97. <!-- @keyup.enter.native="handleQuery"-->
  98. <!-- />-->
  99. <!-- </el-form-item>-->
  100. <el-form-item label="ZZKK等级" prop="zzkkLevel">
  101. <el-input
  102. v-model="queryParams.zzkkLevel"
  103. placeholder="请输入ZZKK等级"
  104. clearable
  105. @keyup.enter.native="handleQuery"
  106. />
  107. </el-form-item>
  108. <el-form-item label="是否优选" prop="inPreference">
  109. <el-input
  110. v-model="queryParams.inPreference"
  111. placeholder="请输入是否在优选目录内"
  112. clearable
  113. @keyup.enter.native="handleQuery"
  114. />
  115. </el-form-item>
  116. <el-form-item label="是否禁限用" prop="forbidden">
  117. <el-input
  118. v-model="queryParams.forbidden"
  119. placeholder="请输入是否禁限用"
  120. clearable
  121. @keyup.enter.native="handleQuery"
  122. />
  123. </el-form-item>
  124. <!-- <el-form-item label="停产断档日期" prop="shutdownDate">-->
  125. <!-- <el-date-picker clearable-->
  126. <!-- v-model="queryParams.shutdownDate"-->
  127. <!-- type="date"-->
  128. <!-- value-format="yyyy-MM-dd"-->
  129. <!-- placeholder="请选择停产断档日期">-->
  130. <!-- </el-date-picker>-->
  131. <!-- </el-form-item>-->
  132. <!-- <el-form-item label="封装形式" prop="encapsulationMode">-->
  133. <!-- <el-input-->
  134. <!-- v-model="queryParams.encapsulationMode"-->
  135. <!-- placeholder="请输入封装形式"-->
  136. <!-- clearable-->
  137. <!-- @keyup.enter.native="handleQuery"-->
  138. <!-- />-->
  139. <!-- </el-form-item>-->
  140. <!-- <el-form-item label="最大正向电流IFM" prop="paramIfm">-->
  141. <!-- <el-input-->
  142. <!-- v-model="queryParams.paramIfm"-->
  143. <!-- placeholder="请输入最大正向电流IFM"-->
  144. <!-- clearable-->
  145. <!-- @keyup.enter.native="handleQuery"-->
  146. <!-- />-->
  147. <!-- </el-form-item>-->
  148. <!-- <el-form-item label="最大反向工作电压VRRM" prop="paramVrrm">-->
  149. <!-- <el-input-->
  150. <!-- v-model="queryParams.paramVrrm"-->
  151. <!-- placeholder="请输入最大反向工作电压VRRM"-->
  152. <!-- clearable-->
  153. <!-- @keyup.enter.native="handleQuery"-->
  154. <!-- />-->
  155. <!-- </el-form-item>-->
  156. <!-- <el-form-item label="最大浪涌电流IFSM" prop="paramIfsm">-->
  157. <!-- <el-input-->
  158. <!-- v-model="queryParams.paramIfsm"-->
  159. <!-- placeholder="请输入最大浪涌电流IFSM"-->
  160. <!-- clearable-->
  161. <!-- @keyup.enter.native="handleQuery"-->
  162. <!-- />-->
  163. <!-- </el-form-item>-->
  164. <!-- <el-form-item label="稳压状态下的动态电阻ZZ" prop="paramZz">-->
  165. <!-- <el-input-->
  166. <!-- v-model="queryParams.paramZz"-->
  167. <!-- placeholder="请输入稳压状态下的动态电阻ZZ"-->
  168. <!-- clearable-->
  169. <!-- @keyup.enter.native="handleQuery"-->
  170. <!-- />-->
  171. <!-- </el-form-item>-->
  172. <!-- <el-form-item label="最大额定功率PCM" prop="paramPcm">-->
  173. <!-- <el-input-->
  174. <!-- v-model="queryParams.paramPcm"-->
  175. <!-- placeholder="请输入最大额定功率PCM"-->
  176. <!-- clearable-->
  177. <!-- @keyup.enter.native="handleQuery"-->
  178. <!-- />-->
  179. <!-- </el-form-item>-->
  180. <!-- <el-form-item label="最大集电极电流ICM" prop="paramIcm">-->
  181. <!-- <el-input-->
  182. <!-- v-model="queryParams.paramIcm"-->
  183. <!-- placeholder="请输入最大集电极电流ICM"-->
  184. <!-- clearable-->
  185. <!-- @keyup.enter.native="handleQuery"-->
  186. <!-- />-->
  187. <!-- </el-form-item>-->
  188. <!-- <el-form-item label="最大集电极-基极电压VCBO" prop="paramVcbo">-->
  189. <!-- <el-input-->
  190. <!-- v-model="queryParams.paramVcbo"-->
  191. <!-- placeholder="请输入最大集电极-基极电压VCBO"-->
  192. <!-- clearable-->
  193. <!-- @keyup.enter.native="handleQuery"-->
  194. <!-- />-->
  195. <!-- </el-form-item>-->
  196. <!-- <el-form-item label="集电极-发射极电压VCEO" prop="paramVceo">-->
  197. <!-- <el-input-->
  198. <!-- v-model="queryParams.paramVceo"-->
  199. <!-- placeholder="请输入集电极-发射极电压VCEO"-->
  200. <!-- clearable-->
  201. <!-- @keyup.enter.native="handleQuery"-->
  202. <!-- />-->
  203. <!-- </el-form-item>-->
  204. <!-- <el-form-item label="发射极-基极电压VEBO" prop="paramVebo">-->
  205. <!-- <el-input-->
  206. <!-- v-model="queryParams.paramVebo"-->
  207. <!-- placeholder="请输入发射极-基极电压VEBO"-->
  208. <!-- clearable-->
  209. <!-- @keyup.enter.native="handleQuery"-->
  210. <!-- />-->
  211. <!-- </el-form-item>-->
  212. <!-- <el-form-item label="漏源电压VDSS" prop="paramVdss">-->
  213. <!-- <el-input-->
  214. <!-- v-model="queryParams.paramVdss"-->
  215. <!-- placeholder="请输入漏源电压VDSS"-->
  216. <!-- clearable-->
  217. <!-- @keyup.enter.native="handleQuery"-->
  218. <!-- />-->
  219. <!-- </el-form-item>-->
  220. <!-- <el-form-item label="漏极直流电流ID" prop="paramId">-->
  221. <!-- <el-input-->
  222. <!-- v-model="queryParams.paramId"-->
  223. <!-- placeholder="请输入漏极直流电流ID"-->
  224. <!-- clearable-->
  225. <!-- @keyup.enter.native="handleQuery"-->
  226. <!-- />-->
  227. <!-- </el-form-item>-->
  228. <!-- <el-form-item label="漏-源通态电阻RDS(on)" prop="paramRdsOn">-->
  229. <!-- <el-input-->
  230. <!-- v-model="queryParams.paramRdsOn"-->
  231. <!-- placeholder="请输入漏-源通态电阻RDS(on)"-->
  232. <!-- clearable-->
  233. <!-- @keyup.enter.native="handleQuery"-->
  234. <!-- />-->
  235. <!-- </el-form-item>-->
  236. <!-- <el-form-item label="抗静电能力" prop="antistaticCapacity">-->
  237. <!-- <el-input-->
  238. <!-- v-model="queryParams.antistaticCapacity"-->
  239. <!-- placeholder="请输入抗静电能力"-->
  240. <!-- clearable-->
  241. <!-- @keyup.enter.native="handleQuery"-->
  242. <!-- />-->
  243. <!-- </el-form-item>-->
  244. <!-- <el-form-item label="抗辐照能力" prop="radiationResistance">-->
  245. <!-- <el-input-->
  246. <!-- v-model="queryParams.radiationResistance"-->
  247. <!-- placeholder="请输入抗辐照能力"-->
  248. <!-- clearable-->
  249. <!-- @keyup.enter.native="handleQuery"-->
  250. <!-- />-->
  251. <!-- </el-form-item>-->
  252. <!-- <el-form-item label="重量" prop="weight">-->
  253. <!-- <el-input-->
  254. <!-- v-model="queryParams.weight"-->
  255. <!-- placeholder="请输入重量"-->
  256. <!-- clearable-->
  257. <!-- @keyup.enter.native="handleQuery"-->
  258. <!-- />-->
  259. <!-- </el-form-item>-->
  260. </el-form>
  261. <div style="padding-left: 1000px">
  262. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" style="margin-right: 20px">搜索</el-button>
  263. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  264. </div>
  265. <el-row :gutter="10" class="mb8">
  266. <el-col :span="1.5">
  267. <el-button
  268. type="primary"
  269. plain
  270. icon="el-icon-plus"
  271. size="mini"
  272. @click="handleAdd"
  273. v-hasPermi="['biz:component:add']"
  274. >新增</el-button>
  275. </el-col>
  276. <!-- <el-col :span="1.5">-->
  277. <!-- <el-button-->
  278. <!-- type="success"-->
  279. <!-- plain-->
  280. <!-- icon="el-icon-edit"-->
  281. <!-- size="mini"-->
  282. <!-- :disabled="single"-->
  283. <!-- @click="handleUpdate"-->
  284. <!-- v-hasPermi="['biz:component:edit']"-->
  285. <!-- >修改</el-button>-->
  286. <!-- </el-col>-->
  287. <el-col :span="1.5">
  288. <el-button
  289. type="danger"
  290. plain
  291. icon="el-icon-delete"
  292. size="mini"
  293. :disabled="multiple"
  294. @click="handleDelete"
  295. v-hasPermi="['biz:component:remove']"
  296. >删除</el-button>
  297. </el-col>
  298. <el-col :span="1.5">
  299. <el-button
  300. type="info"
  301. icon="el-icon-upload2"
  302. size="mini"
  303. @click="handleImport"
  304. v-hasPermi="['biz:component:import']"
  305. >导入</el-button>
  306. </el-col>
  307. <el-col :span="1.5">
  308. <el-button
  309. type="warning"
  310. plain
  311. icon="el-icon-download"
  312. size="mini"
  313. @click="handleExport"
  314. v-hasPermi="['biz:component:export']"
  315. >导出</el-button>
  316. </el-col>
  317. <el-col :span="1.5">
  318. <el-button
  319. type="success"
  320. plain
  321. icon="el-icon-download"
  322. size="mini"
  323. @click="getQualityProblemBySimilarCategory"
  324. :disabled="single"
  325. >查看同类产品问题</el-button>
  326. </el-col>
  327. <el-col :span="1.5">
  328. <el-button
  329. type="success"
  330. plain
  331. icon="el-icon-download"
  332. size="mini"
  333. @click="getQualityProblemBySimilarEncapsulationMode"
  334. :disabled="single"
  335. >查看相同工艺封装问题</el-button>
  336. </el-col>
  337. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  338. </el-row>
  339. <el-table v-loading="loading" :data="componentList" @selection-change="handleSelectionChange">
  340. <el-table-column type="selection" width="55" align="center" />
  341. <el-table-column label="编号" align="center" prop="id" />
  342. <el-table-column label="元器件类别" align="center" prop="componentCategory" />
  343. <el-table-column label="分类代码" align="center" prop="componentCategoryCode" />
  344. <el-table-column label="元器件名称" align="center" prop="componentName" width="100" :show-overflow-tooltip="true"/>
  345. <el-table-column label="生产厂家" align="center" prop="manufacturer" :show-overflow-tooltip="true"/>
  346. <el-table-column label="国产型号" align="center" prop="componentModel" :show-overflow-tooltip="true"/>
  347. <el-table-column label="国产型号替代型号" align="center" prop="replaceDomesticModel" width="110" :show-overflow-tooltip="true"/>
  348. <el-table-column label="质量等级" align="center" prop="qualityGrade" />
  349. <el-table-column label="质量问题" align="center" prop="qualityProblem" />
  350. <el-table-column label="供货周期(周)" align="center" prop="deliveryCycle" width="120"/>
  351. <el-table-column label="供货量(个/年)" align="center" prop="supplyQuantity" width="140"/>
  352. <el-table-column label="价格" align="center" prop="unitPrice" />
  353. <el-table-column label="ZZKK等级" align="center" prop="zzkkLevel" width="100"/>
  354. <el-table-column label="WKB情况" align="center" prop="wkbInfo" />
  355. <el-table-column label="是否在优选目录内" align="center" prop="inPreference" width="130" :show-overflow-tooltip="true"/>
  356. <el-table-column label="质量检验" align="center" prop="qualityInspection" />
  357. <el-table-column label="停产断档日期" align="center" prop="shutdownDate" width="180">
  358. <template slot-scope="scope">
  359. <span>{{ parseTime(scope.row.shutdownDate, '{y}-{m}-{d}') }}</span>
  360. </template>
  361. </el-table-column>
  362. <el-table-column label="是否禁限用" align="center" prop="forbidden" />
  363. <el-table-column label="应用验证数据" align="center" prop="appValidationData" />
  364. <el-table-column label="风险测评指标" align="center" prop="riskEvaluationIndex" />
  365. <el-table-column label="封装形式" align="center" prop="encapsulationMode" />
  366. <!-- <el-table-column label="阻值" align="center" prop="resistanceValue" />
  367. <el-table-column label="精度" align="center" prop="resistancePrecision" />
  368. <el-table-column label="电阻温度特性" align="center" prop="resistanceTemperature" />
  369. <el-table-column label="功耗" align="center" prop="resistancePower" />
  370. <el-table-column label="电容量Cp" align="center" prop="capacitanceValue" />
  371. <el-table-column label="损耗DF" align="center" prop="capacitanceLoss" />
  372. <el-table-column label="温度系数" align="center" prop="temperatureCoefficient" />
  373. <el-table-column label="额定电压WVDC" align="center" prop="ratedVoltage" />
  374. <el-table-column label="电感量" align="center" prop="inductance" />
  375. <el-table-column label="品质因数Qmin" align="center" prop="qualityFactor" />
  376. <el-table-column label="直流电阻" align="center" prop="dcResistance" />
  377. <el-table-column label="额定电流" align="center" prop="ratedCurrent" />
  378. <el-table-column label="最大正向电流IFM" align="center" prop="paramIfm" />
  379. <el-table-column label="最大反向工作电压VRRM" align="center" prop="paramVrrm" />
  380. <el-table-column label="最大浪涌电流IFSM" align="center" prop="paramIfsm" />
  381. <el-table-column label="稳压状态下的动态电阻ZZ" align="center" prop="paramZz" />
  382. <el-table-column label="最大额定功率PCM" align="center" prop="paramPcm" />
  383. <el-table-column label="最大集电极电流ICM" align="center" prop="paramIcm" />
  384. <el-table-column label="最大集电极-基极电压VCBO" align="center" prop="paramVcbo" />
  385. <el-table-column label="集电极-发射极电压VCEO" align="center" prop="paramVceo" />
  386. <el-table-column label="发射极-基极电压VEBO" align="center" prop="paramVebo" />
  387. <el-table-column label="漏源电压VDSS" align="center" prop="paramVdss" />
  388. <el-table-column label="漏极直流电流ID" align="center" prop="paramId" />
  389. <el-table-column label="漏-源通态电阻RDS(on)" align="center" prop="paramRdsOn" />
  390. <el-table-column label="抗静电能力" align="center" prop="antistaticCapacity" />
  391. <el-table-column label="抗辐照能力" align="center" prop="radiationResistance" />
  392. <el-table-column label="材料" align="center" prop="materials" />
  393. <el-table-column label="工艺" align="center" prop="craft" />
  394. <el-table-column label="重量" align="center" prop="weight" />
  395. <el-table-column label="备注" align="center" prop="remark" /> -->
  396. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  397. <template slot-scope="scope">
  398. <el-button
  399. size="mini"
  400. type="text"
  401. icon="el-icon-edit"
  402. @click="handleUpdate(scope.row)"
  403. v-hasPermi="['biz:component:edit']"
  404. >修改</el-button>
  405. <el-button
  406. size="mini"
  407. type="text"
  408. icon="el-icon-delete"
  409. @click="handleDelete(scope.row)"
  410. v-hasPermi="['biz:component:remove']"
  411. >删除</el-button>
  412. </template>
  413. </el-table-column>
  414. </el-table>
  415. <pagination
  416. v-show="total>0"
  417. :total="total"
  418. :page.sync="queryParams.pageNum"
  419. :limit.sync="queryParams.pageSize"
  420. @pagination="getList"
  421. />
  422. <!-- 元器件详情导入对话框 -->
  423. <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px">
  424. <el-upload
  425. ref="upload"
  426. :limit="1"
  427. accept=".xlsx, .xls"
  428. :headers="upload.headers"
  429. :action="upload.url + '?updateSupport=' + upload.updateSupport"
  430. :disabled="upload.isUploading"
  431. :on-progress="handleFileUploadProgress"
  432. :on-success="handleFileSuccess"
  433. :auto-upload="false"
  434. drag
  435. >
  436. <i class="el-icon-upload"></i>
  437. <div class="el-upload__text">
  438. 将文件拖到此处,或
  439. <em>点击上传</em>
  440. </div>
  441. <div class="el-upload__tip" slot="tip">
  442. <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
  443. <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
  444. </div>
  445. <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
  446. </el-upload>
  447. <div slot="footer" class="dialog-footer">
  448. <el-button type="primary" @click="submitFileForm">确 定</el-button>
  449. <el-button @click="upload.open = false">取 消</el-button>
  450. </div>
  451. </el-dialog>
  452. <!-- 添加或修改元器件对话框 -->
  453. <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
  454. <el-form style="border:1px solid #C0C0C0;padding: 5px;margin: auto" ref="form" :model="form" :rules="rules" label-width="220px">
  455. <el-form-item label="元器件类别" prop="componentCategory">
  456. <el-input v-model="form.componentCategory" placeholder="请输入元器件类别" />
  457. </el-form-item>
  458. <el-form-item label="分类代码" prop="componentCategoryCode">
  459. <el-input v-model="form.componentCategoryCode" placeholder="请输入分类代码" />
  460. </el-form-item>
  461. <el-form-item label="元器件名称" prop="componentName">
  462. <el-input v-model="form.componentName" placeholder="请输入元器件名称" />
  463. </el-form-item>
  464. <el-form-item label="生产厂家" prop="manufacturer">
  465. <el-input v-model="form.manufacturer" placeholder="请输入生产厂家" />
  466. </el-form-item>
  467. <el-form-item label="国产型号" prop="componentModel">
  468. <el-input v-model="form.componentModel" placeholder="请输入国产型号" />
  469. </el-form-item>
  470. <el-form-item label="国产型号替代型号" prop="replaceDomesticModel">
  471. <el-input v-model="form.replaceDomesticModel" placeholder="请输入国产型号替代型号" />
  472. </el-form-item>
  473. <el-form-item label="质量等级" prop="qualityGrade">
  474. <el-input v-model="form.qualityGrade" placeholder="请输入质量等级" />
  475. </el-form-item>
  476. <el-form-item label="质量问题" prop="qualityProblem">
  477. <el-input v-model="form.qualityProblem" placeholder="请输入质量问题" />
  478. </el-form-item>
  479. <el-form-item label="供货周期(周)" prop="deliveryCycle">
  480. <el-input v-model="form.deliveryCycle" placeholder="请输入供货周期" />
  481. </el-form-item>
  482. <el-form-item label="供货量(个/年)" prop="supplyQuantity">
  483. <el-input v-model="form.supplyQuantity" placeholder="请输入供货量(个/年)" />
  484. </el-form-item>
  485. <el-form-item label="价格(元)" prop="unitPrice">
  486. <el-input v-model="form.unitPrice" placeholder="请输入价格" />
  487. </el-form-item>
  488. <el-form-item label="ZZKK等级" prop="zzkkLevel">
  489. <el-input v-model="form.zzkkLevel" placeholder="请输入ZZKK等级" />
  490. </el-form-item>
  491. <el-form-item label="WKB情况" prop="wkbInfo">
  492. <el-input v-model="form.wkbInfo" placeholder="请输入WKB情况" />
  493. </el-form-item>
  494. <el-form-item label="是否在优选目录内" prop="inPreference">
  495. <el-input v-model="form.inPreference" placeholder="请输入是否在优选目录内" />
  496. </el-form-item>
  497. <el-form-item label="质量检验" prop="qualityInspection">
  498. <el-input v-model="form.qualityInspection" placeholder="请输入质量检验" />
  499. </el-form-item>
  500. <el-form-item label="停产断档日期" prop="shutdownDate">
  501. <el-date-picker clearable
  502. v-model="form.shutdownDate"
  503. type="date"
  504. value-format="yyyy-MM-dd"
  505. placeholder="请选择停产断档日期">
  506. </el-date-picker>
  507. </el-form-item>
  508. <el-form-item label="是否禁限用" prop="forbidden">
  509. <el-input v-model="form.forbidden" placeholder="请输入是否禁限用" />
  510. </el-form-item>
  511. <el-form-item label="应用验证数据" prop="appValidationData">
  512. <el-input v-model="form.appValidationData" placeholder="请输入应用验证数据" />
  513. </el-form-item>
  514. <el-form-item label="风险测评指标" prop="riskEvaluationIndex">
  515. <el-input v-model="form.riskEvaluationIndex" placeholder="请输入风险测评指标" />
  516. </el-form-item>
  517. <el-form-item label="封装形式" prop="encapsulationMode">
  518. <el-input v-model="form.encapsulationMode" placeholder="请输入封装形式" />
  519. </el-form-item>
  520. <el-form-item label="阻值" prop="resistanceValue">
  521. <el-input v-model="form.resistanceValue" placeholder="请输入阻值" />
  522. </el-form-item>
  523. <el-form-item label="精度" prop="resistancePrecision">
  524. <el-input v-model="form.resistancePrecision" placeholder="请输入精度" />
  525. </el-form-item>
  526. <el-form-item label="电阻温度特性" prop="resistanceTemperature">
  527. <el-input v-model="form.resistanceTemperature" placeholder="请输入电阻温度特性" />
  528. </el-form-item>
  529. <el-form-item label="功耗" prop="resistancePower">
  530. <el-input v-model="form.resistancePower" placeholder="请输入功耗" />
  531. </el-form-item>
  532. <el-form-item label="电容量Cp" prop="capacitanceValue">
  533. <el-input v-model="form.capacitanceValue" placeholder="请输入电容量Cp" />
  534. </el-form-item>
  535. <el-form-item label="损耗DF" prop="capacitanceLoss">
  536. <el-input v-model="form.capacitanceLoss" placeholder="请输入损耗DF" />
  537. </el-form-item>
  538. <el-form-item label="温度系数" prop="temperatureCoefficient">
  539. <el-input v-model="form.temperatureCoefficient" placeholder="请输入温度系数" />
  540. </el-form-item>
  541. <el-form-item label="额定电压WVDC" prop="ratedVoltage">
  542. <el-input v-model="form.ratedVoltage" placeholder="请输入额定电压WVDC" />
  543. </el-form-item>
  544. <el-form-item label="电感量" prop="inductance">
  545. <el-input v-model="form.inductance" placeholder="请输入电感量" />
  546. </el-form-item>
  547. <el-form-item label="品质因数Qmin" prop="qualityFactor">
  548. <el-input v-model="form.qualityFactor" placeholder="请输入品质因数Qmin" />
  549. </el-form-item>
  550. <el-form-item label="直流电阻" prop="dcResistance">
  551. <el-input v-model="form.dcResistance" placeholder="请输入直流电阻" />
  552. </el-form-item>
  553. <el-form-item label="额定电流" prop="ratedCurrent">
  554. <el-input v-model="form.ratedCurrent" placeholder="请输入额定电流" />
  555. </el-form-item>
  556. <el-form-item label="最大正向电流IFM(mA)" prop="paramIfm">
  557. <el-input v-model="form.paramIfm" placeholder="请输入最大正向电流IFM" />
  558. </el-form-item>
  559. <el-form-item label="最大反向工作电压VRRM(V)" prop="paramVrrm">
  560. <el-input v-model="form.paramVrrm" placeholder="请输入最大反向工作电压VRRM" />
  561. </el-form-item>
  562. <el-form-item label="最大浪涌电流IFSM(A)" prop="paramIfsm">
  563. <el-input v-model="form.paramIfsm" placeholder="请输入最大浪涌电流IFSM" />
  564. </el-form-item>
  565. <el-form-item label="稳压状态下的动态电阻ZZ(Ω)" prop="paramZz">
  566. <el-input v-model="form.paramZz" placeholder="请输入稳压状态下的动态电阻ZZ" />
  567. </el-form-item>
  568. <el-form-item label="最大额定功率PCM(mW)" prop="paramPcm">
  569. <el-input v-model="form.paramPcm" placeholder="请输入最大额定功率PCM" />
  570. </el-form-item>
  571. <el-form-item label="最大集电极电流ICM(mA)" prop="paramIcm">
  572. <el-input v-model="form.paramIcm" placeholder="请输入最大集电极电流ICM" />
  573. </el-form-item>
  574. <el-form-item label="最大集电极-基极电压VCBO(V)" prop="paramVcbo">
  575. <el-input v-model="form.paramVcbo" placeholder="请输入最大集电极-基极电压VCBO" />
  576. </el-form-item>
  577. <el-form-item label="集电极-发射极电压VCEO(V)" prop="paramVceo">
  578. <el-input v-model="form.paramVceo" placeholder="请输入集电极-发射极电压VCEO" />
  579. </el-form-item>
  580. <el-form-item label="发射极-基极电压VEBO(V)" prop="paramVebo">
  581. <el-input v-model="form.paramVebo" placeholder="请输入发射极-基极电压VEBO" />
  582. </el-form-item>
  583. <el-form-item label="漏源电压VDSS(V)" prop="paramVdss">
  584. <el-input v-model="form.paramVdss" placeholder="请输入漏源电压VDSS" />
  585. </el-form-item>
  586. <el-form-item label="漏极直流电流ID(A)" prop="paramId">
  587. <el-input v-model="form.paramId" placeholder="请输入漏极直流电流ID" />
  588. </el-form-item>
  589. <el-form-item label="漏-源通态电阻RDS(on)(mΩ)" prop="paramRdsOn">
  590. <el-input v-model="form.paramRdsOn" placeholder="请输入漏-源通态电阻RDS(on)" />
  591. </el-form-item>
  592. <el-form-item label="外形尺寸" prop="boundaryDimension">
  593. <el-input
  594. v-model="queryParams.boundaryDimension"
  595. placeholder="请输入外形尺寸"
  596. clearable
  597. @keyup.enter.native="handleQuery"
  598. />
  599. </el-form-item>
  600. <el-form-item label="抗静电能力" prop="antistaticCapacity">
  601. <el-input v-model="form.antistaticCapacity" placeholder="请输入抗静电能力" />
  602. </el-form-item>
  603. <el-form-item label="抗辐照能力" prop="radiationResistance">
  604. <el-input v-model="form.radiationResistance" placeholder="请输入抗辐照能力" />
  605. </el-form-item>
  606. <el-form-item label="材料" prop="materials">
  607. <el-input v-model="form.materials" type="textarea" placeholder="请输入内容" />
  608. </el-form-item>
  609. <el-form-item label="工艺" prop="craft">
  610. <el-input v-model="form.craft" type="textarea" placeholder="请输入内容" />
  611. </el-form-item>
  612. <el-form-item label="重量" prop="weight">
  613. <el-input v-model="form.weight" placeholder="请输入重量" />
  614. </el-form-item>
  615. <el-form-item label="备注" prop="remark">
  616. <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
  617. </el-form-item>
  618. </el-form>
  619. <div slot="footer" class="dialog-footer">
  620. <el-button type="primary" @click="submitForm">确 定</el-button>
  621. <el-button @click="cancel">取 消</el-button>
  622. </div>
  623. </el-dialog>
  624. <el-dialog
  625. :title="qualityProblemsTitle"
  626. :visible.sync="qualityProblemDialogVisible"
  627. width="40%">
  628. <div class="quality-problems">
  629. <span v-for="(item, index) in qualityProblems" :key="index">
  630. {{ item }}
  631. </span>
  632. </div>
  633. <span slot="footer" class="dialog-footer">
  634. <el-button @click="qualityProblemDialogVisible = false">取 消</el-button>
  635. <el-button type="primary" @click="qualityProblemDialogVisible = false">确 定</el-button>
  636. </span>
  637. </el-dialog>
  638. </div>
  639. </template>
  640. <script>
  641. import { listComponent, getComponent, delComponent, addComponent, updateComponent, getall, getQualityProblemBySimilarCategory, getQualityProblemBySimilarEncapsulationMode } from "@/api/biz/component";
  642. import { getToken } from "@/utils/auth";
  643. export default {
  644. name: "Component",
  645. data() {
  646. return {
  647. componentInfo: null,
  648. // 选择质量等级
  649. qualityoptions:[{
  650. value: '等级1',
  651. label: '等级1'
  652. }, {
  653. value: '等级2',
  654. label: '等级2'
  655. }, {
  656. value: '等级3',
  657. label: '等级3'
  658. }, {
  659. value: '等级4',
  660. label: '等级4'
  661. }, {
  662. value: '等级5',
  663. label: '等级5'
  664. }]
  665. ,
  666. // 遮罩层
  667. loading: true,
  668. // 选中数组
  669. ids: [],
  670. // 非单个禁用
  671. single: true,
  672. // 非多个禁用
  673. multiple: true,
  674. // 显示搜索条件
  675. showSearch: true,
  676. // 总条数
  677. total: 0,
  678. // 元器件表格数据
  679. componentList: [],
  680. // 弹出层标题
  681. title: "",
  682. // 是否显示弹出层
  683. open: false,
  684. // 查询参数
  685. queryParams: {
  686. pageNum: 1,
  687. pageSize: 10,
  688. componentCategory: null,
  689. componentCategoryCode: null,
  690. componentName: null,
  691. manufacturer: null,
  692. componentModel: null,
  693. replaceDomesticModel: null,
  694. qualityGrade: null,
  695. qualityProblem: null,
  696. deliveryCycle: null,
  697. supplyQuantity: null,
  698. unitPrice: null,
  699. zzkkLevel: null,
  700. wkbInfo: null,
  701. inPreference: null,
  702. qualityInspection: null,
  703. shutdownDate: null,
  704. forbidden: null,
  705. appValidationData: null,
  706. riskEvaluationIndex: null,
  707. resistanceValue: null,
  708. resistancePrecision: null,
  709. resistanceTemperature: null,
  710. resistancePower: null,
  711. encapsulationMode: null,
  712. capacitanceValue: null,
  713. capacitanceLoss: null,
  714. temperatureCoefficient: null,
  715. ratedVoltage: null,
  716. inductance: null,
  717. qualityFactor: null,
  718. dcResistance: null,
  719. ratedCurrent: null,
  720. paramIfm: null,
  721. paramVrrm: null,
  722. paramIfsm: null,
  723. paramZz: null,
  724. paramPcm: null,
  725. paramIcm: null,
  726. paramVcbo: null,
  727. paramVceo: null,
  728. paramVebo: null,
  729. paramVdss: null,
  730. paramId: null,
  731. paramRdsOn: null,
  732. boundaryDimension: null,
  733. antistaticCapacity: null,
  734. radiationResistance: null,
  735. materials: null,
  736. craft: null,
  737. weight: null,
  738. },
  739. // 表单参数
  740. form: {},
  741. // 表单校验
  742. rules: {
  743. },
  744. // 导入参数
  745. upload: {
  746. // 是否显示弹出层(导入)
  747. open: false,
  748. // 弹出层标题(导入)
  749. title: "",
  750. // 是否禁用上传
  751. isUploading: false,
  752. // 是否更新已经存在的用户数据
  753. updateSupport: 0,
  754. // 设置上传的请求头部
  755. headers: { Authorization: "Bearer " + getToken() },
  756. // 上传的地址
  757. url: process.env.VUE_APP_BASE_API + "/biz/component/importData"
  758. },
  759. qualityProblemDialogVisible: false,
  760. qualityProblems: [],
  761. qualityProblemsTitle: '',
  762. };
  763. },
  764. async created() {
  765. try {
  766. this.componentInfo = await getall();
  767. console.log(this.componentInfo);
  768. } catch (error) {
  769. console.error("Error fetching component info:", error);
  770. }
  771. this.getList();
  772. },
  773. methods: {
  774. /** 查询元器件列表 */
  775. getList() {
  776. this.loading = true;
  777. listComponent(this.queryParams).then(response => {
  778. this.componentList = response.rows;
  779. this.total = response.total;
  780. this.loading = false;
  781. });
  782. },
  783. // 取消按钮
  784. cancel() {
  785. this.open = false;
  786. this.reset();
  787. },
  788. // 表单重置
  789. reset() {
  790. this.form = {
  791. id: null,
  792. componentCategory: null,
  793. componentCategoryCode: null,
  794. componentName: null,
  795. manufacturer: null,
  796. componentModel: null,
  797. replaceDomesticModel: null,
  798. qualityGrade: null,
  799. qualityProblem: null,
  800. deliveryCycle: null,
  801. supplyQuantity: null,
  802. unitPrice: null,
  803. zzkkLevel: null,
  804. wkbInfo: null,
  805. inPreference: null,
  806. qualityInspection: null,
  807. shutdownDate: null,
  808. forbidden: null,
  809. appValidationData: null,
  810. riskEvaluationIndex: null,
  811. resistanceValue: null,
  812. resistancePrecision: null,
  813. resistanceTemperature: null,
  814. resistancePower: null,
  815. encapsulationMode: null,
  816. capacitanceValue: null,
  817. capacitanceLoss: null,
  818. temperatureCoefficient: null,
  819. ratedVoltage: null,
  820. inductance: null,
  821. qualityFactor: null,
  822. dcResistance: null,
  823. ratedCurrent: null,
  824. paramIfm: null,
  825. paramVrrm: null,
  826. paramIfsm: null,
  827. paramZz: null,
  828. paramPcm: null,
  829. paramIcm: null,
  830. paramVcbo: null,
  831. paramVceo: null,
  832. paramVebo: null,
  833. paramVdss: null,
  834. paramId: null,
  835. paramRdsOn: null,
  836. boundaryDimension: null,
  837. antistaticCapacity: null,
  838. radiationResistance: null,
  839. materials: null,
  840. craft: null,
  841. weight: null,
  842. createBy: null,
  843. createTime: null,
  844. updateBy: null,
  845. updateTime: null,
  846. remark: null
  847. };
  848. this.resetForm("form");
  849. },
  850. /** 搜索按钮操作 */
  851. handleQuery() {
  852. this.queryParams.pageNum = 1;
  853. this.getList();
  854. },
  855. /** 重置按钮操作 */
  856. resetQuery() {
  857. this.resetForm("queryForm");
  858. this.handleQuery();
  859. },
  860. // 多选框选中数据
  861. handleSelectionChange(selection) {
  862. this.ids = selection.map(item => item.id)
  863. this.single = selection.length!==1
  864. this.multiple = !selection.length
  865. },
  866. /** 新增按钮操作 */
  867. handleAdd() {
  868. this.reset();
  869. this.open = true;
  870. this.title = "添加元器件";
  871. },
  872. /** 修改按钮操作 */
  873. handleUpdate(row) {
  874. this.reset();
  875. const id = row.id || this.ids
  876. getComponent(id).then(response => {
  877. this.form = response.data;
  878. this.open = true;
  879. this.title = "修改元器件";
  880. });
  881. },
  882. /** 提交按钮 */
  883. submitForm() {
  884. this.$refs["form"].validate(valid => {
  885. if (valid) {
  886. if (this.form.id != null) {
  887. updateComponent(this.form).then(response => {
  888. this.$modal.msgSuccess("修改成功");
  889. this.open = false;
  890. this.getList();
  891. });
  892. } else {
  893. addComponent(this.form).then(response => {
  894. this.$modal.msgSuccess("新增成功");
  895. this.open = false;
  896. this.getList();
  897. });
  898. }
  899. }
  900. });
  901. },
  902. /** 删除按钮操作 */
  903. handleDelete(row) {
  904. const ids = row.id || this.ids;
  905. this.$modal.confirm('是否确认删除元器件编号为"' + ids + '"的数据项?').then(function() {
  906. return delComponent(ids);
  907. }).then(() => {
  908. this.getList();
  909. this.$modal.msgSuccess("删除成功");
  910. }).catch(() => {});
  911. },
  912. /** 导出按钮操作 */
  913. handleExport() {
  914. this.download('biz/component/export', {
  915. ...this.queryParams
  916. }, `component_${new Date().getTime()}.xlsx`)
  917. },
  918. /** 导入按钮操作 */
  919. handleImport() {
  920. this.upload.title = "元器件批量导入";
  921. this.upload.open = true;
  922. },
  923. /** 下载模板操作 */
  924. importTemplate() {
  925. this.download('biz/component/importTemplate', {
  926. }, `component_template_${new Date().getTime()}.xlsx`)
  927. },
  928. // 文件上传中处理
  929. handleFileUploadProgress(event, file, fileList) {
  930. this.upload.isUploading = true;
  931. },
  932. // 文件上传成功处理
  933. handleFileSuccess(response, file, fileList) {
  934. this.upload.open = false;
  935. this.upload.isUploading = false;
  936. this.$refs.upload.clearFiles();
  937. this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
  938. this.getList();
  939. },
  940. // 提交上传文件
  941. submitFileForm() {
  942. this.$refs.upload.submit();
  943. },
  944. getQualityProblemBySimilarCategory() {
  945. this.reset();
  946. this.qualityProblems = []
  947. getQualityProblemBySimilarCategory(this.ids).then(response => {
  948. this.qualityProblems = response.data;
  949. this.qualityProblemDialogVisible = true;
  950. this.qualityProblemsTitle = '同类产品问题'
  951. });
  952. },
  953. getQualityProblemBySimilarEncapsulationMode() {
  954. this.reset();
  955. this.qualityProblems = []
  956. getQualityProblemBySimilarEncapsulationMode(this.ids).then(response => {
  957. this.qualityProblems = response.data;
  958. this.qualityProblemDialogVisible = true;
  959. this.qualityProblemsTitle = '相同工艺封装问题'
  960. });
  961. },
  962. }
  963. };
  964. </script>
  965. <style scoped>
  966. .el-checkbox__inner {
  967. border-color: #8492a6 !important;
  968. }
  969. .app-container {
  970. min-height: 100vh;
  971. background: radial-gradient(circle at 10% 20%, #3A71A8 0%, rgb(239, 249, 249) 90%);
  972. }
  973. /* Style for the quality problems */
  974. .quality-problems {
  975. font-family: Arial, sans-serif;
  976. font-size: 16px;
  977. line-height: 1.5;
  978. color: #333; /* Adjust color as needed */
  979. }
  980. /* Style for the line breaks */
  981. .quality-problems br {
  982. display: none; /* Hide line breaks */
  983. }
  984. /* Style for the comma after each item */
  985. .quality-problems span:not(:last-child)::after {
  986. content: ", ";
  987. }
  988. </style>