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.

1379 lines
46 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. <template>
  2. <div class="mod-config">
  3. <!-- 收藏 -->
  4. <div>
  5. <span @click="favoriteFunction()">
  6. <icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
  7. </span>
  8. </div>
  9. <!-- 条件查询 -->
  10. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  11. <el-form-item :label="'模板编码'">
  12. <el-input v-model="searchData.templateId" style="width: 120px"></el-input>
  13. </el-form-item>
  14. <el-form-item :label="'模板名称'">
  15. <el-input v-model="searchData.templateName" style="width: 120px"></el-input>
  16. </el-form-item>
  17. <el-form-item label="检验类型">
  18. <el-select v-model="searchData.inspectionTypeNo" placeholder="请选择">
  19. <el-option label="全部" value=""></el-option>
  20. <el-option
  21. v-for = "i in options"
  22. :key = "i.inspectionTypeNo"
  23. :label = "i.inspectionTypeName"
  24. :value = "i.inspectionTypeNo">
  25. </el-option>
  26. </el-select>
  27. </el-form-item>
  28. <el-form-item :label="' '">
  29. <el-button @click="doEmpty()">清空</el-button>
  30. <el-button type="primary" @click="getDataList()">查询</el-button>
  31. <el-button type="primary" @click="addModal()">新增</el-button>
  32. </el-form-item>
  33. <el-form-item :label="' '">
  34. <el-button type="primary" icon="el-icon-upload" @click="qcUpload()">导入</el-button>
  35. <download-excel
  36. :fields="fields()"
  37. :data="exportData"
  38. type="xls"
  39. :name="exportName"
  40. :header="exportHeader"
  41. :footer="exportFooter"
  42. :fetch="createExportData"
  43. :before-generate="startDownload"
  44. :before-finish="finishDownload"
  45. worksheet="导出信息"
  46. class="el-button el-button--primary el-button--medium">
  47. {{ "导出" }}
  48. </download-excel>
  49. </el-form-item>
  50. </el-form>
  51. <!-- 展示列表 -->
  52. <el-table
  53. :height="height"
  54. :data="dataList"
  55. border
  56. v-loading="dataListLoading"
  57. style="width: 100%;">
  58. <!-- <el-table-column-->
  59. <!-- prop="templateId"-->
  60. <!-- header-align="center"-->
  61. <!-- align="center"-->
  62. <!-- label="检验模板编码"-->
  63. <!-- width="100">-->
  64. <!-- </el-table-column>-->
  65. <!-- <el-table-column-->
  66. <!-- prop="templateName"-->
  67. <!-- header-align="center"-->
  68. <!-- align="left"-->
  69. <!-- label="检验模板名称"-->
  70. <!-- :width="flexColumnWidth('检验模板名称','templateName')">-->
  71. <!-- </el-table-column>-->
  72. <!-- <el-table-column-->
  73. <!-- prop="samplingProgrammeNo"-->
  74. <!-- header-align="center"-->
  75. <!-- align="center"-->
  76. <!-- label="抽样方案"-->
  77. <!-- :width="flexColumnWidth('抽样方案','samplingProgrammeNo')">-->
  78. <!-- </el-table-column>-->
  79. <!-- <el-table-column-->
  80. <!-- prop="samplingLevelDesc"-->
  81. <!-- header-align="center"-->
  82. <!-- align="left"-->
  83. <!-- label="检验水平"-->
  84. <!-- :width="flexColumnWidth('检验水平','samplingLevelDesc')">-->
  85. <!-- </el-table-column>-->
  86. <el-table-column
  87. v-for="(item,index) in columnList" :key="index"
  88. :sortable="item.columnSortable"
  89. :prop="item.columnProp"
  90. :header-align="item.headerAlign"
  91. :show-overflow-tooltip="item.showOverflowTooltip"
  92. :align="item.align"
  93. :fixed="item.fixed==''?false:item.fixed"
  94. :min-width="item.columnWidth"
  95. :label="item.columnLabel">
  96. <template slot-scope="scope">
  97. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  98. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  99. </template>
  100. </el-table-column>
  101. <el-table-column
  102. fixed="right"
  103. header-align="center"
  104. align="center"
  105. width="160"
  106. label="操作">
  107. <template slot-scope="scope">
  108. <a type="text" size="small" @click="updateModal(scope.row)">编辑</a>
  109. <a type="text" size="small" @click="detailModal(scope.row)">检验项目</a>
  110. <a type="text" size="small" @click="deleteModel(scope.row)">删除</a>
  111. </template>
  112. </el-table-column>
  113. </el-table>
  114. <!-- 分页栏 -->
  115. <el-pagination
  116. @size-change="sizeChangeHandle"
  117. @current-change="currentChangeHandle"
  118. :current-page="pageIndex"
  119. :page-sizes="[20, 50, 100, 1000]"
  120. :page-size="pageSize"
  121. :total="totalPage"
  122. layout="total, sizes, prev, pager, next, jumper">
  123. </el-pagination>
  124. <!-- 检验模板新增/修改 -->
  125. <el-dialog title="检验模板" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px">
  126. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  127. <el-form-item label="检验模板名称:" prop="templateName" :rules="rules.templateNameType">
  128. <el-input v-model="modalData.templateName" style="width: 120px"></el-input>
  129. </el-form-item>
  130. <el-form-item label="检验类型" prop="inspectionTypeNo" :rules="rules.inspectionTypeNoType">
  131. <el-select v-model="modalData.inspectionTypeNo" placeholder="请选择" style="width: 120px">
  132. <el-option
  133. v-for = "i in options"
  134. :key = "i.inspectionTypeNo"
  135. :label = "i.inspectionTypeName"
  136. :value = "i.inspectionTypeNo">
  137. </el-option>
  138. </el-select>
  139. </el-form-item>
  140. </el-form>
  141. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  142. <el-form-item prop="samplingProgrammeNo" :rules="rules.samplingProgrammeNoType">
  143. <span slot="label" style="" @click="getBaseList(1051)"><a herf="#">抽样方案编码</a></span>
  144. <el-input v-model="modalData.samplingProgrammeNo" style="width: 120px"></el-input>
  145. </el-form-item>
  146. <el-form-item label="抽样方案名称:" prop="samplingProgrammeDesc" :rules="rules.samplingProgrammeDescType">
  147. <el-input v-model="modalData.samplingProgrammeDesc" disabled style="width: 120px"></el-input>
  148. </el-form-item>
  149. </el-form>
  150. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  151. <el-form-item prop="samplingLevelNo" :rules="rules.samplingLevelNoType">
  152. <span slot="label" style="" @click="getBaseList(1048)"><a herf="#">检验水平编码</a></span>
  153. <el-input v-model="modalData.samplingLevelNo" style="width: 120px"></el-input>
  154. </el-form-item>
  155. <el-form-item label="检验水平名称:" prop="samplingLevelDesc" :rules="rules.samplingLevelDescType">
  156. <el-input v-model="modalData.samplingLevelDesc" disabled style="width: 120px"></el-input>
  157. </el-form-item>
  158. </el-form>
  159. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  160. <el-form-item label="检验周期(h):">
  161. <el-input v-model="modalData.inspectionCycle" type="number" style="width: 120px"></el-input>
  162. </el-form-item>
  163. <el-form-item label="默认抽样数量:">
  164. <el-input v-model="modalData.defaultSamplingQuantity" type="number" style="width: 120px"></el-input>
  165. </el-form-item>
  166. <el-form-item label="默认抽样比例:">
  167. <el-input v-model="modalData.defaultSamplingProportion" type="number" style="width: 120px"></el-input>
  168. </el-form-item>
  169. </el-form>
  170. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  171. <el-form-item label="AQL:">
  172. <el-input v-model="modalData.aql" style="width: 120px"></el-input>
  173. </el-form-item>
  174. <el-form-item label="AC:">
  175. <el-input v-model="modalData.ac" type="number" style="width: 120px"></el-input>
  176. </el-form-item>
  177. <el-form-item label="RE:">
  178. <el-input v-model="modalData.re" type="number" style="width: 120px"></el-input>
  179. </el-form-item>
  180. </el-form>
  181. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  182. <el-form-item label="版本号:">
  183. <el-input v-model="modalData.templateVersion" :disabled="modalDisableFlag" style="width: 120px"></el-input>
  184. </el-form-item>
  185. <el-form-item label="检验模板备注:">
  186. <el-input v-model="modalData.templateRemark" style="width: 255px"></el-input>
  187. </el-form-item>
  188. </el-form>
  189. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  190. <el-button type="primary" @click="saveData()">保存</el-button>
  191. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  192. </el-footer>
  193. </el-dialog>
  194. <!-- 检验项目 -->
  195. <el-dialog title="检验项目清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="820px">
  196. <el-form :inline="true" label-position="top" @keyup.enter.native="getDataList()">
  197. <el-form-item :label="'检验模板编码'">
  198. <el-input v-model="detailData.templateId" readonly style="width: 120px"></el-input>
  199. </el-form-item>
  200. <el-form-item :label="'检验模板名称'">
  201. <el-input v-model="detailData.templateName" readonly style="width: 240px"></el-input>
  202. </el-form-item>
  203. <el-form-item :label="' '">
  204. <el-button type="primary" @click="addFastModal()">新增</el-button>
  205. </el-form-item>
  206. </el-form>
  207. <!-- 检验项目展示列表 -->
  208. <div class="rq ">
  209. <el-table
  210. :height="400"
  211. :data="detailList"
  212. border
  213. v-loading="dataListLoading"
  214. style="width: 100%;">
  215. <el-table-column
  216. v-for="(item,index) in columnDetailList" :key="index"
  217. :sortable="item.columnSortable"
  218. :prop="item.columnProp"
  219. :header-align="item.headerAlign"
  220. :show-overflow-tooltip="item.showOverflowTooltip"
  221. :align="item.align"
  222. :fixed="item.fixed==''?false:item.fixed"
  223. :min-width="item.columnWidth"
  224. :label="item.columnLabel">
  225. <template slot-scope="scope">
  226. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  227. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  228. </template>
  229. </el-table-column>
  230. <el-table-column
  231. prop=""
  232. header-align="center"
  233. align="right"
  234. min-width="60"
  235. label="标准值">
  236. <template slot-scope="scope">
  237. <el-input v-model="scope.row.defaultValue" style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input>
  238. </template>
  239. </el-table-column>
  240. <el-table-column
  241. prop=""
  242. header-align="center"
  243. align="right"
  244. min-width="60"
  245. label="最大值">
  246. <template slot-scope="scope">
  247. <el-input v-if="scope.row.valueTypeDb == 'T'" v-model="scope.row.maxValue" disabled style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input>
  248. <el-input v-if="scope.row.valueTypeDb != 'T'" v-model="scope.row.maxValue" style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input>
  249. </template>
  250. </el-table-column>
  251. <el-table-column
  252. prop=""
  253. header-align="center"
  254. align="right"
  255. min-width="60"
  256. label="最小值">
  257. <template slot-scope="scope">
  258. <el-input v-if="scope.row.valueTypeDb == 'T'" v-model="scope.row.minValue" disabled style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input>
  259. <el-input v-if="scope.row.valueTypeDb != 'T'" v-model="scope.row.minValue" style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input>
  260. </template>
  261. </el-table-column>
  262. <el-table-column
  263. prop=""
  264. header-align="center"
  265. align="right"
  266. min-width="100"
  267. label="检验设备">
  268. <template slot-scope="scope">
  269. <!-- <el-select v-model="scope.row.objectID" placeholder="请选择" >-->
  270. <!-- <el-option-->
  271. <!-- v-for = "i in objects"-->
  272. <!-- :key = "i.objectID"-->
  273. <!-- :label = "i.objectDesc"-->
  274. <!-- :value = "i.objectID">-->
  275. <!-- </el-option>-->
  276. <!-- </el-select>-->
  277. <el-autocomplete
  278. clearable
  279. class="inline-input"
  280. popper-class="el-autocomplete-suggestion"
  281. v-model="scope.row.objectID"
  282. value-key="idAndDesc"
  283. :fetch-suggestions="FilterEntityName"
  284. :trigger-on-focus="true"
  285. placeholder="请选择设备"
  286. @clear="blurForBug()"
  287. @select="handleSelect"
  288. :popper-append-to-body="false"
  289. ></el-autocomplete>
  290. </template>
  291. </el-table-column>
  292. <el-table-column
  293. fixed="right"
  294. header-align="center"
  295. align="center"
  296. width="80"
  297. label="操作">
  298. <template slot-scope="scope">
  299. <a type="text" size="small" @click="delItemDetails(scope.row)">删除项目</a>
  300. </template>
  301. </el-table-column>
  302. </el-table>
  303. </div>
  304. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  305. <el-button type="primary" @click="saveDetail()">保存</el-button>
  306. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  307. </el-footer>
  308. </el-dialog>
  309. <!-- 检验项目->快速新增 -->
  310. <el-dialog title="新增" @close="refreshDetailList" :close-on-click-modal="false" v-drag :visible.sync="fastAddFlag" width="900px">
  311. <div style="font-size: 12px">
  312. <el-form :inline="true" label-position="top" :model="detailData">
  313. <el-form-item :label="'模板编码'">
  314. <el-input v-model="detailData.templateId" readonly style="width: 120px"></el-input>
  315. </el-form-item>
  316. <el-form-item :label="'模板名称'">
  317. <el-input v-model="detailData.templateName" readonly style="width: 200px"></el-input>
  318. </el-form-item>
  319. </el-form>
  320. </div>
  321. <el-container style="margin-top: 0px;">
  322. <el-main style="width: 400px; padding: 1px">
  323. <span style="font-size: 12px" >可选项目</span>
  324. <el-table
  325. height="400px"
  326. :data="itemList1"
  327. border
  328. ref="itemTable1"
  329. @row-click="itemClickRow1"
  330. @selection-change="selectionItem1"
  331. highlight-current-row
  332. v-loading="dataListLoading"
  333. style="width: 100%">
  334. <el-table-column
  335. type="selection"
  336. header-align="center"
  337. align="center"
  338. :selectable="selectFlag"
  339. width="50">
  340. </el-table-column>
  341. <el-table-column
  342. prop="itemNo"
  343. header-align="center"
  344. align="center"
  345. min-width="80"
  346. label="项目编码">
  347. </el-table-column>
  348. <el-table-column
  349. prop="itemDesc"
  350. header-align="center"
  351. align="center"
  352. min-width="230"
  353. label="项目名称">
  354. </el-table-column>
  355. </el-table>
  356. </el-main>
  357. <el-main style="width: 100px;padding: 1px">
  358. <div style="margin-top: 182px;margin-left: 18px">
  359. <el-button type="primary" @click="addItem()">添加>></el-button>
  360. </div>
  361. <div style="margin-top: 15px;margin-left: 18px">
  362. <el-button type="primary" @click="deleteItem()">删除<<</el-button>
  363. </div>
  364. </el-main>
  365. <el-main style="width: 400px;padding: 1px">
  366. <span style="font-size: 12px" >已有项目</span>
  367. <el-table
  368. height="400px"
  369. :data="itemList2"
  370. border
  371. ref="itemTable2"
  372. @row-click="itemClickRow2"
  373. @selection-change="selectionItem2"
  374. highlight-current-row
  375. v-loading="dataListLoading"
  376. style="width: 100%">
  377. <el-table-column
  378. type="selection"
  379. header-align="center"
  380. align="center"
  381. :selectable="selectFlag"
  382. width="50">
  383. </el-table-column>
  384. <el-table-column
  385. prop="itemNo"
  386. header-align="center"
  387. align="center"
  388. min-width="80"
  389. label="项目编码">
  390. </el-table-column>
  391. <el-table-column
  392. prop="itemDesc"
  393. header-align="center"
  394. align="center"
  395. min-width="230"
  396. label="项目名称">
  397. </el-table-column>
  398. </el-table>
  399. </el-main>
  400. </el-container>
  401. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  402. <el-button type="primary" @click="fastAddFlag = false">关闭</el-button>
  403. </el-footer>
  404. </el-dialog>
  405. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  406. <!-- 导入 -->
  407. <qcUpload ref="qcUpload" @refreshPageTables="getDataList()" v-drag></qcUpload>
  408. </div>
  409. </template>
  410. <script>
  411. import {
  412. templateSearch, // 查询模板
  413. templateSave, // 新增模板
  414. templateUpdate, // 修改模板
  415. templateDelete, // 删除模板
  416. InspectionTypeSearch, // 搜索所有检验类型
  417. objectSearch, // 搜索所有设备
  418. templateDetailsSearch, // 查询明细列表
  419. addItemDetails, // 新增项目的检验明细
  420. getItemList, // 获取明细列表
  421. delItemDetails, // 删除项目的检验明细
  422. saveItemDetailed, // 新增项目明细的最大最小值
  423. } from "@/api/qc/qc.js"
  424. import Chooselist from '@/views/modules/common/Chooselist_eam'
  425. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  426. import qcUpload from "./qc_upload";
  427. export default {
  428. components: {
  429. Chooselist,
  430. qcUpload
  431. },
  432. watch: {
  433. },
  434. data () {
  435. return {
  436. // 是否收藏
  437. favorite: false,
  438. // 导出 start
  439. exportData: [],
  440. exportName: "根据物料设置检验模板" + this.dayjs().format('YYYYMMDDHHmmss'),
  441. exportHeader: ["根据物料设置检验模板"],
  442. exportFooter: [],
  443. exportList:[],
  444. // 导出 end
  445. tagNo:'',
  446. searchData: {
  447. site: this.$store.state.user.site,
  448. templateId: '',
  449. templateName: '',
  450. inspectionTypeNo: '',
  451. page: 1,
  452. limit: 10,
  453. },
  454. options: [],
  455. objects: [],
  456. height: 200,
  457. pageIndex: 1,
  458. pageSize: 100,
  459. totalPage: 0,
  460. modalFlag:false,
  461. modalDisableFlag:false,
  462. modalData:{
  463. flag:'',
  464. site: this.$store.state.user.site,
  465. templateId:'',
  466. templateName:'',
  467. templateRemark: '',
  468. templateType: '',
  469. templateVersion: '',
  470. samplingProgrammeNo: '',
  471. samplingProgrammeDesc: '',
  472. inspectionTypeNo: '',
  473. inspectionCycle: '',
  474. createTime: '',
  475. createBy: this.$store.state.user.name,
  476. updateBy: this.$store.state.user.name,
  477. samplingLevelNo: '',
  478. samplingLevelDesc: '',
  479. aql: '',
  480. ac: '',
  481. re: '',
  482. defaultSamplingQuantity: '',
  483. defaultSamplingProportion: '',
  484. },
  485. detailData:{
  486. site: this.$store.state.user.site,
  487. templateId:'',
  488. templateName:'',
  489. templateRemark: '',
  490. templateType: '',
  491. templateVersion: '',
  492. samplingProgrammeNo: '',
  493. samplingProgrammeDesc: '',
  494. inspectionTypeNo: '',
  495. inspectionCycle: '',
  496. createTime: '',
  497. createBy: this.$store.state.user.name,
  498. samplingLevelNo: '',
  499. samplingLevelDesc: '',
  500. aql: '',
  501. ac: '',
  502. re: '',
  503. itemNo:'',
  504. itemDesc:'',
  505. itemType:'D',
  506. },
  507. columnList: [
  508. {
  509. columnProp: 'templateId',
  510. headerAlign: "center",
  511. align: "center",
  512. columnLabel: '检验模板编码',
  513. columnHidden: false,
  514. columnImage: false,
  515. columnSortable: false,
  516. sortLv: 0,
  517. status: true,
  518. fixed: '',
  519. },
  520. {
  521. columnProp: 'templateName',
  522. headerAlign: "center",
  523. align: "center",
  524. columnLabel: '检验模板名称',
  525. columnHidden: false,
  526. columnImage: false,
  527. columnSortable: false,
  528. sortLv: 0,
  529. status: true,
  530. fixed: '',
  531. },
  532. {
  533. columnProp: 'samplingProgrammeNo',
  534. headerAlign: "center",
  535. align: "center",
  536. columnLabel: '抽样方案',
  537. columnHidden: false,
  538. columnImage: false,
  539. columnSortable: false,
  540. sortLv: 0,
  541. status: true,
  542. fixed: '',
  543. },
  544. {
  545. columnProp: 'samplingLevelDesc',
  546. headerAlign: "center",
  547. align: "center",
  548. columnLabel: '检验水平',
  549. columnHidden: false,
  550. columnImage: false,
  551. columnSortable: false,
  552. sortLv: 0,
  553. status: true,
  554. fixed: '',
  555. },
  556. {
  557. columnProp: 'inspectionCycle',
  558. headerAlign: "center",
  559. align: "center",
  560. columnLabel: '检验周期(h)',
  561. columnHidden: false,
  562. columnImage: false,
  563. columnSortable: false,
  564. sortLv: 0,
  565. status: true,
  566. fixed: '',
  567. },
  568. {
  569. columnProp: 'defaultSamplingQuantity',
  570. headerAlign: "center",
  571. align: "center",
  572. columnLabel: '默认抽样数量',
  573. columnHidden: false,
  574. columnImage: false,
  575. columnSortable: false,
  576. sortLv: 0,
  577. status: true,
  578. fixed: '',
  579. },
  580. {
  581. columnProp: 'defaultSamplingProportion',
  582. headerAlign: "center",
  583. align: "center",
  584. columnLabel: '默认抽样比例',
  585. columnHidden: false,
  586. columnImage: false,
  587. columnSortable: false,
  588. sortLv: 0,
  589. status: true,
  590. fixed: '',
  591. },
  592. {
  593. columnProp: 'aql',
  594. headerAlign: "center",
  595. align: "center",
  596. columnLabel: 'AQL',
  597. columnHidden: false,
  598. columnImage: false,
  599. columnSortable: false,
  600. sortLv: 0,
  601. status: true,
  602. fixed: '',
  603. },
  604. {
  605. columnProp: 'ac',
  606. headerAlign: "center",
  607. align: "center",
  608. columnLabel: 'AC',
  609. columnHidden: false,
  610. columnImage: false,
  611. columnSortable: false,
  612. sortLv: 0,
  613. status: true,
  614. fixed: '',
  615. },
  616. {
  617. columnProp: 're',
  618. headerAlign: "center",
  619. align: "center",
  620. columnLabel: 'RE',
  621. columnHidden: false,
  622. columnImage: false,
  623. columnSortable: false,
  624. sortLv: 0,
  625. status: true,
  626. fixed: '',
  627. },
  628. {
  629. columnProp: 'inspectionTypeName',
  630. headerAlign: "center",
  631. align: "center",
  632. columnLabel: '检验类型',
  633. columnHidden: false,
  634. columnImage: false,
  635. columnSortable: false,
  636. sortLv: 0,
  637. status: true,
  638. fixed: '',
  639. },
  640. {
  641. columnProp: 'templateRemark',
  642. headerAlign: "center",
  643. align: "center",
  644. columnLabel: '检验模板备注',
  645. columnHidden: false,
  646. columnImage: false,
  647. columnSortable: false,
  648. sortLv: 0,
  649. status: true,
  650. fixed: '',
  651. },
  652. {
  653. columnProp: 'templateVersion',
  654. headerAlign: "center",
  655. align: "center",
  656. columnLabel: '版本号',
  657. columnHidden: false,
  658. columnImage: false,
  659. columnSortable: false,
  660. sortLv: 0,
  661. status: true,
  662. fixed: '',
  663. },
  664. {
  665. columnProp: 'createTime',
  666. headerAlign: "center",
  667. align: "center",
  668. columnLabel: '创建时间',
  669. columnHidden: false,
  670. columnImage: false,
  671. columnSortable: false,
  672. sortLv: 0,
  673. status: true,
  674. fixed: '',
  675. },
  676. {
  677. columnProp: 'createBy',
  678. headerAlign: "center",
  679. align: "center",
  680. columnLabel: '创建人',
  681. columnHidden: false,
  682. columnImage: false,
  683. columnSortable: false,
  684. sortLv: 0,
  685. status: true,
  686. fixed: '',
  687. },
  688. {
  689. columnProp: 'updateDate',
  690. headerAlign: 'center',
  691. align: 'center',
  692. columnLabel: '更新时间',
  693. columnHidden: false,
  694. columnImage: false,
  695. columnSortable: false,
  696. sortLv: 0,
  697. status: true,
  698. fixed: '',
  699. },
  700. {
  701. columnProp: 'updateBy',
  702. headerAlign: 'center',
  703. align: 'center',
  704. columnLabel: '更新人',
  705. columnHidden: false,
  706. columnImage: false,
  707. columnSortable: false,
  708. sortLv: 0,
  709. status: true,
  710. fixed: '',
  711. },
  712. ],
  713. detailModelFlag:false,
  714. detailList: [],
  715. dataListLoading: false,
  716. dataList:[],
  717. // 展示列集
  718. columnDetailList: [
  719. {
  720. columnProp: 'itemNo',
  721. headerAlign: "center",
  722. align: "center",
  723. columnLabel: '检验项目编码',
  724. columnHidden: false,
  725. columnImage: false,
  726. columnSortable: false,
  727. sortLv: 0,
  728. status: true,
  729. fixed: '',
  730. columnWidth: 60
  731. },
  732. {
  733. columnProp: 'itemDesc',
  734. headerAlign: "center",
  735. align: "center",
  736. columnLabel: '检验项目名称',
  737. columnHidden: false,
  738. columnImage: false,
  739. columnSortable: false,
  740. sortLv: 0,
  741. status: true,
  742. fixed: '',
  743. columnWidth: 250
  744. },
  745. {
  746. columnProp: 'valueType',
  747. headerAlign: "center",
  748. align: "center",
  749. columnLabel: '检测值类型',
  750. columnHidden: false,
  751. columnImage: false,
  752. columnSortable: false,
  753. sortLv: 0,
  754. status: true,
  755. fixed: '',
  756. columnWidth: 60
  757. },
  758. ],
  759. // 快速添加
  760. fastAddFlag:false,
  761. itemList1:[],
  762. itemList2:[],
  763. itemListRow1:{},
  764. itemListRow2:{},
  765. itemSelections1: [],
  766. itemSelections2: [],
  767. searchForm: {
  768. objectID: '',
  769. objectDesc: ''
  770. },
  771. rules:{
  772. templateNameType:[
  773. {
  774. required: true,
  775. message: ' ',
  776. trigger: 'change'
  777. }
  778. ],
  779. inspectionTypeNoType:[
  780. {
  781. required: true,
  782. message: ' ',
  783. trigger: 'change'
  784. }
  785. ],
  786. samplingProgrammeNoType:[
  787. {
  788. required: true,
  789. message: ' ',
  790. trigger: 'change'
  791. }
  792. ],
  793. samplingProgrammeDescType:[
  794. {
  795. required: true,
  796. message: ' ',
  797. trigger: 'change'
  798. }
  799. ],
  800. samplingLevelNoType:[
  801. {
  802. required: true,
  803. message: ' ',
  804. trigger: 'change'
  805. }
  806. ],
  807. samplingLevelDescType:[
  808. {
  809. required: true,
  810. message: ' ',
  811. trigger: 'change'
  812. }
  813. ],
  814. }
  815. }
  816. },
  817. mounted () {
  818. this.$nextTick(() => {
  819. this.height = window.innerHeight - 210
  820. })
  821. },
  822. created () {
  823. this.getDataList()
  824. this.InspectionTypeSearch()
  825. this.favoriteIsOk()
  826. },
  827. methods: {
  828. /**
  829. * 自适应
  830. * @param label
  831. * @param prop
  832. * @returns {string}
  833. */
  834. flexColumnWidth (label, prop) {
  835. // 1.获取该列的所有数据
  836. const arr = this.dataList.map(x => x[prop])
  837. arr.push(label) // 把每列的表头也加进去算
  838. // 2.计算每列内容最大的宽度 + 表格的内间距(依据实际情况而定)
  839. return (this.getMaxLength(arr) + 25) + 'px'
  840. },
  841. getTextWidth (str) {
  842. let width = 0
  843. const html = document.createElement('span')
  844. html.innerText = str
  845. html.className = 'getTextWidth'
  846. document.querySelector('body').appendChild(html)
  847. width = document.querySelector('.getTextWidth').offsetWidth
  848. document.querySelector('.getTextWidth').remove()
  849. return width
  850. },
  851. getMaxLength (arr) {
  852. return arr.reduce((acc, item) => {
  853. if (item) {
  854. const calcLen = this.getTextWidth(item)
  855. if (acc < calcLen) {
  856. acc = calcLen
  857. }
  858. }
  859. return acc
  860. }, 0)
  861. },
  862. // 查询检验类型
  863. InspectionTypeSearch(){
  864. InspectionTypeSearch().then(({data}) => {
  865. if (data.code === 0) {
  866. this.options = data.rows
  867. }
  868. })
  869. },
  870. // 查询设备
  871. objectSearch(){
  872. objectSearch().then(({data}) => {
  873. if (data.code === 0) {
  874. this.objects = data.rows
  875. }
  876. })
  877. },
  878. // 客户
  879. FilterEntityName(queryString, cb) {
  880. let objects2 = this.objects;
  881. let results = queryString ? objects2.filter(this.createFilter(queryString)) : objects2;
  882. // 调用 callback 返回建议列表的数据
  883. cb(results);
  884. },
  885. // 只要该输入内容的都匹配
  886. createFilter(queryString) {
  887. return (res) => {
  888. return (res.idAndDesc.toLowerCase().indexOf(queryString.toLowerCase()) !== -1);
  889. };
  890. },
  891. // 最终选择的数据
  892. handleSelect(val){
  893. console.log(val)
  894. // this.searchForm.objectID = val.objectID
  895. },
  896. // 点击clearable清空小图标按钮以后,继续重新在输入框中输入数据,querySearch会触发,但是cb函数不会触发
  897. // 这样的话就会出现发请求了,也获取数据了,但是input框的输入建议下拉框不呈现在页面上的问题,所以解决方法就是
  898. // 只要用户点击了clearable清空按钮以后,就让当前获取焦点的输入框失去焦点,回到最初状态,一切重新开始
  899. blurForBug(){
  900. document.activeElement.blur()
  901. },
  902. // 清空搜索栏
  903. doEmpty(){
  904. this.searchData = {
  905. site: this.$store.state.user.site,
  906. templateId: '',
  907. templateName: '',
  908. inspectionTypeNo: '',
  909. page: 1,
  910. limit: 10,
  911. }
  912. },
  913. // 获取基础数据列表S
  914. getBaseList (val,type) {
  915. this.tagNo = val
  916. this.$nextTick(() => {
  917. let strVal = ''
  918. if (val === 1051) {
  919. strVal = this.modalData.samplingProgrammeNo
  920. this.$refs.baseList.init(val, strVal)
  921. }
  922. if (val === 1048) {
  923. strVal = this.detailData.samplingLevelNo
  924. this.$refs.baseList.init(val, strVal)
  925. }
  926. })
  927. },
  928. /* 列表方法的回调 */
  929. getBaseData (val) {
  930. if (this.tagNo === 1051) {
  931. this.modalData.samplingProgrammeNo = val.sampling_programme_no
  932. this.modalData.samplingProgrammeDesc = val.sampling_programme_desc
  933. }
  934. if (this.tagNo === 1048) {
  935. this.modalData.samplingLevelNo = val.sampling_level_no
  936. this.modalData.samplingLevelDesc = val.sampling_level_desc
  937. }
  938. },
  939. // 获取数据列表
  940. getDataList () {
  941. this.searchData.limit = this.pageSize
  942. this.searchData.page = this.pageIndex
  943. templateSearch(this.searchData).then(({data}) => {
  944. if (data.code === 0) {
  945. this.dataList = data.page.list
  946. this.pageIndex = data.page.currPage
  947. this.pageSize = data.page.pageSize
  948. this.totalPage = data.page.totalCount
  949. }
  950. this.dataListLoading = false
  951. })
  952. },
  953. // 每页数
  954. sizeChangeHandle (val) {
  955. this.pageSize = val
  956. this.pageIndex = 1
  957. this.getDataList()
  958. },
  959. // 当前页
  960. currentChangeHandle (val) {
  961. this.pageIndex = val
  962. this.getDataList()
  963. },
  964. addModal(){
  965. this.modalData = {
  966. flag: '1',
  967. site: this.$store.state.user.site,
  968. templateId: '',
  969. templateName: '',
  970. templateRemark: '',
  971. templateType: '',
  972. templateVersion: '',
  973. samplingProgrammeNo: '',
  974. samplingProgrammeDesc: '',
  975. inspectionTypeNo: '',
  976. inspectionCycle: '',
  977. createBy: this.$store.state.user.name,
  978. updateBy: this.$store.state.user.name,
  979. samplingLevelNo: '',
  980. samplingLevelDesc: '',
  981. aql: '',
  982. ac: '',
  983. re: ''
  984. };
  985. this.modalDisableFlag = false;
  986. this.modalFlag = true;
  987. },
  988. updateModal(row){
  989. this.modalData = {
  990. flag:'2',
  991. site: this.$store.state.user.site,
  992. templateId: row.templateId,
  993. templateName: row.templateName,
  994. templateRemark: row.templateRemark,
  995. templateType: row.templateType,
  996. templateVersion: row.templateVersion,
  997. samplingProgrammeNo: row.samplingProgrammeNo,
  998. samplingProgrammeDesc: row.samplingProgrammeDesc,
  999. inspectionTypeNo: row.inspectionTypeNo,
  1000. createBy: this.$store.state.user.name,
  1001. updateBy: this.$store.state.user.name,
  1002. samplingLevelNo: row.samplingLevelNo,
  1003. samplingLevelDesc: row.samplingLevelDesc,
  1004. inspectionCycle: row.inspectionCycle,
  1005. aql: row.aql,
  1006. ac: row.ac,
  1007. re: row.re,
  1008. defaultSamplingQuantity: row.defaultSamplingQuantity,
  1009. defaultSamplingProportion: row.defaultSamplingProportion
  1010. };
  1011. this.modalDisableFlag = true;
  1012. this.modalFlag = true;
  1013. },
  1014. // 删除
  1015. deleteModel (row) {
  1016. this.$confirm(`是否删除这个检验模板?`, '提示', {
  1017. confirmButtonText: '确定',
  1018. cancelButtonText: '取消',
  1019. type: 'warning'
  1020. }).then(() => {
  1021. templateDelete(row).then(({data}) => {
  1022. if (data && data.code === 0) {
  1023. this.getDataList()
  1024. this.$message({
  1025. message: '操作成功',
  1026. type: 'success',
  1027. duration: 1500,
  1028. onClose: () => {
  1029. }
  1030. })
  1031. } else {
  1032. this.$alert(data.msg, '错误', {
  1033. confirmButtonText: '确定'
  1034. })
  1035. }
  1036. })
  1037. }).catch(() => {
  1038. })
  1039. },
  1040. saveData(){
  1041. if (this.modalData.templateName == '' || this.modalData.templateName == null) {
  1042. this.$alert('请输入检验模板名称!', '错误', {
  1043. confirmButtonText: '确定'
  1044. })
  1045. return false
  1046. }
  1047. if (this.modalData.samplingProgrammeNo == '' || this.modalData.samplingProgrammeNo == null) {
  1048. this.$alert('请选择抽检方案!', '错误', {
  1049. confirmButtonText: '确定'
  1050. })
  1051. return false
  1052. }
  1053. if (this.modalData.inspectionTypeNo == '' || this.modalData.inspectionTypeNo == null) {
  1054. this.$alert('请选择检验类型!', '错误', {
  1055. confirmButtonText: '确定'
  1056. })
  1057. return false
  1058. }
  1059. if (this.modalData.samplingLevelNo == '' || this.modalData.samplingLevelNo == null) {
  1060. this.$alert('请选择检验水平!', '错误', {
  1061. confirmButtonText: '确定'
  1062. })
  1063. return false
  1064. }
  1065. if ((this.modalData.defaultSamplingQuantity == '' || this.modalData.defaultSamplingQuantity == null) && (this.modalData.defaultSamplingProportion == '' || this.modalData.defaultSamplingProportion == null)) {
  1066. this.$alert('请输入 默认抽样数量 或者 默认抽样比例!', '错误', {
  1067. confirmButtonText: '确定'
  1068. })
  1069. return false
  1070. }
  1071. if(this.modalData.flag == '1'){
  1072. templateSave(this.modalData).then(({data}) => {
  1073. if (data && data.code === 0) {
  1074. this.getDataList()
  1075. this.modalFlag = false
  1076. this.$message({
  1077. message: '操作成功',
  1078. type: 'success',
  1079. duration: 1500,
  1080. onClose: () => {
  1081. }
  1082. })
  1083. } else {
  1084. this.$alert(data.msg, '错误', {
  1085. confirmButtonText: '确定'
  1086. })
  1087. }
  1088. })
  1089. }else {
  1090. templateUpdate(this.modalData).then(({data}) => {
  1091. if (data && data.code === 0) {
  1092. this.getDataList()
  1093. this.modalFlag = false
  1094. this.$message({
  1095. message: '操作成功',
  1096. type: 'success',
  1097. duration: 1500,
  1098. onClose: () => {
  1099. }
  1100. })
  1101. } else {
  1102. this.$alert(data.msg, '错误', {
  1103. confirmButtonText: '确定'
  1104. })
  1105. }
  1106. })
  1107. }
  1108. },
  1109. // 打开检验项目
  1110. detailModal(row){
  1111. this.detailData.templateId = row.templateId
  1112. this.detailData.templateName = row.templateName
  1113. templateDetailsSearch(this.detailData).then(({data}) => {
  1114. this.detailList = data.rows
  1115. this.objectSearch()
  1116. })
  1117. this.detailModelFlag = true;
  1118. },
  1119. // 保存模板项目
  1120. saveDetail(){
  1121. for (let i = 0; i < this.detailList.length; i++) {
  1122. if (this.detailList[i].objectID != null){
  1123. this.detailList[i].objectID = this.detailList[i].objectID.split('_')[0];
  1124. }
  1125. saveItemDetailed(this.detailList[i]).then(({data}) => {
  1126. if (data && data.code === 0) {
  1127. this.getDataList()
  1128. this.detailModelFlag = false
  1129. // this.$message({
  1130. // message: '操作成功',
  1131. // type: 'success',
  1132. // duration: 1500,
  1133. // onClose: () => {
  1134. // }
  1135. // })
  1136. } else {
  1137. this.$alert(data.msg, '错误', {
  1138. confirmButtonText: '确定'
  1139. }).then(() => {
  1140. return false
  1141. })
  1142. }
  1143. })
  1144. }
  1145. },
  1146. // 快速新增
  1147. addFastModal(){
  1148. this.itemSelections1 = null
  1149. this.itemSelections2 = null
  1150. getItemList(this.detailData).then(({data}) => {
  1151. this.itemList1 = data.row1;
  1152. this.itemList2 = data.row2;
  1153. })
  1154. this.fastAddFlag = true;
  1155. },
  1156. // clickItem1(row){
  1157. // this.itemListRow1 = JSON.parse(JSON.stringify(row));
  1158. // },
  1159. // clickItem2(row){
  1160. // this.itemListRow2 = JSON.parse(JSON.stringify(row));
  1161. // },
  1162. // 可选项目
  1163. itemClickRow1(row){
  1164. this.$refs.itemTable1.toggleRowSelection(row);
  1165. },
  1166. // 已有项目
  1167. itemClickRow2(row){
  1168. this.$refs.itemTable2.toggleRowSelection(row);
  1169. },
  1170. selectFlag(){
  1171. return true;
  1172. },
  1173. selectionItem1(val){
  1174. this.itemSelections1 = val
  1175. },
  1176. selectionItem2(val){
  1177. this.itemSelections2 = val
  1178. },
  1179. // 添加明细
  1180. addItem(){
  1181. if(this.itemSelections1 == null || this.itemSelections1.length == 0){
  1182. this.$alert("请选择可选项目!", '提示', {
  1183. confirmButtonText: '确定'
  1184. })
  1185. return false;
  1186. }
  1187. let inData = {
  1188. templateId: this.detailData.templateId,
  1189. templateName: this.detailData.templateName,
  1190. // itemNo: this.itemListRow1.itemNo,
  1191. // itemDesc: this.itemListRow1.itemDesc,
  1192. itemList: this.itemSelections1,
  1193. itemType: this.detailData.itemType,
  1194. }
  1195. addItemDetails(inData).then(({data}) => {
  1196. if (data && data.code == 0) {
  1197. getItemList(this.detailData).then(({data}) => {
  1198. this.itemList1 = data.row1;
  1199. this.itemList2 = data.row2;
  1200. })
  1201. this.itemSelections1 = []
  1202. } else {
  1203. this.$alert(data.msg, '错误', {
  1204. confirmButtonText: '确定'
  1205. })
  1206. }
  1207. })
  1208. },
  1209. // 删除明细
  1210. deleteItem(){
  1211. if(this.itemSelections2 == null || this.itemSelections2.length == 0){
  1212. this.$alert("请选择已有项目!", '提示', {
  1213. confirmButtonText: '确定'
  1214. })
  1215. return false;
  1216. }
  1217. let inData = {
  1218. templateId: this.detailData.templateId,
  1219. templateName: this.detailData.templateName,
  1220. // itemNo: this.itemListRow2.itemNo,
  1221. // itemDesc:this.itemListRow2.itemDesc,
  1222. itemList: this.itemSelections2,
  1223. itemType:this.detailData.itemType,
  1224. }
  1225. delItemDetails(inData).then(({data}) => {
  1226. if (data && data.code === 0) {
  1227. getItemList(this.detailData).then(({data}) => {
  1228. this.itemList1 = data.row1;
  1229. this.itemList2 = data.row2;
  1230. })
  1231. this.itemSelections2 = []
  1232. } else {
  1233. this.$alert(data.msg, '错误', {
  1234. confirmButtonText: '确定'
  1235. })
  1236. }
  1237. })
  1238. },
  1239. // 关闭后刷新列表
  1240. refreshDetailList(){
  1241. templateDetailsSearch(this.detailData).then(({data}) => {
  1242. this.detailList = data.rows
  1243. })
  1244. },
  1245. // 删除项目中的明细
  1246. delItemDetails(row){
  1247. this.$confirm(`是否删除这个检验明细?`, '提示', {
  1248. confirmButtonText: '确定',
  1249. cancelButtonText: '取消',
  1250. type: 'warning'
  1251. }).then(() => {
  1252. delItemDetails(row).then(({data}) => {
  1253. if (data && data.code === 0) {
  1254. templateDetailsSearch(this.detailData).then(({data}) => {
  1255. this.detailList = data.rows
  1256. })
  1257. this.$message({
  1258. message: '操作成功',
  1259. type: 'success',
  1260. duration: 1500,
  1261. onClose: () => {
  1262. }
  1263. })
  1264. } else {
  1265. this.$alert(data.msg, '错误', {
  1266. confirmButtonText: '确定'
  1267. })
  1268. }
  1269. })
  1270. }).catch(() => {
  1271. })
  1272. },
  1273. // 校验用户是否收藏
  1274. favoriteIsOk() {
  1275. let userFavorite = {
  1276. userId: this.$store.state.user.id,
  1277. languageCode: this.$i18n.locale
  1278. }
  1279. console.log(this.$route.meta.menuId)
  1280. userFavoriteList(userFavorite).then(({data}) => {
  1281. for (let i = 0; i < data.list.length; i++) {
  1282. // let flag=false;
  1283. if(this.$route.meta.menuId==data.list[i].menuId){
  1284. this.favorite = true
  1285. // flag=true;
  1286. }
  1287. }
  1288. })
  1289. },
  1290. // 收藏 OR 取消收藏
  1291. favoriteFunction() {
  1292. let userFavorite = {
  1293. userId: this.$store.state.user.id,
  1294. functionId: this.$route.meta.menuId,
  1295. }
  1296. if (this.favorite) {
  1297. // 取消收藏
  1298. // this.$confirm(`确定取消收藏`, '提示', {
  1299. // confirmButtonText: '确定',
  1300. // cancelButtonText: '取消',
  1301. // type: 'warning'
  1302. // }).then(() => {
  1303. removeUserFavorite(userFavorite).then(({data}) => {
  1304. this.$message.success(data.msg)
  1305. this.favorite = false
  1306. })
  1307. // })
  1308. } else {
  1309. // 收藏
  1310. saveUserFavorite(userFavorite).then(({data}) => {
  1311. this.$message.success(data.msg)
  1312. this.favorite = true
  1313. })
  1314. }
  1315. },
  1316. //导出excel
  1317. async createExportData() {
  1318. this.searchData.limit = -1
  1319. this.searchData.page = 1
  1320. await templateSearch(this.searchData).then(({data}) => {
  1321. this.exportList= data.page.list;
  1322. })
  1323. return this.exportList;
  1324. },
  1325. startDownload() {
  1326. // this.exportData = this.dataList
  1327. },
  1328. finishDownload() {
  1329. },
  1330. fields() {
  1331. let json = "{"
  1332. this.columnList.forEach((item, index) => {
  1333. if (index == this.columnList.length - 1) {
  1334. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1335. } else {
  1336. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1337. }
  1338. })
  1339. json += "}"
  1340. let s = eval("(" + json + ")")
  1341. return s
  1342. },
  1343. // 导出 end
  1344. // 导入
  1345. qcUpload(){
  1346. let currentData = {
  1347. flag: 'template',
  1348. createBy: this.$store.state.user.name,
  1349. site: this.$store.state.user.site,
  1350. };
  1351. //打开组件 去做新增业务
  1352. this.$nextTick(() => {
  1353. this.$refs.qcUpload.init(currentData);
  1354. })
  1355. },
  1356. }
  1357. }
  1358. </script>
  1359. <style scoped>
  1360. /deep/ .el-autocomplete-suggestion {
  1361. width: auto!important;
  1362. }
  1363. </style>