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.

1146 lines
38 KiB

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