InsuranceAgreementForm.vue 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. <template>
  2. <div>
  3. <zj-form-container ref="formRef" :formData="formData" :formRules="formRules">
  4. <zj-form-module title="保险基础信息" label-width="120px" :formData="formData" :formItems="formItems" :column="3">
  5. </zj-form-module>
  6. <zj-form-module title="网点信息" label-width="0px" :formData="formData" :formItems="items2"> </zj-form-module>
  7. </zj-form-container>
  8. <div v-if="type === 0 || type === 1">
  9. <el-button size="mini" @click="submit">提交</el-button>
  10. <el-button size="mini" @click="reset">重置</el-button>
  11. </div>
  12. </div>
  13. </template>
  14. <script>
  15. import { insureAgreeDetail, insureAgreeAdd, insureAgreeUpdate } from '@/api/InsuranceManagement.js'
  16. import pagingTransfer from '@/components/paging-transfer.vue'
  17. import { EventBus } from '@/utils/eventBus'
  18. import { required } from '@/components/template/rules_verify.js'
  19. import { insureList } from '@/api/InsuranceManagement.js'
  20. export default {
  21. props: {
  22. type: {
  23. type: Number,
  24. default: null
  25. },
  26. item: {
  27. type: Object,
  28. default: null
  29. }
  30. },
  31. data() {
  32. return {
  33. disabled: this.type === 2,
  34. // 表单数据
  35. formData: {
  36. context: '',
  37. agreementType: '',
  38. agreementName: '',
  39. status: 'ON',
  40. policy: []
  41. },
  42. formRules: {
  43. context: [{ required: true, message: '请输入', trigger: 'blur' }],
  44. agreementType: [{ required: true, message: '请输入', trigger: 'blur' }],
  45. agreementName: [{ required: true, message: '请输入', trigger: 'blur' }],
  46. status: [{ required: true, message: '请输入', trigger: 'blur' }]
  47. },
  48. formInline: {
  49. policyName: '',
  50. policyNumber: '',
  51. startTime: '',
  52. endTime: ''
  53. },
  54. itemsList: []
  55. }
  56. },
  57. computed: {
  58. formItems() {
  59. return [
  60. {
  61. name: 'el-radio',
  62. options: [
  63. { label: '投保须知', value: '投保须知' },
  64. { label: '保险合同说明', value: '保险合同说明' }
  65. ],
  66. events: {
  67. change: val => {
  68. this.formData.context = ''
  69. }
  70. },
  71. md: 12,
  72. attributes: { disabled: this.type !== 0 },
  73. formItemAttributes: { label: '协议类型', prop: 'agreementType' }
  74. },
  75. {
  76. name: 'el-radio',
  77. options: [
  78. { label: '启用', value: 'ON' },
  79. { label: '禁用', value: 'OFF' }
  80. ],
  81. md: 12,
  82. attributes: { disabled: this.disabled },
  83. formItemAttributes: { label: '状态', prop: 'status' }
  84. },
  85. {
  86. name: 'el-input',
  87. md: 24,
  88. attributes: { disabled: this.disabled },
  89. formItemAttributes: { label: '协议名称', prop: 'agreementName' }
  90. },
  91. {
  92. name: 'slot-component',
  93. md: 24,
  94. attributes: { disabled: this.disabled },
  95. formItemAttributes: { label: '协议内容', prop: 'context' },
  96. render: (h, { props }) => {
  97. var { formData } = props
  98. return (
  99. <v-quill-editor
  100. disabled={this.disabled}
  101. value={formData.context}
  102. onInput={val => {
  103. formData.context = val
  104. }}
  105. ></v-quill-editor>
  106. )
  107. }
  108. }
  109. ]
  110. },
  111. items2() {
  112. return [
  113. {
  114. name: 'slot-component',
  115. md: 24,
  116. attributes: {},
  117. formItemAttributes: { label: '', 'label-width': '0px', prop: 'policy', rules: [...required] },
  118. render: (h, { props, onInput }) => {
  119. var { formData } = props
  120. return (
  121. <div>
  122. <div>
  123. <el-form
  124. size="mini"
  125. inline={true}
  126. value={this.formInline}
  127. onInput={v => {
  128. this.formInline = v
  129. }}
  130. label-width="0px"
  131. >
  132. <el-form-item label="">
  133. <el-input
  134. value={this.formInline.policyName}
  135. onInput={v => {
  136. this.formInline.policyName = v
  137. }}
  138. placeholder="保单名称"
  139. ></el-input>
  140. </el-form-item>
  141. <el-form-item label="">
  142. <el-input
  143. value={this.formInline.policyNumber}
  144. onInput={v => {
  145. this.formInline.policyNumber = v
  146. }}
  147. placeholder="保单编号"
  148. ></el-input>
  149. </el-form-item>
  150. <el-form-item label="">
  151. <el-date-picker
  152. value={this.formInline.startTime}
  153. onInput={v => {
  154. this.formInline.startTime = v
  155. }}
  156. type="datetime"
  157. placeholder="生效日期"
  158. ></el-date-picker>
  159. </el-form-item>
  160. <el-form-item label="">
  161. <el-date-picker
  162. value={this.formInline.endTime}
  163. onInput={v => {
  164. this.formInline.endTime = v
  165. }}
  166. type="datetime"
  167. placeholder="结束日期"
  168. ></el-date-picker>
  169. </el-form-item>
  170. <el-form-item>
  171. <el-button
  172. type="primary"
  173. onClick={() => {
  174. EventBus.$emit('handlePaginationCallBack33')
  175. }}
  176. >
  177. 查询
  178. </el-button>
  179. <el-button
  180. onClick={() => {
  181. this.formInline.policyName = ''
  182. this.formInline.policyNumber = ''
  183. this.formInline.startTime = ''
  184. this.formInline.endTime = ''
  185. }}
  186. >
  187. 重置
  188. </el-button>
  189. </el-form-item>
  190. </el-form>
  191. </div>
  192. <pagingTransfer
  193. handlePaginationCallBackKey="handlePaginationCallBack33"
  194. value={this.formData.policy}
  195. onInput={v => {
  196. this.formData.policy = v
  197. }}
  198. left-columns={[
  199. { id: 'policyName', label: '保单名称', width: '' },
  200. { id: 'policyNumber', label: '保单编号', width: '' },
  201. { id: 'policyPrice', label: '保单金额', width: '' },
  202. { id: 'startTime', label: '生效时间', width: '' },
  203. { id: 'endTime', label: '结束时间', width: '' }
  204. ]}
  205. right-columns={[
  206. { id: 'policyName', label: '保单名称', width: '' },
  207. { id: 'policyNumber', label: '保单编号', width: '' },
  208. { id: 'policyPrice', label: '保单金额', width: '' },
  209. { id: 'startTime', label: '生效时间', width: '' },
  210. { id: 'endTime', label: '结束时间', width: '' }
  211. ]}
  212. show-pagination={false}
  213. pagination-call-back={this.paginationCallback}
  214. title-texts={['待选项', '已选项']}
  215. min-height="300px"
  216. table-row-key={row => row.websitId}
  217. />
  218. </div>
  219. )
  220. }
  221. }
  222. ]
  223. }
  224. },
  225. created() {
  226. // 获取详情
  227. if (this.type !== 0) {
  228. insureAgreeDetail({
  229. id: this.item.id
  230. }).then(res => {
  231. for (var key in res.data) {
  232. this.formData[key] = res.data[key]
  233. }
  234. })
  235. }
  236. },
  237. methods: {
  238. paginationCallback({ pageIndex, pageSize }) {
  239. return new Promise(resolve => {
  240. var params = []
  241. if (this.formInline.policyName) {
  242. params.push({
  243. param: 'policy_name',
  244. compare: 'like',
  245. value: this.formInline.policyName
  246. })
  247. }
  248. if (this.formInline.policyNumber) {
  249. params.push({
  250. param: 'policy_number',
  251. compare: 'like',
  252. value: this.formInline.policyNumber
  253. })
  254. }
  255. if (this.formInline.startTime) {
  256. params.push({
  257. param: 'start_time',
  258. compare: 'like',
  259. value: this.formInline.startTime
  260. })
  261. }
  262. if (this.formInline.endTime) {
  263. params.push({
  264. param: 'end_time',
  265. compare: 'like',
  266. value: this.formInline.endTime
  267. })
  268. }
  269. insureList({ pageNum: 1, pageSize: -1, params: params }).then(res => {
  270. resolve({
  271. total: res.data.total,
  272. data: res.data.records
  273. })
  274. })
  275. })
  276. },
  277. submit() {
  278. this.$refs['formRef'].validate(valid => {
  279. if (valid) {
  280. ;(this.form.id ? insureAgreeUpdate : insureAgreeAdd)({
  281. ...this.formData
  282. }).then(res => {
  283. this.$message({
  284. type: 'success',
  285. message: `保存成功!`
  286. })
  287. this.$emit('success')
  288. })
  289. } else {
  290. console.log('error submit!!')
  291. return false
  292. }
  293. })
  294. },
  295. reset() {
  296. Object.assign(this.$data, this.$options.data())
  297. }
  298. }
  299. }
  300. </script>
  301. <style lang="scss" scoped></style>