form3.txt 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <template>
  2. <view class="edit-wrap">
  3. <view class="edit-form">
  4. <up-form labelPosition="left" :model="form" labelWidth="90px" :rules="rules" ref="uFormRef">
  5. $foreach(column in genTable.Columns)
  6. $set(columnName = column.CsharpFieldFl)
  7. $set(value = "item.value")
  8. $set(number = "")
  9. $set(labelName = column.ColumnComment)
  10. $if(column.CsharpType == "int" || column.CsharpType == "long")
  11. $set(value = "parseInt(item.value)")
  12. $set(number = ".number")
  13. $end
  14. $if(column.IsPK || column.IsIncrement)
  15. $if(column.IsPK && column.IsIncrement == false && replaceDto.useSnowflakeId == false)
  16. <up-form-item label="${labelName}" prop="${columnName}">
  17. <up-input type="number" v-model.number="form.${columnName}" placeholder="请输入${labelName}" :disabled="opertype != 1"></up-input>
  18. </up-form-item>
  19. $else
  20. <up-form-item label="${labelName}" prop="${columnName}" v-if="opertype != 1">
  21. <up-input type="number" v-model.number="form.${columnName}" placeholder="请输入${labelName}" :disabled="true"/>
  22. </up-form-item>
  23. $end
  24. $else
  25. $if(column.HtmlType == "radio" || column.HtmlType == "selectRadio")
  26. <up-form-item label="${labelName}" prop="${columnName}">
  27. <u-radio-group v-model="form.${columnName}">
  28. <u-radio v-for="item in ${if(column.DictType != "")}options.${column.DictType}${else}${column.CsharpFieldFl}Options$end" :name="${value}" class="margin-right-xl" :label="item.label"></u-radio>
  29. </u-radio-group>
  30. </up-form-item>
  31. $elseif(column.HtmlType == "checkbox")
  32. <up-form-item label="${labelName}" prop="${columnName}">
  33. <view class="">
  34. <u-checkbox-group v-model="form.${columnName}Checked">
  35. <u-checkbox :customStyle="{marginRight: '20px', marginBottom: '15px'}" v-for="(item, index) in ${if(column.DictType != "")}options.${column.DictType}${else}${column.CsharpFieldFl}Options$end" :key="index"
  36. :label="item.label" :name="${value}">
  37. </u-checkbox>
  38. </u-checkbox-group>
  39. </view>
  40. </up-form-item>
  41. $elseif(column.HtmlType == "inputNumber" || column.HtmlType == "customInput")
  42. <up-form-item label="${labelName}" prop="${columnName}">
  43. <u-number-box v-model="form.${columnName}"></u-number-box>
  44. </up-form-item>
  45. $elseif(column.HtmlType == "datetime" || column.HtmlType == "month")
  46. <up-form-item label="${labelName}" prop="${columnName}">
  47. <uni-datetime-picker v-model="form.${columnName}" />
  48. </up-form-item>
  49. $elseif(column.HtmlType == "textarea")
  50. <up-form-item label="${labelName}" prop="${columnName}">
  51. <u--textarea v-model="form.${columnName}" placeholder="请输入内容" count ></u--textarea>
  52. </up-form-item>
  53. $elseif(column.HtmlType == "imageUpload" || column.HtmlType == "fileUpload")
  54. <up-form-item label="${labelName}" prop="${columnName}">
  55. <uploadImage v-model="form.${columnName}"></uploadImage>
  56. </up-form-item>
  57. $elseif(column.HtmlType == "select" || column.HtmlType == "selectMulti")
  58. <up-form-item label="${labelName}" prop="${columnName}">
  59. <u-radio-group v-model="form.${columnName}">
  60. <u-radio v-for="item in ${if(column.DictType != "")}options.${column.DictType}${else}${column.CsharpFieldFl}Options$end" :name="${value}" class="margin-right-xl" :label="item.label"></u-radio>
  61. </u-radio-group>
  62. </up-form-item>
  63. $else
  64. <up-form-item label="${labelName}" prop="${columnName}">
  65. <up-input v-model${number}="form.${columnName}" placeholder="请输入${labelName}" ${column.DisabledStr}/>
  66. </up-form-item>
  67. $end
  68. $end
  69. $end
  70. </up-form>
  71. </view>
  72. <view class="form-footer">
  73. <view class="btn_wrap">
  74. <view class="btn-item">
  75. <u-button text="取消" shape="circle" type="info" @click="handleCancel"></u-button>
  76. </view>
  77. <view class="btn-item" v-if="props.opertype != 3">
  78. <u-button text="确定" shape="circle" type="primary" @click="submit"></u-button>
  79. </view>
  80. </view>
  81. </view>
  82. </view>
  83. </template>
  84. <script setup>
  85. import {
  86. get${genTable.BusinessName},
  87. $if(replaceDto.ShowBtnAdd)
  88. add${genTable.BusinessName},
  89. $end
  90. $if(replaceDto.ShowBtnEdit)
  91. update${genTable.BusinessName},
  92. $end
  93. } from '@/api/${tool.FirstLowerCase(genTable.ModuleName)}/${genTable.BusinessName.ToLower()}.js'
  94. import {
  95. getCurrentInstance,
  96. reactive,
  97. ref,
  98. toRefs
  99. } from 'vue';
  100. const {
  101. proxy
  102. } = getCurrentInstance()
  103. $set(index = 0)
  104. var dictParams = [
  105. $foreach(item in dicts)
  106. $if(item.DictType != "")
  107. '${item.DictType}',
  108. $set(index = index + 1)
  109. $end
  110. $end
  111. ]
  112. $if(index > 0)
  113. proxy.getDicts(dictParams).then((response) => {
  114. response.data.forEach((element) => {
  115. state.options[element.dictType] = element.list
  116. })
  117. })
  118. $end
  119. const state = reactive({
  120. form: {
  121. $foreach(item in genTable.Columns)
  122. $if(item.HtmlType == "checkbox")
  123. ${item.CsharpFieldFl}Checked: [],
  124. $else
  125. $item.CsharpFieldFl: undefined,
  126. $end
  127. $end
  128. },
  129. rules: {
  130. $foreach(column in genTable.Columns)
  131. $if(column.IsRequired && column.IsIncrement == false)
  132. ${column.CsharpFieldFl}: {
  133. required: true,
  134. message: "${column.ColumnComment}不能为空",
  135. trigger: [ 'change', 'blur' ],
  136. $if(column.CsharpType == "int" || column.CsharpType == "long") type: "number"$end
  137. },
  138. $end
  139. $end
  140. },
  141. options: {
  142. $foreach(column in dicts)
  143. $if(column.HtmlType == "radio" || column.HtmlType.Contains("select") || column.HtmlType == "checkbox")
  144. //$if(column.ColumnComment != "") ${column.ColumnComment} $else ${column.CsharpFieldFl}$end选项列表 格式 eg:{ label: '标签', value: '0'}
  145. $if(column.DictType != "") ${column.DictType}$else ${column.CsharpFieldFl}Options$end: [],
  146. $end
  147. $end
  148. },
  149. })
  150. const {
  151. form,
  152. rules,
  153. options
  154. } = toRefs(state)
  155. const opertype = ref(0)
  156. // 表单引用
  157. const uFormRef = ref(null)
  158. setTimeout(() => {
  159. proxy.${refs}refs.uFormRef.setRules(state.rules)
  160. }, 300)
  161. function reset(){
  162. form.value = {
  163. $foreach(item in genTable.Columns)
  164. $if((item.HtmlType == "checkbox"))
  165. ${item.CsharpFieldFl}Checked: [],
  166. $else
  167. $item.CsharpFieldFl: undefined,
  168. $end
  169. $end
  170. }
  171. }
  172. function submit() {
  173. uFormRef.value.validate().then(res => {
  174. $foreach(item in genTable.Columns)
  175. $if(item.HtmlType == "checkbox")
  176. form.value.${item.CsharpFieldFl} = form.value.${item.CsharpFieldFl}Checked.toString();
  177. $end
  178. $end
  179. if (form.value.${replaceDto.FistLowerPk} != undefined && props.opertype == 2) {
  180. update${genTable.BusinessName}(form.value).then((res) => {
  181. proxy.${modal}modal.msgSuccess("修改成功")
  182. setTimeout(() => {
  183. handleCancel()
  184. }, 1000)
  185. })
  186. } else {
  187. add${genTable.BusinessName}(form.value).then((res) => {
  188. proxy.${modal}modal.msgSuccess("新增成功")
  189. })
  190. }
  191. }).catch(errors => {
  192. proxy.${modal}modal.msg('表单校验失败')
  193. })
  194. }
  195. function handleCancel() {
  196. uni.redirectTo({
  197. url: './index'
  198. })
  199. }
  200. const props = defineProps({
  201. id: String,
  202. opertype: String,
  203. })
  204. if (props.id) {
  205. get${genTable.BusinessName}(props.id).then(res => {
  206. const {
  207. code,
  208. data
  209. } = res
  210. if (code == 200) {
  211. form.value = {
  212. ...data,
  213. $foreach(item in genTable.Columns)
  214. $if(item.HtmlType == "checkbox")
  215. ${item.CsharpFieldFl}Checked: data.${item.CsharpFieldFl} ? data.${item.CsharpFieldFl}.split(',') : [],
  216. $end
  217. $end
  218. }
  219. }
  220. })
  221. } else {
  222. reset()
  223. }
  224. </script>
  225. <style lang="scss" scoped>
  226. @import "@/static/scss/page.scss";
  227. .btn-wrap {
  228. margin: 150rpx auto 0 auto;
  229. width: 80%
  230. }
  231. </style>