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.

802 lines
26 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. <script>
  2. import {queryPropertyTemplateType} from "../../../api/property/template";
  3. import {
  4. queryPropertyItemByPage,
  5. removePropertyItem,
  6. savePropertyItem,
  7. updatePropertyItem
  8. } from "../../../api/property/propertyItem";
  9. import BuSelect from "../../../components/selector/select/BuSelect.vue";
  10. import {getSiteAndBuByUserName} from "../../../api/eam/eam";
  11. import {
  12. queryPropertyItemAvailable, removePropertyItemAvailable,
  13. savePropertyItemAvailable,
  14. updatePropertyItemAvailable
  15. } from "../../../api/property/propertyItemAvailable";
  16. export default {
  17. name: "available",
  18. components: {BuSelect},
  19. data(){
  20. return{
  21. no:1,
  22. size:20,
  23. total:0,
  24. menuId:180003,
  25. dataList: [],
  26. queryLoading: false,
  27. templateItem:{
  28. id:null,
  29. itemNo:'',
  30. itemDesc:'',
  31. itemType:'',
  32. buId:null,
  33. valueType:'',
  34. valueTypeDb:'',
  35. defaultValue:'',
  36. maxValue:undefined,
  37. minValue:undefined,
  38. valueChooseFlag:'',
  39. },
  40. dataTypeList: [],
  41. queryForm: {
  42. },
  43. columns: [
  44. {
  45. userId: this.$store.state.user.name,
  46. functionId: 180003,
  47. serialNumber: '180003TableBuDesc',
  48. tableId: "180003Table",
  49. tableName: "属性表",
  50. columnProp: 'buDesc',
  51. headerAlign: "center",
  52. align: "center",
  53. columnLabel: 'BU',
  54. columnHidden: false,
  55. columnImage: false,
  56. columnSortable: false,
  57. columnWidth: 80,
  58. sortLv: 0,
  59. status: true,
  60. fixed: '',
  61. },{
  62. userId: this.$store.state.user.name,
  63. functionId: 180003,
  64. serialNumber: '180003TableItemTypeDesc',
  65. tableId: "180003Table",
  66. tableName: "属性表",
  67. columnProp: 'itemTypeDesc',
  68. headerAlign: "center",
  69. align: "center",
  70. columnLabel: '属性类型',
  71. columnHidden: false,
  72. columnImage: false,
  73. columnSortable: false,
  74. columnWidth: 120,
  75. sortLv: 0,
  76. status: true,
  77. fixed: '',
  78. },
  79. {
  80. userId: this.$store.state.user.name,
  81. functionId: 180003,
  82. serialNumber: '180003TableValueType',
  83. tableId: "180003Table",
  84. tableName: "属性表",
  85. columnProp: 'itemNo',
  86. headerAlign: "center",
  87. align: "left",
  88. columnLabel: '属性编码',
  89. columnHidden: false,
  90. columnImage: false,
  91. columnSortable: false,
  92. columnWidth: 100,
  93. sortLv: 0,
  94. status: true,
  95. fixed: '',
  96. },
  97. {
  98. userId: this.$store.state.user.name,
  99. functionId: 180003,
  100. serialNumber: '180003TableValueType',
  101. tableId: "180003Table",
  102. tableName: "属性表",
  103. columnProp: 'itemDesc',
  104. headerAlign: "center",
  105. align: "left",
  106. columnLabel: '属性名称',
  107. columnHidden: false,
  108. columnImage: false,
  109. columnSortable: false,
  110. columnWidth: 120,
  111. sortLv: 0,
  112. status: true,
  113. fixed: '',
  114. },
  115. {
  116. userId: this.$store.state.user.name,
  117. functionId: 180003,
  118. serialNumber: '180003TableValueType',
  119. tableId: "180003Table",
  120. tableName: "属性表",
  121. columnProp: 'valueType',
  122. headerAlign: "center",
  123. align: "center",
  124. columnLabel: '值类型',
  125. columnHidden: false,
  126. columnImage: false,
  127. columnSortable: false,
  128. columnWidth: 80,
  129. sortLv: 0,
  130. status: true,
  131. fixed: '',
  132. },
  133. {
  134. userId: this.$store.state.user.name,
  135. functionId: 180003,
  136. serialNumber: '180003TableDefaultValue',
  137. tableId: "180003Table",
  138. tableName: "属性表",
  139. columnProp: 'defaultValue',
  140. headerAlign: "center",
  141. align: "right",
  142. columnLabel: '参照值',
  143. columnHidden: false,
  144. columnImage: false,
  145. columnSortable: false,
  146. columnWidth: 80,
  147. sortLv: 0,
  148. status: true,
  149. fixed: '',
  150. },
  151. {
  152. userId: this.$store.state.user.name,
  153. functionId: 180003,
  154. serialNumber: '180003TableMaxValue',
  155. tableId: "180003Table",
  156. tableName: "属性表",
  157. columnProp: 'maxValue',
  158. headerAlign: "center",
  159. align: "right",
  160. columnLabel: '最大值',
  161. columnHidden: false,
  162. columnImage: false,
  163. columnSortable: false,
  164. columnWidth: 80,
  165. sortLv: 0,
  166. status: true,
  167. fixed: '',
  168. },
  169. {
  170. userId: this.$store.state.user.name,
  171. functionId: 180003,
  172. serialNumber: '180003TableMinValue',
  173. tableId: "180003Table",
  174. tableName: "属性表",
  175. columnProp: 'minValue',
  176. headerAlign: "center",
  177. align: "right",
  178. columnLabel: '最小值',
  179. columnHidden: false,
  180. columnImage: false,
  181. columnSortable: false,
  182. columnWidth: 80,
  183. sortLv: 0,
  184. status: true,
  185. fixed: '',
  186. },
  187. {
  188. userId: this.$store.state.user.name,
  189. functionId: 180003,
  190. serialNumber: '180003TableValueChooseFlag',
  191. tableId: "180003Table",
  192. tableName: "属性表",
  193. columnProp: 'valueChooseFlag',
  194. headerAlign: "center",
  195. align: "center",
  196. columnLabel: '是否值可选',
  197. columnHidden: false,
  198. columnImage: false,
  199. columnSortable: false,
  200. columnWidth: 80,
  201. sortLv: 0,
  202. status: true,
  203. fixed: '',
  204. },
  205. {
  206. userId: this.$store.state.user.name,
  207. functionId: 180003,
  208. serialNumber: '180003TableCreateDate',
  209. tableId: '180003Table',
  210. tableName: '属性表',
  211. columnProp: 'createDate',
  212. headerAlign: 'center',
  213. align: 'center',
  214. columnLabel: '创建时间',
  215. columnHidden: false,
  216. columnImage: false,
  217. columnSortable: false,
  218. columnWidth: 100,
  219. sortLv: 0,
  220. status: true,
  221. fixed: '',
  222. },
  223. {
  224. userId: this.$store.state.user.name,
  225. functionId: 180003,
  226. serialNumber: '180003TableCreateBy',
  227. tableId: "180003Table",
  228. tableName: "属性表",
  229. columnProp: 'createBy',
  230. headerAlign: "center",
  231. align: "center",
  232. columnLabel: '创建人',
  233. columnHidden: false,
  234. columnImage: false,
  235. columnSortable: false,
  236. columnWidth: 80,
  237. sortLv: 0,
  238. status: true,
  239. fixed: '',
  240. },
  241. {
  242. userId: this.$store.state.user.name,
  243. functionId: 180003,
  244. serialNumber: '180003TableUpdateDate',
  245. tableId: "180003Table",
  246. tableName: "属性表",
  247. columnProp: 'updateDate',
  248. headerAlign: "center",
  249. align: "center",
  250. columnLabel: '更新时间',
  251. columnHidden: false,
  252. columnImage: false,
  253. columnSortable: false,
  254. columnWidth: 100,
  255. sortLv: 0,
  256. status: true,
  257. fixed: '',
  258. },
  259. {
  260. userId: this.$store.state.user.name,
  261. functionId: 180003,
  262. serialNumber: '180003TableUpdateBy',
  263. tableId: "180003Table",
  264. tableName: "属性表",
  265. columnProp: 'updateBy',
  266. headerAlign: "center",
  267. align: "center",
  268. columnLabel: '更新人',
  269. columnHidden: false,
  270. columnImage: false,
  271. columnSortable: false,
  272. columnWidth: 80,
  273. sortLv: 0,
  274. status: true,
  275. fixed: '',
  276. },
  277. ],
  278. saveVisible:false,
  279. saveLoading:false,
  280. saveForm:{
  281. },
  282. rules:{
  283. buId: [
  284. { required: true, message: '请选择BU', trigger: 'change' }
  285. ],
  286. itemNo: [
  287. { required: true, message: '请输入属性编码', trigger: 'blur' }
  288. ],
  289. itemDesc: [
  290. { required: true, message: '请输入属性描述', trigger: 'blur' }
  291. ],
  292. itemType: [
  293. { required: true, message: '请选择属性类型', trigger: 'change' }
  294. ],
  295. valueType: [
  296. { required: true, message: '请选择值类型', trigger: 'change' }
  297. ],
  298. },
  299. availableVisible:false,
  300. availableLoading:false,
  301. availableForm:{
  302. },
  303. availableList:[],
  304. availableValueVisible:false,
  305. availableValue:{
  306. }
  307. }
  308. },
  309. methods:{
  310. handleQueryPropertyTemplateType(){
  311. let params = {
  312. }
  313. queryPropertyTemplateType(params).then(({data})=>{
  314. if (data && data.code === 0){
  315. this.dataTypeList = data.rows;
  316. }else {
  317. this.$message.warning(data.msg);
  318. }
  319. }).catch((error)=>{
  320. this.$message.error(error);
  321. })
  322. },
  323. handleQueryByPage(){
  324. let params = {
  325. ...this.templateItem,
  326. no:this.no,
  327. size:this.size,
  328. createBy: this.$store.state.user.name,
  329. }
  330. this.queryLoading = true;
  331. queryPropertyItemByPage(params).then(({data})=>{
  332. if (data && data.code === 0){
  333. this.dataList = data.rows;
  334. this.total = data.total;
  335. }else {
  336. this.$message.warning(data.msg);
  337. }
  338. this.queryLoading = false;
  339. }).catch((error)=>{
  340. this.$message.error(error);
  341. this.queryLoading = false;
  342. })
  343. },
  344. handleSizeChange(val){
  345. this.size = val;
  346. this.handleQueryByPage();
  347. },
  348. handlePageChange(val){
  349. this.no = val;
  350. this.handleQueryByPage();
  351. },
  352. handleSave(row){
  353. this.$nextTick(()=>{
  354. if (this.$refs.saveForm){
  355. this.$refs.saveForm.clearValidate();
  356. }
  357. })
  358. if (row){
  359. this.saveForm = {...row}
  360. }else {
  361. this.saveForm = {...this.templateItem}
  362. this.saveForm.valueChooseFlag = 'N';
  363. this.saveForm.valueType = '文本';
  364. this.saveForm.valueTypeDb = 'T';
  365. if (this.queryForm.itemType){
  366. this.saveForm.itemType = this.queryForm.itemType;
  367. }
  368. this.saveForm.buId = this.userBuList.length > 0 ? this.userBuList[0].id : ''
  369. }
  370. this.saveVisible = true;
  371. },
  372. handleSaveOrUpdate(){
  373. this.$refs.saveForm.validate((valid,obj) => {
  374. if (valid){
  375. if (this.saveForm.id){
  376. this.handleUpdateItem();
  377. }else {
  378. this.handleSaveItem();
  379. }
  380. }else {
  381. let i = 1
  382. for (let key in obj) {
  383. if (i === 1){
  384. this.$message.error(obj[key][0].message);
  385. break
  386. }
  387. i++
  388. }
  389. }
  390. })
  391. },
  392. handleSaveItem(){
  393. let params = {
  394. ...this.saveForm,
  395. createBy: this.$store.state.user.name,
  396. }
  397. if (!this.saveForm.minValue){
  398. params.minValue = '';
  399. }
  400. if (!this.saveForm.maxValue){
  401. params.maxValue = '';
  402. }
  403. this.saveLoading = true;
  404. savePropertyItem(params).then(({data})=>{
  405. if (data && data.code === 0){
  406. this.$message.success(data.msg);
  407. this.saveVisible = false;
  408. this.handleQueryByPage();
  409. }else {
  410. this.$message.warning(data.msg);
  411. }
  412. this.saveLoading = false;
  413. }).catch((error)=>{
  414. this.$message.error(error);
  415. this.saveLoading = false;
  416. })
  417. },
  418. handleUpdateItem(){
  419. let params = {
  420. ...this.saveForm,
  421. updateBy: this.$store.state.user.name,
  422. }
  423. if (!this.saveForm.minValue){
  424. params.minValue = '';
  425. }
  426. if (!this.saveForm.maxValue){
  427. params.maxValue = '';
  428. }
  429. this.saveLoading = true;
  430. updatePropertyItem(params).then(({data})=>{
  431. if (data && data.code === 0){
  432. this.$message.success(data.msg);
  433. this.saveVisible = false;
  434. this.handleQueryByPage();
  435. }else {
  436. this.$message.warning(data.msg);
  437. }
  438. this.saveLoading = false;
  439. }).catch((error)=>{
  440. this.$message.error(error);
  441. this.saveLoading = false;
  442. })
  443. },
  444. handleQueryBu(){
  445. let params = {
  446. username: this.$store.state.user.name,
  447. }
  448. getSiteAndBuByUserName(params).then(({data}) => {
  449. if (data && data.code === 0) {
  450. this.userBuList = data.rows
  451. }else {
  452. this.$message.warning(data.message)
  453. }
  454. }).catch((error)=>{
  455. this.$message.error(error)
  456. })
  457. },
  458. handleRemove(row){
  459. this.$alert('确认删除该属性吗?', '提示', {
  460. confirmButtonText: '确定',
  461. cancelButtonText: '取消',
  462. type: 'warning'
  463. }).then(() => {
  464. let params = {
  465. id: row.id,
  466. }
  467. this.saveLoading = true;
  468. removePropertyItem(params).then(({data}) => {
  469. if (data && data.code === 0) {
  470. this.$message.success(data.msg)
  471. this.handleQueryByPage()
  472. } else {
  473. this.$message.warning(data.msg)
  474. }
  475. this.saveLoading = false
  476. }).catch((error) => {
  477. this.$message.error(error)
  478. this.saveLoading = false
  479. })
  480. }).catch(() => {
  481. })
  482. },
  483. handleSaveAvailable(row){
  484. this.availableForm = {...row}
  485. this.availableForm.itemId = this.availableForm.id
  486. this.availableForm.id = null
  487. this.handleQueryPropertyItemAvailable();
  488. this.availableVisible = true;
  489. },
  490. handleSaveAvailableValue(row){
  491. if (row){
  492. this.availableValue = {...row}
  493. }else {
  494. this.availableValue = {
  495. ...this.availableForm,
  496. availableValue:undefined,
  497. }
  498. }
  499. this.availableValueVisible = true;
  500. },
  501. handleQueryPropertyItemAvailable(){
  502. let params = {
  503. itemId: this.availableForm.itemId,
  504. }
  505. queryPropertyItemAvailable(params).then(({data})=>{
  506. if (data && data.code === 0){
  507. this.availableList = data.rows;
  508. }else {
  509. this.$message.warning(data.msg);
  510. }
  511. }).catch((error)=>{
  512. this.$message.error(error);
  513. })
  514. },
  515. handleSaveItemAvailableValue(){
  516. if (this.availableValue.id){
  517. this.availableValue.updateBy = this.$store.state.user.name
  518. updatePropertyItemAvailable(this.availableValue).then(({data})=>{
  519. if (data && data.code === 0){
  520. this.$message.success(data.msg)
  521. this.availableValueVisible = false;
  522. this.handleQueryPropertyItemAvailable();
  523. } else {
  524. this.$message.warning(data.msg)
  525. }
  526. }).catch((error)=>{
  527. this.$message.error(error)
  528. })
  529. }else {
  530. this.availableValue.createBy = this.$store.state.user.name
  531. savePropertyItemAvailable(this.availableValue).then(({data})=>{
  532. if (data && data.code === 0){
  533. this.$message.success(data.msg)
  534. this.availableValueVisible = false;
  535. this.handleQueryPropertyItemAvailable();
  536. } else {
  537. this.$message.warning(data.msg)
  538. }
  539. }).catch((error)=>{
  540. this.$message.error(error)
  541. })
  542. }
  543. },
  544. handleRemoveAvailableValue(row){
  545. this.$confirm('确认删除该可选值吗?', '提示', {}).then(() => {
  546. removePropertyItemAvailable(row).then(({data})=>{
  547. if (data && data.code === 0){
  548. this.$message.success(data.msg)
  549. this.availableValueVisible = false;
  550. this.handleQueryPropertyItemAvailable();
  551. } else {
  552. this.$message.warning(data.msg)
  553. }
  554. }).catch((error)=>{
  555. this.$message.error(error)
  556. })
  557. })
  558. },
  559. changeValueType(val){
  560. this.saveForm.minValue = undefined;
  561. this.saveForm.maxValue = undefined;
  562. }
  563. },
  564. created() {
  565. this.queryForm = {...this.templateItem}
  566. this.handleQueryPropertyTemplateType();
  567. this.handleQueryByPage();
  568. this.handleQueryBu();
  569. },
  570. watch:{
  571. 'saveForm.itemNo'(newVal, oldVal){
  572. this.saveForm.itemNo = newVal.toUpperCase();
  573. },
  574. 'templateItem.itemNo'(newVal, oldVal){
  575. this.templateItem.itemNo = newVal.toUpperCase();
  576. },
  577. 'saveForm.valueType'(newVal, oldVal){
  578. if (newVal === '文本'){
  579. this.saveForm.valueTypeDb = 'T'
  580. }else {
  581. this.saveForm.valueTypeDb = 'N'
  582. }
  583. }
  584. }
  585. }
  586. </script>
  587. <template>
  588. <div>
  589. <div style="width: 1000px">
  590. <el-form :model="templateItem" label-position="top">
  591. <el-row :gutter="10">
  592. <el-col :span="4">
  593. <el-form-item label="属性编码">
  594. <el-input v-model="templateItem.itemNo"></el-input>
  595. </el-form-item>
  596. </el-col>
  597. <el-col :span="4">
  598. <el-form-item label="属性描述">
  599. <el-input v-model="templateItem.itemDesc"></el-input>
  600. </el-form-item>
  601. </el-col>
  602. <el-col :span="4">
  603. <el-form-item label="属性类型">
  604. <el-select v-model="templateItem.itemType" style="width: 100%;">
  605. <el-option label="全部" value=""></el-option>
  606. <el-option :label="item.functionTypeDesc" :value="item.functionType" v-for="item in dataTypeList" :key="item.functionType"></el-option>
  607. </el-select>
  608. </el-form-item>
  609. </el-col>
  610. <el-col :span="4">
  611. <el-form-item label=" ">
  612. <el-button type="primary" @click="handleQueryByPage">查询</el-button>
  613. <el-button type="primary" @click="handleSave(null)">新增</el-button>
  614. </el-form-item>
  615. </el-col>
  616. </el-row>
  617. </el-form>
  618. </div>
  619. <el-table :data="dataList" style="width: 100%" border v-loading="queryLoading" height="80vh">
  620. <el-table-column
  621. v-for="(item,index) in columns" :key="index"
  622. :sortable="item.columnSortable"
  623. :prop="item.columnProp"
  624. :header-align="item.headerAlign"
  625. :show-overflow-tooltip="item.showOverflowTooltip"
  626. :align="item.align"
  627. :fixed="item.fixed==''?false:item.fixed"
  628. :min-width="item.columnWidth"
  629. :label="item.columnLabel">
  630. <template slot-scope="scope">
  631. <span v-if="!item.columnHidden">
  632. <template v-if="item.columnProp==='valueType'">{{ scope.row[item.columnProp]}}</template>
  633. <template v-else-if="item.columnProp==='valueChooseFlag'">{{ scope.row[item.columnProp] === 'Y' ? '是' : '否' }}</template>
  634. <template v-else>{{ scope.row[item.columnProp] }}</template>
  635. </span>
  636. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  637. </template>
  638. </el-table-column>
  639. <el-table-column
  640. fixed="right"
  641. header-align="center"
  642. align="center"
  643. width="160"
  644. label="操作">
  645. <template slot-scope="scope">
  646. <a @click="handleSave(scope.row)">编辑</a>
  647. <a @click="handleRemove(scope.row)">删除</a>
  648. <a v-if="scope.row.valueChooseFlag === 'Y'" @click="handleSaveAvailable(scope.row)">可选值</a>
  649. </template>
  650. </el-table-column>
  651. </el-table>
  652. <el-pagination @size-change="handleSizeChange"
  653. @current-change="handlePageChange"
  654. :current-page="no"
  655. :page-sizes="[20, 50, 100, 200, 500]"
  656. :page-size="size"
  657. :total="total"
  658. layout="total,sizes, prev, pager, next, jumper">
  659. </el-pagination>
  660. <el-dialog title="属性信息" :close-on-click-modal="false" v-drag :visible.sync="saveVisible" width="500px">
  661. <el-form :model="saveForm" ref="saveForm" :rules="rules" label-position="top" label-width="100px">
  662. <el-row :gutter="10">
  663. <el-col :span="16">
  664. <el-form-item label="BU" prop="buId" :show-message="false">
  665. <bu-select v-model="saveForm.buId" :disabled="saveForm.id > 0"></bu-select>
  666. </el-form-item>
  667. </el-col>
  668. <el-col :span="10">
  669. <el-form-item label="属性编码" prop="itemNo" :show-message="false">
  670. <el-input v-model="saveForm.itemNo" :disabled="saveForm.id"></el-input>
  671. </el-form-item>
  672. </el-col>
  673. <el-col :span="14">
  674. <el-form-item label="属性描述" prop="itemDesc" :show-message="false">
  675. <el-input v-model="saveForm.itemDesc"></el-input>
  676. </el-form-item>
  677. </el-col>
  678. <el-col :span="10">
  679. <el-form-item label="值类型" prop="valueType" :show-message="false">
  680. <el-select v-model="saveForm.valueType" style="width: 100%;" @change="changeValueType">
  681. <el-option label="文本" value="文本"></el-option>
  682. <el-option label="数字" value="数字"></el-option>
  683. </el-select>
  684. </el-form-item>
  685. </el-col>
  686. <el-col :span="14">
  687. <el-form-item label="参照值" prop="defaultValue" :show-message="false">
  688. <el-input v-model="saveForm.defaultValue"></el-input>
  689. </el-form-item>
  690. </el-col>
  691. <el-col :span="10" v-if="saveForm.valueType !== 'text'">
  692. <el-form-item label="最大值" prop="maxValue" :show-message="false">
  693. <el-input-number style="width: 100%;" :controls="false" :step="0" v-model="saveForm.maxValue"></el-input-number>
  694. </el-form-item>
  695. </el-col>
  696. <el-col :span="10" v-else>
  697. <el-form-item label="最大值" prop="maxValue" :show-message="false">
  698. <el-input v-model="saveForm.maxValue"></el-input>
  699. </el-form-item>
  700. </el-col>
  701. <el-col :span="10" v-if="saveForm.valueType !== 'text'">
  702. <el-form-item label="最小值" prop="minValue" :show-message="false">
  703. <el-input-number style="width: 100%;" :controls="false" :step="0" :disabled="saveForm.valueType === 'text'" v-model="saveForm.minValue"></el-input-number>
  704. </el-form-item>
  705. </el-col>
  706. <el-col :span="10" v-else>
  707. <el-form-item label="最小值" prop="minValue" :show-message="false">
  708. <el-input v-model="saveForm.minValue"></el-input>
  709. </el-form-item>
  710. </el-col>
  711. <el-col :span="10">
  712. <el-form-item label="属性类型" prop="itemType" :show-message="false">
  713. <el-select v-model="saveForm.itemType" style="width: 100%;">
  714. <el-option :label="item.functionTypeDesc" :value="item.functionType" v-for="item in dataTypeList" :key="item.functionType"></el-option>
  715. </el-select>
  716. </el-form-item>
  717. </el-col>
  718. <el-col :span="10">
  719. <el-form-item label=" " prop="valueChooseFlag" :show-message="false">
  720. <el-checkbox v-model="saveForm.valueChooseFlag" :true-label="'Y'" :false-label="'N'">是否值可选</el-checkbox>
  721. </el-form-item>
  722. </el-col>
  723. </el-row>
  724. </el-form>
  725. <div slot="footer" class="dialog-footer">
  726. <el-button type="primary" :loading="saveLoading" @click="handleSaveOrUpdate"> </el-button>
  727. <el-button @click="saveVisible = false"> </el-button>
  728. </div>
  729. </el-dialog>
  730. <el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="availableVisible" width="500px">
  731. <el-form :model="availableForm" label-position="top" >
  732. <el-row :gutter="10">
  733. <el-col :span="8">
  734. <el-form-item label="属性编码" prop="itemNo" :show-message="false">
  735. <el-input v-model="availableForm.itemNo" disabled></el-input>
  736. </el-form-item>
  737. </el-col>
  738. <el-col :span="10">
  739. <el-form-item label="属性描述" prop="itemDesc" :show-message="false">
  740. <el-input v-model="availableForm.itemDesc" disabled></el-input>
  741. </el-form-item>
  742. </el-col>
  743. <el-col :span="6">
  744. <el-form-item label=" " >
  745. <el-button type="primary" @click="handleSaveAvailableValue(null)">新增</el-button>
  746. </el-form-item>
  747. </el-col>
  748. </el-row>
  749. </el-form>
  750. <el-table :data="availableList" border style="width: 100%" :height="300">
  751. <el-table-column
  752. prop="availableValue"
  753. header-align="center"
  754. align="left"
  755. min-width="200"
  756. label="属性值">
  757. </el-table-column>
  758. <el-table-column
  759. prop=""
  760. header-align="center"
  761. align="center"
  762. min-width="100"
  763. label="操作">
  764. <template slot-scope="scope">
  765. <a @click="handleSaveAvailableValue(scope.row)">修改</a>
  766. <a @click="handleRemoveAvailableValue(scope.row)">删除</a>
  767. </template>
  768. </el-table-column>
  769. </el-table>
  770. </el-dialog>
  771. <el-dialog title="可选值信息" :close-on-click-modal="false" v-drag :visible.sync="availableValueVisible" width="300px">
  772. <el-form :model="availableValue" label-position="top">
  773. <el-form-item label="可选值" required>
  774. <el-input v-model="availableValue.availableValue" v-if="availableForm.valueTypeDb === 'T'"></el-input>
  775. <el-input-number style="width: 100%;" :controls="false" :step="0" v-model="availableValue.availableValue" v-if="availableForm.valueTypeDb === 'N'"></el-input-number>
  776. </el-form-item>
  777. </el-form>
  778. <div slot="footer" class="dialog-footer">
  779. <el-button type="primary" :loading="saveLoading" @click="handleSaveItemAvailableValue"> </el-button>
  780. <el-button @click="availableValueVisible = false"> </el-button>
  781. </div>
  782. </el-dialog>
  783. </div>
  784. </template>
  785. <style scoped>
  786. .el-table /deep/ .cell{
  787. height: auto;
  788. line-height: 1.5;
  789. }
  790. </style>