index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <template>
  2. <div>
  3. <el-drawer
  4. :title="title"
  5. :visible.sync="dialogFormVisible"
  6. size="85%"
  7. direction="rtl"
  8. append-to-body
  9. :show-close="false"
  10. @close="onClose">
  11. <div class="drawer__panel" style="margin-bottom: 0!important;">
  12. <div class="inline-16">
  13. <label class="search__label" >部门:</label>
  14. <el-cascader disabled class="inline-16" placement="bottom" ref="selectdep" size="small" v-model="departmentid" :options="deplist" :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}" ></el-cascader>
  15. </div>
  16. <div class="inline-16">
  17. <label class="search__label" >业务员:</label>
  18. <el-select v-model="person" filterable placeholder="请选择" size="small" disabled >
  19. <el-option
  20. v-for="item in personnelList"
  21. :key="item.index"
  22. :label="item.name"
  23. :value="item.userid">
  24. </el-option>
  25. </el-select>
  26. </div>
  27. <slot name="custom"></slot>
  28. <el-input style="width:200px;" placeholder="搜索" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="clearSearchValue" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
  29. </el-input>
  30. <table-detail :layout="layout" :data="list" :custom="true" :height="height" :width="true" style="margin-top: 10px">
  31. <template v-slot:customcol="scope">
  32. <div v-if="scope.column.columnname === 'tag'">
  33. <div v-if="scope.column.data.sys_tag">
  34. <div v-for="item in scope.column.data.sys_tag" :key="item.index" style="float: left;margin-left: 5px;margin-bottom: 5px">
  35. <el-tag color="#3874F6" size="mini" type="primary" effect="dark">
  36. <span>{{item}}</span>
  37. </el-tag>
  38. </div>
  39. <div v-for="item in scope.column.data.tag" :key="item.index" style="float: left;margin-left: 5px;margin-bottom: 5px">
  40. <el-tag color="#FA8C16" size="mini" type="warning" effect="dark">
  41. <span>{{item}}</span>
  42. </el-tag>
  43. </div>
  44. </div>
  45. <div v-else>--</div>
  46. </div>
  47. <div v-else-if="scope.column.columnname == 'status'">
  48. <span style="color:#999999" v-if="scope.column.data[[scope.column.columnname]] == '已过期'">{{scope.column.data[[scope.column.columnname]]}}</span>
  49. <span style="color:#52c41a" v-else-if="scope.column.data[[scope.column.columnname]] == '跟进中'">{{scope.column.data[[scope.column.columnname]]}}</span>
  50. <span style="color:#3874f6" v-else-if="scope.column.data[[scope.column.columnname]] == '待跟进'">{{scope.column.data[[scope.column.columnname]]}}</span>
  51. <span style="color:#333333" v-else-if="scope.column.data[[scope.column.columnname]] == '已无效'">{{scope.column.data[[scope.column.columnname]]}}</span>
  52. <span style="color:#fa8c16" v-else-if="scope.column.data[[scope.column.columnname]] == '已转化'">{{scope.column.data[[scope.column.columnname]]}}</span>
  53. <span style="color:#3874f6" v-else-if="scope.column.data[[scope.column.columnname]] == '潜在'">{{scope.column.data[[scope.column.columnname]]}}</span>
  54. <span style="color:#52c41a" v-else-if="scope.column.data[[scope.column.columnname]] == '合作中'">{{scope.column.data[[scope.column.columnname]]}}</span>
  55. <span style="color:#999999" v-else-if="scope.column.data[[scope.column.columnname]] == '已终止'">{{scope.column.data[[scope.column.columnname]]}}</span>
  56. <span style="color:#fa8c16" v-else-if="scope.column.data[[scope.column.columnname]] == '已成交'">{{scope.column.data[[scope.column.columnname]]}}</span>
  57. <span style="color:#999999" v-else-if="scope.column.data[[scope.column.columnname]] == '已失败'">{{scope.column.data[[scope.column.columnname]]}}</span>
  58. <span style="color:#999999" v-else-if="scope.column.data[[scope.column.columnname]] == '已结案'">{{scope.column.data[[scope.column.columnname]]}}</span>
  59. <span v-else>{{scope.column.data[[scope.column.columnname]]}}</span>
  60. </div>
  61. <div v-else-if="scope.column.columnname === 'reportstatus'">
  62. <span style="color:#3874f6" v-if="scope.column.data[[scope.column.columnname]] == '已报备'">{{scope.column.data[[scope.column.columnname]]}}</span>
  63. <span style="color:#52c41a" v-else-if="scope.column.data[[scope.column.columnname]] == '报备中'">{{scope.column.data[[scope.column.columnname]]}}</span>
  64. <span style="color:#999999" v-else-if="scope.column.data[[scope.column.columnname]] == '未报备'">{{scope.column.data[[scope.column.columnname]]}}</span>
  65. </div>
  66. <div v-else-if="scope.column.columnname === 'projecttype'">
  67. {{scope.column.data.projecttype + '-' + scope.column.data.projecttype_remarks}}
  68. </div>
  69. <div v-else-if="scope.column.columnname === 'tradingstatus'">
  70. <span style="color:#3874f6" v-if="scope.column.data[[scope.column.columnname]] == '未成交'">{{scope.column.data[[scope.column.columnname]]}}</span>
  71. <span style="color:#fa8c16" v-else-if="scope.column.data[[scope.column.columnname]] == '已成交'">{{scope.column.data[[scope.column.columnname]]}}</span>
  72. <span style="color:#333333" v-else-if="scope.column.data[[scope.column.columnname]] == '多次成交'">{{scope.column.data[[scope.column.columnname]]}}</span>
  73. </div>
  74. <div v-else-if="scope.column.columnname === 'leader'">
  75. <span>{{scope.column.data['leader'][0]?scope.column.data['leader'][0].name:'--'}}</span>
  76. </div>
  77. <div v-else-if="scope.column.columnname === 'depname'">
  78. <span>{{scope.column.data['leader'][0]?scope.column.data['leader'][0].depname:'--'}}</span>
  79. </div>
  80. <div v-else-if="scope.column.columnname === 'address'">
  81. <span>{{scope.column.data.province?scope.column.data.province + scope.column.data.city + scope.column.data.county + scope.column.data.address:'--'}}</span>
  82. </div>
  83. <div v-else-if="scope.column.columnname == 'signamount_due'">
  84. <span>{{scope.column.data[[scope.column.columnname]] ?tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}</span>
  85. </div>
  86. <div v-else-if="scope.column.columnname == 'dealamount'">
  87. <span>{{scope.column.data[[scope.column.columnname]] ?tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}</span>
  88. </div>
  89. <div v-else-if="scope.column.columnname == 'scale'">
  90. <span>{{scope.column.data[[scope.column.columnname]]?scope.column.data[[scope.column.columnname]] + scope.column.data.unitname:'--'}}</span>
  91. </div>
  92. <div v-else>
  93. {{ scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation' ? scope.column.data[[scope.column.columnname]] : '--' }}
  94. </div>
  95. </template>
  96. </table-detail>
  97. <div class="container normal-panel" style="text-align:right">
  98. <el-pagination
  99. background
  100. @size-change="handleSizeChange"
  101. @current-change="handleCurrentChange"
  102. :current-page="currentPage"
  103. :page-sizes="[100, 150, 200, 250]"
  104. :page-size="100"
  105. layout="total,sizes, prev, pager, next, jumper"
  106. :total="total">
  107. </el-pagination>
  108. </div>
  109. </div>
  110. </el-drawer>
  111. </div>
  112. </template>
  113. <script>
  114. export default {
  115. name: "index",
  116. props:["title","layout","param","person","departmentid","isleave","height"],
  117. data(){
  118. return {
  119. dialogFormVisible:false,
  120. list:[],
  121. total:0,
  122. currentPage:0,
  123. deplist:[],
  124. personnelList:[],
  125. nowPerson:'',
  126. nowDep:'',
  127. depmentParam:{
  128. "id": 20230620102004,
  129. "content": {
  130. "isleave":1
  131. }
  132. },
  133. }
  134. },
  135. methods:{
  136. onShow(){
  137. this.dialogFormVisible = true
  138. this.departmentrtment()
  139. this.param.content.pageNumber = 1
  140. this.listData()
  141. },
  142. async listData(){
  143. const res = await this.$api.requested(this.param)
  144. this.list = res.data
  145. this.total = res.total
  146. this.currentPage = res.pageNumber
  147. },
  148. handleSizeChange(val) {
  149. // console.log(`每页 ${val} 条`);
  150. this.param.content.pageSize = val
  151. this.listData()
  152. },
  153. handleCurrentChange(val) {
  154. // console.log(`当前页: ${val}`);
  155. this.param.content.pageNumber = val
  156. this.listData()
  157. },
  158. clearSearchValue () {
  159. this.$store.dispatch('clearSearchValue')
  160. this.listData(this.param.content.pageNumber = 1)
  161. },
  162. onClose(){
  163. this.dialogFormVisible = false
  164. },
  165. async departmentrtment() {
  166. const res = await this.$api.requested(this.depmentParam)
  167. this.deplist = this.createMenu(res.data.dep)
  168. this.personnelList = res.data.hr
  169. },
  170. createMenu (array) {
  171. var that = this
  172. let arr = []
  173. function convertToElementTree(node) {
  174. // 新节点
  175. if (node.subdep.length === 0){
  176. var elNode = {
  177. label: node["depname"],
  178. parentid:node['parentid'],
  179. parentname:node['parentname'],
  180. departmentid:node["departmentid"],
  181. value:node["departmentid"],
  182. remarks:node["remarks"],
  183. isused:node["isused"],
  184. changedate:node['changedate'],
  185. changeby:node['changeby'],
  186. createdate:node['createdate'],
  187. createby:node['createby'],
  188. depno:node['depno'],
  189. disabled:that.pageOnlyRead,
  190. }
  191. }else {
  192. var elNode = {
  193. label: node["depname"],
  194. parentid:node['parentid'],
  195. parentname:node['parentname'],
  196. departmentid:node["departmentid"],
  197. value:node["departmentid"],
  198. remarks:node["remarks"],
  199. isused:node["isused"],
  200. changedate:node['changedate'],
  201. changeby:node['changeby'],
  202. createdate:node['createdate'],
  203. createby:node['createby'],
  204. depno:node['depno'],
  205. disabled:that.pageOnlyRead,
  206. children: []
  207. }
  208. }
  209. if (node.subdep && node.subdep.length > 0) {
  210. // 如果存在子节点
  211. for (var index = 0; index < node.subdep.length; index++) {
  212. // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
  213. elNode.children.push(convertToElementTree(node.subdep[index]));
  214. }
  215. }
  216. return elNode;
  217. }
  218. array.forEach((element) => {
  219. arr.push(convertToElementTree(element))
  220. });
  221. return arr
  222. },
  223. }
  224. }
  225. </script>
  226. <style scoped>
  227. </style>