plm前端
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.

1109 lines
37 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
  1. <template>
  2. <div class="mod-config">
  3. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  4. <el-form-item :label="'属性模板编码'">
  5. <el-input v-model="searchData.codeNo" style="width: 120px"></el-input>
  6. </el-form-item>
  7. <el-form-item :label="'属性模板名称'">
  8. <el-input v-model="searchData.codeDesc" style="width: 120px"></el-input>
  9. </el-form-item>
  10. <el-form-item :label="'属性模板类型'" >
  11. <el-select filterable v-model="searchData.functionType" style="width: 120px">
  12. <el-option label="全部" value=""></el-option>
  13. <el-option label="A" value="A"></el-option>
  14. <el-option label="B" value="B"></el-option>
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item :label="'在用'">
  18. <el-select filterable v-model="searchData.active" style="width: 130px">
  19. <el-option label="全部" value=""></el-option>
  20. <el-option label="是" value="Y"></el-option>
  21. <el-option label="否" value="N"></el-option>
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item :label="' '">
  25. <el-button @click="getDataList()">查询</el-button>
  26. <el-button type="primary" @click="addModal()">新增</el-button>
  27. <download-excel
  28. :fields="fields()"
  29. :data="exportData"
  30. type="xls"
  31. :name="exportName"
  32. :header="exportHeader"
  33. :footer="exportFooter"
  34. :fetch="createExportData"
  35. :before-generate="startDownload"
  36. :before-finish="finishDownload"
  37. worksheet="导出信息"
  38. class="el-button el-button--primary el-button--medium">
  39. {{ "导出" }}
  40. </download-excel>
  41. </el-form-item>
  42. </el-form>
  43. <el-table
  44. :height="height"
  45. :data="dataList"
  46. border
  47. v-loading="dataListLoading"
  48. style="width: 100%;">
  49. <!-- <el-table-column-->
  50. <!-- prop="codeNo"-->
  51. <!-- header-align="center"-->
  52. <!-- align="center"-->
  53. <!-- label="属性模板编码">-->
  54. <!-- </el-table-column>-->
  55. <!-- <el-table-column-->
  56. <!-- prop="codeDesc"-->
  57. <!-- header-align="center"-->
  58. <!-- align="center"-->
  59. <!-- label="属性模板名称">-->
  60. <!-- </el-table-column>-->
  61. <!-- <el-table-column-->
  62. <!-- prop="active"-->
  63. <!-- header-align="center"-->
  64. <!-- align="center"-->
  65. <!-- label="在用">-->
  66. <!-- <template slot-scope="scope">-->
  67. <!-- <div v-if="scope.row.active === 'Y'">-->
  68. <!-- -->
  69. <!-- </div>-->
  70. <!-- <div v-if="scope.row.active === 'N'">-->
  71. <!-- -->
  72. <!-- </div>-->
  73. <!-- </template>-->
  74. <!-- </el-table-column>-->
  75. <el-table-column
  76. v-for="(item,index) in columnList" :key="index"
  77. :sortable="item.columnSortable"
  78. :prop="item.columnProp"
  79. :header-align="item.headerAlign"
  80. :show-overflow-tooltip="item.showOverflowTooltip"
  81. :align="item.align"
  82. :fixed="item.fixed==''?false:item.fixed"
  83. :min-width="item.columnWidth"
  84. :label="item.columnLabel">
  85. <template slot-scope="scope">
  86. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  87. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  88. </template>
  89. </el-table-column>
  90. <el-table-column
  91. fixed="right"
  92. header-align="center"
  93. align="center"
  94. width="160"
  95. label="操作">
  96. <template slot-scope="scope">
  97. <a type="text" size="small" @click="updateModal(scope.row)">修改</a>
  98. <a type="text" size="small" @click="detailModal(scope.row)">属性项目</a>
  99. <a type="text" size="small" @click="deletePropertiesModel(scope.row)">删除</a>
  100. </template>
  101. </el-table-column>
  102. </el-table>
  103. <el-pagination
  104. @size-change="sizeChangeHandle"
  105. @current-change="currentChangeHandle"
  106. :current-page="pageIndex"
  107. :page-sizes="[20, 50, 100, 200, 500]"
  108. :page-size="pageSize"
  109. :total="totalPage"
  110. layout="total, sizes, prev, pager, next, jumper">
  111. </el-pagination>
  112. <el-dialog title="属性模板" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="300px">
  113. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  114. <el-form-item label="属性模板编码:" prop="codeNo" :rules="rules.codeNoType">
  115. <el-input v-model="modalData.codeNo" :disabled="modalDisableFlag" style="width: 120px"></el-input>
  116. </el-form-item>
  117. <el-form-item label="属性模板名称:" prop="codeDesc" :rules="rules.codeDescType">
  118. <el-input v-model="modalData.codeDesc" style="width: 120px"></el-input>
  119. </el-form-item>
  120. </el-form>
  121. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  122. <el-form-item :label="'属性模板类型'" >
  123. <el-select filterable v-model="modalData.functionType" style="width: 120px">
  124. <el-option label="A" value="A"></el-option>
  125. <el-option label="B" value="B"></el-option>
  126. </el-select>
  127. </el-form-item>
  128. <el-form-item label="是否在用:" prop="active" :rules="rules.activeType">
  129. <el-select filterable v-model="modalData.active" style="width: 120px">
  130. <el-option label="是" value="Y"></el-option>
  131. <el-option label="否" value="N"></el-option>
  132. </el-select>
  133. </el-form-item>
  134. </el-form>
  135. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  136. <el-button type="primary" @click="saveData()">保存</el-button>
  137. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  138. </el-footer>
  139. </el-dialog>
  140. <el-dialog title="属性项目清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="830px">
  141. <el-form :inline="true" label-position="top" @keyup.enter.native="getDataList()">
  142. <el-form-item :label="'属性模板编码'">
  143. <el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>
  144. </el-form-item>
  145. <el-form-item :label="'属性模板名称'">
  146. <el-input v-model="detailData.codeDesc" readonly style="width: 120px"></el-input>
  147. </el-form-item>
  148. <el-form-item :label="' '">
  149. <!-- <el-button type="primary" @click="addDetailModal()">新增</el-button>-->
  150. <el-button type="primary" @click="addFastModal()">新增</el-button>
  151. </el-form-item>
  152. </el-form>
  153. <el-table
  154. :height="300"
  155. :data="detailList"
  156. border
  157. v-loading="dataListLoading"
  158. style="width: 100%;">
  159. <el-table-column
  160. v-for="(item,index) in columnDetailList" :key="index"
  161. :sortable="item.columnSortable"
  162. :prop="item.columnProp"
  163. :header-align="item.headerAlign"
  164. :show-overflow-tooltip="item.showOverflowTooltip"
  165. :align="item.align"
  166. :fixed="item.fixed==''?false:item.fixed"
  167. :min-width="item.columnWidth"
  168. :label="item.columnLabel">
  169. <template slot-scope="scope">
  170. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  171. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  172. </template>
  173. </el-table-column>
  174. <el-table-column
  175. fixed="right"
  176. header-align="center"
  177. align="center"
  178. width="130"
  179. label="操作">
  180. <template slot-scope="scope">
  181. <a type="text" size="small" v-if="scope.row.valueChooseFlag === 'Y'" @click="chooseModal(scope.row)">可选值</a>
  182. <a type="text" size="small" @click="deleteModalDetails(scope.row)">删除属性</a>
  183. </template>
  184. </el-table-column>
  185. </el-table>
  186. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  187. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  188. </el-footer>
  189. </el-dialog>
  190. <!-- <el-dialog title="添加属性" :close-on-click-modal="false" v-drag :visible.sync="addDetailModalFlag" width="300px">-->
  191. <!-- <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">-->
  192. <!-- <el-form-item >-->
  193. <!-- <span slot="label" style="" @click="getBaseList(1024)"><a herf="#">属性属性编码</a></span>-->
  194. <!-- <el-input v-model="detailData.itemNo" @blur="itemNoBlur" style="width: 120px"></el-input>-->
  195. <!-- </el-form-item>-->
  196. <!-- <el-form-item label="属性项目名称:">-->
  197. <!-- <el-input v-model="detailData.itemDesc" disabled style="width: 120px"></el-input>-->
  198. <!-- </el-form-item>-->
  199. <!-- </el-form>-->
  200. <!-- <el-footer style="height:40px;margin-top: 10px;text-align:center">-->
  201. <!-- <el-button type="primary" @click="saveModalDetails()">保存</el-button>-->
  202. <!-- <el-button type="primary" @click="addDetailModalFlag = false">关闭</el-button>-->
  203. <!-- </el-footer>-->
  204. <!-- </el-dialog>-->
  205. <el-dialog title="新增" @close="refreshDetailList" :close-on-click-modal="false" v-drag :visible.sync="fastAddFlag" width="1000px">
  206. <div style="font-size: 12px">
  207. <!-- 属性模板编码<el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>-->
  208. <!-- 属性模板名称<el-input v-model="detailData.codeDesc" readonly style="width: 120px"></el-input>-->
  209. <el-form :inline="true" label-position="top" :model="detailData">
  210. <el-form-item :label="'属性编码'">
  211. <el-input v-model="detailData.itemNo" style="width: 120px"></el-input>
  212. </el-form-item>
  213. <el-form-item :label="'属性名称'">
  214. <el-input v-model="detailData.itemDesc" style="width: 120px"></el-input>
  215. </el-form-item>
  216. <el-form-item :label="' '">
  217. <el-button type="primary" @click="queryTemplateItem()">查询</el-button>
  218. </el-form-item>
  219. </el-form>
  220. </div>
  221. <el-container style="margin-top: 0px;">
  222. <el-main style="width: 350px;padding: 1px">
  223. <span style="font-size: 12px" >可选属性</span>
  224. <el-table
  225. height="400px"
  226. :data="itemList1"
  227. border
  228. ref="itemTable1"
  229. @row-click="itemClickRow1"
  230. @selection-change="selectionItem1"
  231. highlight-current-row
  232. v-loading="dataListLoading"
  233. style="width: 100%">
  234. <el-table-column
  235. type="selection"
  236. header-align="center"
  237. align="center"
  238. :selectable="selectFlag"
  239. width="50">
  240. </el-table-column>
  241. <el-table-column
  242. prop="itemNo"
  243. header-align="center"
  244. align="center"
  245. min-width="80"
  246. label="属性编码">
  247. </el-table-column>
  248. <el-table-column
  249. prop="itemDesc"
  250. header-align="center"
  251. align="center"
  252. min-width="200"
  253. label="属性名称">
  254. </el-table-column>
  255. </el-table>
  256. </el-main>
  257. <el-main style="width: 10px;padding: 1px">
  258. <div style="margin-top: 200px;margin-left: 18px">
  259. <el-button type="primary" @click="addItem()">添加>></el-button>
  260. </div>
  261. <div style="margin-top: 15px;margin-left: 18px">
  262. <el-button type="primary" @click="deleteItem()">删除<<</el-button>
  263. </div>
  264. </el-main>
  265. <el-main style="width: 350px;padding: 1px">
  266. <span style="font-size: 12px" >已有属性</span>
  267. <el-table
  268. height="400px"
  269. :data="itemList2"
  270. border
  271. ref="itemTable2"
  272. @row-click="itemClickRow2"
  273. @selection-change="selectionItem2"
  274. highlight-current-row
  275. v-loading="dataListLoading"
  276. style="width: 100%">
  277. <el-table-column
  278. type="selection"
  279. header-align="center"
  280. align="center"
  281. :selectable="selectFlag"
  282. width="50">
  283. </el-table-column>
  284. <el-table-column
  285. prop="itemNo"
  286. header-align="center"
  287. align="center"
  288. min-width="80"
  289. label="属性编码">
  290. </el-table-column>
  291. <el-table-column
  292. prop="itemDesc"
  293. header-align="center"
  294. align="center"
  295. min-width="200"
  296. label="属性名称">
  297. </el-table-column>
  298. </el-table>
  299. </el-main>
  300. </el-container>
  301. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  302. <el-button type="primary" @click="fastAddFlag = false">关闭</el-button>
  303. </el-footer>
  304. </el-dialog>
  305. <el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="chooseModalFlag" width="350px">
  306. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  307. <el-form-item label="属性项目名称:">
  308. <el-input v-model="chooseModalData.itemDesc" disabled style="width: 120px"></el-input>
  309. </el-form-item>
  310. <el-form-item :label="'属性值类型'">
  311. <el-select filterable v-model="chooseModalData.valueTypeDb" disabled style="width: 120px">
  312. <el-option label="文本" value="T"></el-option>
  313. <el-option label="数字" value="N"></el-option>
  314. </el-select>
  315. </el-form-item>
  316. </el-form>
  317. <el-table
  318. :height="300"
  319. :data="chooseTableData"
  320. border
  321. style="width: 100%">
  322. <el-table-column
  323. prop="availableValue"
  324. header-align="center"
  325. align="left"
  326. min-width="200"
  327. label="属性值">
  328. </el-table-column>
  329. </el-table>
  330. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  331. <el-button type="primary" @click="chooseModalFlag = false">关闭</el-button>
  332. </el-footer>
  333. </el-dialog>
  334. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  335. </div>
  336. </template>
  337. <script>
  338. import {
  339. propertiesModelSearch,
  340. propertiesModelSave,
  341. propertiesModelEdit,
  342. propertiesModelDelete,
  343. searchItemAvailable,
  344. searchModalDetails,
  345. saveModalDetails,
  346. deleteModalDetails, // 多选删除
  347. getItemLists,
  348. deleteModalDetail // 单删
  349. } from "@/api/base/properties.js"
  350. import Chooselist from '@/views/modules/common/Chooselist'
  351. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  352. export default {
  353. components: {
  354. Chooselist
  355. },
  356. watch: {
  357. searchData: {
  358. deep: true,
  359. handler: function (newV, oldV) {
  360. this.searchData.codeNo = this.searchData.codeNo.toUpperCase()
  361. }
  362. },
  363. itemData: {
  364. deep: true,
  365. handler: function (newV, oldV) {
  366. this.itemData.itemNo = this.itemData.itemNo.toUpperCase()
  367. }
  368. },
  369. modalData: {
  370. deep: true,
  371. handler: function (newV, oldV) {
  372. this.modalData.codeNo = this.modalData.codeNo.toUpperCase()
  373. }
  374. },
  375. detailData: {
  376. deep: true,
  377. handler: function (newV, oldV) {
  378. this.detailData.codeNo = this.detailData.codeNo.toUpperCase()
  379. this.detailData.itemNo = this.detailData.itemNo.toUpperCase()
  380. }
  381. }
  382. },
  383. data () {
  384. return {
  385. // 是否收藏
  386. favorite: false,
  387. // 导出 start
  388. exportData: [],
  389. exportName: "属性模板" + this.dayjs().format('YYYYMMDDHHmmss'),
  390. exportHeader: ["属性模板"],
  391. exportFooter: [],
  392. exportList:[],
  393. // 导出 end
  394. tagNo:'',
  395. searchData: {
  396. site: this.$store.state.user.site,
  397. codeNo: '',
  398. codeDesc: '',
  399. active:'Y',
  400. functionType:'',
  401. page: 1,
  402. limit: 10,
  403. },
  404. height: 200,
  405. pageIndex: 1,
  406. pageSize: 50,
  407. totalPage: 0,
  408. // addDetailModalFlag:false,
  409. modalFlag:false,
  410. modalDisableFlag:false,
  411. modalData:{
  412. flag:'',
  413. codeNo:'',
  414. codeDesc:'',
  415. active:'',
  416. functionType:'',
  417. userId:this.$store.state.user.name,
  418. createdBy: this.$store.state.user.name,
  419. updateBy: this.$store.state.user.name,
  420. },
  421. detailData:{
  422. site: this.$store.state.user.site,
  423. codeNo:'',
  424. codeDesc:'',
  425. functionType:'',
  426. itemNo:'',
  427. itemDesc:'',
  428. itemType:'',
  429. userId:this.$store.state.user.name
  430. },
  431. columnList: [
  432. {
  433. userId: this.$store.state.user.name,
  434. functionId: 100002001,
  435. serialNumber: '100002001TableFunctionType',
  436. tableId: "100002001Table",
  437. tableName: "属性项目表",
  438. columnProp: 'functionType',
  439. headerAlign: "center",
  440. align: "center",
  441. columnLabel: '属性模板类型',
  442. columnHidden: false,
  443. columnImage: false,
  444. columnSortable: false,
  445. sortLv: 0,
  446. status: true,
  447. fixed: '',
  448. },
  449. {
  450. userId: this.$store.state.user.name,
  451. functionId: 100002001,
  452. serialNumber: '100002001TableCodeNo',
  453. tableId: "100002001Table",
  454. tableName: "属性模板表",
  455. columnProp: 'codeNo',
  456. headerAlign: "center",
  457. align: "center",
  458. columnLabel: '属性模板编码',
  459. columnHidden: false,
  460. columnImage: false,
  461. columnSortable: false,
  462. sortLv: 0,
  463. status: true,
  464. fixed: '',
  465. },
  466. {
  467. userId: this.$store.state.user.name,
  468. functionId: 100002001,
  469. serialNumber: '100002001TableCodeDesc',
  470. tableId: "100002001Table",
  471. tableName: "属性模板表",
  472. columnProp: 'codeDesc',
  473. headerAlign: "center",
  474. align: "center",
  475. columnLabel: '属性模板名称',
  476. columnHidden: false,
  477. columnImage: false,
  478. columnSortable: false,
  479. sortLv: 0,
  480. status: true,
  481. fixed: '',
  482. },
  483. {
  484. userId: this.$store.state.user.name,
  485. functionId: 100002001,
  486. serialNumber: '100002001TableActive',
  487. tableId: "100002001Table",
  488. tableName: "属性模板表",
  489. columnProp: 'active',
  490. headerAlign: "center",
  491. align: "center",
  492. columnLabel: '在用',
  493. columnHidden: false,
  494. columnImage: false,
  495. columnSortable: false,
  496. sortLv: 0,
  497. status: true,
  498. fixed: '',
  499. },
  500. {
  501. userId: this.$store.state.user.name,
  502. functionId: 100002001,
  503. serialNumber: '100002001TableCreatedDate',
  504. tableId: "100002001Table",
  505. tableName: "属性模板表",
  506. columnProp: 'createdDate',
  507. headerAlign: "center",
  508. align: "center",
  509. columnLabel: '创建时间',
  510. columnHidden: false,
  511. columnImage: false,
  512. columnSortable: false,
  513. sortLv: 0,
  514. status: true,
  515. fixed: '',
  516. },
  517. {
  518. userId: this.$store.state.user.name,
  519. functionId: 100002001,
  520. serialNumber: '100002001TableCreatedBy',
  521. tableId: "100002001Table",
  522. tableName: "属性模板表",
  523. columnProp: 'createdBy',
  524. headerAlign: "center",
  525. align: "center",
  526. columnLabel: '创建人',
  527. columnHidden: false,
  528. columnImage: false,
  529. columnSortable: false,
  530. sortLv: 0,
  531. status: true,
  532. fixed: '',
  533. },
  534. {
  535. userId: this.$store.state.user.name,
  536. functionId: 100002001,
  537. serialNumber: '100002001TableUpdateDate',
  538. tableId: "100002001Table",
  539. tableName: "属性模板表",
  540. columnProp: 'updateDate',
  541. headerAlign: "center",
  542. align: "center",
  543. columnLabel: '更新时间',
  544. columnHidden: false,
  545. columnImage: false,
  546. columnSortable: false,
  547. sortLv: 0,
  548. status: true,
  549. fixed: '',
  550. },
  551. {
  552. userId: this.$store.state.user.name,
  553. functionId: 100002001,
  554. serialNumber: '100002001TableUpdateBy',
  555. tableId: "100002001Table",
  556. tableName: "属性模板表",
  557. columnProp: 'updateBy',
  558. headerAlign: "center",
  559. align: "center",
  560. columnLabel: '更新人',
  561. columnHidden: false,
  562. columnImage: false,
  563. columnSortable: false,
  564. sortLv: 0,
  565. status: true,
  566. fixed: '',
  567. },
  568. ],
  569. detailModelFlag:false,
  570. detailList: [],
  571. chooseTableData:[],
  572. dataListLoading: false,
  573. dataListSelections: [],
  574. // modalDisableFlag:false,
  575. chooseModalFlag:false,
  576. itemFlag:'text',
  577. itemData:{
  578. itemNo:'',
  579. valueNo:'',
  580. availableValue:'',
  581. itemType:'',
  582. createdBy: this.$store.state.user.name
  583. },
  584. dataList:[],
  585. departmentList:[],
  586. // 展示列集
  587. columnDetailList: [
  588. {
  589. userId: this.$store.state.user.name,
  590. functionId: 100002001,
  591. serialNumber: '100002001Table2PropertiesItemID',
  592. tableId: "100002001Table2",
  593. tableName: "属性项目表",
  594. columnProp: 'itemNo',
  595. headerAlign: "center",
  596. align: "center",
  597. columnLabel: '属性项目编码',
  598. columnHidden: false,
  599. columnImage: false,
  600. columnSortable: false,
  601. sortLv: 0,
  602. status: true,
  603. fixed: '',
  604. },
  605. {
  606. userId: this.$store.state.user.name,
  607. functionId: 100002001,
  608. serialNumber: '100002001Table2PropertiesItemDesc',
  609. tableId: "100002001Table2",
  610. tableName: "属性项目表",
  611. columnProp: 'itemDesc',
  612. headerAlign: "center",
  613. align: "center",
  614. columnLabel: '属性项目名称',
  615. columnHidden: false,
  616. columnImage: false,
  617. columnSortable: false,
  618. sortLv: 0,
  619. status: true,
  620. fixed: '',
  621. },
  622. {
  623. userId: this.$store.state.user.name,
  624. functionId: 100002001,
  625. serialNumber: '100002001Table2ValueType',
  626. tableId: "100002001Table2",
  627. tableName: "属性项目表",
  628. columnProp: 'valueType',
  629. headerAlign: "center",
  630. align: "center",
  631. columnLabel: '属性值类型',
  632. columnHidden: false,
  633. columnImage: false,
  634. columnSortable: false,
  635. sortLv: 0,
  636. status: true,
  637. fixed: '',
  638. },
  639. {
  640. userId: this.$store.state.user.name,
  641. functionId: 100002001,
  642. serialNumber: '100002001Table2DefaultValue',
  643. tableId: "100002001Table2",
  644. tableName: "属性项目表",
  645. columnProp: 'defaultValue',
  646. headerAlign: "center",
  647. align: "center",
  648. columnLabel: '参照值',
  649. columnHidden: false,
  650. columnImage: false,
  651. columnSortable: false,
  652. sortLv: 0,
  653. status: true,
  654. fixed: '',
  655. },
  656. {
  657. userId: this.$store.state.user.name,
  658. functionId: 100002001,
  659. serialNumber: '100002001Table2MaxValue',
  660. tableId: "100002001Table2",
  661. tableName: "属性项目表",
  662. columnProp: 'maxValue',
  663. headerAlign: "center",
  664. align: "center",
  665. columnLabel: '最大值',
  666. columnHidden: false,
  667. columnImage: false,
  668. columnSortable: false,
  669. sortLv: 0,
  670. status: true,
  671. fixed: '',
  672. },
  673. {
  674. userId: this.$store.state.user.name,
  675. functionId: 100002001,
  676. serialNumber: '100002001Table2MinValue',
  677. tableId: "100002001Table2",
  678. tableName: "属性项目表",
  679. columnProp: 'minValue',
  680. headerAlign: "center",
  681. align: "center",
  682. columnLabel: '最小值',
  683. columnHidden: false,
  684. columnImage: false,
  685. columnSortable: false,
  686. sortLv: 0,
  687. status: true,
  688. fixed: '',
  689. },
  690. {
  691. userId: this.$store.state.user.name,
  692. functionId: 100002001,
  693. serialNumber: '100002001TableValueChooseFlag',
  694. tableId: "100002001Table",
  695. tableName: "common",
  696. columnProp: 'valueChooseFlag',
  697. headerAlign: "center",
  698. align: "center",
  699. columnLabel: '是否值可选',
  700. columnHidden: false,
  701. columnImage: false,
  702. columnSortable: false,
  703. sortLv: 0,
  704. status: true,
  705. fixed: '',
  706. },
  707. ],
  708. levelList:[],
  709. chooseModalData:{
  710. site: '',
  711. itemNo: '',
  712. itemDesc: '',
  713. itemType:'',
  714. valueTypeDb:'',
  715. },
  716. //---------快速添加----------
  717. fastAddFlag:false,
  718. itemList1:[],
  719. itemList2:[],
  720. itemListRow1:{},
  721. itemListRow2:{},
  722. itemSelections1: [],
  723. itemSelections2: [],
  724. rules:{
  725. codeNoType:[
  726. {
  727. required: true,
  728. message: ' ',
  729. trigger: 'change'
  730. }
  731. ],
  732. codeDescType:[
  733. {
  734. required: true,
  735. message: ' ',
  736. trigger: 'change'
  737. }
  738. ],
  739. activeType:[
  740. {
  741. required: true,
  742. message: ' ',
  743. trigger: 'change'
  744. }
  745. ],
  746. }
  747. }
  748. },
  749. mounted () {
  750. this.$nextTick(() => {
  751. this.height = window.innerHeight - 210
  752. })
  753. },
  754. created () {
  755. this.getDataList();
  756. },
  757. methods: {
  758. // 获取基础数据列表S
  759. getBaseList (val,type) {
  760. this.tagNo = val
  761. this.$nextTick(() => {
  762. let strVal = ''
  763. if (val === 1024) {
  764. strVal = this.detailData.itemNo
  765. }
  766. this.$refs.baseList.init(val, strVal)
  767. })
  768. },
  769. /* 列表方法的回调 */
  770. getBaseData (val) {
  771. if (this.tagNo === 1024) {
  772. this.detailData.itemNo = val.ItemNo
  773. this.detailData.itemDesc = val.ItemDesc
  774. }
  775. },
  776. //导出excel
  777. async createExportData() {
  778. this.searchData.limit = -1
  779. this.searchData.page = 1
  780. await propertiesModelSearch(this.searchData).then(({data}) => {
  781. this.exportList= data.page.list;
  782. })
  783. return this.exportList;
  784. },
  785. startDownload() {
  786. },
  787. finishDownload() {
  788. },
  789. fields() {
  790. let json = "{"
  791. this.columnList.forEach((item, index) => {
  792. if (index == this.columnList.length - 1) {
  793. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  794. } else {
  795. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  796. }
  797. })
  798. json += "}"
  799. let s = eval("(" + json + ")")
  800. return s
  801. },
  802. // 导出 end
  803. // 获取数据列表
  804. getDataList () {
  805. this.searchData.limit = this.pageSize
  806. this.searchData.page = this.pageIndex
  807. propertiesModelSearch(this.searchData).then(({data}) => {
  808. if (data.code == 0) {
  809. this.dataList = data.page.list
  810. this.pageIndex = data.page.currPage
  811. this.pageSize = data.page.pageSize
  812. this.totalPage = data.page.totalCount
  813. }
  814. this.dataListLoading = false
  815. })
  816. },
  817. // 每页数
  818. sizeChangeHandle (val) {
  819. this.pageSize = val
  820. this.pageIndex = 1
  821. this.getDataList()
  822. },
  823. // 当前页
  824. currentChangeHandle (val) {
  825. this.pageIndex = val
  826. this.getDataList()
  827. },
  828. addModal(){
  829. this.modalData = {
  830. site: this.$store.state.user.site,
  831. flag:'1',
  832. codeNo:'',
  833. codeDesc:'',
  834. active:'Y',
  835. functionType:'A',
  836. userId:this.$store.state.user.name,
  837. createdBy: this.$store.state.user.name,
  838. updateBy: this.$store.state.user.name,
  839. };
  840. this.modalDisableFlag = false;
  841. this.modalFlag = true;
  842. },
  843. updateModal(row){
  844. this.modalData = {
  845. site: this.$store.state.user.site,
  846. flag:'2',
  847. codeNo:row.codeNo,
  848. codeDesc:row.codeDesc,
  849. active:row.active,
  850. functionType:row.functionType,
  851. userId:this.$store.state.user.name,
  852. updateBy: this.$store.state.user.name,
  853. };
  854. this.modalDisableFlag=true;
  855. this.modalFlag=true;
  856. },
  857. // 删除
  858. deletePropertiesModel (row) {
  859. this.$confirm(`是否删除这个属性模板?`, '提示', {
  860. confirmButtonText: '确定',
  861. cancelButtonText: '取消',
  862. type: 'warning'
  863. }).then(() => {
  864. propertiesModelDelete(row).then(({data}) => {
  865. if (data && data.code === 0) {
  866. this.getDataList()
  867. this.$message({
  868. message: '操作成功',
  869. type: 'success',
  870. duration: 1500,
  871. onClose: () => {
  872. }
  873. })
  874. } else {
  875. this.$alert(data.msg, '错误', {
  876. confirmButtonText: '确定'
  877. })
  878. }
  879. })
  880. }).catch(() => {
  881. })
  882. },
  883. saveData(){
  884. if (this.modalData.codeNo == '' || this.modalData.codeNo == null) {
  885. this.$alert('请输入属性模板编码!', '错误', {
  886. confirmButtonText: '确定'
  887. })
  888. return false
  889. }
  890. if (this.modalData.codeDesc == '' || this.modalData.codeDesc == null) {
  891. this.$alert('请输入属性模板名称!', '错误', {
  892. confirmButtonText: '确定'
  893. })
  894. return false
  895. }
  896. if (this.modalData.active == '' || this.modalData.active == null) {
  897. this.$alert('选择是否在用!', '错误', {
  898. confirmButtonText: '确定'
  899. })
  900. return false
  901. }
  902. if(this.modalData.flag == '1'){
  903. propertiesModelSave(this.modalData).then(({data}) => {
  904. if (data && data.code === 0) {
  905. this.getDataList()
  906. this.modalFlag = false
  907. this.$message({
  908. message: '操作成功',
  909. type: 'success',
  910. duration: 1500,
  911. onClose: () => {
  912. }
  913. })
  914. } else {
  915. this.$alert(data.msg, '错误', {
  916. confirmButtonText: '确定'
  917. })
  918. }
  919. })
  920. }else {
  921. propertiesModelEdit(this.modalData).then(({data}) => {
  922. if (data && data.code === 0) {
  923. this.getDataList()
  924. this.modalFlag=false
  925. this.$message({
  926. message: '操作成功',
  927. type: 'success',
  928. duration: 1500,
  929. onClose: () => {
  930. }
  931. })
  932. } else {
  933. this.$alert(data.msg, '错误', {
  934. confirmButtonText: '确定'
  935. })
  936. }
  937. })
  938. }
  939. },
  940. //打开属性清单
  941. detailModal(row){
  942. this.detailData.codeNo = row.codeNo
  943. this.detailData.codeDesc = row.codeDesc
  944. this.detailData.functionType = row.functionType
  945. searchModalDetails(this.detailData).then(({data}) => {
  946. this.detailList = data.rows
  947. })
  948. this.detailModelFlag = true;
  949. },
  950. deleteModalDetails(row){
  951. this.$confirm(`是否删除这个属性项目?`, '提示', {
  952. confirmButtonText: '确定',
  953. cancelButtonText: '取消',
  954. type: 'warning'
  955. }).then(() => {
  956. deleteModalDetail(row).then(({data}) => {
  957. if (data && data.code === 0) {
  958. searchModalDetails(this.detailData).then(({data}) => {
  959. this.detailList = data.rows
  960. })
  961. this.$message({
  962. message: '操作成功',
  963. type: 'success',
  964. duration: 1500,
  965. onClose: () => {
  966. }
  967. })
  968. } else {
  969. this.$alert(data.msg, '错误', {
  970. confirmButtonText: '确定'
  971. })
  972. }
  973. })
  974. }).catch(() => {
  975. })
  976. },
  977. chooseModal(row){
  978. this.chooseModalData.site = row.site;
  979. this.chooseModalData.itemNo = row.itemNo;
  980. this.chooseModalData.itemDesc = row.itemDesc;
  981. this.chooseModalData.valueTypeDb = row.valueTypeDb;
  982. searchItemAvailable(this.chooseModalData).then(({data}) => {
  983. this.chooseTableData = data.rows
  984. })
  985. this.chooseModalFlag = true;
  986. },
  987. //---------快速添加----------
  988. queryTemplateItem(){
  989. getItemLists(this.detailData).then(({data}) => {
  990. this.itemList1 = data.row1;
  991. this.itemList2 = data.row2;
  992. })
  993. },
  994. addFastModal(){
  995. this.itemSelections1 = null
  996. this.itemSelections2 = null
  997. getItemLists(this.detailData).then(({data}) => {
  998. this.itemList1 = data.row1;
  999. this.itemList2 = data.row2;
  1000. })
  1001. this.fastAddFlag = true;
  1002. },
  1003. // 可选属性
  1004. itemClickRow1(row){
  1005. this.$refs.itemTable1.toggleRowSelection(row);
  1006. },
  1007. // 已有属性
  1008. itemClickRow2(row){
  1009. this.$refs.itemTable2.toggleRowSelection(row);
  1010. },
  1011. selectFlag(){
  1012. return true;
  1013. },
  1014. selectionItem1(val){
  1015. this.itemSelections1 = val
  1016. },
  1017. selectionItem2(val){
  1018. this.itemSelections2 = val
  1019. },
  1020. addItem(){
  1021. if(this.itemSelections1 == null || this.itemSelections1.length == 0){
  1022. this.$alert("请选择可选属性!", '提示', {
  1023. confirmButtonText: '确定'
  1024. })
  1025. return false;
  1026. }
  1027. let inData = {
  1028. site: this.$store.state.user.site,
  1029. codeNo: this.detailData.codeNo,
  1030. codeDesc: this.detailData.codeDesc,
  1031. functionType: this.detailData.functionType,
  1032. // itemNo: this.itemListRow1.itemNo,
  1033. // itemDesc: this.itemListRow1.itemDesc,
  1034. itemList: this.itemSelections1,
  1035. itemType: this.detailData.itemType,
  1036. userId: this.$store.state.user.name
  1037. }
  1038. saveModalDetails(inData).then(({data}) => {
  1039. if (data && data.code == 0) {
  1040. getItemLists(this.detailData).then(({data}) => {
  1041. this.itemList1 = data.row1;
  1042. this.itemList2 = data.row2;
  1043. })
  1044. this.itemSelections1 = []
  1045. } else {
  1046. this.$alert(data.msg, '错误', {
  1047. confirmButtonText: '确定'
  1048. })
  1049. }
  1050. })
  1051. },
  1052. deleteItem(){
  1053. if(this.itemSelections2 == null || this.itemSelections2.length == 0){
  1054. this.$alert("请选择已有属性!", '提示', {
  1055. confirmButtonText: '确定'
  1056. })
  1057. return false;
  1058. }
  1059. let inData = {
  1060. site: this.$store.state.user.site,
  1061. codeNo:this.detailData.codeNo,
  1062. codeDesc:this.detailData.codeDesc,
  1063. functionType:this.detailData.functionType,
  1064. // itemNo: this.itemListRow2.itemNo,
  1065. // itemDesc:this.itemListRow2.itemDesc,
  1066. itemList: this.itemSelections2,
  1067. itemType:this.detailData.itemType,
  1068. userId:this.$store.state.user.name
  1069. }
  1070. deleteModalDetails(inData).then(({data}) => {
  1071. if (data && data.code === 0) {
  1072. getItemLists(this.detailData).then(({data}) => {
  1073. this.itemList1 = data.row1;
  1074. this.itemList2 = data.row2;
  1075. })
  1076. this.itemSelections2 = []
  1077. } else {
  1078. this.$alert(data.msg, '错误', {
  1079. confirmButtonText: '确定'
  1080. })
  1081. }
  1082. })
  1083. },
  1084. refreshDetailList(){
  1085. searchModalDetails(this.detailData).then(({data}) => {
  1086. this.detailList = data.rows
  1087. })
  1088. },
  1089. }
  1090. }
  1091. </script>