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.

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