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.

1459 lines
48 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
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 v-model="searchData.group" @change="getDataList()">
  12. <el-option :value="i.menuId" :label="i.name" v-for="i in menuList" :key="i.menuId"></el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item :label="'模板分组'">
  16. <el-select filterable v-model="searchData.functionType" @change="val=>changeMenu(val)" clearable style="width: 120px">
  17. <!-- <el-option label="A" value="A"></el-option>-->
  18. <!-- <el-option label="IP" value="IP"></el-option>-->
  19. <!-- <el-option label="MP" value="MP"></el-option>-->
  20. <!-- <el-option label="BM" value="BM"></el-option>-->
  21. <!-- <el-option label="ECN" value="ECN"></el-option>-->
  22. <!-- <el-option label="TEST" value="TEST"></el-option>-->
  23. <!-- <el-option label="询价" value="PRICECHECK"></el-option>-->
  24. <el-option :label="item.functionTypeDesc" :value="item.functionType" v-for="item in typeList" :key="item.functionType"></el-option>
  25. </el-select>
  26. </el-form-item>
  27. <el-form-item label="模板类型">
  28. <!-- <dict-data-select ref="dictDataSelect" @change="getDataList" v-model="searchData.functionGroup" clearable :dict-type="searchData.group"-->
  29. <!-- :use-default-value="false"></dict-data-select>-->
  30. <el-select filterable style="width: 100%;" clearable v-model="searchData.functionGroup">
  31. <el-option :label="item.functionGroupDesc" :value="item.functionGroup" v-for="item in relationshipList" :key="item.functionGroup"></el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label="BU">
  35. <el-select v-model="searchData.buNo" @change="getDataList" clearable>
  36. <el-option :value="i.buNo" :label="i.buDesc" v-for="i in BUList" :key="i.buNo"></el-option>
  37. </el-select>
  38. </el-form-item>
  39. <el-form-item :label="'状态'">
  40. <!-- <el-select filterable v-model="searchData.active" style="width: 130px">-->
  41. <!-- <el-option label="全部" value=""></el-option>-->
  42. <!-- <el-option label="是" value="Y"></el-option>-->
  43. <!-- <el-option label="否" value="N"></el-option>-->
  44. <!-- </el-select>-->
  45. <dict-data-select v-model="searchData.active" clearable dict-type="sys_status"
  46. :use-default-value="false"></dict-data-select>
  47. </el-form-item>
  48. <el-form-item :label="' '">
  49. <el-button @click="getDataList()">查询</el-button>
  50. <el-button type="primary" @click="addModal()">新增</el-button>
  51. <download-excel
  52. :fields="fields()"
  53. :data="exportData"
  54. type="xls"
  55. :name="exportName"
  56. :header="exportHeader"
  57. :footer="exportFooter"
  58. :fetch="createExportData"
  59. :before-generate="startDownload"
  60. :before-finish="finishDownload"
  61. worksheet="导出信息"
  62. class="el-button el-button--primary el-button--medium">
  63. {{ "导出" }}
  64. </download-excel>
  65. </el-form-item>
  66. </el-form>
  67. <el-table
  68. :height="height"
  69. :data="dataList"
  70. border
  71. v-loading="dataListLoading"
  72. style="width: 100%;">
  73. <!-- <el-table-column-->
  74. <!-- prop="codeNo"-->
  75. <!-- header-align="center"-->
  76. <!-- align="center"-->
  77. <!-- label="属性模板编码">-->
  78. <!-- </el-table-column>-->
  79. <!-- <el-table-column-->
  80. <!-- prop="codeDesc"-->
  81. <!-- header-align="center"-->
  82. <!-- align="center"-->
  83. <!-- label="属性模板名称">-->
  84. <!-- </el-table-column>-->
  85. <!-- <el-table-column-->
  86. <!-- prop="active"-->
  87. <!-- header-align="center"-->
  88. <!-- align="center"-->
  89. <!-- label="状态">-->
  90. <!-- <template slot-scope="scope">-->
  91. <!-- <div v-if="scope.row.active === 'Y'">-->
  92. <!-- -->
  93. <!-- </div>-->
  94. <!-- <div v-if="scope.row.active === 'N'">-->
  95. <!-- -->
  96. <!-- </div>-->
  97. <!-- </template>-->
  98. <!-- </el-table-column>-->
  99. <el-table-column
  100. v-for="(item,index) in columnList" :key="index"
  101. :sortable="item.columnSortable"
  102. :prop="item.columnProp"
  103. :header-align="item.headerAlign"
  104. :show-overflow-tooltip="item.showOverflowTooltip"
  105. :align="item.align"
  106. :fixed="item.fixed==''?false:item.fixed"
  107. :min-width="item.columnWidth"
  108. :label="item.columnLabel">
  109. <template slot-scope="{row,$index}">
  110. <div v-if="item.columnProp !== 'active'">
  111. <span v-if="!item.columnHidden">{{ row[item.columnProp] }}</span>
  112. <span v-if="item.columnImage"><img :src="row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  113. </div>
  114. <span v-else
  115. :style="{color:row.active === 'Y'?'#67C23A':'red'}">{{ row.active === 'Y' ? '启用' : '停用' }}</span>
  116. </template>
  117. </el-table-column>
  118. <el-table-column
  119. fixed="right"
  120. header-align="center"
  121. align="center"
  122. width="160"
  123. label="操作">
  124. <template slot-scope="{row,$index}">
  125. <el-link style="cursor:pointer;" type="primary" v-if="row.isSystem !== 'Y'" @click="updateModal(row)">修改
  126. </el-link>
  127. <span style="cursor:no-drop;color: #aaa" v-else>修改</span>
  128. <el-link style="cursor:pointer;" type="primary" size="small" @click="detailModal(row)">属性项目</el-link>
  129. <el-link style="cursor:pointer;" type="primary" v-if="row.isSystem !== 'Y'"
  130. @click="deletePropertiesModel(row)">删除
  131. </el-link>
  132. <span style="cursor:no-drop;color: #aaa" v-else>删除</span>
  133. <el-link style="cursor:pointer;" type="primary" @click="BUBtnDialog(row)">BU授权</el-link>
  134. </template>
  135. </el-table-column>
  136. </el-table>
  137. <el-pagination
  138. @size-change="sizeChangeHandle"
  139. @current-change="currentChangeHandle"
  140. :current-page="pageIndex"
  141. :page-sizes="[20, 50, 100, 200, 500]"
  142. :page-size="pageSize"
  143. :total="totalPage"
  144. layout="total, sizes, prev, pager, next, jumper">
  145. </el-pagination>
  146. <el-dialog title="属性模板" top="20vh" :close-on-click-modal="false"
  147. @close="()=>{this.$refs.modeForm.resetFields();}" v-drag :visible.sync="modalFlag" width="500px">
  148. <el-form ref="modeForm" label-position="top" :model="modalData" :rules="rules">
  149. <el-row :gutter="10">
  150. <el-col :span="10">
  151. <el-form-item label="属性模板编码:" prop="codeNo">
  152. <el-input v-model="modalData.codeNo" :disabled="this.modalData.flag !== '1'"></el-input>
  153. </el-form-item>
  154. </el-col>
  155. <el-col :span="14">
  156. <el-form-item label="属性模板名称:" prop="codeDesc">
  157. <el-input v-model="modalData.codeDesc"></el-input>
  158. </el-form-item>
  159. </el-col>
  160. <el-col :span="10">
  161. <el-form-item :label="'模板分组'" prop="functionType">
  162. <el-select filterable style="width: 100%;" @change="val=>changeMenu(val)" clearable v-model="modalData.functionType" :disabled="this.modalData.flag !== '1'">
  163. <!-- <el-option label="A" value="A"></el-option>-->
  164. <!-- <el-option label="IP" value="IP"></el-option>-->
  165. <!-- <el-option label="MP" value="MP"></el-option>-->
  166. <!-- <el-option label="BM" value="BM"></el-option>-->
  167. <!-- <el-option label="ECN" value="ECN"></el-option>-->
  168. <!-- <el-option label="TEST" value="TEST"></el-option>-->
  169. <!-- <el-option label="询价" value="PRICECHECK"></el-option>-->
  170. <el-option :label="item.functionTypeDesc" :value="item.functionType" v-for="item in typeList" :key="item.functionType"></el-option>
  171. </el-select>
  172. </el-form-item>
  173. </el-col>
  174. <el-col :span="14">
  175. <el-form-item :label="'模板类型'" prop="functionGroup">
  176. <!-- <dict-data-select :disabled="this.modalData.flag !== '1'" ref="dialogDictDataSelect" v-model="modalData.functionGroup" clearable :dict-type="modalData.group"-->
  177. <!-- :use-default-value="false"></dict-data-select>-->
  178. <el-select filterable style="width: 100%;" v-model="modalData.functionGroup" :disabled="this.modalData.flag !== '1'">
  179. <el-option :label="item.functionGroupDesc" :value="item.functionGroup" v-for="item in copyRelationshipList" :key="item.functionGroup"></el-option>
  180. </el-select>
  181. </el-form-item>
  182. </el-col>
  183. <el-col :span="10">
  184. <el-form-item label="应用菜单" required>
  185. <el-select :disabled="this.modalData.flag !== '1'"
  186. v-model="modalData.group"
  187. style="width: 100%;"
  188. placeholder="请选择">
  189. <el-option
  190. v-for="item in menuList"
  191. :key="item.menuId"
  192. :label="item.name"
  193. :value="item.menuId">
  194. </el-option>
  195. </el-select>
  196. </el-form-item>
  197. </el-col>
  198. <el-col :span="8">
  199. <el-form-item label="状态:" prop="active">
  200. <dict-data-select v-model="modalData.active" clearable dict-type="sys_status"
  201. :use-default-value="false"></dict-data-select>
  202. </el-form-item>
  203. </el-col>
  204. </el-row>
  205. </el-form>
  206. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  207. <el-button type="primary" @click="saveData()">保存</el-button>
  208. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  209. </el-footer>
  210. </el-dialog>
  211. <el-dialog title="属性项目清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="830px">
  212. <el-form :inline="true" label-position="top" @keyup.enter.native="getDataList()">
  213. <el-form-item :label="'属性模板编码'">
  214. <el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>
  215. </el-form-item>
  216. <el-form-item :label="'属性模板名称'">
  217. <el-input v-model="detailData.codeDesc" readonly style="width: 120px"></el-input>
  218. </el-form-item>
  219. <el-form-item :label="' '">
  220. <!-- <el-button type="primary" @click="addDetailModal()">新增</el-button>-->
  221. <el-button type="primary" @click="addFastModal()">新增</el-button>
  222. </el-form-item>
  223. </el-form>
  224. <el-table
  225. :height="300"
  226. :data="detailList"
  227. border
  228. v-loading="dataListLoading"
  229. style="width: 100%;">
  230. <el-table-column
  231. fixed="left"
  232. header-align="center"
  233. align="center"
  234. width="70"
  235. label="排序">
  236. <template slot-scope="scope">
  237. <a type="text" size="small" @click="goUp(scope.row)">上移</a>
  238. <a type="text" size="small" @click="goDown(scope.row)"> 下移</a>
  239. </template>
  240. </el-table-column>
  241. <el-table-column
  242. v-for="(item,index) in columnDetailList" :key="index"
  243. :sortable="item.columnSortable"
  244. :prop="item.columnProp"
  245. :header-align="item.headerAlign"
  246. :show-overflow-tooltip="item.showOverflowTooltip"
  247. :align="item.align"
  248. :fixed="item.fixed==''?false:item.fixed"
  249. :min-width="item.columnWidth"
  250. :label="item.columnLabel">
  251. <template slot-scope="scope">
  252. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  253. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  254. style="width: 100px; height: 80px"/></span>
  255. </template>
  256. </el-table-column>
  257. <el-table-column
  258. fixed="right"
  259. header-align="center"
  260. align="center"
  261. width="130"
  262. label="操作">
  263. <template slot-scope="scope">
  264. <a type="text" size="small" v-if="scope.row.valueChooseFlag === 'Y'"
  265. @click="chooseModal(scope.row)">可选值</a>
  266. <a type="text" size="small" @click="deleteModalDetails(scope.row)">删除属性</a>
  267. </template>
  268. </el-table-column>
  269. </el-table>
  270. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  271. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  272. </el-footer>
  273. </el-dialog>
  274. <!-- <el-dialog title="添加属性" :close-on-click-modal="false" v-drag :visible.sync="addDetailModalFlag" width="300px">-->
  275. <!-- <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">-->
  276. <!-- <el-form-item >-->
  277. <!-- <span slot="label" style="" @click="getBaseList(1024)"><a herf="#">属性属性编码</a></span>-->
  278. <!-- <el-input v-model="detailData.itemNo" @blur="itemNoBlur" style="width: 120px"></el-input>-->
  279. <!-- </el-form-item>-->
  280. <!-- <el-form-item label="属性项目名称:">-->
  281. <!-- <el-input v-model="detailData.itemDesc" disabled style="width: 120px"></el-input>-->
  282. <!-- </el-form-item>-->
  283. <!-- </el-form>-->
  284. <!-- <el-footer style="height:40px;margin-top: 10px;text-align:center">-->
  285. <!-- <el-button type="primary" @click="saveModalDetails()">保存</el-button>-->
  286. <!-- <el-button type="primary" @click="addDetailModalFlag = false">关闭</el-button>-->
  287. <!-- </el-footer>-->
  288. <!-- </el-dialog>-->
  289. <el-dialog title="新增" @close="refreshDetailList" :close-on-click-modal="false" v-drag :visible.sync="fastAddFlag"
  290. width="1000px">
  291. <div style="font-size: 12px">
  292. <!-- 属性模板编码<el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>-->
  293. <!-- 属性模板名称<el-input v-model="detailData.codeDesc" readonly style="width: 120px"></el-input>-->
  294. <el-form :inline="true" label-position="top" :model="detailData">
  295. <el-form-item :label="'属性编码'">
  296. <el-input v-model="detailData.itemNo" style="width: 120px"></el-input>
  297. </el-form-item>
  298. <el-form-item :label="'属性名称'">
  299. <el-input v-model="detailData.itemDesc" style="width: 120px"></el-input>
  300. </el-form-item>
  301. <el-form-item :label="' '">
  302. <el-button type="primary" @click="queryTemplateItem()">查询</el-button>
  303. </el-form-item>
  304. </el-form>
  305. </div>
  306. <el-container style="margin-top: 0px;">
  307. <el-main style="width: 350px;padding: 1px">
  308. <span style="font-size: 12px">可选属性</span>
  309. <el-table
  310. height="400px"
  311. :data="itemList1"
  312. border
  313. ref="itemTable1"
  314. @row-click="itemClickRow1"
  315. @selection-change="selectionItem1"
  316. highlight-current-row
  317. v-loading="dataListLoading"
  318. style="width: 100%">
  319. <el-table-column
  320. type="selection"
  321. header-align="center"
  322. align="center"
  323. :selectable="selectFlag"
  324. width="50">
  325. </el-table-column>
  326. <el-table-column
  327. prop="itemNo"
  328. header-align="center"
  329. align="center"
  330. min-width="80"
  331. label="属性编码">
  332. </el-table-column>
  333. <el-table-column
  334. prop="itemDesc"
  335. header-align="center"
  336. align="center"
  337. min-width="200"
  338. label="属性名称">
  339. </el-table-column>
  340. </el-table>
  341. </el-main>
  342. <el-main style="width: 10px;padding: 1px">
  343. <div style="margin-top: 200px;margin-left: 18px">
  344. <el-button type="primary" @click="addItem()">添加>></el-button>
  345. </div>
  346. <div style="margin-top: 15px;margin-left: 18px">
  347. <el-button type="primary" @click="deleteItem()">删除<<</el-button>
  348. </div>
  349. </el-main>
  350. <el-main style="width: 350px;padding: 1px">
  351. <span style="font-size: 12px">已有属性</span>
  352. <el-table
  353. height="400px"
  354. :data="itemList2"
  355. border
  356. ref="itemTable2"
  357. @row-click="itemClickRow2"
  358. @selection-change="selectionItem2"
  359. highlight-current-row
  360. v-loading="dataListLoading"
  361. style="width: 100%">
  362. <el-table-column
  363. type="selection"
  364. header-align="center"
  365. align="center"
  366. :selectable="selectFlag"
  367. width="50">
  368. </el-table-column>
  369. <el-table-column
  370. prop="itemNo"
  371. header-align="center"
  372. align="center"
  373. min-width="80"
  374. label="属性编码">
  375. </el-table-column>
  376. <el-table-column
  377. prop="itemDesc"
  378. header-align="center"
  379. align="center"
  380. min-width="200"
  381. label="属性名称">
  382. </el-table-column>
  383. </el-table>
  384. </el-main>
  385. </el-container>
  386. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  387. <el-button type="primary" @click="fastAddFlag = false">关闭</el-button>
  388. </el-footer>
  389. </el-dialog>
  390. <el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="chooseModalFlag" width="350px">
  391. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  392. <el-form-item label="属性项目名称:">
  393. <el-input v-model="chooseModalData.itemDesc" disabled style="width: 120px"></el-input>
  394. </el-form-item>
  395. <el-form-item :label="'属性值类型'">
  396. <el-select filterable v-model="chooseModalData.valueTypeDb" disabled style="width: 120px">
  397. <el-option label="文本" value="T"></el-option>
  398. <el-option label="数字" value="N"></el-option>
  399. </el-select>
  400. </el-form-item>
  401. </el-form>
  402. <el-table
  403. :height="300"
  404. :data="chooseTableData"
  405. border
  406. style="width: 100%">
  407. <el-table-column
  408. prop="availableValue"
  409. header-align="center"
  410. align="left"
  411. min-width="200"
  412. label="属性值">
  413. </el-table-column>
  414. </el-table>
  415. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  416. <el-button type="primary" @click="chooseModalFlag = false">关闭</el-button>
  417. </el-footer>
  418. </el-dialog>
  419. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  420. <el-dialog title="BU授权" v-drag :visible.sync="BUDialog" width="518px">
  421. <el-form :inline="true" label-position="top" :model="modalData">
  422. <el-form-item :label="'模板编码'">
  423. <el-input v-model="modalData.codeNo" readonly style="width: 120px"></el-input>
  424. </el-form-item>
  425. <el-form-item :label="'模板名称'">
  426. <el-input v-model="modalData.codeDesc" readonly style="width: 120px"></el-input>
  427. </el-form-item>
  428. </el-form>
  429. <el-transfer class="rq" :props="{key: 'buNo',label: 'buDesc' }"
  430. filterable v-model="selectionBU"
  431. :data="BUList">
  432. </el-transfer>
  433. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  434. <el-button type="primary" @click="savePropertiesBU">保存</el-button>
  435. <el-button type="primary" @click="BUDialog = false">关闭</el-button>
  436. </el-footer>
  437. </el-dialog>
  438. </div>
  439. </template>
  440. <script>
  441. import {
  442. propertiesModelSearch,
  443. propertiesModelSave,
  444. propertiesModelEdit,
  445. propertiesModelDelete,
  446. searchItemAvailable,
  447. searchModalDetails,
  448. saveModalDetails,
  449. deleteModalDetails, // 多选删除
  450. getItemLists,
  451. deleteModalDetail, // 单删
  452. goUpItem,
  453. goDownItem,
  454. } from "@/api/base/properties.js"
  455. import Chooselist from '@/views/modules/common/Chooselist'
  456. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  457. import DictDataSelect from "../../sys/dict-data-select.vue";
  458. import {
  459. saveBUPropertiesList, searchAllTypeList, searchAllTypeRelationshipList,
  460. searchBUList,
  461. searchBUPropertiesList,
  462. searchMenuAllListId,
  463. searchPropertiesGroup
  464. } from "../../../../api/base/properties";
  465. export default {
  466. components: {
  467. DictDataSelect,
  468. Chooselist
  469. },
  470. watch: {
  471. searchData: {
  472. deep: true,
  473. handler: function (newV, oldV) {
  474. this.searchData.codeNo = this.searchData.codeNo.toUpperCase()
  475. }
  476. },
  477. itemData: {
  478. deep: true,
  479. handler: function (newV, oldV) {
  480. this.itemData.itemNo = this.itemData.itemNo.toUpperCase()
  481. }
  482. },
  483. modalData: {
  484. deep: true,
  485. handler: function (newV, oldV) {
  486. this.modalData.codeNo = this.modalData.codeNo.toUpperCase()
  487. }
  488. },
  489. detailData: {
  490. deep: true,
  491. handler: function (newV, oldV) {
  492. this.detailData.codeNo = this.detailData.codeNo.toUpperCase()
  493. this.detailData.itemNo = this.detailData.itemNo.toUpperCase()
  494. }
  495. },
  496. },
  497. data() {
  498. return {
  499. relationshipList:[],
  500. copyRelationshipList:[],
  501. typeList:[],
  502. selectionBU: [],
  503. BUDialog: false,
  504. BUList: [],
  505. menuList: [],
  506. // 是否收藏
  507. favorite: false,
  508. // 导出 start
  509. exportData: [],
  510. exportName: "属性模板" + this.dayjs().format('YYYYMMDDHHmmss'),
  511. exportHeader: ["属性模板"],
  512. exportFooter: [],
  513. exportList: [],
  514. // 导出 end
  515. tagNo: '',
  516. searchData: {
  517. site: this.$store.state.user.site,
  518. group: '',
  519. buNo: '',
  520. codeNo: '',
  521. codeDesc: '',
  522. active: 'Y',
  523. functionType: '',
  524. functionGroup:'',
  525. page: 1,
  526. limit: 10,
  527. },
  528. height: 200,
  529. pageIndex: 1,
  530. pageSize: 50,
  531. totalPage: 0,
  532. // addDetailModalFlag:false,
  533. modalFlag: false,
  534. modalDisableFlag: false,
  535. modalData: {
  536. flag: '',
  537. codeNo: '',
  538. codeDesc: '',
  539. active: '',
  540. functionType: '',
  541. functionGroup: '',
  542. group: '',
  543. userId: this.$store.state.user.name,
  544. createdBy: this.$store.state.user.name,
  545. updateBy: this.$store.state.user.name,
  546. },
  547. detailData: {
  548. site: this.$store.state.user.site,
  549. codeNo: '',
  550. codeDesc: '',
  551. functionType: '',
  552. itemNo: '',
  553. itemDesc: '',
  554. itemType: '',
  555. userId: this.$store.state.user.name
  556. },
  557. columnList: [
  558. {
  559. userId: this.$store.state.user.name,
  560. functionId: 100002001,
  561. serialNumber: '100002001TableFunctionType',
  562. tableId: "100002001Table",
  563. tableName: "属性项目表",
  564. columnProp: 'functionTypeDesc',
  565. headerAlign: "center",
  566. align: "center",
  567. columnLabel: '模板分组',
  568. columnHidden: false,
  569. columnImage: false,
  570. columnSortable: false,
  571. sortLv: 0,
  572. status: true,
  573. fixed: '',
  574. },{
  575. userId: this.$store.state.user.name,
  576. functionId: 100002001,
  577. serialNumber: '100002001TableFunctionType',
  578. tableId: "100002001Table",
  579. tableName: "属性项目表",
  580. columnProp: 'functionGroupDesc',
  581. headerAlign: "center",
  582. align: "center",
  583. columnLabel: '模板类型',
  584. columnHidden: false,
  585. columnImage: false,
  586. columnSortable: false,
  587. sortLv: 0,
  588. status: true,
  589. fixed: '',
  590. },
  591. {
  592. userId: this.$store.state.user.name,
  593. functionId: 100002001,
  594. serialNumber: '100002001TableCodeNo',
  595. tableId: "100002001Table",
  596. tableName: "属性模板表",
  597. columnProp: 'codeNo',
  598. headerAlign: "center",
  599. align: "center",
  600. columnLabel: '属性模板编码',
  601. columnHidden: false,
  602. columnImage: false,
  603. columnSortable: false,
  604. sortLv: 0,
  605. status: true,
  606. fixed: '',
  607. },
  608. {
  609. userId: this.$store.state.user.name,
  610. functionId: 100002001,
  611. serialNumber: '100002001TableCodeDesc',
  612. tableId: "100002001Table",
  613. tableName: "属性模板表",
  614. columnProp: 'codeDesc',
  615. headerAlign: "center",
  616. align: "center",
  617. columnLabel: '属性模板名称',
  618. columnHidden: false,
  619. columnImage: false,
  620. columnSortable: false,
  621. sortLv: 0,
  622. status: true,
  623. fixed: '',
  624. },
  625. {
  626. userId: this.$store.state.user.name,
  627. functionId: 100002001,
  628. serialNumber: '100002001TableActive',
  629. tableId: "100002001Table",
  630. tableName: "属性模板表",
  631. columnProp: 'active',
  632. headerAlign: "center",
  633. align: "center",
  634. columnLabel: '状态',
  635. columnHidden: false,
  636. columnImage: false,
  637. columnSortable: false,
  638. sortLv: 0,
  639. status: true,
  640. fixed: '',
  641. },
  642. {
  643. userId: this.$store.state.user.name,
  644. functionId: 100002001,
  645. serialNumber: '100002001TableCreatedDate',
  646. tableId: "100002001Table",
  647. tableName: "属性模板表",
  648. columnProp: 'createdDate',
  649. headerAlign: "center",
  650. align: "center",
  651. columnLabel: '创建时间',
  652. columnHidden: false,
  653. columnImage: false,
  654. columnSortable: false,
  655. sortLv: 0,
  656. status: true,
  657. fixed: '',
  658. },
  659. {
  660. userId: this.$store.state.user.name,
  661. functionId: 100002001,
  662. serialNumber: '100002001TableCreatedBy',
  663. tableId: "100002001Table",
  664. tableName: "属性模板表",
  665. columnProp: 'createdBy',
  666. headerAlign: "center",
  667. align: "left",
  668. columnLabel: '创建人',
  669. columnHidden: false,
  670. columnImage: false,
  671. columnSortable: false,
  672. sortLv: 0,
  673. status: true,
  674. fixed: '',
  675. columnWidth: 80,
  676. },
  677. {
  678. userId: this.$store.state.user.name,
  679. functionId: 100002001,
  680. serialNumber: '100002001TableUpdateDate',
  681. tableId: "100002001Table",
  682. tableName: "属性模板表",
  683. columnProp: 'updateDate',
  684. headerAlign: "center",
  685. align: "center",
  686. columnLabel: '更新时间',
  687. columnHidden: false,
  688. columnImage: false,
  689. columnSortable: false,
  690. sortLv: 0,
  691. status: true,
  692. fixed: '',
  693. },
  694. {
  695. userId: this.$store.state.user.name,
  696. functionId: 100002001,
  697. serialNumber: '100002001TableUpdateBy',
  698. tableId: "100002001Table",
  699. tableName: "属性模板表",
  700. columnProp: 'updateBy',
  701. headerAlign: "center",
  702. align: "left",
  703. columnLabel: '更新人',
  704. columnHidden: false,
  705. columnImage: false,
  706. columnSortable: false,
  707. sortLv: 0,
  708. status: true,
  709. fixed: '',
  710. columnWidth: 80,
  711. },
  712. ],
  713. detailModelFlag: false,
  714. detailList: [],
  715. chooseTableData: [],
  716. dataListLoading: false,
  717. dataListSelections: [],
  718. // modalDisableFlag:false,
  719. chooseModalFlag: false,
  720. itemFlag: 'text',
  721. itemData: {
  722. itemNo: '',
  723. valueNo: '',
  724. availableValue: '',
  725. itemType: '',
  726. createdBy: this.$store.state.user.name
  727. },
  728. dataList: [],
  729. departmentList: [],
  730. // 展示列集
  731. columnDetailList: [
  732. {
  733. userId: this.$store.state.user.name,
  734. functionId: 100002001,
  735. serialNumber: '100002001Table2PropertiesItemID',
  736. tableId: "100002001Table2",
  737. tableName: "属性项目表",
  738. columnProp: 'itemNo',
  739. headerAlign: "center",
  740. align: "center",
  741. columnLabel: '属性项目编码',
  742. columnHidden: false,
  743. columnImage: false,
  744. columnSortable: false,
  745. sortLv: 0,
  746. status: true,
  747. fixed: '',
  748. },
  749. {
  750. userId: this.$store.state.user.name,
  751. functionId: 100002001,
  752. serialNumber: '100002001Table2PropertiesItemDesc',
  753. tableId: "100002001Table2",
  754. tableName: "属性项目表",
  755. columnProp: 'itemDesc',
  756. headerAlign: "center",
  757. align: "center",
  758. columnLabel: '属性项目名称',
  759. columnHidden: false,
  760. columnImage: false,
  761. columnSortable: false,
  762. sortLv: 0,
  763. status: true,
  764. fixed: '',
  765. },
  766. {
  767. userId: this.$store.state.user.name,
  768. functionId: 100002001,
  769. serialNumber: '100002001Table2ValueType',
  770. tableId: "100002001Table2",
  771. tableName: "属性项目表",
  772. columnProp: 'valueType',
  773. headerAlign: "center",
  774. align: "center",
  775. columnLabel: '属性值类型',
  776. columnHidden: false,
  777. columnImage: false,
  778. columnSortable: false,
  779. sortLv: 0,
  780. status: true,
  781. fixed: '',
  782. },
  783. {
  784. userId: this.$store.state.user.name,
  785. functionId: 100002001,
  786. serialNumber: '100002001Table2DefaultValue',
  787. tableId: "100002001Table2",
  788. tableName: "属性项目表",
  789. columnProp: 'defaultValue',
  790. headerAlign: "center",
  791. align: "center",
  792. columnLabel: '参照值',
  793. columnHidden: false,
  794. columnImage: false,
  795. columnSortable: false,
  796. sortLv: 0,
  797. status: true,
  798. fixed: '',
  799. },
  800. {
  801. userId: this.$store.state.user.name,
  802. functionId: 100002001,
  803. serialNumber: '100002001Table2MaxValue',
  804. tableId: "100002001Table2",
  805. tableName: "属性项目表",
  806. columnProp: 'maxValue',
  807. headerAlign: "center",
  808. align: "center",
  809. columnLabel: '最大值',
  810. columnHidden: false,
  811. columnImage: false,
  812. columnSortable: false,
  813. sortLv: 0,
  814. status: true,
  815. fixed: '',
  816. },
  817. {
  818. userId: this.$store.state.user.name,
  819. functionId: 100002001,
  820. serialNumber: '100002001Table2MinValue',
  821. tableId: "100002001Table2",
  822. tableName: "属性项目表",
  823. columnProp: 'minValue',
  824. headerAlign: "center",
  825. align: "center",
  826. columnLabel: '最小值',
  827. columnHidden: false,
  828. columnImage: false,
  829. columnSortable: false,
  830. sortLv: 0,
  831. status: true,
  832. fixed: '',
  833. },
  834. {
  835. userId: this.$store.state.user.name,
  836. functionId: 100002001,
  837. serialNumber: '100002001TableValueChooseFlag',
  838. tableId: "100002001Table",
  839. tableName: "common",
  840. columnProp: 'valueChooseFlag',
  841. headerAlign: "center",
  842. align: "center",
  843. columnLabel: '是否值可选',
  844. columnHidden: false,
  845. columnImage: false,
  846. columnSortable: false,
  847. sortLv: 0,
  848. status: true,
  849. fixed: '',
  850. },
  851. ],
  852. levelList: [],
  853. chooseModalData: {
  854. site: '',
  855. itemNo: '',
  856. itemDesc: '',
  857. itemType: '',
  858. valueTypeDb: '',
  859. },
  860. //---------快速添加----------
  861. fastAddFlag: false,
  862. itemList1: [],
  863. itemList2: [],
  864. itemListRow1: {},
  865. itemListRow2: {},
  866. itemSelections1: [],
  867. itemSelections2: [],
  868. rules: {
  869. codeNo: [
  870. {
  871. required: true,
  872. message: ' ',
  873. trigger: 'change'
  874. }
  875. ],
  876. codeDesc: [
  877. {
  878. required: true,
  879. message: ' ',
  880. trigger: 'change'
  881. }
  882. ],
  883. active: [
  884. {
  885. required: true,
  886. message: ' ',
  887. trigger: 'change'
  888. }
  889. ],
  890. functionType: [
  891. {
  892. required: true,
  893. message: ' ',
  894. trigger: 'change'
  895. }
  896. ],
  897. functionGroup: [
  898. {
  899. required: true,
  900. message: ' ',
  901. trigger: 'change'
  902. }
  903. ],
  904. }
  905. }
  906. },
  907. mounted() {
  908. this.$nextTick(() => {
  909. this.height = window.innerHeight - 210
  910. })
  911. },
  912. async created() {
  913. await this.searchBUList();
  914. await this.searchMenuList();
  915. await this.searchAllTypeList();
  916. },
  917. methods: {
  918. changeMenu(val){
  919. if (this.modalFlag){
  920. this.modalData.functionGroup='';
  921. }else {
  922. this.searchData.functionGroup = '';
  923. }
  924. this.getDataList();
  925. this.searchAllTypeRelationshipList(val)
  926. // this.$nextTick(()=>{
  927. // this.$refs[ref].initOption();
  928. // })
  929. },
  930. searchAllTypeRelationshipList(args){
  931. let params={
  932. functionType: args
  933. }
  934. searchAllTypeRelationshipList(params).then(({data})=>{
  935. if (data && data.code === 0){
  936. if (this.modalFlag){
  937. this.copyRelationshipList = data.rows;
  938. }else {
  939. this.relationshipList = data.rows;
  940. }
  941. }else {
  942. this.$message.warning(data.msg)
  943. }
  944. }).catch((error) => {
  945. this.$message.error(error)
  946. })
  947. },
  948. searchAllTypeList(){
  949. searchAllTypeList().then(({data})=>{
  950. if (data && data.code === 0) {
  951. this.typeList = data.rows;
  952. } else {
  953. this.$message.warning(data.msg)
  954. }
  955. }).catch((error) => {
  956. this.$message.error(error)
  957. })
  958. },
  959. searchMenuList() {
  960. let params = {
  961. site: this.$store.state.user.site
  962. }
  963. searchMenuAllListId(params).then(({data}) => {
  964. if (data && data.code === 0) {
  965. this.menuList = data.rows;
  966. if (this.menuList.length > 0) {
  967. this.searchData.group = this.menuList[0].menuId
  968. // this.searchData.menuList.push(this.menuList[0].menuId)
  969. }
  970. this.getDataList();
  971. // this.$nextTick(()=>{
  972. // this.$refs.dictDataSelect.initOption();
  973. // })
  974. } else {
  975. this.$message.warning(data.msg)
  976. }
  977. }).catch((error) => {
  978. this.$message.error(error)
  979. })
  980. },
  981. searchBUList() {
  982. let params = {
  983. site: this.$store.state.user.site
  984. }
  985. searchBUList(params).then(({data}) => {
  986. if (data && data.code === 0) {
  987. this.BUList = data.rows;
  988. // if (this.BUList.length > 0) {
  989. // this.searchData.buNo = this.BUList[0].buNo
  990. // }
  991. } else {
  992. this.$message.warning(data.msg)
  993. }
  994. }).catch((error) => {
  995. this.$message.error(error)
  996. })
  997. },
  998. // 获取基础数据列表S
  999. getBaseList(val, type) {
  1000. this.tagNo = val
  1001. this.$nextTick(() => {
  1002. let strVal = ''
  1003. if (val === 1024) {
  1004. strVal = this.detailData.itemNo
  1005. }
  1006. this.$refs.baseList.init(val, strVal)
  1007. })
  1008. },
  1009. /* 列表方法的回调 */
  1010. getBaseData(val) {
  1011. if (this.tagNo === 1024) {
  1012. this.detailData.itemNo = val.ItemNo
  1013. this.detailData.itemDesc = val.ItemDesc
  1014. }
  1015. },
  1016. //导出excel
  1017. async createExportData() {
  1018. this.searchData.limit = -1
  1019. this.searchData.page = 1
  1020. await propertiesModelSearch(this.searchData).then(({data}) => {
  1021. this.exportList = data.page.list;
  1022. })
  1023. return this.exportList;
  1024. },
  1025. startDownload() {
  1026. },
  1027. finishDownload() {
  1028. },
  1029. fields() {
  1030. let json = "{"
  1031. this.columnList.forEach((item, index) => {
  1032. if (index == this.columnList.length - 1) {
  1033. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1034. } else {
  1035. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1036. }
  1037. })
  1038. json += "}"
  1039. let s = eval("(" + json + ")")
  1040. return s
  1041. },
  1042. // 导出 end
  1043. // 获取数据列表
  1044. getDataList() {
  1045. this.searchData.limit = this.pageSize
  1046. this.searchData.page = this.pageIndex
  1047. propertiesModelSearch(this.searchData).then(({data}) => {
  1048. if (data.code == 0) {
  1049. this.dataList = data.page.list
  1050. this.pageIndex = data.page.currPage
  1051. this.pageSize = data.page.pageSize
  1052. this.totalPage = data.page.totalCount
  1053. }
  1054. this.dataListLoading = false
  1055. })
  1056. },
  1057. // 每页数
  1058. sizeChangeHandle(val) {
  1059. this.pageSize = val
  1060. this.pageIndex = 1
  1061. this.getDataList()
  1062. },
  1063. // 当前页
  1064. currentChangeHandle(val) {
  1065. this.pageIndex = val
  1066. this.getDataList()
  1067. },
  1068. addModal() {
  1069. this.modalData = {
  1070. site: this.$store.state.user.site,
  1071. flag: '1',
  1072. codeNo: '',
  1073. codeDesc: '',
  1074. active: 'Y',
  1075. functionType: `${this.searchData.functionType?this.searchData.functionType:''}`,
  1076. functionGroup: `${this.searchData.functionGroup?this.searchData.functionGroup:''}`,
  1077. group: `${this.searchData.group?this.searchData.group:''}`,
  1078. userId: this.$store.state.user.name,
  1079. createdBy: this.$store.state.user.name,
  1080. updateBy: this.$store.state.user.name,
  1081. };
  1082. this.modalDisableFlag = false;
  1083. this.copyRelationshipList = this.relationshipList
  1084. this.modalFlag = true;
  1085. this.$nextTick(()=>{
  1086. this.$refs['dialogDictDataSelect'].initOption();
  1087. })
  1088. },
  1089. updateModal(row) {
  1090. this.modalData = {
  1091. site: this.$store.state.user.site,
  1092. flag: '2',
  1093. codeNo: row.codeNo,
  1094. codeDesc: row.codeDesc,
  1095. active: row.active,
  1096. group: row.group,
  1097. functionType: row.functionType,
  1098. functionGroup: row.functionGroup,
  1099. userId: this.$store.state.user.name,
  1100. updateBy: this.$store.state.user.name,
  1101. };
  1102. this.modalFlag = true;
  1103. },
  1104. // 删除
  1105. deletePropertiesModel(row) {
  1106. this.$confirm(`是否删除这个属性模板?`, '提示', {
  1107. confirmButtonText: '确定',
  1108. cancelButtonText: '取消',
  1109. type: 'warning'
  1110. }).then(() => {
  1111. propertiesModelDelete(row).then(({data}) => {
  1112. if (data && data.code === 0) {
  1113. this.getDataList()
  1114. this.$message({
  1115. message: '操作成功',
  1116. type: 'success',
  1117. duration: 1500,
  1118. onClose: () => {
  1119. }
  1120. })
  1121. } else {
  1122. this.$alert(data.msg, '错误', {
  1123. confirmButtonText: '确定'
  1124. })
  1125. }
  1126. })
  1127. }).catch(() => {
  1128. })
  1129. },
  1130. saveData() {
  1131. if (this.modalData.codeNo == '' || this.modalData.codeNo == null) {
  1132. this.$alert('请输入属性模板编码!', '错误', {
  1133. confirmButtonText: '确定'
  1134. })
  1135. return false
  1136. }
  1137. if (this.modalData.codeDesc == '' || this.modalData.codeDesc == null) {
  1138. this.$alert('请输入属性模板名称!', '错误', {
  1139. confirmButtonText: '确定'
  1140. })
  1141. return false
  1142. }
  1143. if (this.modalData.active == '' || this.modalData.active == null) {
  1144. this.$alert('选择状态!', '错误', {
  1145. confirmButtonText: '确定'
  1146. })
  1147. return false
  1148. }
  1149. if (this.modalData.functionType === '') {
  1150. this.$alert('选择模板类型!', '错误', {
  1151. confirmButtonText: '确定'
  1152. })
  1153. return false
  1154. }
  1155. if (this.modalData.functionGroup === '') {
  1156. this.$alert('选择模板分组!', '错误', {
  1157. confirmButtonText: '确定'
  1158. })
  1159. return false
  1160. }
  1161. if (this.modalData.flag === '1') {
  1162. propertiesModelSave(this.modalData).then(({data}) => {
  1163. if (data && data.code === 0) {
  1164. this.getDataList()
  1165. this.modalFlag = false
  1166. this.$message({
  1167. message: '操作成功',
  1168. type: 'success',
  1169. duration: 1500,
  1170. onClose: () => {
  1171. }
  1172. })
  1173. } else {
  1174. this.$alert(data.msg, '错误', {
  1175. confirmButtonText: '确定'
  1176. })
  1177. }
  1178. })
  1179. } else {
  1180. propertiesModelEdit(this.modalData).then(({data}) => {
  1181. if (data && data.code === 0) {
  1182. this.getDataList()
  1183. this.modalFlag = false
  1184. this.$message({
  1185. message: '操作成功',
  1186. type: 'success',
  1187. duration: 1500,
  1188. onClose: () => {
  1189. }
  1190. })
  1191. } else {
  1192. this.$alert(data.msg, '错误', {
  1193. confirmButtonText: '确定'
  1194. })
  1195. }
  1196. })
  1197. }
  1198. },
  1199. //打开属性清单
  1200. detailModal(row) {
  1201. this.detailData.codeNo = row.codeNo
  1202. this.detailData.codeDesc = row.codeDesc
  1203. this.detailData.functionType = row.functionType
  1204. searchModalDetails(this.detailData).then(({data}) => {
  1205. this.detailList = data.rows
  1206. })
  1207. this.detailModelFlag = true;
  1208. },
  1209. deleteModalDetails(row) {
  1210. this.$confirm(`是否删除这个属性项目?`, '提示', {
  1211. confirmButtonText: '确定',
  1212. cancelButtonText: '取消',
  1213. type: 'warning'
  1214. }).then(() => {
  1215. deleteModalDetail(row).then(({data}) => {
  1216. if (data && data.code === 0) {
  1217. searchModalDetails(this.detailData).then(({data}) => {
  1218. this.detailList = data.rows
  1219. })
  1220. this.$message({
  1221. message: '操作成功',
  1222. type: 'success',
  1223. duration: 1500,
  1224. onClose: () => {
  1225. }
  1226. })
  1227. } else {
  1228. this.$alert(data.msg, '错误', {
  1229. confirmButtonText: '确定'
  1230. })
  1231. }
  1232. })
  1233. }).catch(() => {
  1234. })
  1235. },
  1236. chooseModal(row) {
  1237. this.chooseModalData.site = row.site;
  1238. this.chooseModalData.itemNo = row.itemNo;
  1239. this.chooseModalData.itemDesc = row.itemDesc;
  1240. this.chooseModalData.valueTypeDb = row.valueTypeDb;
  1241. this.chooseModalData.itemType = row.functionType;
  1242. searchItemAvailable(this.chooseModalData).then(({data}) => {
  1243. this.chooseTableData = data.rows
  1244. })
  1245. this.chooseModalFlag = true;
  1246. },
  1247. //---------快速添加----------
  1248. queryTemplateItem() {
  1249. getItemLists(this.detailData).then(({data}) => {
  1250. this.itemList1 = data.row1;
  1251. this.itemList2 = data.row2;
  1252. })
  1253. },
  1254. addFastModal() {
  1255. this.itemSelections1 = null
  1256. this.itemSelections2 = null
  1257. getItemLists(this.detailData).then(({data}) => {
  1258. this.itemList1 = data.row1;
  1259. this.itemList2 = data.row2;
  1260. })
  1261. this.fastAddFlag = true;
  1262. },
  1263. // 可选属性
  1264. itemClickRow1(row) {
  1265. this.$refs.itemTable1.toggleRowSelection(row);
  1266. },
  1267. // 已有属性
  1268. itemClickRow2(row) {
  1269. this.$refs.itemTable2.toggleRowSelection(row);
  1270. },
  1271. selectFlag() {
  1272. return true;
  1273. },
  1274. selectionItem1(val) {
  1275. this.itemSelections1 = val
  1276. },
  1277. selectionItem2(val) {
  1278. this.itemSelections2 = val
  1279. },
  1280. addItem() {
  1281. if (this.itemSelections1 == null || this.itemSelections1.length == 0) {
  1282. this.$alert("请选择可选属性!", '提示', {
  1283. confirmButtonText: '确定'
  1284. })
  1285. return false;
  1286. }
  1287. let inData = {
  1288. site: this.$store.state.user.site,
  1289. codeNo: this.detailData.codeNo,
  1290. codeDesc: this.detailData.codeDesc,
  1291. functionType: this.detailData.functionType,
  1292. // itemNo: this.itemListRow1.itemNo,
  1293. // itemDesc: this.itemListRow1.itemDesc,
  1294. itemList: this.itemSelections1,
  1295. itemType: this.detailData.itemType,
  1296. userId: this.$store.state.user.name
  1297. }
  1298. saveModalDetails(inData).then(({data}) => {
  1299. if (data && data.code == 0) {
  1300. getItemLists(this.detailData).then(({data}) => {
  1301. this.itemList1 = data.row1;
  1302. this.itemList2 = data.row2;
  1303. })
  1304. this.itemSelections1 = []
  1305. } else {
  1306. this.$alert(data.msg, '错误', {
  1307. confirmButtonText: '确定'
  1308. })
  1309. }
  1310. })
  1311. },
  1312. deleteItem() {
  1313. if (this.itemSelections2 == null || this.itemSelections2.length == 0) {
  1314. this.$alert("请选择已有属性!", '提示', {
  1315. confirmButtonText: '确定'
  1316. })
  1317. return false;
  1318. }
  1319. let inData = {
  1320. site: this.$store.state.user.site,
  1321. codeNo: this.detailData.codeNo,
  1322. codeDesc: this.detailData.codeDesc,
  1323. functionType: this.detailData.functionType,
  1324. // itemNo: this.itemListRow2.itemNo,
  1325. // itemDesc:this.itemListRow2.itemDesc,
  1326. itemList: this.itemSelections2,
  1327. itemType: this.detailData.itemType,
  1328. userId: this.$store.state.user.name
  1329. }
  1330. deleteModalDetails(inData).then(({data}) => {
  1331. if (data && data.code === 0) {
  1332. getItemLists(this.detailData).then(({data}) => {
  1333. this.itemList1 = data.row1;
  1334. this.itemList2 = data.row2;
  1335. })
  1336. this.itemSelections2 = []
  1337. } else {
  1338. this.$alert(data.msg, '错误', {
  1339. confirmButtonText: '确定'
  1340. })
  1341. }
  1342. })
  1343. },
  1344. refreshDetailList() {
  1345. searchModalDetails(this.detailData).then(({data}) => {
  1346. this.detailList = data.rows
  1347. })
  1348. },
  1349. goUp(row) {
  1350. goUpItem(row).then(({data}) => {
  1351. if (data && data.code === 0) {
  1352. searchModalDetails(this.detailData).then(({data}) => {
  1353. this.detailList = data.rows
  1354. })
  1355. }
  1356. })
  1357. },
  1358. goDown(row) {
  1359. goDownItem(row).then(({data}) => {
  1360. if (data && data.code === 0) {
  1361. searchModalDetails(this.detailData).then(({data}) => {
  1362. this.detailList = data.rows
  1363. })
  1364. }
  1365. })
  1366. },
  1367. BUBtnDialog(row) {
  1368. this.modalData = row
  1369. searchBUPropertiesList(row).then(({data}) => {
  1370. if (data && data.code === 0) {
  1371. this.selectionBU = data.row.map(item => item.buNo);
  1372. this.BUDialog = true
  1373. } else {
  1374. this.$message.warning(data.msg)
  1375. }
  1376. }).catch((error) => {
  1377. this.$message.error(error)
  1378. })
  1379. },
  1380. savePropertiesBU() {
  1381. // if (this.selectionBU.length === 0) {
  1382. // this.$message.warning("未选择BU")
  1383. // return
  1384. // }
  1385. let arr = this.selectionBU.map(item => {
  1386. return {
  1387. site: this.$store.state.user.site,
  1388. buNo: item,
  1389. functionType: this.modalData.functionType,
  1390. codeNo: this.modalData.codeNo
  1391. }
  1392. });
  1393. if (arr.length === 0){
  1394. arr[0] = {
  1395. site: this.$store.state.user.site,
  1396. functionType: this.modalData.functionType,
  1397. codeNo: this.modalData.codeNo
  1398. }
  1399. }
  1400. saveBUPropertiesList(arr).then(({data}) => {
  1401. if (data && data.code === 0) {
  1402. this.$message.success(data.msg)
  1403. this.getDataList()
  1404. this.BUDialog = false
  1405. } else {
  1406. this.$message.warning(data.msg)
  1407. }
  1408. }).catch((error) => {
  1409. this.$message.error(error)
  1410. })
  1411. },
  1412. }
  1413. }
  1414. </script>
  1415. <style scoped>
  1416. .rq /deep/ .el-transfer-panel {
  1417. }
  1418. .rq /deep/ .el-transfer-panel .el-transfer-panel__header {
  1419. height: 35px;
  1420. line-height: 35px;
  1421. }
  1422. .rq /deep/ .el-transfer-panel .el-transfer-panel__header .el-checkbox {
  1423. line-height: 35px;
  1424. }
  1425. .rq /deep/ .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label {
  1426. color: #fff
  1427. }
  1428. .rq /deep/ .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span {
  1429. color: #3c3c3e;
  1430. }
  1431. .rq /deep/ .el-transfer-panel .el-checkbox__inner::after {
  1432. height: 8px;
  1433. width: 4px;
  1434. }
  1435. </style>