ParameterModal.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <template>
  2. <a-modal
  3. :title="modalTitle"
  4. :width="1200"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. class="ant-modal2"
  8. @cancel="handleCancel"
  9. >
  10. <a-form :form='form'>
  11. <row-list :col='2'>
  12. <row-item>
  13. <a-form-item
  14. label='条件名称'
  15. :labelCol='BaseTool.Constant.labelCol'
  16. :wrapperCol='BaseTool.Constant.wrapperCol'
  17. >
  18. <a-input
  19. v-decorator="['label', {rules: [{required: true, message: '字段名称不能为空'}]}]" />
  20. </a-form-item>
  21. </row-item>
  22. <row-item>
  23. <a-form-item
  24. label='对应数据库字段名称'
  25. :labelCol='BaseTool.Constant.labelCol'
  26. :wrapperCol='BaseTool.Constant.wrapperCol'
  27. >
  28. <a-input
  29. v-decorator="['key', {rules: [{required: true, message: '字段名称不能为空'}]}]" />
  30. </a-form-item>
  31. </row-item>
  32. <row-item>
  33. <a-form-item
  34. label='字段类型'
  35. :labelCol='BaseTool.Constant.labelCol'
  36. :wrapperCol='BaseTool.Constant.wrapperCol'
  37. >
  38. <a-select
  39. @change="selectVal()"
  40. v-decorator="['type', { initValue: 1, rules: [{required: true, message: '字段类型为空'}]}]"
  41. placeholder="请选择">
  42. <a-select-option
  43. v-for="(label,value) in parameterTypeMap"
  44. :key="value"
  45. :label="label"
  46. :value="value">{{ label }}
  47. </a-select-option>
  48. </a-select>
  49. </a-form-item>
  50. </row-item>
  51. <row-item>
  52. <a-form-item
  53. label='字段值'
  54. :labelCol='BaseTool.Constant.labelCol'
  55. :wrapperCol='BaseTool.Constant.wrapperCol'
  56. >
  57. <a-textarea placeholder='select类型的值,请以英文,号隔开'
  58. v-decorator="['value']" />
  59. </a-form-item>
  60. </row-item>
  61. </row-list>
  62. </a-form>
  63. <template slot="footer">
  64. <a-button :loading="confirmLoading" type="primary" @click="handleCancel()">取消</a-button>
  65. <a-button :loading="confirmLoading" type="primary" @click="handleSelect()">确定</a-button>
  66. </template>
  67. </a-modal>
  68. </template>
  69. <script>
  70. import { STable, Ellipsis } from '@/components'
  71. import Detail from './Detail'
  72. export default {
  73. name: 'ParameterModal',
  74. components: {
  75. STable,
  76. Ellipsis,
  77. Detail
  78. },
  79. props: {
  80. type: {
  81. type: String,
  82. default: 'radio'
  83. },
  84. selectedRowKey: {
  85. type: Array,
  86. default: () => {
  87. return []
  88. }
  89. },
  90. selectedRow: {
  91. type: Array,
  92. default: () => {
  93. return []
  94. }
  95. }
  96. },
  97. data () {
  98. return {
  99. confirmLoading: false,
  100. mdl: {},
  101. modalTitle: null,
  102. visible: false,
  103. record: null,
  104. form: this.$form.createForm(this),
  105. // 查询参数
  106. queryParam: {
  107. },
  108. extraQueryParam: {
  109. },
  110. projectStartTimeStart: undefined,
  111. projectStartTimeEnd: undefined,
  112. // 下拉框map
  113. selectedRowKeys: [],
  114. selectedRows: [],
  115. parameterTypeMap: [],
  116. options: {
  117. alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
  118. rowSelection: {
  119. selectedRowKeys: this.selectedRowKeys,
  120. onChange: this.onSelectChange
  121. }
  122. },
  123. optionAlertShow: false,
  124. isCreated: false
  125. }
  126. },
  127. created () {
  128. // 下拉框map
  129. this.parameterTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PARAMETER_TYPE)
  130. },
  131. methods: {
  132. selectVal (val) {
  133. this.form.setFieldsValue({
  134. 'value': ''
  135. })
  136. },
  137. handleOk () {
  138. this.$refs.table.refresh()
  139. },
  140. onSelectChange (selectedRowKeys, selectedRows) {
  141. this.selectedRowKeys = selectedRowKeys
  142. this.selectedRows = selectedRows
  143. },
  144. resetSearchForm () {
  145. this.queryParam = {
  146. }
  147. this.$refs.table.refresh(true)
  148. },
  149. base (record) {
  150. this.visible = true
  151. this.modalTitle = '新增查询条件'
  152. this.form.resetFields()
  153. },
  154. handleCancel () {
  155. this.visible = false
  156. this.confirmLoading = false
  157. },
  158. handleSelect () {
  159. const { form: { validateFieldsAndScroll } } = this
  160. this.confirmLoading = true
  161. validateFieldsAndScroll((errors, values) => {
  162. if (errors) {
  163. return
  164. }
  165. console.log(values)
  166. this.$emit('selected', values)
  167. this.confirmLoading = false
  168. this.visible = false
  169. })
  170. },
  171. mySelect (selectedRowKeys, selectedRows) {
  172. if (this.type === 'radio') {
  173. this.$refs.table.updateSelect(selectedRowKeys, selectedRows)
  174. this.$refs.table.rowSelection.onChange(selectedRowKeys, selectedRows)
  175. } else {
  176. let mySelectedRowKeys
  177. let mySelectedRows = this.selectedRows.filter(item => item.id !== selectedRowKeys[0])
  178. if (this.selectedRowKeys.includes(selectedRowKeys[0])) {
  179. mySelectedRowKeys = this.selectedRowKeys.filter(item => item !== selectedRowKeys[0])
  180. } else {
  181. mySelectedRowKeys = [...selectedRowKeys, ...this.selectedRowKeys]
  182. mySelectedRows = [...mySelectedRows, ...selectedRows]
  183. }
  184. this.$refs.table.updateSelect(mySelectedRowKeys, mySelectedRows)
  185. this.$refs.table.rowSelection.onChange(mySelectedRowKeys, mySelectedRows)
  186. }
  187. }
  188. }
  189. }
  190. </script>