vue2.txt 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. <template>
  2. <view class="container">
  3. <view class="search-bar">
  4. $if(replaceDto.ShowBtnAdd)
  5. <u-button type="primary" size="small" shape="circle" icon="plus" v-if="checkPermi(['${replaceDto.PermissionPrefix}:add'])"
  6. @click="handleAdd" :customStyle="{'width': '80px', 'margin': '10px'}">新增</u-button>
  7. $end
  8. <u-search :disabled="true" placeholder="请输入要搜索的内容" @click="show=true"></u-search>
  9. </view>
  10. <u-line dashed></u-line>
  11. <view class="info-item" v-for="(item,index) in dataList" :key="index">
  12. $foreach(column in genTable.Columns)
  13. $set(labelName = column.ColumnComment)
  14. $set(columnName = column.CsharpFieldFl)
  15. $if(column.IsList == true)
  16. $if(column.HtmlType == "imageUpload")
  17. <view class="info-line">
  18. <text class="label-name">${labelName}</text>
  19. <imagePreview :src="item.${columnName}"></imagePreview>
  20. </view>
  21. $elseif(column.HtmlType == "checkbox" || column.HtmlType == "select" || column.HtmlType == "radio")
  22. <view class="info-line">
  23. <text class="label-name">${labelName}</text>
  24. $if(column.HtmlType == "checkbox")
  25. <dict-tag :options="$if(column.DictType != "") dict.type.${column.DictType} $else ${column.CsharpFieldFl}Options$end" :value="item.${columnName} ? item.${columnName}.split(',') : []" />
  26. $else
  27. <dict-tag :options="$if(column.DictType != "") dict.type.${column.DictType} $else ${column.CsharpFieldFl}Options$end" :value="item.${columnName}" />
  28. $end
  29. </view>
  30. $else
  31. <view class="info-line">
  32. <text class="label-name">${labelName}</text>
  33. <text>{{item.${columnName}}}</text>
  34. </view>
  35. $end
  36. $end
  37. $end
  38. <view class="info-btn-wrap justify-end">
  39. $if(replaceDto.ShowBtnView)
  40. <view class="tag-item">
  41. <u-tag text="详情" plain shape="circle" type="info" icon="eye" @click="handleView(item)"
  42. v-if="checkPermi(['${replaceDto.PermissionPrefix}:query'])"></u-tag>
  43. </view>
  44. $end
  45. $if(replaceDto.ShowBtnEdit)
  46. <view class="tag-item">
  47. <u-tag text="编辑" plain shape="circle" icon="edit-pen" @click="handleEdit(item)"
  48. v-if="checkPermi(['${replaceDto.PermissionPrefix}:edit'])"></u-tag>
  49. </view>
  50. $end
  51. $if(replaceDto.ShowBtnDelete || replaceDto.ShowBtnMultiDel)
  52. <view class="tag-item">
  53. <u-tag text="删除" class="tag-item" plain shape="circle" type="error" icon="trash"
  54. v-if="checkPermi(['userinfo:delete'])" @click="handleDelete(item)"></u-tag>
  55. </view>
  56. $end
  57. </view>
  58. <u-line dashed></u-line>
  59. </view>
  60. <view class="page-footer">
  61. <u-empty mode="list" :marginTop="140" v-if="total == 0"></u-empty>
  62. <uni-pagination v-else show-icon="true" :total="total" :pageSize="queryParams.pageSize"
  63. :current="queryParams.pageNum" @change="getData"></uni-pagination>
  64. <view class="text-grey padding text-center"> 共 {{ total }}条数据 </view>
  65. </view>
  66. <u-popup :show="show" mode="bottom" @close="show = false" @open="show = true">
  67. <view class="search-form">
  68. <view class="search-title">搜索</view>
  69. <u--form labelPosition="left" :model="queryParams" labelWidth="100px" ref="uForm">
  70. <u-form-item label="排序字段" prop="sort" borderBottom>
  71. <uni-data-select v-model="queryParams.sort" :clear="true" :localdata="sortOptions"
  72. format="{label}"></uni-data-select>
  73. </u-form-item>
  74. <u-form-item label="排序方式" prop="sortType" borderBottom ref="item1">
  75. <u-radio-group v-model="queryParams.sortType">
  76. <u-radio label="升序" name="asc" :customStyle="{marginRight: '20px'}"></u-radio>
  77. <u-radio label="倒序" name="desc"></u-radio>
  78. </u-radio-group>
  79. </u-form-item>
  80. <u-gap height="30"></u-gap>
  81. $foreach(column in genTable.Columns)
  82. $set(labelName = "")
  83. $set(columnName = "")
  84. $if(column.IsQuery == true)
  85. $set(columnName = column.CsharpFieldFl)
  86. $if(column.ColumnComment != "")
  87. $set(labelName = column.ColumnComment)
  88. $else
  89. $set(labelName = column.CsharpFieldFl)
  90. $end
  91. $if(column.HtmlType == "datetime")
  92. <u-form-item label="时间查询">
  93. <uni-datetime-picker :border="false" v-model="dateRange${column.CsharpField}" type="daterange" @change="${column.CsharpFieldFl}Select" />
  94. </u-form-item>
  95. $elseif(column.HtmlType == "radio" || column.HtmlType == "select")
  96. <u-form-item label="${labelName}" prop="${column.CsharpFieldFl}" borderBottom ref="item2">
  97. <view class="tag-wrap">
  98. <view class="tag-item">
  99. <u-tag text="全部" :plain="null != queryParams.${column.CsharpFieldFl}" name="" @click="queryParams.${column.CsharpFieldFl} = null">
  100. </u-tag>
  101. </view>
  102. <view class="tag-item" v-for="(item, index) in $if(column.DictType != "") dict.type.${column.DictType} $else ${column.CsharpFieldFl}Options$end" :key="index">
  103. <u-tag :text="item.label" :plain="item.value != queryParams.${column.CsharpFieldFl}" :name="item.value"
  104. @click="${column.CsharpFieldFl}Select(item)">
  105. </u-tag>
  106. </view>
  107. </view>
  108. </u-form-item>
  109. $else
  110. <u-form-item label="${labelName}" prop="${column.CsharpFieldFl}" borderBottom ref="item1">
  111. <u--input v-model="queryParams.${column.CsharpFieldFl}" border="none" placeholder="请输入${labelName}"></u--input>
  112. </u-form-item>
  113. $end
  114. $end
  115. $end
  116. </u--form>
  117. <view class="btn-group">
  118. <u-button text="重置" icon="reload" :customStyle="{marginRight: '10px'}" shape="circle" type="success"
  119. @click="resetQuery"></u-button>
  120. <u-button text="搜索" icon="search" shape="circle" type="primary" @click="handleQuery"></u-button>
  121. </view>
  122. </view>
  123. </u-popup>
  124. <u-back-top :scroll-top="scrollTop" :bottom="180"></u-back-top>
  125. </view>
  126. </template>
  127. <script>
  128. import {
  129. checkPermi
  130. } from '@/utils/permission.js'
  131. import {
  132. list${genTable.BusinessName},
  133. $if(replaceDto.ShowBtnDelete)
  134. del${genTable.BusinessName},
  135. $end
  136. } from '@/api/${tool.FirstLowerCase(genTable.ModuleName)}/${genTable.BusinessName.ToLower()}.js'
  137. export default {
  138. dicts: [
  139. $foreach(item in genTable.Columns)
  140. $if((item.HtmlType == "radio" || item.HtmlType.Contains("select") || item.HtmlType == "checkbox") && item.DictType != "")
  141. "${item.DictType}",
  142. $end
  143. $end
  144. ],
  145. data() {
  146. return {
  147. scrollTop: 0,
  148. dataList: [],
  149. queryParams: {
  150. pageNum: 1,
  151. pageSize: 20,
  152. sortType: 'desc',
  153. sort: undefined,
  154. $foreach(item in genTable.Columns)
  155. $if(item.IsQuery == true)
  156. ${item.CsharpFieldFl}: undefined,
  157. $end
  158. $end
  159. },
  160. total: 0,
  161. show: false,
  162. loading: false,
  163. $foreach(item in genTable.Columns)
  164. $if((item.HtmlType == "radio" || item.HtmlType == "select" || item.HtmlType == "checkbox") && item.DictType == "")
  165. // ${item.ColumnComment}选项列表 格式 eg:{ label: '标签', value: '0'}
  166. ${item.CsharpFieldFl}Options: [],
  167. $elseif(item.HtmlType == "datetime" && item.IsQuery == true)
  168. //${item.ColumnComment}时间范围
  169. dateRange${item.CsharpField}: [],
  170. $end
  171. $end
  172. // 排序集合 格式 eg:{ label: '名称', value: 'userId'}
  173. sortOptions: [
  174. $foreach(column in genTable.Columns)
  175. $if(column.IsSort)
  176. {
  177. label: '${column.ColumnComment}',
  178. value: '${column.CsharpFieldFl}'
  179. },
  180. $end
  181. $end
  182. ]
  183. }
  184. },
  185. onLoad() {
  186. this.getList()
  187. },
  188. methods: {
  189. checkPermi,
  190. getList() {
  191. uni.showLoading({
  192. title: 'loading...'
  193. });
  194. $foreach(item in genTable.Columns)
  195. $if(item.HtmlType == "datetime" && item.IsQuery == true)
  196. this.addDateRange(this.queryParams, this.dateRange${item.CsharpField}, '${item.CsharpField}');
  197. $end
  198. $end
  199. list${genTable.BusinessName}(this.queryParams).then(res => {
  200. if (res.code == 200) {
  201. this.dataList = [...this.dataList, ...res.data.result]
  202. this.total = res.data.totalNum;
  203. }
  204. })
  205. },
  206. $if(replaceDto.ShowBtnAdd)
  207. handleAdd() {
  208. this.${tab}tab.navigateTo('./edit?opertype=1')
  209. },
  210. $end
  211. $if(replaceDto.ShowBtnEdit)
  212. handleEdit(e) {
  213. this.${tab}tab.navigateTo('./edit?opertype=2&${replaceDto.FistLowerPk}=' + e.id)
  214. },
  215. $end
  216. $if(replaceDto.ShowBtnView)
  217. handleView(e) {
  218. this.${tab}tab.navigateTo('./edit?opertype=3&${replaceDto.FistLowerPk}=' + e.id)
  219. },
  220. $end
  221. $if(replaceDto.ShowBtnDelete || replaceDto.ShowBtnMultiDel)
  222. handleDelete(row) {
  223. const Ids = row.${replaceDto.FistLowerPk};
  224. this.${modal}modal.confirm('你确定要删除吗?').then(() => {
  225. return del${genTable.BusinessName}(Ids);
  226. })
  227. .then(() => {
  228. this.handleQuery();
  229. this.${modal}modal.msgSuccess("删除成功");
  230. })
  231. .catch(() => {});
  232. },
  233. $end
  234. resetQuery() {
  235. this.${refs}refs.uForm.resetFields()
  236. $foreach(column in genTable.Columns)
  237. $if(column.HtmlType == "datetime" && column.IsQuery == true)
  238. this.dateRange${column.CsharpField} = []
  239. $end
  240. $end
  241. },
  242. handleQuery() {
  243. this.queryParams.pageNum = 1;
  244. this.dataList = []
  245. uni.startPullDownRefresh();
  246. this.getList()
  247. this.show = false
  248. },
  249. getData(e) {
  250. this.queryParams.pageNum = e.current
  251. this.getList()
  252. },
  253. onPullDownRefresh() {
  254. uni.stopPullDownRefresh()
  255. this.handleQuery()
  256. },
  257. $foreach(column in genTable.Columns)
  258. $if(column.IsQuery == true)
  259. $if(column.HtmlType == "datetime")
  260. ${column.CsharpFieldFl}Select(e) {
  261. this.${column.CsharpFieldFl} = e
  262. },
  263. $elseif(column.HtmlType == "radio" || column.HtmlType == "select")
  264. ${column.CsharpFieldFl}Select(e) {
  265. this.queryParams.${column.CsharpFieldFl} = e.value
  266. },
  267. $end
  268. $end
  269. $end
  270. onPageScroll(e) {
  271. this.scrollTop = e.scrollTop;
  272. }
  273. }
  274. }
  275. </script>
  276. <style lang="scss" scoped>
  277. @import "@/static/scss/page.scss";
  278. </style>