index.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. <template>
  2. <div class="brand">
  3. <div style="display:flex;align-items:center;margin-bottom:16px">
  4. <!-- <el-input
  5. placeholder="请输入搜索内容"
  6. suffix-icon="el-icon-search"
  7. v-model="params.content.where.condition"
  8. style="width:200px"
  9. size="mini"
  10. class="input-with-select inline-16"
  11. @keyup.native.enter="department(params.content.pageNumber=1)"
  12. @clear="department(params.content.pageNumber = 1)"
  13. clearable>
  14. </el-input>-->
  15. <addTop :disabled="isEdit()" v-if="tool.checkAuth($route.name,'workDetail')" @onSuccess="department"></addTop>
  16. </div>
  17. <el-table
  18. :data="tableData"
  19. stripe
  20. border
  21. row-key="sa_workorder_template_worksid"
  22. size="small"
  23. :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
  24. <el-table-column
  25. width="120">
  26. </el-table-column>
  27. <el-table-column
  28. prop="sequence"
  29. label="序号"
  30. width="80px">
  31. </el-table-column>
  32. <el-table-column
  33. prop="workname"
  34. label="工作名称"
  35. show-overflow-tooltip
  36. width="400">
  37. </el-table-column>
  38. <el-table-column
  39. prop="remarks"
  40. show-overflow-tooltip
  41. label="操作说明"
  42. width="400">
  43. <template slot-scope="scope">
  44. {{scope.row.remarks ? scope.row.remarks : '--'}}
  45. </template>
  46. </el-table-column>
  47. <el-table-column
  48. prop="fileupload"
  49. label="上传附件">
  50. <template slot-scope="scope">
  51. {{scope.row.fileupload ? scope.row.fileupload == 1 ? '非必填' : '必填' : '无'}}
  52. </template>
  53. </el-table-column>
  54. <el-table-column
  55. prop="textedit"
  56. label="上传文本">
  57. <template slot-scope="scope">
  58. {{scope.row.textedit ? scope.row.textedit == 1 ? '非必填' : '必填' : '无'}}
  59. </template>
  60. </el-table-column>
  61. <el-table-column
  62. prop="confirm_options"
  63. label="确认项">
  64. <template slot-scope="scope">
  65. {{scope.row.confirm_options ? scope.row.confirm_options == 1 ? '非必填' : '必填' : '无'}}
  66. </template>
  67. </el-table-column>
  68. <el-table-column
  69. prop="contractupload"
  70. label="上传合同">
  71. <template slot-scope="scope">
  72. {{scope.row.contractupload ? scope.row.contractupload == 1 ? '非必填' : '必填' : '无'}}
  73. </template>
  74. </el-table-column>
  75. <el-table-column
  76. prop="additem"
  77. label="添加商品">
  78. <template slot-scope="scope">
  79. {{scope.row.additem ? scope.row.additem == 1 ? '非必填' : '必填' : '无'}}
  80. </template>
  81. </el-table-column>
  82. <el-table-column
  83. prop="itemtype"
  84. label="商品类型">
  85. <template slot-scope="scope">
  86. {{scope.row.itemtype ? scope.row.itemtype == 1 ? '非必填' : '必填' : '无'}}
  87. </template>
  88. </el-table-column>
  89. <el-table-column
  90. prop="addperson"
  91. label="添加人员">
  92. <template slot-scope="scope">
  93. {{scope.row.addperson ? scope.row.addperson == 1 ? '非必填' : '必填' : '无'}}
  94. </template>
  95. </el-table-column>
  96. <el-table-column
  97. prop="amountpay"
  98. label="是否有偿">
  99. <template slot-scope="scope">
  100. {{scope.row.amountpay ? scope.row.amountpay == 1 ? '非必填' : '必填' : '无'}}
  101. </template>
  102. </el-table-column>
  103. <el-table-column
  104. prop="required"
  105. label="是否验证工作"
  106. width="120px">
  107. <template slot-scope="scope">
  108. {{scope.row.required ? scope.row.required == 1 ? '非必填' : '必填' : '无'}}
  109. </template>
  110. </el-table-column>
  111. <el-table-column
  112. label="操作"
  113. width="250"
  114. fixed="right">
  115. <template slot-scope="scope">
  116. <addTop :disabled="isEdit()" class="inline-16" v-if="tool.checkAuth($route.name,'workDetail')" @onSuccess="department" :data="scope.row"></addTop>
  117. <customBtn
  118. type="text"
  119. btnName="删 除"
  120. message="确定删除该工作项吗?"
  121. idName="20230207145703"
  122. keyName="sa_workorder_template_worksids"
  123. :id="scope.row.sa_workorder_template_worksid"
  124. class="inline-16"
  125. :idIsArr="true"
  126. @onSuccess="department"
  127. v-if="tool.checkAuth($route.name,'workDetail')"
  128. :disabled="isEdit()"
  129. />
  130. <detail class="inline-16" :data="scope.row"/>
  131. </template>
  132. </el-table-column>
  133. </el-table>
  134. <div style="margin-top:16px;text-align:right">
  135. <el-pagination
  136. background
  137. small
  138. @size-change="handleSizeChange"
  139. @current-change="handleCurrentChange"
  140. :current-page="params.content.pageNumber"
  141. :page-size="params.content.pageSize"
  142. layout="total, prev, pager, next, jumper"
  143. :total="total">
  144. </el-pagination>
  145. </div>
  146. </div>
  147. </template>
  148. <script>
  149. import addTop from './components/addTop'
  150. import Edit from './components/edit'
  151. import detail from './components/detail'
  152. export default {
  153. props:['data'],
  154. components:{
  155. Edit,
  156. addTop,
  157. detail
  158. },
  159. inject:['isEdit'],
  160. data() {
  161. return {
  162. tableData:[],
  163. params: {
  164. "id": "20230207145603",
  165. "version":1,
  166. "content": {
  167. "sa_workorder_templateid":this.$route.query.id,
  168. "parentid":0,
  169. "pageNumber":1,
  170. "pageSize":20,
  171. "where": {
  172. "condition":''
  173. }
  174. }
  175. },
  176. total:0,
  177. }
  178. },
  179. created() {
  180. },
  181. methods: {
  182. async department (callback) {
  183. this.params.content.sa_workorder_templateid = this.$route.query.id
  184. const res = await this.$api.requested(this.params)
  185. this.tableData = this.createTreeData(res.data)
  186. this.total = res.total
  187. console.log(this.tableData);
  188. },
  189. createTreeData (array) {
  190. var that = this
  191. let arr = []
  192. function convertToElementTree(node) {
  193. // 新节点
  194. var elNode = {
  195. addperson:node['addperson'],
  196. textedit:node['textedit'],
  197. workname: node["workname"],
  198. additem:node['additem'],
  199. contractupload:node['contractupload'],
  200. confirm_options:node['confirm_options'],
  201. // sa_workorder_templateid:this.data.sa_workorder_templateid,
  202. parentid:node['parentid'],
  203. required:node['required'],
  204. confirm:node['confirm'],
  205. sequence:node['sequence'],
  206. sa_workpresetid:node['sa_workpresetid'],
  207. fileupload:node['fileupload'],
  208. itemtype:node['itemtype'],
  209. sa_workorder_template_worksid:node['sa_workorder_template_worksid'],
  210. siteid:node['siteid'],
  211. rowindex:node['rowindex'],
  212. amountpay:node['amountpay'],
  213. remarks:node['remarks'],
  214. children: [],
  215. }
  216. if (node.subdep && node.subdep.length > 0) {
  217. // 如果存在子节点
  218. for (var index = 0; index < node.subdep.length; index++) {
  219. // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
  220. elNode.children.push(convertToElementTree(node.subdep[index]));
  221. }
  222. }
  223. return elNode;
  224. }
  225. array.forEach((element) => {
  226. arr.push(convertToElementTree(element))
  227. });
  228. return arr
  229. },
  230. handleSizeChange(val) {
  231. // console.log(`每页 ${val} 条`);
  232. this.params.content.pageSize = val
  233. this.department()
  234. },
  235. handleCurrentChange(val) {
  236. // console.log(`当前页: ${val}`);
  237. this.params.content.pageNumber = val
  238. this.department()
  239. },
  240. },
  241. mounted () {
  242. this.department()
  243. }
  244. };
  245. </script>
  246. <style scoped>
  247. </style>